[gelöst] MQTT JSON einzelnen Wert lesen

Begonnen von ch.eick, 13 Januar 2026, 14:34:53

Vorheriges Thema - Nächstes Thema

ch.eick

Hallo zusammen,
ich teste mich mal wieder kaput und brauche bitte einen Schubser.

Ich habe ein MQTT2_DEVICE mit dieser readingList
attr signal_receiver readingList $DEVICETOPIC:signal/in:.* {json2nameValue($EVENT)->{params}{envelope}{syncMessage}{sentMessage}{message}}\
$DEVICETOPIC:signal/in:.* signal_in_json
Es wird leider nur das signal_in_json erzeugt, jedoch fehlt mir der einzelne Wert message.
Ich habe schon sehr viel gesucht und ausprobiert, es will jedoch nicht klappen.
signal_in_json {"jsonrpc":"2.0","method":"receive","params":{"envelope":{"source":"+49172","sourceNumber":"+49172","sourceUuid":"925814d3-c417-4848-bfbf-aaf306b978bd","sourceName":"Christian","sourceDevice":3,"timestamp":1768310836528,"serverReceivedTimestamp":1768310836756,"serverDeliveredTimestamp":1768310836757,"syncMessage":{"sentMessage":{"destination":null,"destinationNumber":null,"destinationUuid":null,"timestamp":1768310836528,"message":"test","expiresInSeconds":0,"viewOnce":false,"groupInfo":{"groupId":"ik32NK0yahSjfnXJC9gmHqyGKr0okcm62Fa/9+ereJc=","groupName":"FHEM cli","revision":0,"type":"DELIVER"}}}},"account":"+49172"}}


VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Beta-User

Du musst einen HASH zurückgeben.

Also z.B. my %ret definieren, den gewünschten Datenpunkt in einen Key von %ret schreiben und die Referenz auf %ret zurückgeben.

Mobil, daher nur der prinzipielle Ablauf...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

ch.eick

#2
Zitat von: Beta-User am 13 Januar 2026, 15:13:11Du musst einen HASH zurückgeben.

Also z.B. my %ret definieren, den gewünschten Datenpunkt in einen Key von %ret schreiben und die Referenz auf %ret zurückgeben.

Mobil, daher nur der prinzipielle Ablauf...
Hmm,
ich versuche mal ein Muster zu finden

{ my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Beta-User

Genau.

Alternativ kennt j2nV() auch Filter-Argumente, ist im Wiki zu Schritt für Schritt beschrieben.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

Vorschlag:
attr signal_receiver readingList $DEVICETOPIC:signal/in:.* { {message=>json2nameValue($EVENT)->{params_envelope_syncMessage_sentMessage_message} } }

ch.eick

And the winner is Rudolf...

Ich danke Euch beiden wie immer für Eure Geduld mit mir :-)

Zitat von: rudolfkoenig am 13 Januar 2026, 15:30:57Vorschlag:
attr signal_receiver readingList $DEVICETOPIC:signal/in:.* { {message=>json2nameValue($EVENT)->{params_envelope_syncMessage_sentMessage_message} } }

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick