Ankündigung

Einklappen
Keine Ankündigung bisher.

Befehl per EXEC Binding auf remote device senden

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

    Befehl per EXEC Binding auf remote device senden

    Da ich meine openHAB Instanz nun auf einen "richtigen" Server umgezogen habe, benutze ich meinen RASPI nur noch als "Schalter" für 433MHz Steckdosen. Im wesentlichen habe ich mich an dieser Anleitung orientiert: https://klenzel.de/3106

    Was mich nun wundert, ist die Tatsache, dass der Befehl:
    Code:
    [FONT=Menlo][SIZE=11px]/usr/share/openhab/configurations/scripts/fsd.sh 2 1 1 0[/SIZE][/FONT]
    funktioniert, das ITEM aber nicht (egal ob neue oder alte Version der EXEC Definition):
    Code:
    [COLOR=#931A68][FONT=Monaco][SIZE=11px]Switch [/SIZE][/FONT][/COLOR][COLOR=#000000][FONT=Monaco][SIZE=11px]FSD_1 { exec=[/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px]">[ON:/[/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px][U]usr[/U][/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px]/share/[/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px][U]openhab[/U][/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px]/configurations/scripts/fsd.sh 2 1 1 1] >[OFF:/[/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px][U]usr[/U][/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px]/share/[/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px][U]openhab[/U][/SIZE][/FONT][/COLOR][COLOR=#3933FF][FONT=Monaco][SIZE=11px]/configurations/scripts/fsd.sh 2 1 1 1]"[/SIZE][/FONT][/COLOR][COLOR=#000000][FONT=Monaco][SIZE=11px] }[/SIZE][/FONT][/COLOR]
    , obwohl es im Log heisst:
    Code:
    2016-02-09 16:31:37.145 [DEBUG] [o.i.r.i.resources.ItemResource] - Received HTTP POST request at 'items/FSD_1' with value 'ON'.
    Das EXEC Binding ist auf dem Server installiert, openHAB läuft auf dem Raspberry auch als root (wichtig bei der GPIO Nutzung des Raspberrys). Wobei ich mich allerdings frage, warum ich openHAB auf dem Raspberry laufen habe, denn eigentlich nutze ich ja lediglich wiringpi für die Nutzung der GPIO Ports sowie raspberry-remote für das Senden der Ein- oder Aus-Befehle über das Funkmodul.
    openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
    Devices: KNX & ZWave

    #2
    openHAB läuft bei Dir doch nun auf einem "richtigen" Server deshalb verstehe ich Deine Aussage aus dem letzten Absatz "openHAB läuft auf dem Raspberry..." nicht so ganz. Auf dem Raspberry sollte eigentlich kein openHAB laufen, stattdessen wird dort nur remote per ssh der send-Befehl abgesetzt (laut deinem Link).

    Die debug-Meldung besagt erst einmal nur, dass das Item als solches funktioniert, also ist der Aufruf des Scripts fehlerhaft.

    Mein Tipp ins Blaue wäre, dass dem User, unter dem openHAB läuft, die Rechte fehlen, das Script auszuführen (z.B. chmod 755 /usr/share/openhab/configurations/scripts/fsd.sh sollte das beheben).

    Vermutlich kannst Du auch den Pfad weglassen (/usr/share/openhab/configurations/scripts/), dann sollte automatisch das script im scripts-Ordner gesucht werden.

    Kommentar


      #3
      Dein erster Teil der Nachricht beantwortet mir schon die Frage, ob ich openHAB auf dem RPI überhaupt noch brauche. Vielen Dank, das kann ich also entfernen (...es stört aber sich auch nicht, zieht vielleicht de Performance ein wenig nach unten...)

      Ich hatte sogar schon ein chmod 777 /usr/share/openhab/configurations/scripts/fsd.sh versucht, leider ohne Erfolg. Den Pfad habe ich versucht wegzulassen, da kommt dann aber eine ellenlange Liste von JAVA Fehlern.

      Er gibt jetzt auch beide Nachrichten im Log an:
      Code:
       [FONT=Menlo][SIZE=11px]2016-02-10 18:35:31.583 [DEBUG] [o.i.r.i.resources.ItemResource] - Received HTTP POST request at 'items/FSD_1' with value 'OFF'.[/SIZE][/FONT]
        [FONT=Menlo][SIZE=11px]2016-02-10 18:35:31.590 [INFO ] [.o.b.exec.internal.ExecBinding] - executed commandLine '/usr/share/openhab/configurations/scripts/fsd.sh 2 1 1 0'[/SIZE][/FONT]
      Am Script kann es ja nicht liegen, denn das wird aus dem Terminalfenster meines Servers ja korrekt ausgeführt aber zum vollständigem Bild:
      Code:
      #!/bin/bash
      /usr/bin/ssh root@192.168.178.101 "/opt/raspberry-remote/send $1 $2 $3 $4"
      DATE=`date +'%d.%m.%Y - %T'`
      if [ "$4" = "1" ]; then
         echo "$DATE: FSD-Device (HC $2, DEV $3) wurde eingeschaltet" >> /var/log/openhab/fsd.log
      fi
      if [ "$4" = "0" ]; then
         echo "$DATE: FSD-Device (HC $2, DEV $3) wurde ausgeschaltet" >> /var/log/openhab/fsd.log
      fi
      So sieht das im Terminalfenster aus:
      Code:
       [FONT=Menlo][SIZE=11px]/usr/share/openhab/configurations/scripts/fsd.sh 2 1 1 1
       [/SIZE][/FONT]
        [FONT=Menlo][SIZE=11px]sending systemCodeType[2] systemCode[1] unitCode[1] command[1] ...[/SIZE][/FONT]
        [FONT=Menlo][SIZE=11px]defining transmit PIN[0] ... success[/SIZE][/FONT]
        [FONT=Menlo][SIZE=11px]computing system Code Type ...[/SIZE][/FONT]
        [FONT=Menlo][SIZE=11px]computing systemcode for Intertechno Type B house[1] unit[1] ... 1/A ... got systemCode[/SIZE][/FONT]
        [FONT=Menlo][SIZE=11px]1 ... sent TriState signal: pSystemCode[000000000FFF][/SIZE][/FONT]
      openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
      Devices: KNX & ZWave

      Kommentar


        #4
        Wenn ich mir Dein Script anschaue, frage ich mich, wie die ssh-Anmeldung am Raspberry erfolgreich verlaufen kann, denn Du übergibst kein Passwort und kein Keyfile. Wenn Du per Putty am Server angemeldet bist, kann es sein, dass ssh nicht nach dem Passwort fragt, weil der Puttyagent das Keyfile durchreicht. das wird aber niemals funktionieren, wenn openHAB das Script aufruft.
        Der normale Weg wäre also, im Script ein Keyfile anzugeben (ssh -i /pfad/keyfile ...) welches ohne Passwortschutz (beim Erzeugen des Public/Private Key einfach kein Passwort eingeben) gespeichert ist. Den Public Key dieses Keyfiles hängst Du auf dem Raspberry an die Datei /home/pi-user/.ssh/authorized_keys an (z.B. mit cat pubkeyfile >> authorized_keys.

        Ich rate dringend vom Regelbetrieb unter dem User root ab , sowohl auf den Raspberry als auch (besonders) auf dem Server. Es gibt definitiv keinen Grund dazu, man muss nur dem User die passenden Rechte einräumen, damit er seine Aufgabe erfolgreich ausführen kann. Ich gebe aber zu, dass es - gerade für Linux-Nicht-Profis - anstrengend sein kann, herauszufinden, wo welche Rechte erteilt werden müssen.
        Außerdem sollte das Keyfile, da es ja keinen Passwortschutz aufweist, nur von dem User lesbar sein, unter dem openHAB läuft.

        Kommentar


          #5
          Ich habe diese Art der Anmeldung bereits bei einigen Dingen realisiert. Eine der zahlreichen Beschreibungen siehe hier: https://klenzel.de/1871

          Die Keyfiles sind also bereits vorher übergeben, so dass sich der Server ohne PW-Eingabe direkt am RPI anmeldet. Du hast recht, unter dem User "root" muss das nicht sein, aber über die Sicherheitsaspekte würde ich mir dann Gedanken machen, wenn openHAB mal dasselbe macht wie ich auf per Tastatureingabe im Terminalfenster.
          openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
          Devices: KNX & ZWave

          Kommentar


            #6
            Was mich jetzt an der Beschreibung, die Du verlinkt hast wundert, ist der Dateiname authorized_keys2, bei mir ist da keine 2 dabei. Der Dateiname ist in /etc/ssh/sshd_config unter AuthorizedKeysFile eingestellt, Standard ist %h/.ssh/authorized_keys, wobei %h das Home-Verzeichnis des Users ist. So sieht das bei mir bei allen Rechnern aus, die openssh verwenden, egal welches Derivat.

            Landet denn die Log-Ausgabe in der Logdatei? Also das hier:
            Code:
            echo "$DATE: FSD-Device (HC $2, DEV $3) wurde eingeschaltet" >> /var/log/openhab/fsd.log
            Spaßeshalber könntest Du die Ausgabe von ssh per > ebenfalls in eine Logdatei umleiten, dann kannst Du sehen, falls es beim login ein Problem gibt.

            Kommentar


              #7
              Hallo,

              ich habe das gleiche Problem wie EdgarWallace. Bin auch nach der selben Anleitung gegangen. Bis mir irgendwann eingefallen bzw. aufgefallen ist, das mein R Pi = Open Hab Server.... wie oben ja schon erwähnt bezieht sich die Anleitung viel auf SSH, was aber bei mir ja m.E. nicht nötig sein sollte (ich hoffe ich hab hier kein Denkfehler)

              Ich habe folgendes Script erstellt, ohne Probleme aufrufen kann (auch als Benutzer pi ohne sudo)
              Code:
               [FONT=Monaco][SIZE=11px]#!/bin/bash[/SIZE][/FONT]
                [FONT=Monaco][SIZE=11px]/[U]usr[/U]/local/bin/send $1 $2 $3[/SIZE][/FONT]
              Code:
              pi@raspberrypi ~ $ /opt/openhab/configurations/scripts/fsd.sh 00010 2 1
              test1sending systemCode[00010] unitCode[2] command[1]
              Und die Steckdose wird in diesem Fall auf 1 geschalten.

              Wenn ich das ganze jetzt aber über ein Item machen will, funktioniert es einfach nicht.

              Code:
               [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]Switch[/COLOR][COLOR=#000000] HIFI_WZ   [/COLOR]"TV / HIFI"[COLOR=#000000]   (WZ) {exec=[/COLOR]"ON:/opt/[U]openhab[/U]/configurations/scripts/fsd.sh 00010 2 1 ,OFF:/opt/[U]openhab[/U]/configurations/scripts/fsd.sh 00010 2 0"[COLOR=#000000]}[/COLOR][/SIZE][/FONT][/COLOR]

              Hat jemand vielleicht eine Idee was ich falsch mache?

              Kommentar


                #8
                Unter welchem User läuft openHAB?

                Kommentar


                  #9
                  Wenn ich ganz ehrlich bin weiß ich es nicht bin neu in der Materie ... hab es auf /opt/openhab/ installiert und wenn ich hier ls- l eingebe bekomme ich

                  drwxr-xr-x 4 root root 4096 May 6 2015 minecraft-pi
                  drwxrwxrwx 11 root root 4096 Feb 11 22:51 openhab
                  drwxr-xr-x 5 root root 4096 May 6 2015 sonic-pi
                  drwxr-xr-x 7 root root 4096 Feb 7 19:49 vc
                  drwxr-xr-x 3 root root 4096 May 6 2015 Wolfram
                  heisst das Openhab läuft als Root? Komm schon ganz durcheinander..

                  Edit:

                  ich glaub jetzt weis ich was du meinst... wie ich den User unter der Users.cfg angelegt habe? Mit "Maki" liegt daran das Problem?
                  Zuletzt geändert von Maki84; 12.02.2016, 13:05.

                  Kommentar


                    #10
                    Nein, ich meine den User, der openHAB startet.

                    Ich gehe mal davon aus, dass Du openHAB von Hand installiert hast, also nicht den >>offiziellen Weg<< gegangen bist. Dieser ist im Allgemeinen für Anfänger der unkompliziertere - und im Hinblick auf die Zukunft sicher auch der bessere - Weg.
                    Wenn Du von Hand installiert hast, hast Du vermutlich gar keinen User angelegt, openHAB wird also entweder von root ausgeführt, oder von pi. Beide sind möglich, aber keine gute Wahl (das Rechtesystem wird damit - mindestens teilweise - unterlaufen und die Installation wird damit eher angreifbar; spätestens wenn Du openHAB von außen erreichbar machen willst, spielst Du Roulette, und zwar die russische Variante) .

                    Das Verzeichnis /opt/openhab/ gehört dem User root und der Gruppe root, das ist auch nicht weiter verwunderlich, weil in /opt/ nur root Verzeichnisse oder Dateien anlegen darf. Damit ist aber nicht geklärt, welcher User openHAB aufruft.

                    Wenn Du Dich z.B. mit dem User pi auf dem Raspberry einloggst (egal ob direkt oder per ssh) und dann im Verzeichnis /opt/openhab/ ./start.sh aufrufst, läuft openHAB unter dem User pi (natürlich vorausgesetzt, es lief nicht schon vorher...)
                    Wenn Du ein Startscript (z.B. /etc/init.d/openhab) nutzt, um openHAB automatisch beim Rechnerstart zu starten, kommt es darauf an, was in diesem Script eingetragen ist.

                    Falls Du gewillt bist, nochmal ein paar Schritte zurückzugehen, kannst Du auch die configurations sichern, openHAB komplett vom Raspberry runterlöschen und anschließend nach der Anleitung im Wiki (siehe Link oben) neu installieren. Dann solltest Du die configurations am neuen Ort zurückspielen, aber bitte den Eigentümer der Dateien auch korrekt setzen, mit
                    Code:
                    sudo chown -R openhab: configurations
                    kannst Du das für alle Dateien und Verzeichnisse in configurations auf einen Rutsch erledigen. (Wenn Du mit apt-get installierst, wird der User openhab automatisch angelegt und zum Starten von openHAB eingetragen)



                    Ach ja, gerade gesehen, Du nutzt die alte Schreibweise für das exec Binding, versuche mal
                    Code:
                    {exec=">[ON:/opt/openhab/configurations/scripts/fsd.sh 00010 2 1] >[OFF:/opt/openhab/configurations/scripts/fsd.sh 00010 2 0]"}
                    Und weil Du ja erwähntest, dass Du neu in der Materie bist... hast Du das exec-binding auch in den addons-Ordner gelegt?

                    Kommentar


                      #11
                      Danke erstmal für eine Hilfe... Schreibweise hab ich angepasst, leider trotzdem noch kein Erfolg. Werde jetzt Openhab nochmal komplett neuinstallieren und danach melde ich mich evt. nochmal

                      Und ja das Addon ist im "Addon-Ordner"

                      Kommentar


                        #12
                        Also ich habe es neu installiert ich hoffe richtig, jedenfalls ist der Benutzer jetzt Openhab. Jetzt komme ich aber wieder nicht weiter... ich muss den Pfad von /opt/openhab auf /usr/share/openhab.. ändern richtig? Wie setze ich jetzt aber die Rechte richtig? Denn aktuell kann ich über den Designer nichts änder, da ich nur Read rechte habe...

                        Ich glaube ich hab einfach mittlerweile zu viele verschiedene Anleitungen gesehen das ich jetzt durcheinander bin.

                        Edit:

                        das mit den rechte glaube ich habe ich hinbekommen.. zumindest kann ich mich jetzt über su -u openhab als der user anmelden und dann das script mit /usr/share/openhab/configurations/scripts/an.sh ausführen... jedoch funktioniert es nicht über den Schalter
                        Zuletzt geändert von Maki84; 12.02.2016, 17:08.

                        Kommentar


                          #13
                          Zitat von udo1toni Beitrag anzeigen

                          Und weil Du ja erwähntest, dass Du neu in der Materie bist... hast Du das exec-binding auch in den addons-Ordner gelegt?
                          Haha jetzt wird es peinlich :P

                          Ich war mir so sicher das ich das richtige exec binding hatte... zufällig bin ich dann auf eine Seite gestossen wo jemand auch das falsche hatte, wie ich (org.openhab.persistence.exec-1.8.1.jar) -> ich hatte das mit "persistence" im Addon Ordner
                          Zuletzt geändert von Maki84; 12.02.2016, 22:03.

                          Kommentar


                            #14
                            Gut, dass Maki84 sein Problem lösen könnte, meines ist aber unterschiedlich. Hier eine kleine Summary:

                            Server-seitig:
                            • Ubuntu VM mit openHAB 1.8.1
                            • Exec Binding im /usr/share/openhab/addons installiert (org.openhab.binding.exec-1.8.1.jar)
                            • ~/.ssh Verzeichnis enthält: id_rsa, id_rsa.pub, known_hosts
                            • /etc/ssh/sshd_config: AuthorizedKeysFile %h/.ssh/authorized_keys war auskommentiert
                            • /usr/share/openhab/configurations/scripts/fsd.sh installiert (s.o., chmod 755)
                            • die VM setzt den send-Befehl jeweils per remote ssh ab
                            • openHAB Log zeigt:
                              [INFO ] [.o.b.exec.internal.ExecBinding] - executed commandLine '/usr/share/openhab/configurations/scripts/fsd.sh 2 1 1 0'
                            RPI:
                            • kein openHAB installiert
                            • wiringpi für die Nutzung der GPIO Ports installiert
                            • raspberry-remote für das Senden der Ein- oder Aus-Befehle über das Funkmodul installiert
                            • der rpi läuft als root, ansonsten funktioniert die GPIO Nutzung nicht
                            • ~/.ssh Verzeichnis enthält: authorized_keys, known_hosts
                            • /etc/ssh/sshd_config: AuthorizedKeysFile %h/.ssh/authorized_keys war auskommentiert
                            Problembeschreibung s.o.

                            Ich denke, dass das Problem hier ist (/var/log/auth.log auf dem rpi):
                            So sieht die Meldung aus, wenn openHAB versucht zu schalten:
                            rpi sshd[3890]: Connection closed by 192.168.178.25 [preauth]

                            ​So sieht die Meldung aus, wenn ich direkt über das Terminal schalte (Termin auf dem Mac, kein Putty):

                            Feb 16 10:50:41 rpi sshd[4676]: Accepted publickey for root from 192.168.178.25 port 35734 ssh2
                            Feb 16 10:50:41 rpi sshd[4676]: pam_unix(sshd:session): session opened for user root by (uid=0)
                            Feb 16 10:50:41 rpi sshd[4676]: Received disconnect from 192.168.178.25: 11: disconnected by user
                            Feb 16 10:50:41 rpi sshd[4676]: pam_unix(sshd:session): session closed for user root

                            Zuletzt geändert von EdgarWallace; 16.02.2016, 10:53.
                            openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
                            Devices: KNX & ZWave

                            Kommentar


                              #15
                              Ach ja, ich habe auch versucht, mit dem Befahl den keyfile mitzugeben:
                              Code:
                               [FONT=Menlo][SIZE=11px]#!/bin/bash[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px] [/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]/usr/bin/ssh -i /root/.ssh/id_rsa.pub root@192.168.178.101 "/opt/raspberry-remote/send $1 $2 $3 $4"[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px] [/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]DATE=`date +'%d.%m.%Y - %T'`[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px] [/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]if [ "$4" = "1" ]; then[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]   echo "$DATE: FSD-Device (HC $2, DEV $3) wurde eingeschaltet" >> /var/log/openhab/fsd.log[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]fi[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px] [/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]if [ "$4" = "0" ]; then[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]   echo "$DATE: FSD-Device (HC $2, DEV $3) wurde ausgeschaltet" >> /var/log/openhab/fsd.log[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]fi[/SIZE][/FONT]
                              Auch die Beantwortung einer anderen Frage war ich noch schuldig geblieben. Das Log zeigt brav:
                              Code:
                               [FONT=Menlo][SIZE=11px]16.02.2016 - 11:06:40: FSD-Device (HC 1, DEV 2) wurde eingeschaltet[/SIZE][/FONT]
                                [FONT=Menlo][SIZE=11px]16.02.2016 - 11:06:41: FSD-Device (HC 1, DEV 1) wurde eingeschaltet[/SIZE][/FONT]
                              Ich habe also eindeutig einen Fehler bei der ssh Kommunikation zwischen Ubuntu VM und dem rpi.
                              openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
                              Devices: KNX & ZWave

                              Kommentar

                              Lädt...
                              X