FHEM > Anfängerfragen
Tasmota/ MQTT: Parse JSON Reading
hkspks:
Hallo zusammen,
gibt es eine charmante Möglichkeit, den Tasmota-JSON-Response "SENSOR" direkt in Einzel-Readings zu überführen?
Aktuell packt er mir nachvollziehbar den JSON-String in ein Reading "Sensor". Klar, könnte ich da jetzt ein Notify drauf setzen und mit Codings hantieren - ggf. gibt es aber ja eine charmantere Möglichkeit? Ich hätte gerne die Energiewerte direkt als einzelne Readings im Device.
--- Code: ---defmod Steckdose MQTT_DEVICE
attr Steckdose subscribeReading_Sensor tele/tasmota_EE34E1/SENSOR
setstate Steckdose 2022-12-01 15:15:20 Sensor {"Time":"2022-12-01T15:15:20","ENERGY":{"TotalStartTime":"2022-10-14T12:15:23","Total":1.323,"Yesterday":0.470,"Today":0.288,"Period": 4,"Power":45,"ApparentPower":77,"ReactivePower":63,"Factor":0.57,"Voltage":237,"Current":0.326}}
--- Ende Code ---
Ggf. ist es möglich, einzelne Readings zu definieren und dann darin direkt Perl-Code auszuführen, der das richtige Datenelement aus dem JSON extrahiert:
--- Zitat ---attr <name> subscribeReading_<reading> [{Perl-expression}] [qos:?] [retain:?] <topic>
mapps a reading to a specific topic. The reading is updated whenever a message to the configured topic arrives.
QOS and ratain can be optionally defined for this topic.
Furthermore, a Perl statement can be provided which is executed when the message is received. The following variables are available for the expression: $hash, $name, $topic, $message. Return value decides whether reading is set (true (e.g., 1) or undef) or discarded (false (e.g., 0)).
--- Ende Zitat ---
z.B. attr Steckdose subscribeReading_EnergyTotal PERL_EXTRAKT_CODE(tele/tasmota_EE34E1/SENSOR)
Falls ja, ggf. hat ja jemand ein Snippet für mich ;-)
LG, Christian
OdfFhem:
Bei MQTT_DEVICE wird (oft) expandJSON verwendet.
s. https://forum.fhem.de/index.php/topic,100187.msg936219.html#msg936219 und natürlich die gerätespezifische FHEM-Hilfe.
Otto123:
Hi,
"charmanter" wäre mit MQTT2_DEVICE und attrTemplate zu hantieren ;)
Gruß Otto
hkspks:
Cool, das hat geklappt. Jetzt habe ich an 6 Geräten ein Reading Energy_Today reading.
Was wäre der Goldstandard, um die Werte täglich abzugreifen, wegzuschreiben, zu aggregieren und zu plotten? Überlege mir ein kleines Energiereporting a la ein Barchart mit einer Säule je Tag und die Säule unterteilt in die Geräte 😉
Quasi eine kleine DWH Anwendung ^^
Sany:
--- Zitat ---um die Werte täglich abzugreifen, wegzuschreiben, zu aggregieren und zu plotten? Überlege mir ein kleines Energiereporting a la ein Barchart mit einer Säule je Tag und die Säule unterteilt in die Geräte
--- Ende Zitat ---
schau mal hier, sowas in der Art gibts schon.
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anwendungsbeispiele_mit_card
Laut Damian Work in progress, es wird erweitert und Säulendiagramme kommen...
Ist aber nicht copy-paste, jedenfalls nicht der Anzeigeteil. Einarbeitung in DOIF-perl und uiTable ist schon erforderlich.
Gruß
Sany
edit: link vergessen ::)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln