Hauptmenü

Mqtt String zerlegen

Begonnen von sepultura30, 05 April 2023, 14:32:32

Vorheriges Thema - Nächstes Thema

sepultura30

Hallo,

bekomme von meinem Stromzähler per Mqtt-String folgende Werte.

tele {"Time":"2023-04-05T13:27:40","Power":{"Total_in":502.9088,"Power_curr":342,"Total_out":0.0000}}

wie bekomme ich Total_in, Power_curr, Total_out in einzelne userReadings

Grüße

Sandro

Otto123

Hi,

wenn das nicht etwas schon bekanntes ist? Hier schon versucht?
Ansonsten gibt es Hintergrundinfos? Was für ein MQTT Gerät usw.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

sepultura30

Hi,

schau dir mal das an, ist schon ein MQTT-Device

define Stromzaehler MQTT_DEVICE
attr Stromzaehler userattr tele
attr Stromzaehler IODev myBroker
attr Stromzaehler room Mosquitto
attr Stromzaehler subscribeReading_tele tele/Stromzaehler/SENSOR
#   FUUID      642c6568-f33f-784a-8816-3f3c072bea628a5c
#   IODev      myBroker
#   NAME       Stromzaehler
#   NR         8389
#   STATE      ???
#   TYPE       MQTT_DEVICE
#   eventCount 7180
#   OLDREADINGS:
#   READINGS:
#     2023-04-04 20:01:07   IODev           myBroker
#     2023-04-05 16:34:51   tele            {"Time":"2023-04-05T15:34:50","Power":{"Total_in":503.7838,"Power_curr":341,"Total_out":0.0000}}
#     2023-04-05 16:34:51   transmission-state incoming publish received
#   hmccu:
#   message_ids:
#   sets:
#   subscribe:
#     tele/Stromzaehler/SENSOR
#   subscribeExpr:
#     ^tele\/Stromzaehler\/SENSOR$
#   subscribeQos:
#     tele/Stromzaehler/SENSOR 0
#   subscribeReadings:
#     tele/Stromzaehler/SENSOR:
#       cmd       
#       name       tele
#
setstate Stromzaehler 2023-04-04 20:01:07 IODev myBroker
setstate Stromzaehler 2023-04-05 16:34:51 tele {"Time":"2023-04-05T15:34:50","Power":{"Total_in":503.7838,"Power_curr":341,"Total_out":0.0000}}
setstate Stromzaehler 2023-04-05 16:34:51 transmission-state incoming publish received



Grüße

Sandro

betateilchen

Das ist doch simpelstes JSON? Dafür hat FHEM Funktionen, die das erledigen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sepultura30

Zitat von: betateilchen am 05 April 2023, 16:41:38Das ist doch simpelstes JSON? Dafür hat FHEM Funktionen, die das erledigen.

Ich habe mit JSON noch nie gearbeitet ...:)

sepultura30

Hallo,

hier die Lösung von mir...:)

define Stromzaehler MQTT2_DEVICE
attr Stromzaehler IODev myBroker
attr Stromzaehler autocreate 1
attr Stromzaehler icon mqtt_device
attr Stromzaehler readingList mqtt2_client:tele/Stromzaehler/SENSOR:.* { json2nameValue($EVENT,'Total_in',$JSONMAP) }
attr Stromzaehler room Mosquitto
attr Stromzaehler verbose 0
#   DEF       
#   FUUID      642d9cfc-f33f-784a-4417-c48e85dff44d6e71
#   IODev      myBroker
#   LASTInputDev mqtt2_client
#   MSGCNT     58
#   NAME       Stromzaehler
#   NR         37435
#   STATE      ???
#   TYPE       MQTT2_DEVICE
#   eventCount 59
#   mqtt2_client_MSGCNT 58
#   mqtt2_client_TIME 2023-04-05 18:39:00
#   READINGS:
#     2023-04-05 18:09:39   IODev           myBroker
#     2023-04-05 18:39:00   Total_inPower_Power_curr 590
#     2023-04-05 18:39:00   Total_inPower_Total_in 505.3588
#     2023-04-05 18:39:00   Total_inPower_Total_out 0.0000
#     2023-04-05 18:39:00   Total_inTime    2023-04-05T17:39:00
#   hmccu:
#   message_ids:
#   subscribeExpr:
#
setstate Stromzaehler 2023-04-05 18:09:39 IODev myBroker
setstate Stromzaehler 2023-04-05 18:39:00 Total_inPower_Power_curr 590
setstate Stromzaehler 2023-04-05 18:39:00 Total_inPower_Total_in 505.3588
setstate Stromzaehler 2023-04-05 18:39:00 Total_inPower_Total_out 0.0000
setstate Stromzaehler 2023-04-05 18:39:00 Total_inTime 2023-04-05T17:39:00


Grüße

Sandro

betateilchen

na siehste, das war doch gar nicht so schwer  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!