FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ruben am 29 März 2015, 21:11:35

Titel: Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 29 März 2015, 21:11:35
Hallo

Ich habe versucht mit einem notify ein Python Skript aufzurufen.. Aber wie es sich herausstellte hat es nicht funktioniert.  :-\

Ich habe dazu den Sensor als door1 definiert. im FileLog steht folgendes:

FileLog
FileLog_door1   active

contact
door1               open

Danach habe ich das notify definiert, so wie es im Wiki erklärt wurde, mit:

define act_on_door1 notify door1 { if ("$EVENT" eq "open") { system("sudo python test_signalspeichern.py") }

Hat aber leider nicht funktioniert..
Jetzt sollte doch das Skript aufgerufen werden, wenn sich der Status vom Sensor auf open ändert?
Oder hab ich da was völlig falsch verstanden?

Danke für eure Tipps, und Gruss
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: KernSani am 29 März 2015, 23:24:37
Hi Ruben,

versuch mal die Anführungszeichen um $EVENT weg zu lassen.
Um den Fehler einzugrenzen, kannst erstmal den Perl-Ausdruck in die FHEM-Kommandozeile eingeben, wenn er da funktioniert sollte er auch im notify funktionieren.

Grüße,

Oli
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 29 März 2015, 23:27:58
Hallo,
define act_on_door1 notify door1:open { system("sudo python test_signalspeichern.py") }

Könnte gehen...
Wenn door1 wirklich open liefert. Schau Dir das am Besten im Eventmonitor an.
Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 30 März 2015, 10:21:30
Danke euch für die Tipps.

ich habe mal den Ausdruck { if ("$EVENT" eq "open") { system("sudo python test_signalspeichern.py") }}in die Fhem Kommandozeile eingegeben. Aber das hat er nicht geschluckt..
Es kam die Meldung: $EVENT requires explicit package name at line 1.


Und ich habe noch das folgende notify versucht:

define act_on_door1 notify door1:open  { system("sudo python test_signalspeichern.py") }

Der Schalter liefert im Event Monitor ein open: 2015-03-30 08:15:22 EnOcean door1 open
Das hat aber leider auch nicht geklappt..  :-[
Hab da alles mögliche versucht einzugeben. Wenn ich das definiert habe sollte das doch gleich klappen, ich muss nichts mehr aktivieren oder so?

Im LogFile steht noch:
2015.03.30 07:47:16 3: act_on_door1 return value: -1
Was bedeutet dieses -1 also return value?
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: pole23 am 30 März 2015, 13:27:05
Hallo,

versuch mal bitte, den kompletten Pfad zu dem Skript anzugeben:

define act_on_door1 notify door1:open {system('/hier/steht/der/pfad/test_signalspeichern.py&')}

Welche Rechte hat das Skript?
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 30 März 2015, 14:07:51
Zitat von: Ruben am 30 März 2015, 10:21:30
ich habe mal den Ausdruck { if ("$EVENT" eq "open") { system("sudo python test_signalspeichern.py") }}in die Fhem Kommandozeile eingegeben. Aber
Das kannst Du so nicht testen, woher soll $EVENT den kommen?
Den Aufruf vom Script könntest Du mit { system("sudo python test_signalspeichern.py") }  testen. Dieser Befehl führt das script einfach aus. Allerdings geht das mit sudo so nicht. Muss das script mit sudo laufen?

Ob dein notify an sich geht kannst Du mit {Log 1, "Test"} testen.
define act_on_door1 notify door1:open  {Log 1, "Test"}

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 30 März 2015, 14:13:40
Hast Du das hier  (http://forum.fhem.de/index.php?topic=17613.0)gelesen?

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 30 März 2015, 15:00:35
Vielen Dank Otto für die Hilfe.

Also das mit define act_on_door1 notify door1:open  {Log 1, "Test"} hat funktioniert.

Ich habe auch noch den beitrag durchgelesen, welcher du verlinkt hast.

Ich habe jenste Möglichkeiten durchprobiert, aber nichts hat bis jetzt funktioniert.
Er hat dort beschrieben dass es bei Ihm mit
define sw_ll_off notify Lichtleiste:off {system('sudo /opt/fhem/elro_1_off.sh&');;}
funktioniert hat.

Ich habe versucht mein Bash Skript auch unter /opt/fehm/test.sh abzuspeichern, das hat aber nicht funktioniert. Ist das überhaupt nötig, oder kann ich das auch in /home/pi/test.sh abspeichern? in diesen Bash skript würde ich dann das Python Skript aufrufen.
Wenn ich das manuell in der Konsole eingebe hat das funktioniert: sudo bash test.sh ==> führt dann das Python file aus

Ich verstehe zudem nicht, was das "&" und die zwei semikolon ;; heissen?
Und warum verendet er plötzlich nur noch einzelne Gänsefüsschen (') anstelle der normalen ("), wie in der Anleitung?


Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 30 März 2015, 22:26:05
Zitat von: Ruben am 30 März 2015, 15:00:35
Ich habe versucht mein Bash Skript auch unter /opt/fehm/test.sh abzuspeichern, das hat aber nicht funktioniert. Ist das überhaupt nötig, oder kann ich das auch in /home/pi/test.sh abspeichern? in diesen Bash skript würde ich dann das Python Skript aufrufen.
Wenn ich das manuell in der Konsole eingebe hat das funktioniert: sudo bash test.sh ==> führt dann das Python file aus

Ich verstehe zudem nicht, was das "&" und die zwei semikolon ;; heissen?
Und warum verendet er plötzlich nur noch einzelne Gänsefüsschen (') anstelle der normalen ("), wie in der Anleitung?
Hallo Ruben,

Du kannst/musst das Script abspeichern wo Du darfst und wo fhem es ausführen darf. Wenn Du es abspeicherst bist Du wahrscheinlich pi. Der darf in /opt/fhem nicht. FHEM läuft als fhem, der darf in /home/pi nicht. Also muss Du dich entsprechend anmelden, sudo verwenden, Rechte setzen. Da gibt es viele Möglichkeiten. Wenn Dir das nicht so ganz klar ist, dann schau mal im ubuntu wiki nach chmod und chown.
Die Gänsefüsschen irritieren mich auch immer, scheinbar ist es egal ob ' oder " zumindest an vielen Stellen. Ob wirklich immer weiß ich nicht. Teilweise werden ' innerhalb von "" verwendet.
Die FHEM Befehle sind hier  (http://fhem.de/commandref_DE.html#command)gut erklärt.
Aus den beiden ;; wird am Ende ein ; und das trennt Shell Befehle. Es könnte also noch einer kommen und der ist leer. So verstehe ich das.
Zu dem & am Ende des Scriptnamens muss jemand anders was sagen :)

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Hans Franz am 30 März 2015, 23:14:21
Zitat von: Otto123 am 30 März 2015, 22:26:05
Zu dem & am Ende des Scriptnamens muss jemand anders was sagen :)
& = Ausführen im Hintergrund, direkt mit aufrufendem Script weitermachen.

Gruß
Hans
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 31 März 2015, 10:13:31
Super, vielen Dank für eure Hilfe Otto und Hans Franz. :)

Das mit den Rechten habe ich angeschaut.
Ich habe mit sudo chmod +x /home/pi/test_signalspeichern.py die Ausführbarkeit eingestellt, somit sollten alle die Datei ausführen dürfen.
nach ls -lisa /home/pi/test_signalspeichern.py sah es dann so aus
1342 4 -rwxr-xr-x 1 fhem pi 284 Mar 30 08:53 /home/pi/test.py

Der folgende Test hat funktioniert:
define act_door notify door:open  {Log 1, "Test"}

Jetzt wollte ich noch das python skript ausführen mit:
define act_door notify door:open {system("sudo /home/pi/test_signalspeichern.py &")}

Das funktioniert aber nach wie vor nicht :(
Hab da auch jenste Syntax varianten versucht, aber das skript lässt sich einfach nicht ausführen mit fhem..

Habt ihr noch Ideen wo ich den Fehler noch suchen könnte, oder was ich falsch gemacht haben könnte?
Ich bin wirklich froh um jeden Tipp! Danke nochmals
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 31 März 2015, 11:00:06
Zitat von: Ruben am 31 März 2015, 10:13:31
Ich habe mit sudo chmod +x /home/pi/test_signalspeichern.py die Ausführbarkeit eingestellt, somit sollten alle die Datei ausführen dürfen.
Hallo Ruben,
ich bin nicht so der Linux Spezi, ich glaube aber nur Ausführbarkeit reicht nicht immer aus. Man muss auch lesen können, nur so eine Idee.
Wenn es unbedingt mit sudo sein muss, schau hier (http://forum.fhem.de/index.php/topic,12611.msg78089.html#msg78089).
Einfach so wird fhem bei sudo nach dem Passwort gefragt, dass geht nicht.

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: pole23 am 31 März 2015, 12:56:32
Hallo,

kopier die Datei in das FHEM Verzeichnis /opt/fhem/FHEM und gibt der Datei mal testweise alle Rechte. Nur um das mal auszuschliessen.

sudo chmod 777 test_signalspeichern.py

In der fhem.cfg

define act_on_door1 notify door1:open {system('/opt/fhem/FHEM/test_signalspeichern.py&')}
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 31 März 2015, 13:42:32
@Otto123: Danke für den Link :) hab das auch ausprobiert, aber vergebens..

@pole23: Hallo und danke auch dir für die tipps!

Also ich hab der Datei alle rechte gegeben mit chmod 777, jetzt bekomme ich -rwxrwxrwx, sieht schonmal gut aus.

Aber ich kann die Datei nach /opt/fhem/FHEM komiperen, da kommt eine Error: Permission denied!

Wie kann ich das umgehen?
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 31 März 2015, 15:28:19
Du meldest Dich am Terminal bei Raspi an, als pi.
Du stehst im /home/pi
dann machst Du sudo cp test_signalspeichern.py /opt/fhem/FHEM

Gruß´Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 31 März 2015, 17:31:33
Ok, danke, so hat es funktioniert die Dateien in /opt/fhem/FHEM abzuspeichern.

Hab alle rechte eingestellt mit chmod 777 und das folgende eingegeben in der Kommandozeile

define act_on_door1 notify door1:open {system('/opt/fhem/FHEM/test_signalspeichern.py&')}

Aber da hat sich leider immer noch nichts getan.. ich hab verschiedene Syntax ausprobiert und mit sudo und alles, aber da hat nichts geholfen.  :-[

Gibt es sonst noch etwas das ich ausprobieren könnte?
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 31 März 2015, 17:52:21
naja den ersten Teil, das notify hatten wir ja verifiziert.
Jetzt testet Du einfach Dein Script. Am besten erstmal im Terminal:
/opt/fhem/FHEM/test_signalspeichern.py
Solange bis DU weißt ob und warum es geht.
Dann in der Befehlszeile von FHEM:
{system('/opt/fhem/FHEM/test_signalspeichern.py&')}
Oder einfach
{system("echo Bla >/opt/fhem/Bla.txt")}

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 31 März 2015, 20:20:15
Danke für diese Hinweise Otto.

Ich werde sie ausprobieren sobald ich wieder auf das Raspberry zugreifen kann.
Zurzeit bekomme ich den Error 404 Not Found wenn ich mich verbinden will mit dem <IP>:8083/fhem
Zwischendurch klappts dann wieder, aber meistens nicht..

Ich hab noch auf der folgenden Seite einen Hinweis gefunden, dass ich evtl noch die /ect/sudoers bearbeiten muss?
http://forum.fhem.de/index.php/topic,17613.0.html

Ich hab da leider keinen zugriff habe ich gesehen, wenn ich da mit "cat" reinschauen wollte. Kann ich das auch wider irgendwie mit sudo aufrufen?
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 31 März 2015, 23:41:41
Ich wäre da jetzt einfach mal vorsichtig mit diesem Beitrag, da steht so viel drin. Test doch erstmal ob Du überhaupt ein Script aufrufen kannst.
Wenn Du Dein FHEM dann sudo laufen lassen willst/musst kannst Du Dir immer noch alles zerbasteln.

Versuch es erstmal ohne sudo und wenn dann gib nur minimale Rechte.

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: pole23 am 01 April 2015, 10:20:22
Hallo,

da scheint es irgendein Berechtigungsproblem zu geben, auf deinem System. Was du auch testen könntest, wenn die das Skript ins /tmp Verzeichnis kopierst. Da solltest du auf jeden Fall Rechte haben. Und dann natürlich wieder den Pfad im FHEM anpassen.
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 01 April 2015, 13:33:19
Ahh super, es funktioniert jetzt!! :) :)

Vielen Dank erst mal für eure Hilfe und für eure Geduld  :)

Also ich hab das /etc/sudoers noch bearbeiten müssen, so wie im link beschrieben war den ihr mit angegeben habt..
http://forum.fhem.de/index.php/topic,17613.0.html

Hab die rechte eingestellt mit chmod 777 /pfad/zum/skript.py
und danach folgendes in die Kommandozeie vom Fhem eingegeben:

define act_on_door1 notify door1:open {system("sudo /home/pi/test_signalspeichern.py &")}

Jetzt klappt es wunderbar, Danke noch mal allen, bin so froh dass es jetzt klappt :)

Liebe Grüsse

Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: pole23 am 01 April 2015, 15:53:02
Hallo,

das schon mal nicht schlecht. Aber ich jetzt trotzdem mal versuchen, das Skript nach /opt/fhem/FHEM zu kopieren und dann mit dem normalen fhem User zu arbeiten, ohne sudo.
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 01 April 2015, 21:29:52
Hallo pole23,

hab das jetzt ausprobiert und das file nach /opt/fhem/FHEM kopiert.

Hmm ohne sudo hat es aber nicht funktioniert, nur mit sudo..
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 01 April 2015, 21:58:20
Hallo Ruben,

bevor Du dir mit FHEM einen abbrichst: hast Du denn mal untersucht, unter welchen Bedingungen Dein Script einfach in der Systemumgebung läuft - wie ich empfohlen hatte?
Also einfach Terminal und Script in einem Pfad wo dein User Zugriff hat und dann ohne oder mit sudo?

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 01 April 2015, 23:03:32
Hallo Otto

Ich hab mich langsam angefreundet mit FHEM, da es ja jetzt funktioniert hat :)

Aber jetzt geht es noch um den aufruf ohne sudo mit fhem.

Ich kann das skript ohne sudo auch im terminal nicht aufrufen. Und hab alle rechte vergeben mit chmod 777.
18638 4 -rwxrwxrwx 1 pi pi 284 Apr  1 10:46 /home/pi/test_signalspeichern.py
Genauso wie es mit fhem in der Kommandozeile dann logischerweise auch nicht geht.

Aber mit sudo funktioniert es bei beiden Varianten.
Also sehe ich es richtig dass ich nicht drum herum komme es im fhem mit sudo laufen zu lassen?
Ich hoffe ich habe keine tipps von euch übersehen..
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Otto123 am 02 April 2015, 09:35:02
Hallo Ruben,

dann wird es so sein. Dann macht Dein Script etwas, was root Rechte erfordert. Und logischerweise muss es dann von FHEM aus auch mit root Rechten laufen.
Aber Du hast es gelöst :) und weißt jetzt auch warum.

Gruß Otto
Titel: Antw:Mit notify ein Python Skript ausführen
Beitrag von: Ruben am 02 April 2015, 13:49:06
ok danke, und ich bin so froh dass es jetzt klapp, Danke noch mal euch allen!