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
Ankündigung
Einklappen
Keine Ankündigung bisher.
HELP wanted: EXEC Binding - getting started?
Einklappen
X
-
Sorry, aber nur die zweite Zeile ist richtig.Zitat von Fladdie Beitrag anzeigenHallo Thoern,
wenn ich das Skript aus der Shell mittels ./test.py starte funktioniert alles.
Die erste Zeile in meinem Pythonskript lautet:
Ich habe natürlich auch schonCode:#!/usr/bin/env python
probiert.Code:#!/usr/bin/python
Ohne "python" in der "exec" Zeile habe ich es auch schon probiert.
Gruß Eric
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:
-
Hallo Thoern,
wenn ich das Skript aus der Shell mittels ./test.py starte funktioniert alles.
Die erste Zeile in meinem Pythonskript lautet:
Ich habe natürlich auch schonCode:#!/usr/bin/env python
probiert.Code:#!/usr/bin/python
Ohne "python" in der "exec" Zeile habe ich es auch schon probiert.
Gruß Eric
Einen Kommentar schreiben:
-
Hallo Karsten,
dass ich das Skript sowohl bei ON wie auch bei OFF aufrufe ist Absicht. Ist ja lediglich ein Testskript....Code:-rwxrwxrwx 1 root pi 101 Mai 19 08:35 test.py
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:
-
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.
Gruß,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]"}
thoern
Einen Kommentar schreiben:
-
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:
-
Hallo,
*.items
Das Python-Skript rufe ich so auf:Code:Switch Steckdose "Steckdose1" (grpWohnung) {exec="ON:python /opt/remoplu/test.py", OFF:python /opt/remoplu/test.py"}
python /opt/remoplu/test.py
bzw.:
./test.py
Gruß
Eric
Einen Kommentar schreiben:
-
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.Zitat von Fladdie Beitrag anzeigenHallo 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.
Gruß,
thoern
Einen Kommentar schreiben:
-
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:
-
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:
-
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:
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.Code:Switch TEST "TEST" (GF) {exec="ON:cp /opt/openhab/configurations/openhab.cfg /opt/openhab/configurations/openhab.old"}
Hat einer von euch mal ein python skript via OpenHab ausgeführt (ohne umwege über ein Shell Skript)?
Gruß Eric
Einen Kommentar schreiben:
-
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...Zitat von teichsta Beitrag anzeigenHi 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.
Einen Kommentar schreiben:
-
Also ich habs jetzt hinbekommen das mein Pi über ein PHP script schaltet.
Mit:
Dann mit:Code:sudo chown www-data:www-data /var/www sudo chmod 775 /var/www sudo usermod -a -G www-data pi
Und dann ganz unten folgende Zeile einfügen:Code:sudo visudo
Damit habe ich die Erlaubnis erteilt den Send-Befehl über Apache Server auszuführen.Code:www-data ALL=NOPASSWD: /home/pi/div/rcswitch-pi/send
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:
-
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:
Kann man irgendwie sonst genau testen ob der Befehl überhaupt ausgeführt wird?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
Hab mir schon überlegt über Apache und PHP-Script den Exec-Befehl zu testen ob das nur an Openhab liegt.
Einen Kommentar schreiben:
-
Hallo,
probier doch mal das hier:
Also Leerzeichen nach dem ersten und vor dem hinteren Curly BraceCode: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]" }
Gruß
Einen Kommentar schreiben:


Einen Kommentar schreiben: