Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Autostart von openhab auf Raspberry PI

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Webserver] - √ - Autostart von openhab auf Raspberry PI

    Hallo zusammen,

    habe nun openhab auf meinen Raspberry am laufen, nun fehlt nur noch, dass openhab automatisch beim booten gestartet wird. Nach etwas suche im Internet habe ich folgendes gefunden und angewendet, leider erfolglos!

    sudo ln /home/pi/openhab/start.sh /etc/init.d/openhab
    sudo update-rc.d openhab defaults
    sudo ln -s /etc/init.d/openhab /etc/rc2.d/openhab

    Leider kenne ich mich mit den runlevels noch nicht so gut aus!


    Wie habt ihr das gelöst?


    PS: mein Raspberry steht im Keller und ich greife nur per ssh auf ihn zu!


    Gruß
    mepi0011

    #2
    Hallo zusammen,

    in der Zwischenzeit habe ich mich etwas weiter in das Thema Runlevel eingelesen und folgendes herausgefunden:

    1.) Das Startskript start.sh kann ich von überall gestartet werden

    z.B. im Home-Verzeichnis habe ich den Ordner openhab-runtime-1.0.0 in der Die Datei start.sh enthalten ist. Versuche ich diese direkt vom Home-Verzeichnis zu starten, erhalte ich eine Fehlermelndung.

    Als Lösung habe ich mir folgendes Skript erstellt:

    Code:
    #!/bin/bash
    cd /home/pi/openhab-runtime-1.0.0
    ./start.sh
    Dieses Skript ist für das eigentliche Problem "Autostart von openhab" nicht relevent!

    Erster Ansatz für das automatische Starten von openhab während des Bootens des Raspberry PI:

    1.) folgendes Skript mit dem Namen "openhab" im Ordner /etc/init.d erstellt.
    Code:
    [I]#! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          starts openhab from home
    # Required-Start:    
    # Required-Stop:     
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Kurze Beschreibung
    # Description:       Längere Bechreibung
    ### END INIT INFO
    # Author: 
    
    # Aktionen
    case "$1" in
        start)
            cd /home/pi/openhab-runtime-1.0.0
            ./start.sh
            ;;
        stop)
            echo "does not work"
            ;;
        restart)
            echo "does not work"
            ;;
    esac
    
    exit 0
    [/I]
    2.) Anschließend im Ordner /etc/rc2.d einen Link auf das Skript "openhab" mit folgendem Befehl erstellt:

    Code:
    cd /etc/rc2.d
    sudo ln -s ../init.d/openhab /etc/rc2.d/S98openhab
    3.) nach einem Neustart wird openhab automatisch gestartet
    Code:
    sudo reboot
    Fürs erste habe ich eine Lösung, diese ist aber noch nicht 100%ig sauber da beim herunterfahren das Programm nicht korrekt beendet wird. hierzu muss ich das Skript um den Punkt stop erweitern.

    Kann mir hier jemand weiterhelfen?

    Gruß
    mepi0011

    Kommentar


      #3
      Hallo,

      ich hab Dein Skript mal etwas angepasst, damit Du (und ich) das ganze auch Stoppen kannst.

      Leider bekomme ich das ganze ohne ein cd nicht hin. Dann findet er einige Pfade nicht.

      Die Datei /etc/init.d/openhab sieht dann folgendermassen aus:

      Code:
      #! /bin/sh
      ### BEGIN INIT INFO
      # Provides:          starts openhab from home
      # Required-Start:    $network $remote_fs $syslog
      # Required-Stop:     $network $remote_fs $syslog
      # Default-Start:     2 3 4 5
      # Default-Stop:      0 1 6
      # Short-Description: Kurze Beschreibung
      # Description:       Längere Bechreibung
      ### END INIT INFO
      # Author:
      
      # set ports for HTTP(S) server
      HTTP_PORT=8080
      HTTPS_PORT=8443
      
      if test -f /etc/default/openhab; then
          . /etc/default/openhab
      else
          echo "Please set OPENHABPATH in /etc/default/openhab"
          exit 1
      fi
      
      # Aktionen
      case "$1" in
          start)
              cd $OPENHABPATH
              # get path to equinox jar inside $OPENHABPATH folder
              cp=$(find ./server -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);
      
              echo Launching the openHAB runtime..
              java -Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTP_PORT -Djetty.port.ssl=$HTTPS_PORT -Djetty.home=. -Dlogback.configurationFile=configurations/logback.xml -Dfelix.fileinstall.dir=addons -Djava.library.path=lib -Djava.security.auth.login.config=./etc/login.conf -Dorg.quartz.properties=./etc/quartz.properties -Dequinox.ds.block_timeout=240000 -Dequinox.scr.waitTimeOnBlock=60000 -Djava.awt.headless=true -jar $cp -console &> /dev/null
      
              echo $! > /var/run/openhab.pid
              ;;
          stop)
              echo "stopping openhab"
              kill `cat /var/run/openhab.pid`
              ;;
          restart)
              echo "does not work"
              ;;
      esac
      
      exit 0
      ausserdem muss ein Config-File in /etc/defaults liegen:

      Code:
      # PATH TO OPENHAB
      OPENHABPATH=/opt/openhab
      
      # set ports for HTTP(S) server
      HTTP_PORT=8080
      HTTPS_PORT=8443
      wobei OPENHABPATH den Pfad der Installation angeben muss.

      Skript ausführbar machen, und mit update-rc.d opehab defaults in die Runlevel eintragen und das ganze sollte laufen.

      Stoppen kann man mit /etc/init.d/openhab stop

      Restart ist noch nicht möglich, und ich hab auch noch keinen Schutz gegen Mehrfachstart eingebaut.

      Gruß
      Daniel

      Kommentar


        #4
        Hallo Zigulle,

        vielen Dank für die Rückmeldung!

        Hab ich gleich umgesetzt,funktioniert perfekt.

        Gruß
        mepi0011

        Kommentar


          #5
          Hallo,

          ich hab das Skript ein klein wenig verfeinert.

          Hier die neue Version, die gegen doppeltes Starten geschützt ist.

          Code:
          #! /bin/sh
          ### BEGIN INIT INFO
          # Provides:          starts openhab from home
          # Required-Start:    $network $remote_fs $syslog
          # Required-Stop:     $network $remote_fs $syslog
          # Default-Start:     2 3 4 5
          # Default-Stop:      0 1 6
          # Short-Description: Kurze Beschreibung
          # Description:       Längere Bechreibung
          ### END INIT INFO
          # Author:
          
          # set ports for HTTP(S) server
          HTTP_PORT=8080
          HTTPS_PORT=8443
          
          if test -f /etc/default/openhab; then
              . /etc/default/openhab
          else
              echo "Please set OPENHABPATH in /etc/default/openhab"
              exit 1
          fi
          
          # Aktionen
          case "$1" in
              start)
                  if [ -f /var/run/openhab.pid ]; then
                          echo "openhab seems to run allready. If not, please delete /var/run/openhab.pid"
                  else
          
                          cd $OPENHABPATH
                          # get path to equinox jar inside $OPENHABPATH folder
                          cp=$(find ./server -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);
          
                          echo Launching the openHAB runtime..
                          java -Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTP_PORT -Djetty.port.ssl=$HTTPS_PORT -Djetty.home=. -Dlogback.configurationFile=configurations/logback.xml -Dfelix.fileinstall.dir=addons -Djava.library.path=lib -Djava.security.auth.login.config=./etc/login.conf -Dorg.quartz.properties=./etc/quartz.properties -Dequinox.ds.block_timeout=240000 -Dequinox.scr.waitTimeOnBlock=60000 -Djava.awt.headless=true -jar $cp -console &> /dev/null
          
                          echo $! > /var/run/openhab.pid
                  fi
                  ;;
              stop)
                  echo "stopping openhab"
                  kill `cat /var/run/openhab.pid`
                  rm /var/run/openhab.pid
                  ;;
              restart)
                  echo "does not work"
                  ;;
          esac
          
          exit 0
          Gruß Daniel

          Kommentar


            #6
            Ergänzung

            Hi,

            ich habe mein start Skript noch um den Restart ergänzt.

            Code:
                
            restart)
                    actPid=`cat /var/run/openhab.pid`
                    $0 stop
                    while [ `ps -ef | grep $actPid | wc -l` -gt 1 ]
                    do
                       echo -n .
                       sleep 2
                    done
                    echo
                    $0 start
                    ;;
            Gruss
            Steffen

            Kommentar


              #7
              Hallo,

              ich wärme dieses Thema mal wieder auf, da ich Probleme habe, den Autostart umzusetzen.
              Ich habe in /etc/init.d eine Datei openhab mit folgendem Inhalt angelegt:
              Code:
              #! /bin/sh
              ### BEGIN INIT INFO
              # Provides:          starts openhab from home
              # Required-Start:    $network $remote_fs $syslog
              # Required-Stop:     $network $remote_fs $syslog
              # Default-Start:     2 3 4 5
              # Default-Stop:      0 1 6
              # Short-Description: Kurze Beschreibung
              # Description:       Längere Bechreibung
              ### END INIT INFO
              # Author:
              
              # set ports for HTTP(S) server
              HTTP_PORT=8080
              HTTPS_PORT=8443
              
              if test -f /etc/default/openhab; then
                  . /etc/default/openhab
              else
                  echo "Please set OPENHABPATH in /etc/default/openhab"
                  exit 1
              fi
              
              # Aktionen
              case "$1" in
                  start)
                      if [ -f /var/run/openhab.pid ]; then
                              echo "openhab seems to run allready. If not, please delete /var/run/openhab.pid"
                      else
              
                              cd $OPENHABPATH
                              # get path to equinox jar inside $OPENHABPATH folder
                              cp=$(find ./server -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);
              
                              echo Launching the openHAB runtime..
                              java -Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTP_PORT -Djetty.port.ssl=$HTTPS_PORT -Djetty.home=. -Dlogback.configurationFile=configurations/logback.$
              
                              echo $! > /var/run/openhab.pid
                      fi
                      ;;
                  stop)
                      echo "stopping openhab"
                      kill `cat /var/run/openhab.pid`
                      rm /var/run/openhab.pid
                      ;;
                  restart)
                      echo "does not work"
                      ;;
              esac
              
              exit 0
              Dann habe ich unter /etc/rc2.d einen entsprechenden openhab Eintrag angelegt und unter /etc/default/ eine Datei openhab mit diesem Inhalt angelegt:
              Code:
              # PATH TO OPENHAB
              OPENHABPATH=/opt/openhab
              
              # set ports for HTTP(S) server
              HTTP_PORT=8080
              HTTPS_PORT=8443
              Die beiden Dateien /etc/init.d/openhab und /etc/default/openhab habe ich mit dem Befehl chmod +x Ausführbar gemacht (ich glaube zumindest dass das geklappt hat).
              Trotzdem wird OpenHAB beim Neustart des Raspberry nicht automatisch ausgeführt. Ich finde auch keine Fehlermeldung. Was mache ich falsch?

              Gruß Jan

              Kommentar


                #8
                ich habe ein EEEPC mit einem Ubuntu System laufen. Nur leider habe ich keinen Init.d Ordern unter der Runtime von Openhab. Wie baue ich denn unter Ubuntu das Startskript zusammen? Danke fuer die Hilfe.

                Gruss Jens

                Kommentar


                  #9
                  Zitat von JensKindgen Beitrag anzeigen
                  ich habe ein EEEPC mit einem Ubuntu System laufen. Nur leider habe ich keinen Init.d Ordern unter der Runtime von Openhab. Wie baue ich denn unter Ubuntu das Startskript zusammen? Danke fuer die Hilfe.

                  Gruss Jens
                  Hallo Jens,

                  du musst die openhab Datei unter /etc/init.d/ anlegen, nicht im OpenHAB Ordner.

                  Gruß Jan

                  Kommentar


                    #10
                    - √ - Autostart von openhab auf Raspberry PI

                    Also im Root?


                    Gesendet von meinem iPad mit Tapatalk HD

                    Kommentar


                      #11
                      Zitat von Jan0815 Beitrag anzeigen
                      Hallo,

                      ich wärme dieses Thema mal wieder auf, ...

                      ... Die beiden Dateien /etc/init.d/openhab und /etc/default/openhab habe ich mit dem Befehl chmod +x Ausführbar gemacht (ich glaube zumindest dass das geklappt hat).
                      Hallo Jan,

                      mit dem Befehl ls -l kannst du die Berechtigungen der Dateien prüfen. Die Ausgabe sieht dann z.B. wie folgt aus:

                      Code:
                      pi@raspberrypi /opt/openhab $ ls -l
                      total 96
                      drwxr-xr-x 2 root root  4096 Apr 14 00:40 addons
                      drwxr-xr-x 8 root root  4096 Apr 13 23:45 configurations
                      drwxr-xr-x 2 root root  4096 Apr 13 02:17 contexts
                      -rwxr-xr-x 1 root root  1405 Apr 13 02:17 contributors.txt
                      drwxr-xr-x 4 root root  4096 Apr 14 00:43 etc
                      -rwxr-xr-x 1 root root 35147 Apr 13 02:17 LICENSE.TXT
                      drwxr-xr-x 2 root root  4096 Apr 18 01:59 logs
                      -rwxr-xr-x 1 root root   626 Apr 13 02:17 README.TXT
                      drwxr-xr-x 6 root root  4096 Apr 14 13:19 server
                      drwxr-xr-x 2 root root  4096 Apr 13 02:17 sounds
                      -rwxr-xr-x 1 root root   923 Apr 13 02:17 start.bat
                      -rwxr-xr-x 1 root root  1072 Apr 13 02:17 start_debug.bat
                      -rwxr-xr-x 1 root root  1010 Apr 13 02:17 start_debug.sh
                      -rwxr-xr-x 1 root root   854 Apr 13 02:17 start.sh
                      drwxr-xr-x 4 root root  4096 Apr 13 22:49 webapps
                      drwxr-xr-x 3 root root  4096 Apr 13 22:49 workspace
                      Wobei die Buchstaben am Anfang folgende Bedeutung haben r = read, w = write und x = execute

                      Weitere ausführliche Informationen zu ls findest du hier:
                      Verzeichnisinhalt en detail mit "ls" / 09 / 2005 / LinuxUser / Print-Artikel / Artikel / Internal / Home - LinuxCommunity

                      Um die Datei ausführbar zu machen, hatte ich folgendes verwendet:

                      Code:
                      sudo chmod a+x openhab
                      Danach habe ich noch Probleme mit den Berechtigungen, worauf ich den Owner und die Gruppe änderte

                      Code:
                      sudo chgrp root openhab
                      sudo chown root openhab
                      Die Ausgabe mit "-rwxr-xr-x 1 root root 1757 Apr 13 23:27 /etc/init.d/openhab
                      " müsste dann wie folgt aussehen:

                      Code:
                      -rwxr-xr-x 1 root root 1757 Apr 13 23:27 /etc/init.d/openhab
                      Viel Erfolg!

                      Gruß
                      Pierre

                      Kommentar


                        #12
                        Hallo
                        Zitat von Jan0815 Beitrag anzeigen
                        Hallo,

                        ich wärme dieses Thema mal wieder auf, da ich Probleme habe, den Autostart umzusetzen.
                        Die beiden Dateien /etc/init.d/openhab und /etc/default/openhab habe ich mit dem Befehl chmod +x Ausführbar gemacht (ich glaube zumindest dass das geklappt hat).
                        die Datei /etc/default/openhab sollte keine ausführrechte haben, da es sich nur um eine Kofigurationsdatei handelt.
                        Also bitte
                        Code:
                        chmod 644 /etc/default/openhab
                        um die Rechte anzupassen.

                        Ob das Startskipt überhaupt funkitioniert, kann man mit
                        Code:
                        /etc/init.d/openhab
                        testen. Nach dem Aufruf sollte openhab starten. Wenn nicht, bitte genau die Fehlermeldungen beachten.

                        Für eine automatischen Systemstart unter ubuntu fehlt wohl noch eine openhab.conf unter /etc/init da Ubuntu das Upstart-System verwendet.
                        Upstart ? Wiki ? ubuntuusers.de
                        Ich werde versuchen, dass in den nächsten Tagen mal zu schreiben und zu posten. Ich starte mein openhab System immer noch von Hand (s.o.), um Fehlermeldungen zu sehen.

                        Gruß
                        Daniel

                        Kommentar


                          #13
                          Bei mir passiert leider genau gar nichts wenn ich in "/etc/init.d" "./openhab" mache. Es wird sofort ohne eine einzige Ausgabe beendet.

                          Raspberry mit Raspbian, openhab 1.3.1.
                          Normales starten von openhab kein Problem, läuft gut.
                          Dienst eingerichtet wie im Wiki beschrieben.

                          Wie kann ich jetzt weiter den Fehler eingrenzen?


                          Grüße,

                          Christoph

                          Kommentar


                            #14
                            Zitat von Quallo Beitrag anzeigen
                            Bei mir passiert leider genau gar nichts wenn ich in "/etc/init.d" "./openhab" mache. Es wird sofort ohne eine einzige Ausgabe beendet.

                            Raspberry mit Raspbian, openhab 1.3.1.
                            Normales starten von openhab kein Problem, läuft gut.
                            Dienst eingerichtet wie im Wiki beschrieben.

                            Wie kann ich jetzt weiter den Fehler eingrenzen?


                            Grüße,

                            Christoph
                            Hallo,

                            normalerweise reicht es nicht nur das Script aufzurufen, du musst ihm auch mitteilen was es tun soll (start oder stop)!

                            Teste bitte mal folgendes:

                            Code:
                            sudo /etc/init.d/openhab start
                            Gruß
                            mepi0011

                            Kommentar


                              #15
                              Ist das gleiche.

                              Ich habe gerade die Vermutung, dass es an dem Pfad von java liegt.

                              start.sh ruft nur java auf, in etc/init.d/openhab steht /usr/bin/java.
                              Und da ist es bei mir nicht installiert.

                              Habe jetzt gleich die oracle jdk 7 version aus dem repo installiert.

                              Es kommt beim Start nun folgende Ausgabe:
                              ./openhab: 109: ./openhab: Syntax error: word unexpected (expecting ")")

                              Zeile 109 aus Tricks - openhab-samples - Miscellaneous Tips & Tricks - This project hosts samples and tips&tricks on how to use openHAB - Google Project Hosting ist die mittlere der folgenden:
                              case "$1" in
                              start)
                              log_daemon_msg "Starting $DESC"

                              Kommentar

                              Lädt...
                              X