FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: sn0000py am 24 Februar 2022, 15:00:27

Titel: MQTT Json auslesen
Beitrag von: sn0000py am 24 Februar 2022, 15:00:27
eine Frage wie lese ich folgendes JSON Aus am besten?

{"value": -1384}

jedes Topic im MQTT ist immer gleich formatiert, ich möchte die dann ganz normal dann einlesen, ohne das das value dabei steht im variablennamen.

N/L1/Power:.* PowerInL1
N/L2/Power:.* { json2nameValue($EVENT, 'PowerInL2', $JSONMAP) }


das resultat ist dann
PowerInL1   {"value": -1384}   2022-02-24 14:59:07
PowerInL2value   -1755   2022-02-24 14:59:07


Beim ersten passt der Name aber der Wert nicht, beim zweiten passt der Wert, aber im Namen sollte das value nicht vorkommen
Titel: Antw:MQTT Json auslesen
Beitrag von: Beta-User am 24 Februar 2022, 15:03:23
...viele Wege führen nach Rom...: https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt (https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt)

Würde hier empfehlen, mal das Attribut jsonMap intensiver anzusehen.
Titel: Antw:MQTT Json auslesen
Beitrag von: sn0000py am 24 Februar 2022, 15:25:29
gibt es wo eine doku zu dem jsonMap?

irgendwie komme ich nicht drauf wie das funktionieren sollte ..
Titel: Antw:MQTT Json auslesen
Beitrag von: Beta-User am 24 Februar 2022, 15:31:21
Es gibt die commandref zu MQTT2_DEVICE und gefühlt "hunderte" Beispiele in mqtt2.template.

Fang mal damit an:
PowerInL2value:PowerInL2
Titel: Antw:MQTT Json auslesen
Beitrag von: sn0000py am 24 Februar 2022, 15:33:59
ahhhh super danke funktioniert
ich habe immer probiert mit dem jsonMap das json vorher zu bearbeiten
Titel: Antw:MQTT Json auslesen
Beitrag von: TomLee am 24 Februar 2022, 15:36:06
Warum zweimal umbenennen ?

attr <devicename> readingList N/L2/Power:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr <devicename> jsonMap value:PowerInL2
Titel: Antw:MQTT Json auslesen
Beitrag von: Beta-User am 24 Februar 2022, 15:39:13
Zitat von: TomLee am 24 Februar 2022, 15:36:06
Warum zweimal umbenennen ?

attr <devicename> readingList N/L2/Power:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr <devicename> jsonMap value:PowerInL2

Der TE hat uns doch nur zwei Beispielzeilen aus seiner readingList gezeigt => das funktioniert nur für eine Zeile so...

Wenn, könnte man eine "schneide die Zahl aus"-Perl-Funktion bauen und die Readingnamen manuell vergeben. Das sähe dann für alle betreffendne Zeilen in etwa gleich aus.

Zitat von: sn0000py am 24 Februar 2022, 15:33:59
ich habe immer probiert mit dem jsonMap das json vorher zu bearbeiten
Verstehe ich nicht, wie man da noch groß wie auch immer rumexperimentiert; die Hilfe wird doch direkt in FHEMWEB angezeigt, wenn man das Attribut auswählt...