FHEM Forum

FHEM => Automatisierung => Thema gestartet von: M.K. am 28 Mai 2019, 06:57:37

Titel: Werte aus Reading auslesen, neues Reading erstellen
Beitrag von: M.K. am 28 Mai 2019, 06:57:37
Hallo zusammen,

ein Zigbee2MQTT device gibt mir das reading
{"contact":false,"linkquality":36,"battery":100,"voltage":3005}

über MQTT_DEVICE bzw. das Attribut
attr <name> subscribeReading_<reading> [{Perl-expression}] [qos:?] [retain:?] <topic>
bekomme ich es in FHEM, aber es steht dann so wie oben mit Klammern in meinem Reading contact.

Nun bekomme ich es nicht hin die Werte auszulesen um einzelne Readings zu erzeugen.
Als passende RegEx sollte das funktionieren:
:(.+?)[,}] um alle vier Werte in die Variablen $1 bis $4 zu schreiben.

Aber wie stelle ich das in FHEM perl an?

Als Ansätze habe ich auch noch expandJSON gefunden. Aber das will auch nicht das machen was ich will.

Weiterhin gibt es noch readingsChange
define rc_ Sensor_TH_KZ readingsChange Sensor_TH_KZ temperature :(.+?)[,}] $1
Das wollte aber irgendwie nichts gemacht.

Hat jemand eine Idee wie man das am schlauesten anstellen kann?
Titel: Antw:Werte aus Reading auslesen, neues Reading erstellen
Beitrag von: Wzut am 28 Mai 2019, 07:11:33
expandJSON macht das eigentlich recht gut und einfach als Einzeiler auch die regEx ist simpel
device:reading:.{.*}
device wäre bei dir Sensor_TH_KZ ? reading =  contact ?
Sensor_TH_KZ:contact:.{.*}
Titel: Antw:Werte aus Reading auslesen, neues Reading erstellen
Beitrag von: M.K. am 29 Mai 2019, 01:34:40
danke es hat funktioniert! Ich habe wohl zu früh aufgegeben mit testen. Außerdem verstehe ich nicht wieso in der Command Ref
device:reading:[b]/[/b].{.*}
steht.

Der Schrägstrich hat mich verwirrt bzw. erscheint mir überflüssig.