NEWS
Mqtt Zeichenkette JSON parsen
-
Hallo Gemeinde!
Ich versuche den Mqtt-String eines Tasmota Smart-Meters in einzelne Datenpunkte zu zerlegen.
Für mein Vorhaben gibt es auch gute Beispiele, ich komme aber nicht weiter.Kann mal bitte jemand über das Script gucken und mir sagen, wo es klemmt?
Die Zeichenkette die via mqtt kommt sieht so aus:
{"Time":"2022-08-24T17:17:12","":{"Meter_Number":"XXXXXXXXXXXXXXX","Total_in":792.5229,"Total_out":290.8330,"Power_curr":25}}
Folgendes Script verwende ich:
on({id: 'mqtt.0.tele.tasmota_121518.SENSOR', change: "any"}, function (obj) { var Total_in var Total_out var Power_curr //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object try {obj = JSON.parse(getState('mqtt.0.tele.sonoff.SENSOR').val); } catch (e) { console.error('Cannot parse: ' + getState('mqtt.0.tele.tasmota_121518.SENSOR').val); return; } Total_in = obj.Total_in; Total_out = obj.Total_out; Power_curr = obj.Power_curr; setState('javascript.0.Total_in', (Total_in)); setState('javascript.0.Total_out', (Total_out)); setState('javascript.0.Power_curr', (Power_curr)); });
Unter den Objekten im Unterordner Javascript.0 habe ich die 3 Variablen Total_in, Total_out und Power_curr angelegt (Zahl).
Vielen Dank schonmal für eure Hilfe!
-
setState('javascript.0.Total_in', obj[''].Total_in, true); setState('javascript.0.Total_out', obj[''].Total_out, true); setState('javascript.0.Power_curr', obj[''].Power_curr, true);
-
Funktioniert leider auch nicht. Die Log sagt folgendes:
19:29:22.641 warn javascript.0 (496) at Object.<anonymous> (script.js.Smartmeter_JS:9:26) 19:29:22.642 error javascript.0 (496) at Object.<anonymous> (script.js.Smartmeter_JS:15:19)
//EDIT:
Typischer copy / paste Fehler in Zeile neun. Habe dort mein Gerät nicht eingetragen.... Danke für die Hilfe!