Werte aus Reading auslesen, neues Reading erstellen

Begonnen von M.K., 28 Mai 2019, 06:57:37

Vorheriges Thema - Nächstes Thema

M.K.

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?

Wzut

#1
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:.{.*}
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

M.K.

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.