@haselchen
Ich hatte das vorher auch über den Tasmota adapter. Momentan habe ich aber den MQTT-Broker auf einer anderen virtuellen Maschine laufen, da ich die Daten auch noch wo anders brauche. Deswegen bin ich diesen weg gegangen.
Gruss, Sascha
NEWS
Latest posts made by Magicfriend 0
-
RE: [Gelöst] MQTT SENSOR String in einzelne Werte zerlegen
-
RE: [Gelöst] MQTT SENSOR String in einzelne Werte zerlegen
@paul53
Hallo paul53,genau das wars, jetzt sind die Werte da - DANKE!!!!
-
RE: [Gelöst] MQTT SENSOR String in einzelne Werte zerlegen
@ag
Hallo,
wie soll ich das in den Alias Adapter rein bekommen. Da kann ich doch auch nur den ganzen SENSOR-String auswählen?!
Gruss, Sascha -
[Gelöst] MQTT SENSOR String in einzelne Werte zerlegen
Hallo zusammen,
ich möchte einen MQTT Sensor Wert eines Tasmota Zählers, der folgenden String enthält, in 3 einzelne Objekte trennen:{ "Time": "2024-01-18T18:03:52", "": { "Total_in": 25856.6, "Total_out": 61.91, "Power_curr": 1534 } }
Ich habe auch schon ähnliche Beiträge dazu gefunden, doch leider funktioniert es noch nicht ganz.
Der MQTT-Sensor Wert sieht so aus:{ "_id": "mqtt.1.tele.Strom_Zaehler.SENSOR", "common": { "name": "tele/Strom_Zaehler/SENSOR", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "string" }, "native": { "topic": "tele/Strom_Zaehler/SENSOR" }, "type": "state", "from": "system.adapter.mqtt.1", "user": "system.user.admin", "ts": 1705481190584, "acl": { "object": 1636, "state": 1636 } }
Ich habe bisher ein Script das so aussieht, um die Werte auszulesen:
const idJson = 'mqtt.1.tele.Strom_Zaehler.SENSOR'; const path = 'javascript.0.'; on(idJson, function(dp) { var obj = JSON.parse(dp.state.val) ; let id = path + 'Total_in'; if(existsState(id)) setState(id, (obj.Total_in), true); else createState(id, obj.Total_in.Total_in, {type: 'number', name: 'Total_in', role: 'value', unit: 'kWh'}); id = path + 'Total_out'; if(existsState(id)) setState(id, obj.Total_out, true); else createState(id, obj.Total_out.Total_out, {type: 'number', name: 'Total_out', role: 'value', unit: 'kWh'}); id = path + 'Power_curr'; if(existsState(id)) setState(id, obj.Power_curr, true); else createState(id, obj.Power_curr.Power_curr, {type: 'number', name: 'Power_curr', role: 'value', unit: 'W'}); // usw. für weitere Datenpunkte });
Die angelegten Objekte dazu werden auch regelmässig aktualisiert, nur nicht mit den richtigen Werten. Die Werte darin sehen so Aus:
Ich bin leider nicht so tief drin in der Programmierung, ich finde den Fehler einfach nichtGruss, Sascha