Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab auf Raspberry mit Archlinux

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

    Openhab auf Raspberry mit Archlinux

    Da ich Archlinux so toll finde, weil es so super schnell startet habe ich mir gestern den Raspberry mit meiner ersten Openhab Installation eingerichtet.
    Da ich mir einige Infos zusammensuchen musste, möchte ich euch hier mal mitteilen was ich so alles gemacht habe um das zum Laufen zu bekommen:

    1. Archlinux für Raspberry runterladen: Downloads | Raspberry Pi
    2. Das ganze mit win32diskimager auf eine 2GB SDKarte (oder größer) installieren
    3. Raspberry damit starten
    4. Allgemeine Einstellungen machen:
    Rechnernamefestlegen:
    Code:
    echo myhost > /etc/hostname
    Die Spracheinstellung (Locale) festlegen:
    Code:
    echo LANG=de_DE.UTF-8 > /etc/locale.conf
    echo LC_COLLATE=C >> /etc/locale.conf
    Die Tastaturbelegung festlegen:
    Code:
    echo KEYMAP=de-latin1 > /etc/vconsole.conf
    Das ganze System aktualisieren:
    Code:
    pacman -Syu
    Dann muss noch Screen installiert werden, damit Openhab als daemon gestartet werden kann:
    Code:
    pacman -S screen
    So jetzt laden wir uns das JDK (jdk-7u51-linux-arm-vfp-hflt.gz) für ARM von Oracle runter.
    Ich habe das ganze einfach auf meinem Windowsrechner gemacht und auch schon dort entpackt.
    Das ganze mit Winscp in den Ordner /opt/jdk1.7 kopiert und bei allen Dateien im bin Verzeichnis die Eigenschaften auf 755 geändert.

    Der letzte Schritt:
    Openhab habe ich direkt von meinem Windows auf den Raspberry übertragen, wieder mit Winscp.

    Folgende Sachen musste ich noch ändern:
    1. Die knx:localIp= in der openhab.cfg
    2. Das Startscript start.sh sieht jetzt bei mir so aus:
    Code:
    #!/bin/sh
    
    cd `dirname $0`
    
    # set path to eclipse folder. If local folder, use '.'; otherwise, use /path/to/eclipse/
    eclipsehome="server";
    
    # set ports for HTTP(S) server
    HTTP_PORT=8080
    HTTPS_PORT=8443
    
    # get path to equinox jar inside $eclipsehome folder
    cp=$(find $eclipsehome -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);
    
    echo Launching the openHAB runtime...
    screen -S 'OpenHAB Server' -dm /opt/jdk1.7/bin/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 -Dfelix.fileinstall.active.level=4 -Djava.awt.headless=true -jar $cp $* -console
    In der letzten Zeile habe ich folgendes noch an den Anfang geschrieben:
    screen -S 'OpenHAB Server' -dm /opt/jdk1.7/bin/
    Damit wird das richtige JDK verwendet und die Ausgaben von Screen gemanaged.

    Jetzt muss das ganze nur noch als Dienst eingerichtet werden, damit es automatisch startet:
    Dazu muss folgende Datei angelegt werden: "/usr/lib/systemd/system/openhab.service"
    Die bekommt folgenden Inhalt:
    Code:
    [Unit]
    Description=Open Home Automation Bus
    
    [Service]
    Type=forking
    GuessMainPID=yes
    ExecStart=/opt/openhab/start.sh
    ExecStop=/usr/bin/kill -SIGKILL $MAINPID
    ExecStopPost=/usr/bin/screen -wipe
    User=openhab
    Group=daemon
    WorkingDirectory=/opt/openhab
    
    [Install]
    WantedBy=multi-user.target
    Nach dem Speichern muss Systemd noch der neue Dienst bekannt gemacht werden:
    Code:
    systemctl --system daemon-reload
    Dann den Dienst einrichten, damit er automatisch startet:
    Code:
    systemctl enable openhab.service
    Zum sofortigen Starten kann folgender Befehl genommen werden:
    Code:
    systemctl start openhab.service
    und zum Stoppen den hier:
    Code:
    systemctl stop openhab.service
    Das war es schon.
    So braucht der Raspberry zwar bei mir momentan noch ziemlich genau 3 Minuten bis die Weboberfläche zur Verfügung steht, aber ich merke beim Bedienen der Seite nicht das hier nur ein Raspberry dahinter steckt.

    Die Infos habe ich mir übrigens von folgenden Seiten zusammen gesucht:
    Starting OpenHAB on Linux using systemd | stop.pe
    https://wiki.archlinux.de/title/Anle...BCr_Einsteiger

    #2
    Hi Ben,

    sehr cooles Howto, vielen Dank!

    Würde es Dir was ausmachen, das in unserer Samples-Sektion im openHAB Wiki zu posten?

    Gruß,

    Thomas E.-E.
    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

    Kommentar


      #3
      Hi Thomas,
      im Prinzip habe ich da nichts dagegen, aber dann müsste ich nur deswegen mir dort auch einen Account anlegen.
      Kannst du das da nicht einfach eintragen?
      Fände ich ja echt toll wenn ich anderen damit helfen kann.


      Gruß
      Ben

      Kommentar


        #4
        Du brauchst für unser Wiki nur den allgemeinen Github-Account. Und so einen Account sollte doch jeder haben ;-)

        Gruß,

        Thomas E.-E.
        Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

        Kommentar


          #5
          Habe ich aber nicht und werde mir auch nur für einen Wiki-Eintrag keinen zu legen.

          Könntest du das bitte ins Wiki eintragen?
          Danke.

          Kommentar


            #6
            Ich wurde gestern auf diesen Beitrag hingewiesen und daher wollte ich mal fragen, ob jemand helfen kann.

            Ich verwende Arch auf einer Intel Platform unter XEN als Hypervisor. Die ArchVM war vorkonfiguriert mit openJDK und damit gab es Probleme. Daher habe ich alle openJKD Pakete entfernt (aus dem AUR Verzeichnis) und Oracle Java installiert:
            Code:
            [root@Arch]# java -version
            java version "1.7.0_51"
            Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
            Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
            So sollte das eigentlich jetzt stimmen. Das openHAB start.sh Script funktioniert auch, es gibt jetzt keinerlei Fehlermeldungen mehr und openHAB läuft problemlos.

            Allerdings ist noch etwas mit dem systemd Dienst im Argen (Job for openhab.service failed):
            Code:
            [root@ArchApplianceVM ~]# systemctl status openhab.service
            openhab.service - openHAB Home Automation Bus
               Loaded: loaded (/usr/lib/systemd/system/openhab.service; enabled)
               Active: failed (Result: timeout) since Thu 2014-02-27 13:05:40 GMT; 4min 16s ago
              Process: 640 ExecStart=/opt/openhab/start.sh (code=killed, signal=TERM)
            
            Feb 27 13:05:17 ArchApplianceVM start.sh[640]: 13:05:17.474 WARN  o.o.b.k.i....e
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: java.lang.IllegalArgumentExce....
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: at javax.sound.sampled.AudioS...)
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: at marytts.util.data.audio.Au...)
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: 13:05:30.730 WARN  o.o.b.f.i....e
            Feb 27 13:05:32 ArchApplianceVM start.sh[640]: 13:05:32.408 INFO  runtime.bu...1
            Feb 27 13:05:33 ArchApplianceVM start.sh[640]: 13:05:33.477 INFO  runtime.bu...3
            Feb 27 13:05:40 ArchApplianceVM systemd[1]: openhab.service operation timed ....
            Feb 27 13:05:40 ArchApplianceVM systemd[1]: Failed to start openHAB Home Aut....
            Feb 27 13:05:40 ArchApplianceVM systemd[1]: Unit openhab.service entered fai....
            Hint: Some lines were ellipsized, use -l to show in full.
            Code:
            [root@ArchApplianceVM ~]# systemctl status openhab.service
            openhab.service - openHAB Home Automation Bus
               Loaded: loaded (/usr/lib/systemd/system/openhab.service; enabled)
               Active: failed (Result: timeout) since Thu 2014-02-27 13:05:40 GMT; 4min 16s ago
              Process: 640 ExecStart=/opt/openhab/start.sh (code=killed, signal=TERM)
            
            Feb 27 13:05:17 ArchApplianceVM start.sh[640]: 13:05:17.474 WARN  o.o.b.k.i....e
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: java.lang.IllegalArgumentExce....
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: at javax.sound.sampled.AudioS...)
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: at marytts.util.data.audio.Au...)
            Feb 27 13:05:30 ArchApplianceVM start.sh[640]: 13:05:30.730 WARN  o.o.b.f.i....e
            Feb 27 13:05:32 ArchApplianceVM start.sh[640]: 13:05:32.408 INFO  runtime.bu...1
            Feb 27 13:05:33 ArchApplianceVM start.sh[640]: 13:05:33.477 INFO  runtime.bu...3
            Feb 27 13:05:40 ArchApplianceVM systemd[1]: openhab.service operation timed ....
            Feb 27 13:05:40 ArchApplianceVM systemd[1]: Failed to start openHAB Home Aut....
            Feb 27 13:05:40 ArchApplianceVM systemd[1]: Unit openhab.service entered fai....
            Hint: Some lines were ellipsized, use -l to show in full.
            [root@ArchApplianceVM ~]# journalctl -xn
            -- Logs begin at Sun 2014-02-02 12:53:20 GMT, end at Thu 2014-02-27 13:13:25 GMT
            Feb 27 13:06:19 ArchApplianceVM dhcpcd[137]: eth0: Router Advertisement from fe8
            Feb 27 13:06:19 ArchApplianceVM dhcpcd[137]: eth0: requesting DHCPv6 information
            Feb 27 13:06:20 ArchApplianceVM avahi-daemon[143]: Registering new address recor
            Feb 27 13:06:20 ArchApplianceVM avahi-daemon[143]: Withdrawing address record fo
            Feb 27 13:06:22 ArchApplianceVM ntpd[223]: Listen normally on 6 eth0 2002:3e8f:d
            Feb 27 13:06:22 ArchApplianceVM ntpd[223]: peers refreshed
            Feb 27 13:06:22 ArchApplianceVM ntpd[223]: new interface(s) found: waking up res
            Feb 27 13:06:37 ArchApplianceVM dhcpcd[137]: eth0: Router Advertisement from fe8
            Feb 27 13:13:25 ArchApplianceVM smbd[338]: [2014/02/27 13:13:25.885095,  0] ../s
            Feb 27 13:13:25 ArchApplianceVM smbd[338]: Unable to open printcap file /etc/pri
            Meine start.sh entspricht der Original Datei aus openHAB 1.4. Das ist die systemd Startdatei "/usr/lib/systemd/system/openhab.service":
            Code:
            [Unit]
            Description=openHAB Home Automation Bus
            
            [Service]
            Type=forking
            GuessMainPID=yes
            ExecStart=/opt/openhab/start.sh
            ExecStop=/usr/bin/kill -SIGKILL $MAINPID
            ExecStopPost=/usr/bin/screen -wipe
            User=openhab
            Group=openhab
            WorkingDirectory=/opt/openhab
            
            [Install]
            WantedBy=multi-user.target
            openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
            Devices: KNX & ZWave

            Kommentar


              #7
              screen hast du installiert und auch in der start.sh eingetragen?

              Kommentar


                #8
                Oh das ging ja schnell :-)

                Nein, Screen wollte ich eigentlich nicht verwenden. Kann denn das der Fehler sein?

                Ach ja und wie gesagt - start.sh funktioniert ja gut.
                openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
                Devices: KNX & ZWave

                Kommentar


                  #9
                  Ich bin jetzt nicht so tief im Linux Thema, aber ich glaube das wird verwendet um das ganze als Daemon laufen zu lassen und Openhab trotzdem seine Ausgaben machen kann.

                  Außerdem wird auch in deiner Service Datei auf screen verwiesen:
                  ExecStopPost=/usr/bin/screen -wipe

                  screen ist ja auch nur ein kleines Paket.

                  Kommentar


                    #10
                    Also, das scheint (teilweise) zu funktionieren:
                    Das zeigt systemctl --all:
                    Code:
                    openhab.service            loaded active   running   openHAB Home Automation Bus
                    ...und das ist ja schon einmal super.

                    Auch über den Status zeigt er Positives:
                    Code:
                    [root@ArchApplianceVM ~]# systemctl status openhab
                    openhab.service - openHAB Home Automation Bus
                       Loaded: loaded (/usr/lib/systemd/system/openhab.service; enabled)
                       Active: active (running) since Thu 2014-02-27 15:19:38 GMT; 3min 30s ago
                      Process: 161 ExecStart=/opt/openhab/start.sh (code=exited, status=0/SUCCESS)
                     Main PID: 228 (screen)
                       CGroup: /system.slice/openhab.service
                               ├─228 SCREEN -S OpenHAB Server -dm /opt/java/bin/java -Dosgi.clean...
                               └─250 /opt/java/bin/java -Dosgi.clean=true -Declipse.ignoreApp=tru...
                    
                    Feb 27 15:19:37 ArchApplianceVM start.sh[161]: Launching the openHAB runtime...
                    Feb 27 15:19:38 ArchApplianceVM systemd[1]: Started openHAB Home Automation Bus.
                    Das Problem ist nun, das ich nichts schalten kann.
                    openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
                    Devices: KNX & ZWave

                    Kommentar


                      #11
                      Nein, Screen wollte ich eigentlich nicht verwenden. Kann denn das der Fehler sein?
                      Screen kannst Du verwenden um einen Prozess der im Terminal gestertet wurde im Hinztergrund weiter laufen zu lassen, auch wenn das Terminal beendet wurde, z.B. weil sich der Benutzer abgemeldet hat. Wenn Du den Prozess beim Systemstart als Daemon startest, dann brauchst Du screen nicht und solltest ihn auchn nicht verwenden.

                      Das Problem ist nun, das ich nichts schalten kann.
                      Ist denn das Webinterface von openHAB erreichtbar, dann läuft es zumindest. Danach würde ich nach der Konfiguration der Bindings in der Startdatei schauen, z.B. die Adresse des KNX Interfaces und die Itemdefinitionen prüfen.

                      Kommentar


                        #12
                        So hatte ich Screen auch verstanden, danke für die Klärung.

                        Wenn ich das start.sh Script starte, dann läuft openHAB wie es soll. Seit gestern Abend ohne Abbrüche o.ä. Das systemd stimmt also irgendwie nicht.

                        Wenn ich meinen Server nicht boote ist also alles i.O. Ich denke, dass ich noch einmal komplett deinstalliere und dann von hier installiere in der Hoffnung, dass damit ein funktionierendes Startscript mitkommt: https://github.com/abrenk/openhab-arch-packages



                        Sent from my iPad using Tapatalk
                        openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
                        Devices: KNX & ZWave

                        Kommentar


                          #13
                          Hast Du mal nach den Rechten und den Umgebungsvariablen geschaut, ev. sind Systemumgebung oder Benutzer anders wenn beim Booten gestartet.

                          Kommentar


                            #14
                            Vielen Dank an Alle, die mir hier geholfen haben. Ich habe das ganze System auf einen Raspberry installiert und damit läuft's wie von selbstmacher beschrieben. Übrigens auch mit der neuen Version 1.4.
                            openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
                            Devices: KNX & ZWave

                            Kommentar


                              #15
                              Hallo beisammen,

                              ich habe mir den "openhab.service" vor ein paar Wochen mal eingerichtet. Der Start über "systemctl ..." funktioniert soweit und auch Weboberfläche und Schaltungen via Web funktionieren.

                              Leider scheint bei dem Verfahren das db4o nicht zu persistieren, also die Werte in die Datenbank zu schreiben. Darauf gekommen bin ich, als ich mir die Aussentemperaturen anschauen wollte. Er zeigt zwar aktuell den korrekten Wert an, aber die höchst- und niedrig-Temperaturen, welche in db4o mit der "alten" Startmethode persistiert werden, werden nicht ausgelesen. Alte Werte (vor Umstellung der Startmethode) werden aber angezeigt. Also dürfte es ein Problem mit der Persistierung sein.

                              Was in Bezug auf db4o kann ich prüfen? Fehlt evtl. noch eine ENV-Variable oder eine Berechtigung? Ich starte (neu/alt) mit demselben User und Gruppe ("openhab"). Daran sollte es eigentlich auch nicht liegen.

                              Noch ein Hinweis: Ich hab aktuell noch OpenHab Version 1.3 am laufen und bin noch nicht dazu gekommen auf die neue Version "up-zu-daten". Womöglich ist ja ab Version 1.4 eine für openSuSE 12.3 geeignete Systemstart-Methode dabei?!

                              Vielen Dank für hilfreiche Tipps im Voraus!

                              Schöne Grüße,
                              Kai-Holger

                              Kommentar

                              Lädt...
                              X