Mit Hilfe von system ( ......./function.py ) kann ich erfolgreich als Teil einer Notify-Definition eine Pythonfunktion aufrufen.
Diese Pythonfunktion liefert einen Returnwert.
Wie komme ich an den dran, z. B. um den State eines anderen Device zu setzen ?
qx() statt system() verwenden und dann mit readingSingleUpdate() in ein Reading schreiben oder im python script den Wert per http/telnet direkt an fhem übergeben.
Danke, qx() wuerde mir schon passen, aber :
Wenn ich in einem Command Prompt folgendes tue :
python c:\fhem\fhem-5.7\python\verisure_getAlarm.py
bekomme ich die Ausgabe : Unarmed
Wenn ich so etwas zum Testen in der Kommandozeile mache :
{ my $alarm = qx ( "python c:\fhem\fhem-5.7\python\verisure_getAlarm.py" );;}
bekomme ich das hier im Logfile :
2016.07.19 08:32:30 1: PERL WARNING: Unrecognized escape \p passed through at (eval 3612) line 1.
2016.07.19 08:32:30 3: eval: { my $alarm = qx ( "python c:\fhem\fhem-5.7\python\verisure_getAlarm.py" ); }
Aus dem Notify heraus genau dasselbe.
Geloest :
Das hier funktioniert :
my @temp = qx/python c:\\fhem\\fhem-5.7\\python\\verisure_getTemp.py/;;
Das einzige , was noch stoert, ist das Gradzeichen, das offenbar missverstanden wird.
Muss ich irgendwie eine Codetabelle setzen ?
Ich tippe darauf, das Windows ein andere Codepage verwendet. Quick'n'dirty könntest Du das Zeichen einfach mit s/search/replace/ ersetzen. Ich würde nur die Zahl extrahieren und in ein Reading schreiben. Einheiten in Readings stören eher.
Danke, geht prima.