Ankündigung

Einklappen
Keine Ankündigung bisher.

HELP wanted: EXEC Binding - getting started?

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

    #16
    Hi,

    du rufst das *.py zweimal auf? Egal ob on oder off?

    wenn du im verzeichnis des skripts mal ein
    >ls -l

    aufrufst solltest du so etws in der art bekommen:

    drwxr-xr-x 2 root root 4096 Mai 9 16:18 addons
    drwxr-xr-x 8 root root 4096 Apr 11 11:39 configurations
    drwxr-xr-x 2 root root 4096 Apr 11 11:39 contexts
    drwxr-xr-x 4 root root 4096 Apr 11 11:39 etc
    drwxr-xr-x 2 root root 4096 Mai 19 01:59 logs
    -rw-r--r-- 1 root root 277 Mär 6 16:13 ohdev.bat
    -rw-r--r-- 1 root root 626 Feb 14 17:31 README.TXT
    drwxr-xr-x 6 root root 4096 Mai 16 11:57 server
    drwxr-xr-x 2 root root 4096 Apr 11 11:40 sounds
    -rw-r--r-- 1 root root 958 Feb 14 17:31 start.bat
    -rw-r--r-- 1 root root 1110 Feb 14 17:31 start_debug.bat
    -rw-r--r-- 1 root root 1043 Feb 14 17:30 start_debug.sh
    -rw-r--r-- 1 root root 880 Feb 14 17:31 start.sh
    drwxr-xr-x 5 root root 4096 Apr 19 07:22 webapps
    drwxr-xr-x 3 root root 4096 Apr 11 11:40 workspace

    Prüfe mal bei deinem Skript die Rechte - am besten gibst du dem skript ein

    sudo chmod +x *.py

    mit - dann sollten sie für alle user ausführbar sein.

    dann nochmals versuchen aus OH heraus.

    Ich habe es letzendlich auch nur über den Umweg script hinbekommen:

    ITEM:
    Switch Light_EG_Kitchen_Corner "Küche AP"

    RULE:
    rule "KitchenLamp"
    when
    Item Light_EG_Kitchen_Corner received command
    then
    if (receivedCommand==OFF){
    callScript("kitchenlampOFF")
    logInfo("Küche AP Lampe", "OFF")
    }
    else {
    if (receivedCommand==ON){
    callScript("kitchenlampON")
    logInfo("Küche AP Lampe", "ON")}
    else
    logInfo("Küche AP Lampe", "NO Value")
    }
    end

    im Verzeichnis Scripts von OH dann zwei neue angelegt mit den Namen
    kitchenlampOFF bzw kitchenlampON

    Der Inhalt des Skripts sieht dann so aus:

    executeCommandLine("sh /opt/openhab/configurations/scripts/kitchenlampOFF.sh")

    Hier würdest du den Commandline Aufruf des Phyton script reinnehmen. sie sh files haben bei mir alle einen chmod 777 *.sh mitbekommen um Benutzerrechten aus dem weg zu gehen. Eine Parameterübergabe ans Script habe ich bislang noch nicht hinbekommen.

    Grüsse
    Karsten

    Kommentar


      #17
      Hi,

      würde mal vermuten, dass der Python-Interpreter nicht von openHAB gefunden wird (weil nicht mit vollem path referenziert). Hast du den Python-Interpreter nicht im Skript definiert?
      z.B. so in Zeile 1:
      #! /usr/bin/python

      Dann ruft man das Skript auf Kommandozeile so auf:
      ./test.py


      Und in der exec-Zeile lässt du das python ganz weg.

      Code:
      Switch Steckdose    "Steckdose1"        (grpWohnung)    {exec="ON:/opt/remoplu/test.[URL="http://redaktion.knx-user-forum.de/lexikon/py/"]py[/URL]", OFF:/opt/remoplu/test.[URL="http://redaktion.knx-user-forum.de/lexikon/py/"]py[/URL]"}
      Gruß,
      thoern

      Kommentar


        #18
        Hallo Karsten,

        Code:
        -rwxrwxrwx 1 root pi    101 Mai 19 08:35 test.py
        dass ich das Skript sowohl bei ON wie auch bei OFF aufrufe ist Absicht. Ist ja lediglich ein Testskript....

        Parameterübergabe brauche ich für meine Anwendung später zwingend.

        Ich finde es seltsam dass ich über exec keinen python script callen kann.
        Hier hat das scheinbar mal jemand hinbekommen Raspberry Pi: Funksteckdosen steuern mit openHAB | G-SURF

        Ich werde es dann wohl oder übel erst mal über den shell skript probieren.

        Gruß Eric

        Kommentar


          #19
          Hallo Thoern,

          wenn ich das Skript aus der Shell mittels ./test.py starte funktioniert alles.

          Die erste Zeile in meinem Pythonskript lautet:
          Code:
          #!/usr/bin/env python
          Ich habe natürlich auch schon
          Code:
          #!/usr/bin/python
          probiert.

          Ohne "python" in der "exec" Zeile habe ich es auch schon probiert.

          Gruß Eric

          Kommentar


            #20
            Zitat von Fladdie Beitrag anzeigen
            Hallo Thoern,

            wenn ich das Skript aus der Shell mittels ./test.py starte funktioniert alles.

            Die erste Zeile in meinem Pythonskript lautet:
            Code:
            #!/usr/bin/env python
            Ich habe natürlich auch schon
            Code:
            #!/usr/bin/python
            probiert.

            Ohne "python" in der "exec" Zeile habe ich es auch schon probiert.

            Gruß Eric
            Sorry, aber nur die zweite Zeile ist richtig.
            Also zweite Zeile ins Skript und aus dem exec das python raus.

            Oder anders herum: Tipp mal ein
            which python

            Das Ergebnis schreibst du dann in die erste Zeile deines Skripts

            Gruß,
            thoern

            Kommentar


              #21
              Hallo Thoern,

              tatsache! Jetzt klappts!!!

              Ich könnt schwören dass ich das alles schon probiert habe.

              Sehr gut.. Jetzt kann ich endlich mal etwas weiter machen.

              Vielen dank für eure Hilfe
              Gruß Eric

              Kommentar

              Lädt...
              X