Geloest: FHEM Python function

Begonnen von Wolfgang Hochweller, 18 Juli 2016, 23:16:32

Vorheriges Thema - Nächstes Thema

Wolfgang Hochweller

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 ?

dev0

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.

Wolfgang Hochweller

#2
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.

Wolfgang Hochweller

#3
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 ?

dev0

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.

Wolfgang Hochweller