Ankündigung

Einklappen
Keine Ankündigung bisher.

HELP wanted: EXEC Binding - getting started?

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

  • Fladdie
    antwortet
    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

    Einen Kommentar schreiben:


  • thoern
    antwortet
    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

    Einen Kommentar schreiben:


  • Fladdie
    antwortet
    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

    Einen Kommentar schreiben:


  • Fladdie
    antwortet
    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

    Einen Kommentar schreiben:


  • thoern
    antwortet
    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

    Einen Kommentar schreiben:


  • kakaiser
    antwortet
    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

    Einen Kommentar schreiben:


  • Fladdie
    antwortet
    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

    Einen Kommentar schreiben:


  • thoern
    antwortet
    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

    Einen Kommentar schreiben:


  • Fladdie
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Fladdie
    antwortet
    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

    Einen Kommentar schreiben:


  • rfk
    antwortet
    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...

    Einen Kommentar schreiben:


  • DarkArtus
    antwortet
    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???

    Einen Kommentar schreiben:


  • DarkArtus
    antwortet
    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.

    Einen Kommentar schreiben:


  • thoern
    antwortet
    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ß

    Einen Kommentar schreiben:

Lädt...
X