Hallo zusammen,
ich habe eine Anwendung die in Python geschrieben ist und möchte dort den Status von einem Device abfragen bzw einlesen.
Mir ist klar, dass in der Datei fhem.save der Status steht und ich diesen dann durch suchen finden könnte.
Gibt es hier schon Befehle oder Tools um dies zu verwirklichen.
Dank und noch einen schönen Tag.
Gruß Josef
Hallo Josef,
vielleicht ist python-fhem (https://github.com/domschl/python-fhem) hilfreich.
Grüße
fz55
In fhem.save steht der aktuelle Status aber nur GENAU NACH DEM SAVE drin!
Also nicht immer der aktuelle Status!
Du kannst doch den Status eines fhem Devices abfragen, z.B. per telnet in etwa so:
import telnetlib
DEVICE_NAME="DeviceName"
READING_NAME="ReadingName"
# telnet zu fhem
tn = telnetlib.Telnet('localhost',7072)
tn.write(bytes("{ReadingsVal('" + DEVICE_NAME + "','" + READING_NAME + "','n.a.')}\n",encoding='utf8'))
raw = (tn.read_some()).decode('utf-8')
EDIT: "lesen" der Antwort ergänzt 8)
So kannst du auch andere Aufrufe an fhem absetzen...
EDIT:
Zitat von: fz55 am 28 Februar 2024, 10:38:17Hallo Josef,
vielleicht ist python-fhem (https://github.com/domschl/python-fhem) hilfreich.
Grüße
fz55
Oder nat. so 8)
Gruß, Joachim
Dank an fz55.
Hallo Joachim,
vielen Dank.
Die Methode mit Telnet gefällt mir gut.
Da ich aber in Python glatter Anfänger bin bekomme keine Antwort mit deiner Methode, wenn ich es teste.
Telnet ist in Fhem definiert.
Zitattn.write(bytes("{ReadingsVal('" + DEVICE_NAME + "','" + READING_NAME + "','n.a.')}\n",encoding='utf8'))
Kannst du mir bitte noch einen Tipp geben.
Danke
Josef
Dafür muss man doch kein telnet bemühen. Man definiert in FHEM ein HTTPAPI und kann dann mit einfach aufgebauten http-Requests arbeiten.
https://commandref.fhem.de/#HTTPAPI
http://<ip-addr>:<port>/<apiName>/read?device=<devname>&reading=<name>
Zitat von: hugo am 28 Februar 2024, 11:24:41Kannst du mir bitte noch einen Tipp geben.
Stimmt, du musst nat. die Antwort einlesen ;)
raw = (tn.read_some()).decode('utf-8')
Oben ergänzt...
Sorry, Joachim
Danke euch,
beide Varianten funktionieren einwandfrei.
Jetzt habe die Qual der Wahl, aber besser so als keine Lösung.
Gruß Josef