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!
-
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!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden