OpenHAB på Raspberry Pi (2 / 3 steg)
Steg 2: Konfigurera openHAB att starta automatiskt vid uppstart
Vid en strömstöt, strömavbrott eller om du väljer att starta om din Pi, din OpenHAB program kommer att behöva vara åter startat upp. Det är en stor smärta i bakre änden så vi vill konfigurera den för att starta i början.
Först kommer ut du att skapa en ny fil i mappen /etc/init.d kallas "openhab".
Du kommer att lägga till några rader kod openhab filen med nano-redigeraren eller din favorit editor val.
sudo nano /etc/init.d/openhab
Lägg till denna koden:
#! / bin/sh < br > ### börjar INIT information # ger: openhab # krävs-Start: $remote_fs $syslog # krävs-Stop: $remote_fs $syslog # standard-Start: 2 3 4 5 # standard-Stop: 0 1 6 # kort beskrivning: OpenHAB Daemon ### slutet INIT INFO # författare: Thomas Brettinger # inte "set -e" # SÖKVÄGEN bör endast omfatta/usr / * om det körs efter mountnfs.sh script sökväg = / sbin: / usr/sbin: / bin: / usr/binDESC = "Öppna hem Automation buss demonen" namn = openhab DAEMON = / usr/bin/java PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME ECLIPSEHOME = "/opt/ openhab"; HTTPPORT = 8080 HTTPSPORT = 8443 TELNETPORT = 5555 # vara säker du antar användaren till din lokala OH användare RUN_AS = pi # få sökväg till vårdagjämningen burk inuti $eclipsehome mapp cp = $(find $ECLIPSEHOME/server-name "org.eclipse.equinox.launcher_*.jar" | sort | tail-1); DAEMON_ARGS = "- Dosgi.clean=true - Declipse.ignoreApp=true-Dosgi.noShutdown=true-Djetty.port=$HTTPPORT-Djetty.port.ssl=$HTTPSPORT-Djetty.home=$ECLIPSEHOME-Dlogback.configurationFile=$ECLIPSEHOME/configurations/logback.xml-Dfelix.fileinstall.dir=$ECLIPSEHOME/addons-Djava.library.path=$ECLIPSEHOME/lib-Djava.security.auth.login.config=$ECLIPSEHOME/etc/login.conf-Dorg.quartz.properties=$ECLIPSEHOME/etc/quartz.properties-Djava.awt.headless=true-jar $cp-konsol ${TELNETPORT}" # utgång om den paketet installeras inte [- x "$DAEMON"] || utgång 0# Läs variabel konfigurationsfil om det är presentera [- r /etc/default/$ namn] & &. /etc/default/$ namn # ladda inställningen MÅNGORDIG och andra rcS variabler. /lib/init/vars.sh# definiera LSB log_ * funktioner. # Beror på lsb-base (> = 3,2-14) att se till att denna fil är närvarande # och fungerar som status_of_proc. . /lib/lsb/init-funktioner # # funktion som startar daemon/tjänst # do_start() {# återvända # 0 om daemon har varit igång # 1 om daemon var redan igång # 2 om daemon inte kunde startas start-stop-daemon--start--quiet--make-pidfile--pidfile $PIDFILE--chuid $RUN_AS--chdir $ECLIPSEHOME--exec $DAEMON--testa >/dev/null \ || återvända 1 start-stop-daemon--start--lugnt--bakgrund--make-pidfile--pidfile $PIDFILE--chuid $RUN_AS--chdir $ECLIPSEHOME--exec $DAEMON--$DAEMON_ARGS \ || återgå 2 # Lägg till kod här , om nödvändigt, som väntar på processen för att vara redo # att hantera begäranden från tjänster började därefter som är beroende # på den här. Som en sista utväg, sova länge. avkastning 0} # # funktion som stoppar daemon/tjänst # do_stop() {# återvända # 0 om daemon har slutat # 1 om daemon var redan stoppat # 2 om daemon inte kunde stoppas # andra om ett fel uppstod start-stop-daemon--stop--lugnt--retry = TERM/30/KILL/5--pidfile $PIDFILE--namn $NAME RETVAL = "$?" ["$RETVAL" = 2] & & återgå 2 # vänta för barn till slut även om det är en daemon som gafflar # och om daemon körs alltid bara från denna initskript. # Om villkoren ovan inte är nöjd då lägga till några andra kod # som väntar på processen för att släppa alla resurser som kan vara # avdelningar behöver började därefter. En sista utväg är att # sömn en tid. start-stop-daemon--stoppa--quiet--oknodo--retry = 0/30/KILL/5--exec $DAEMON ["$?" = 2] & & retur 2 # många demoner inte tar bort sina pidfiles när de avslutar. RM -f $PIDFILE återvända "$RETVAL"} # # funktion som skickar en SIGHUP till daemon/tjänst # do_reload() {## om demonen kan ladda om dess konfiguration utan # omstart (till exempel, när det skickas en SIGHUP), # sedan implementerar det här. # do_stop sömn 1 do_start returnerar 0} fall "$1" i början) log_daemon_msg "Starta $DESC" do_start i mål "$?" i 0|1) log_end_msg 0; 2) log_end_msg 1; ESAC; Stop) log_daemon_msg "Stoppa $DESC" do_stop fall "$?" i 0|1) log_end_msg 0; 2) log_end_msg 1; ESAC; status) status_of_proc "$DAEMON" "$NAME" & & exit 0 || avsluta $?; #reload|force-reload) ## om do_reload() inte genomförs sedan lämna detta bortkommenterad # och låt "force-reload som ett alias för"starta om". # #log_daemon_msg "Omlastning $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|Force-reload) ## om alternativet "reload" genomförs sedan ta bort # "force-reload alias # log_daemon_msg"Restarting $DESC"do_stop fallet"$?"i 0|1) do_start case"$?"i 0) log_end_msg 0; 1) log_end_msg 1; # Gamla processen körs *) log_end_msg 1; # Gick inte att starta esac; * Euro) # gick inte att stoppa log_end_msg 1; ESAC; *) #echo "användning: $SCRIPTNAME {start|stop|restart|reload|force-reload}" > & 2 echo "användning: $SCRIPTNAME {start|stop|status|restart|force-reload}" > & 2 avsluta 3.; ESAC:
Du kan behöva ändra den RUN_AS = pi till din nuvarande användare.
Slutligen kommer du att göra detta till en körbar fil.
sudo chmod a + x /etc/init.d/openhab
Och att automatiskt starta i början av Pi
sudo uppdatera-rc.d openhab försummelsen
Om du får ett felmeddelande som ser ut så här:
insserv: skriptet openhab är bruten: ofullständig LSB kommentar. insserv: saknas "ger:" post: Lägg till. insserv: saknas "krävs-Start:" post: Lägg även om den är tom. insserv: saknas "krävs-Stop:" post: Lägg även om den är tom. insserv: saknas "standard-Start:" post: Lägg även om tomt. insserv: saknas "standard-Stop:" post: Lägg även om den är tom. insserv: standard-Start undefined, förutsatt att Tom start runlevel(s) för skriptet "openhab" insserv: standard-Stop undefined, förutsatt att Tom stop runlevel(s) för skriptet "openhab"
Då har du ett indrag problem. Ibland får efter klistra in i din editor texten placeras i en lättläst format som placerar inbuktningar i några av de inledande raderna kod. All information som är skriven för uppdatera-rc.d måste vara i första kolumnen. Och det ska inte finnas någon tabulering eller blanksteg före "#". Om det finns någon ta bort genererar dem eller om du detta fel.
Gå tillbaka till din fil och dubbelkolla.
sudo nano /etc/init.d/openhab
De första några kolumnerna ska se ut här (Inte kopiera och klistra in, innehåller ASCII TECKENAVSTÅND) bara använda det som ett visuella exempel:
#! / bin/sh
### BÖRJA INIT INFORMATION
# Ger: openhab
# Krävs-Start: $remote_fs $syslog
# Krävs-Stop: $remote_fs $syslog
# Standard-Start: 2 3 4 5
# Standard-Stop: 0 1 6
# Kort-beskrivning: OpenHAB Daemon
### AVSLUTA INIT INFO
Lägg märke till hur det finns inga utrymmen eller indrag innan varje # tecken.
Komplett, din Raspberry Pi kommer nu starta openHAB början.