Ankündigung

Einklappen
Keine Ankündigung bisher.

HELP wanted: EXEC Binding - getting started?

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

    HELP wanted: EXEC Binding - getting started?

    Hallo zusammen,

    ich komme mit dem Exec Binding und den Aufrufen nicht klar. Irgendwie werden die items nicht geladen und so auch nicht ausgeführt.

    Konfig: OH 1.4 auf Raspberry Pi mit Java 1.7

    Itemconfig (general.items):

    Code:
    Switch         OHRestart        "Openhab Restart" { exec=">[ON:/etc/init.d/openhab restart]" }
    Switch         PCOff            "PC runterfahren" <computer>    { exec="*:net rpc shutdown -I 192.168.1.116 -U admin%password -f" }


    Sitemap:

    Code:
            Switch     item=PCOff
            Switch     item=OHRestart


    Logfile Auszug:
    Code:
    6:40:08.922 INFO  o.o.m.c.i.ModelRepositoryImpl[:97] - Refreshing model 'general.items'
    16:40:08.940 DEBUG o.o.m.i.i.GenericItemProvider[:154] - Processing binding configs for items from model 'general.items'
    16:40:08.987 ERROR o.o.m.c.i.f.FolderObserver[:105] - An unexpected exception has occured
    java.lang.NullPointerException: null
        at org.openhab.model.item.binding.AbstractGenericBindingProvider.removeConfigurations(AbstractGenericBindingProvider.java:93)
        at org.openhab.model.item.internal.GenericItemProvider.processBindingConfigsFromModel(GenericItemProvider.java:164)
        at org.openhab.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:379)
        at org.openhab.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:158)
        at org.openhab.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:99)
        at org.openhab.model.core.internal.folder.FolderObserver.checkFolder(FolderObserver.java:142)
        at org.openhab.model.core.internal.folder.FolderObserver.run(FolderObserver.java:99)
    16:40:29.124 INFO  runtime.busevents[:22] - PCOff received command ON


    Das Command wird auf den Bus gesendet - dadurch das das Item anscheinend nicht korrekt geladen wird aber nicht ausgeführt. Beide Commands lassen sich auf der Commandline im Linux problemlos ausführen.

    Unter windows werden die commands zumindestens aufgerufen. Da Unix befehle aber nicht korrekt ausgeführt.

    Folgende Bindings habe ich geladen:
    Code:
    org.openhab.binding.exec-1.4.0.jar
    org.openhab.binding.http-1.4.0.jar
    org.openhab.binding.knx-1.4.0.jar
    org.openhab.binding.onewire-1.4.0.jar
    org.openhab.binding.owserver-1.4.0.jar
    org.openhab.binding.pioneeravr-1.4.0.jar
    org.openhab.io.cv-1.4.0.jar
    org.openhab.persistence.db4o-1.4.0.jar
    org.openhab.persistence.exec-1.4.0.jar
    org.openhab.persistence.gcal-1.4.0.jar
    org.openhab.persistence.logging-1.4.0.jar
    org.openhab.persistence.mqtt-1.4.0.jar
    org.openhab.persistence.rrd4j-1.4.0.jar


    Kann mir jemand helfen bitte?

    Danke
    Karsten

    #2
    Ich hab es über Rules und Scripts gelöst. Also wenn ein Item geschaltet wurde dann:
    Code:
     callScript("beep1")
    beep1.script
    Code:
     executeCommandLine("/volume1/script/piep1.sh")
    Ausser piepen hab ich aber keine executes weiter. Holger

    Kommentar


      #3
      Hi Karsten,

      Zitat von kakaiser Beitrag anzeigen
      Logfile Auszug:
      siehst Du die Exception auch beim einem Neustart? Oder nur dann wenn Du im laufenden Betrieb die general.items aktualisierst?

      Gruß,

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

      Kommentar


        #4
        Hallo Thomas,

        ja - auch in dem fall. Habe auch einfach mal nur das Beispiel aus dem WiKi verwendet - selber Effekt.

        Grüsse
        Karsten

        Zitat von teichsta Beitrag anzeigen
        Hi Karsten,



        siehst Du die Exception auch beim einem Neustart? Oder nur dann wenn Du im laufenden Betrieb die general.items aktualisierst?

        Gruß,

        Thomas E.-E.

        Kommentar


          #5
          Also - ums weiter einzugrenzen - hab ich mal einen einfachen CP Befehl verwendet:

          Switch TEST "TEST" (GF) {exec="ON:cp /opt/openhab/configurations/openhab.cfg /opt/openhab/configurations/openhab.old"}

          und das funktioniert ohne probleme. wenn ich allerdings mit den komplexeren Befehl für den remote shutdown arbeite habe ich keinen effekt und weiterhin die Fehlermeldung. Das Item wird nicht sauber registriert:

          Switch testExec {exec="OFF:net rpc shutdown -I 192.168.1.116 -U admin%password -f"}

          muss ich eventuell die - / . / % irgendwie escapen damit die erkannt werden?

          Wenn ja mit welchem Character?

          Kommentar


            #6
            Verzweifelt

            Hi ich habe ein ähnliches Problem nur das bei mir gar keine Exec Befehle ausgeführt werden und ich den Fehler nicht finde.
            Ich habe schon zich Foren durchgelesen doch keiner scheint ein Problem damit zuhaben das die Exec-Befehle gar nicht gehen.

            Ich habe Opnehab auf meinem Raspberry im /home/pi/openhab
            und der Ordner samt Inhalt besitz Root User/Gruppe

            mein Item :
            Code:
            Switch  Funksteckdose1 "Funksteckdose A 1"   {exec=">[ON:/home/pi/rc-switch/rcswitch-pi/send a 1 1 1] >[OFF:/home/pi/rc-switch/rcswitch-pi/send a 1 1 0]"}
            habe ich auch ausprobiert:
            Code:
            Switch  Funksteckdose1 "Funksteckdose A 1"   {exec="ON:/home/pi/rc-switch/rcswitch-pi/send a 1 1 1, OFF:/home/pi/rc-switch/rcswitch-pi/send a 1 1 0"}
            wenn ich den Befehl selber in die Console reinkopiere dann geht es.
            muss man im Pi vielleicht was machen damit die Exec-Befehle selbst gehen?
            Die Bindings habe ich alle drin.

            Kommentar


              #7
              Hallo,

              probier doch mal das hier:

              Code:
              Switch  Funksteckdose1 "Funksteckdose A 1"   { exec=">[ON:/home/pi/rc-switch/rcswitch-pi/send a 1 1 1] >[OFF:/home/pi/rc-switch/rcswitch-pi/send a 1 1 0]" }
              Also Leerzeichen nach dem ersten und vor dem hinteren Curly Brace

              Gruß

              Kommentar


                #8
                Ne funktioniert auch nicht. Wie gesagt ich habe auch von Oben die Test befehle ausprobiert und der Pi führt gar nichts aus.

                Aber der Openhabe server führ das Item aus:
                Code:
                15:19:11.671 INFO  runtime.busevents[:22] - Funksteckdose1 received command ON
                15:19:14.751 INFO  runtime.busevents[:22] - Funksteckdose1 received command OFF
                Kann man irgendwie sonst genau testen ob der Befehl überhaupt ausgeführt wird?
                Hab mir schon überlegt über Apache und PHP-Script den Exec-Befehl zu testen ob das nur an Openhab liegt.

                Kommentar


                  #9
                  Also ich habs jetzt hinbekommen das mein Pi über ein PHP script schaltet.
                  Mit:
                  Code:
                  sudo chown www-data:www-data /var/www
                  sudo chmod 775 /var/www
                  sudo usermod -a -G www-data pi
                  Dann mit:
                  Code:
                  sudo visudo
                  Und dann ganz unten folgende Zeile einfügen:
                  Code:
                  www-data ALL=NOPASSWD: /home/pi/div/rcswitch-pi/send
                  Damit habe ich die Erlaubnis erteilt den Send-Befehl über Apache Server auszuführen.

                  Kann es jetzt sein das mein Openhab auch wegen sowas den Exec-Befehl nicht ausführen will????
                  Ich habe gesehen das die anderen auf Openhab Root User und Gruppe eingestellt haben, aber das bringt bei mir nichts.Muss man irgendwie Openhab erlaubnisse erteilen???

                  Kommentar


                    #10
                    Zitat von teichsta Beitrag anzeigen
                    Hi Karsten,



                    siehst Du die Exception auch beim einem Neustart? Oder nur dann wenn Du im laufenden Betrieb die general.items aktualisierst?

                    Gruß,

                    Thomas E.-E.
                    Ich habe das gleiche Problem, sehe die Exception aber nur, wenn ich die items-Datei im laufenden Betrieb ändere. Nach einem Neustart ist alles in Ordnung. Gibt's eine Möglichkeit, das zu korrigieren? Ein Neustart dauert auf dem Pi immer einige Zeit...

                    Kommentar


                      #11
                      Python Skript ausführen

                      Hallo,

                      bin noch ein ziemlicher Frischling bei OpenHab und versuche mich gerade daran einen python skript ausfürhen zu lassen bei Betätigung eines Switchs.

                      Leider führt er mir wie auch bei einigen meiner Vorredner das Skript einfach nicht aus.

                      Ich habe eine ziemlich nackte Basisinstalltion von OpenHab auf meinem Pi am laufen. Als Binding habe ich das exec Binding drin was auch funktioniert.

                      Ich habe wie auch schon KaKaiser zum ausprobieren ob exec auch wirklich tut folgendes bei meiner items file reingebaut:

                      Code:
                      Switch TEST "TEST" (GF) {exec="ON:cp /opt/openhab/configurations/openhab.cfg /opt/openhab/configurations/openhab.old"}
                      Das tut auch soweit. Nur wie ich mein Python Skript zum funktionieren bringe weiß ich einfach nicht. Habe es schon über Rules und Skripts probiert... Haut auch nicht funktioniert.

                      Hat einer von euch mal ein python skript via OpenHab ausgeführt (ohne umwege über ein Shell Skript)?

                      Gruß Eric

                      Kommentar


                        #12
                        Funktioniert das Skript denn direkt in der Shell? Passen die rechte, Pfade und Umgebungsvariablen für den Benutzer unter dem openHAB ausgeführt wird?

                        Kommentar


                          #13
                          Hallo Jockel,

                          japp das Script funktioniert in der Shell ohne murren. Ob die Rechte passen bin ich mir ehrlich gesagt nicht ganz sicher.
                          Aktuell führe ich Openhab als root Benutzer aus. Das Script liegt unter /opt/ ebenso wie Openhab.

                          Bei den Umgebungsvariablen bin ich mir ebenfalls unsicher. Wäre super wenn du kurz erläutern könntest wie ich die Geschichte quick n dirty zum laufen bekomme. Wenn dass erst mal funktioniert mache ich die Sache dann schön.
                          Aktuell komme ich nur leider nicht weiter...

                          openHab liegt in der Version 1.4 vor und "rennt" aktuell auf einem Pi.

                          Kommentar


                            #14
                            Zitat von Fladdie Beitrag anzeigen
                            Hallo Jockel,

                            japp das Script funktioniert in der Shell ohne murren. Ob die Rechte passen bin ich mir ehrlich gesagt nicht ganz sicher.
                            Aktuell führe ich Openhab als root Benutzer aus. Das Script liegt unter /opt/ ebenso wie Openhab.
                            Du solltest mal die Zeile aus deiner xxx.items-Datei posten, die das Python-Skript enthält. Und bitte poste auch, wie genau, du das Skript von der Kommandozeile aus aufrufst.

                            Gruß,
                            thoern

                            Kommentar


                              #15
                              Hallo,

                              *.items
                              Code:
                              Switch Steckdose	"Steckdose1"		(grpWohnung)	{exec="ON:python /opt/remoplu/test.py", OFF:python /opt/remoplu/test.py"}
                              Das Python-Skript rufe ich so auf:
                              python /opt/remoplu/test.py
                              bzw.:
                              ./test.py


                              Gruß
                              Eric

                              Kommentar

                              Lädt...
                              X