FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hugo am 28 Februar 2024, 09:47:49

Titel: [gelöst] Devicestatus abfragen vom System
Beitrag von: hugo am 28 Februar 2024, 09:47:49
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
Titel: Aw: Devicestatus abfragen vom System
Beitrag von: fz55 am 28 Februar 2024, 10:38:17
Hallo Josef,

vielleicht ist python-fhem (https://github.com/domschl/python-fhem) hilfreich.

Grüße
fz55
Titel: Aw: Devicestatus abfragen vom System
Beitrag von: MadMax-FHEM am 28 Februar 2024, 10:44:23
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
Titel: Aw: Devicestatus abfragen vom System
Beitrag von: hugo am 28 Februar 2024, 11:24:41
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
Titel: Aw: Devicestatus abfragen vom System
Beitrag von: betateilchen am 28 Februar 2024, 11:29:31
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>
Titel: Aw: Devicestatus abfragen vom System
Beitrag von: MadMax-FHEM am 28 Februar 2024, 12:43:06
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
Titel: Aw: Devicestatus abfragen vom System
Beitrag von: hugo am 28 Februar 2024, 13:09:23
Danke euch,

beide Varianten funktionieren einwandfrei.

Jetzt habe die Qual der Wahl, aber besser so als keine Lösung.

Gruß Josef