NEWS
Wert aus Objekt auslesen und in Datenpunkt speichern
-
Hallo, ich bekomme per MQTT diesen String übermittelt. Wir kann ich denn über blockly die Werte von "DJ_TPWRCURR" und "Meter_total" in jeweils einen Datenpunkt schreiben?
mqtt.0 2021-01-05 15:12:40.748 debug (21339) stateChange mqtt.0.tele.Itron_mME_Power.SENSOR: {"val":"{\"Time\":\"2021-01-05T15:12:40\",\"SML\":{\"Meter_total\":3497.518,\"DJ_TPWRCURR\":590,\"Meter_number\":\"xxxx\"}}
-
@toki1973 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
ich bekomme per MQTT diesen String übermittelt.
wie sieht denn der inhalt des Datenpunktes im MQTT-client.0 aus?
-
@Homoran
Danke für die Rückmeldung!Der String oben ist der String den ich bekommen. Hier noch mal:
{"val":"{\"Time\":\"2021-01-05T15:12:40\",\"SML\":{\"Meter_total\":3497.518,\"DJ_TPWRCURR\":590,\"Meter_number\":\"xxxxxxxxxxx\"}}
Aus dem val möchte ich die Werte von Meter_total und DJ_TPWRCURR ohne doppelpunkt in eigene Datenpunkte schreiben damit ich dies in die Influx db schreiben lassen kann.
-
@toki1973 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
{"val":"{"Time":"2021-01-05T15:12:40","SML":{"Meter_total":3497.518,"DJ_TPWRCURR":590,"Meter_number":"xxxxxxxxxxx"}}
das sieht selbst für mich aus wie ein JSON, das müsste dann mir "Attribut von" gehen.
Das reizt mich jetzt mal es mit deinem Export zu probieren -
@Homoran
Ich bekomme den String von Tasmota -
-
-
So wie hier sollte es klappen: https://forum.iobroker.net/topic/40664/gelöst-datenpunkt-aus-json-in-ccu2-variable-schreiben/8
Aber irgendwie bekomme ich das parsen nicht auf meine String angepasst.const idJson = 'stateChange mqtt.0.tele.Itron_mME_Power.SENSOR'; const idSV = 'kWh_total'; function json2sv(json) { let obj = JSON.parse(json)[0]; setState(idSV, obj.Meter_total + '. ' + obj.DJ_TPWRCURR); } json2sv(getState(idJson).val); // Script start on(idJson, function(dp) { // Wertänderung json2sv(dp.state.val); });
-
@toki1973 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
Aber irgendwie bekomme ich das parsen nicht auf meine String angepasst.
Das war ja auch mein Problem.
Du hast noch Escape-Sequenzen mit einem\
drin, dadurch ist es kein "echtes" json
Außerdem hast du ein verschachteltes "JSON" -
@toki1973
Versuche es mal so: -
@paul53 So habe ich es probiert - ohne Erfolg
und zwar mit den
\
und wie im Bild auch ohne -
@Homoran sagte:
{"val":"{"Time":"2021-01-05T15:12:40","SML":{"Meter_total":3497.518,"DJ_TPWRCURR":590,"Meter_number":"xxxxxxxxxxx"}}
In diesem String stören die " vor {"Time"
Sind die im Original wirklich vorhanden ? -
@paul53 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
In diesem String stören die " vor {"Time"
Sind die im Original wirklich vorhanden ?Noch schlimmer, die sind escaped:
@toki1973 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
{"val":"{\"Time\":\"2021-01-05T15:12:40\",\"SML\":{\"Meter_total\":3497.518,\"DJ_TPWRCURR\":590,\"Meter_number\":\"xxxxxxxxxxx\"}}
-
@Homoran
... und am Ende fehlt auch noch eine geschweifte Klammer.
Das ist alles mögliche, nur kein JSON.EDIT: "val":" stammt aus dem state-JSON
-
Ja so steht es in dem Objekt das in MQQT Objekt angelegt wird.
Tasmota schickt es so auch raus:
13:57:47.444 MQT: tele/Itron_mME_Power/SENSOR = {"Time":"2021-01-08T13:57:47","SML":{"Meter_total":3539.467,"DJ_TPWRCURR":608,"Meter_number":"0a0149545200034ba81e"}}
Dumme Frage wir bekomme ich den Block Wert da hinein?
-
@paul53 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
Das ist alles mögliche, nur kein JSON.
das hatte ich befürchtet, bin gerade dabei Buchstaben zu zählen
-
@toki1973 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
Dumme Frage wir bekomme ich den Block Wert da hinein?
befindet sich unter den Triggerbausteine, ist ein pulldown, da steht standardmäßig "Objekt ID"
-
@toki1973 sagte:
13:57:47.444 MQT: tele/Itron_mME_Power/SENSOR = {"Time":"2021-01-08T13:57:47","SML":{"Meter_total":3539.467,"DJ_TPWRCURR":608,"Meter_number":"0a0149545200034ba81e"}}
Dann versuche es so:
Wert findet man unter "Trigger".
-
Argh Ich habe jetzt mal auf den Sonoff mqtt Server umgestellt. Uns siehe da:
Zuvor hatte ich eine separate MQTT Instanz
-
@toki1973 sagte in Wert aus Objekt auslesen und in Datenpunkt speichern:
Zuvor hatte ich eine separate MQTT Instanz
du kannst keine zwei MQTT Clients mit gleichem Port parallel betreiben