MQTT Json auslesen

Begonnen von sn0000py, 24 Februar 2022, 15:00:27

Vorheriges Thema - Nächstes Thema

sn0000py

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

Beta-User

...viele Wege führen nach Rom...: https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt

Würde hier empfehlen, mal das Attribut jsonMap intensiver anzusehen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

sn0000py

gibt es wo eine doku zu dem jsonMap?

irgendwie komme ich nicht drauf wie das funktionieren sollte ..

Beta-User

Es gibt die commandref zu MQTT2_DEVICE und gefühlt "hunderte" Beispiele in mqtt2.template.

Fang mal damit an:
PowerInL2value:PowerInL2
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

sn0000py

ahhhh super danke funktioniert
ich habe immer probiert mit dem jsonMap das json vorher zu bearbeiten

TomLee

Warum zweimal umbenennen ?

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

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files