Möhlenhoff Alpha IP Acces Point mit REST-Api auslesen

Begonnen von xerion, 17 November 2019, 14:13:54

Vorheriges Thema - Nächstes Thema

amenomade

qx(befehl) ist immer blockierend.
qx(befehl &) ist nicht blockierend da ein Subprozess gestartet wird und die Kontrolle wieder dem Hauptprogramm zurückgegeben wird.

"befehl" ist nicht blockierend.

Die Frage ist: brauchst Du den Rückgabewert von python? Dann wird es schwieriger: um es non-blocking zu machen, muss man eine return-funktion programmieren.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xerion

Zitat von: amenomade am 18 November 2019, 21:09:26
qx(befehl) ist immer blockierend.
qx(befehl &) ist nicht blockierend da ein Subprozess gestartet wird und die Kontrolle wieder dem Hauptprogramm zurückgegeben wird.

"befehl" ist nicht blockierend.

Die Frage ist: brauchst Du den Rückgabewert von python? Dann wird es schwieriger: um es non-blocking zu machen, muss man eine return-funktion programmieren.
qx(befehl &) habe ich getestet, das blockiert immer noch. Ich brauche die Werte aus dem Python Skript, da die mir z.B. den Status der Fensterkontakte sendet.

So sieht die subroutine aus:
#---------------------------------------
# Homematic-Funktion
#---------------------------------------
sub homematicip(){
  my $returnCode = qx(python3 /opt/fhem/www/homematicip-rest-api/api1.py &);
  fhem("setReading fenster_badezimmer  fenster_badezimmer $returnCode");
}}
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

amenomade

Wenn Du die Werte brauchst, dann muss es blockierend sein, da Du doch auf dem Wert warten willst.
Und & wird auch nicht funktionieren.

Dann bleibt nur z.B. https://wiki.fhem.de/wiki/Blocking_Call

Alternativ: dein Skript läuft mit cronjob, und übergibt selbst die Werte an Fhem.

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xerion

#18
Zitat von: amenomade am 18 November 2019, 22:01:10
Wenn Du die Werte brauchst, dann muss es blockierend sein, da Du doch auf dem Wert warten willst.
Und & wird auch nicht funktionieren.

Dann bleibt nur z.B. https://wiki.fhem.de/wiki/Blocking_Call

Alternativ: dein Skript läuft mit cronjob, und übergibt selbst die Werte an Fhem.

Habe das Problem jetzt gelöst. Ich lasse das Python Skript in einer 5 Sekunden Dauerschleife laufen und sende die Werte mit dem Python FHEM API-Modul direkt als Reading in das Dummy Device. Dadurch blockiert FHEM nicht mehr.
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.