NEWS
Growatt WR Daten als Json
-
@teletapi sagte: diese Daten in einzelne Datenpunkte.
Erstelle für jeden Datenpunkt einen Alias unter "alias.0" mit passenden Eigenschaften und verwende eine Lesekonvertierung. Beispiel Konvertierung für "InputPower":
JSON.parse(val).InputPowerIch gehe davon aus, dass im oberen Spoiler das MQTT-JSON enthalten ist.
-
@paul53 Morjen, vielen dank erstmal dafür das du helfen willst. Ich werde dann mal ein paar Aliase anlegen
@teletapi bei mir sieht es so aus.
const idJson = 'mqtt.1.energy.solar.L1a'; const path = '0_userdata.0.Solar.Auslesewerte.L1a.'; on(idJson, function(dp) { let obj = JSON.parse(dp.state.val); let id = path + 'InverterStatus'; if(existsState(id)) setState(id, obj.InverterStatus, true); else createState(id, obj.temp.temp, {type: 'number', name: 'InverterStatus', role: 'value', unit: '°C'}); id = path + 'PV1Voltage'; if(existsState(id)) setState(id, obj.PV1Voltage, true); else createState(id, obj.humid.humid, {type: 'number', name: 'PV1Voltage', role: 'value', unit: 'V'}); id = path + 'BattPwr'; if(existsState(id)) setState(id, obj.BattPwr, true); else createState(id, obj.humid.humid, {type: 'number', name: 'BattPwr', role: 'value', unit: 'V'}); id = path + 'BattSOC'; if(existsState(id)) setState(id, obj.BattSOC, true); else createState(id, obj.humid.humid, {type: 'number', name: 'BattSOC', role: 'value', unit: 'V'}); id = path + 'LoadPercent'; if(existsState(id)) setState(id, obj.LoadPercent, true); else createState(id, obj.humid.humid, {type: 'number', name: 'LoadPercent', role: 'value', unit: 'V'}); id = path + 'OutActivePwr'; if(existsState(id)) setState(id, obj.OutActivePwr, true); else createState(id, obj.humid.humid, {type: 'number', name: 'OutActivePwr', role: 'value', unit: 'V'}); id = path + 'PV1ChargePwr'; if(existsState(id)) setState(id, obj.PV1ChargePwr, true); else createState(id, obj.humid.humid, {type: 'number', name: 'PV1ChargePwr', role: 'value', unit: 'V'}); id = path + 'BattVoltage'; if(existsState(id)) setState(id, obj.BattVoltage, true); else createState(id, obj.humid.humid, {type: 'number', name: 'BattVoltage', role: 'value', unit: 'V'}); id = path + 'Buck1Temp'; if(existsState(id)) setState(id, obj.Buck1Temp, true); else createState(id, obj.humid.humid, {type: 'number', name: 'Buck1Temp', role: 'value', unit: 'W'}); id = path + 'Buck2Temp'; if(existsState(id)) setState(id, obj.Buck2Temp, true); else createState(id, obj.humid.humid, {type: 'number', name: 'Buck2Temp', role: 'value', unit: 'W'}); // usw. für weitere Datenpunkte }); -
@teletapi bei mir sieht es so aus.
const idJson = 'mqtt.1.energy.solar.L1a'; const path = '0_userdata.0.Solar.Auslesewerte.L1a.'; on(idJson, function(dp) { let obj = JSON.parse(dp.state.val); let id = path + 'InverterStatus'; if(existsState(id)) setState(id, obj.InverterStatus, true); else createState(id, obj.temp.temp, {type: 'number', name: 'InverterStatus', role: 'value', unit: '°C'}); id = path + 'PV1Voltage'; if(existsState(id)) setState(id, obj.PV1Voltage, true); else createState(id, obj.humid.humid, {type: 'number', name: 'PV1Voltage', role: 'value', unit: 'V'}); id = path + 'BattPwr'; if(existsState(id)) setState(id, obj.BattPwr, true); else createState(id, obj.humid.humid, {type: 'number', name: 'BattPwr', role: 'value', unit: 'V'}); id = path + 'BattSOC'; if(existsState(id)) setState(id, obj.BattSOC, true); else createState(id, obj.humid.humid, {type: 'number', name: 'BattSOC', role: 'value', unit: 'V'}); id = path + 'LoadPercent'; if(existsState(id)) setState(id, obj.LoadPercent, true); else createState(id, obj.humid.humid, {type: 'number', name: 'LoadPercent', role: 'value', unit: 'V'}); id = path + 'OutActivePwr'; if(existsState(id)) setState(id, obj.OutActivePwr, true); else createState(id, obj.humid.humid, {type: 'number', name: 'OutActivePwr', role: 'value', unit: 'V'}); id = path + 'PV1ChargePwr'; if(existsState(id)) setState(id, obj.PV1ChargePwr, true); else createState(id, obj.humid.humid, {type: 'number', name: 'PV1ChargePwr', role: 'value', unit: 'V'}); id = path + 'BattVoltage'; if(existsState(id)) setState(id, obj.BattVoltage, true); else createState(id, obj.humid.humid, {type: 'number', name: 'BattVoltage', role: 'value', unit: 'V'}); id = path + 'Buck1Temp'; if(existsState(id)) setState(id, obj.Buck1Temp, true); else createState(id, obj.humid.humid, {type: 'number', name: 'Buck1Temp', role: 'value', unit: 'W'}); id = path + 'Buck2Temp'; if(existsState(id)) setState(id, obj.Buck2Temp, true); else createState(id, obj.humid.humid, {type: 'number', name: 'Buck2Temp', role: 'value', unit: 'W'}); // usw. für weitere Datenpunkte }); -
@teletapi sagte: diese Daten in einzelne Datenpunkte.
Erstelle für jeden Datenpunkt einen Alias unter "alias.0" mit passenden Eigenschaften und verwende eine Lesekonvertierung. Beispiel Konvertierung für "InputPower":
JSON.parse(val).InputPowerIch gehe davon aus, dass im oberen Spoiler das MQTT-JSON enthalten ist.
-
Es fällt mir etwas schwer das zu sagen aber ich bin komplett ahnungslos wie das funktioniert. Selbst den Alias "mit den richtigen Eigenschaften" zu erstellen wird ohne eure Hilfe nicht gehn.
@teletapi sagte: Alias "mit den richtigen Eigenschaften" zu erstellen
Im Tab "Objekte" erst ein Verzeichnis (z.B. "WR") unter "alias.0" erstellen und dann unter dem Verzeichnis die Datenpunkte:

@teletapi sagte in Growatt WR Daten als Json:
wo schreibe ich das hin...?

-
{ "common": { "name": "InputPower", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": false, "alias": { "read": "JSON.parse(val).InputPower ", "id": "mqtt.0.energy.solar" } }, "type": "state", "native": {}, "_id": "alias.0.Solar.Growatt.InputPower", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1702657939627 } 0 -
{ "common": { "name": "InputPower", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": false, "alias": { "read": "JSON.parse(val).InputPower ", "id": "mqtt.0.energy.solar" } }, "type": "state", "native": {}, "_id": "alias.0.Solar.Growatt.InputPower", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1702657939627 } 0 -
@teletapi
Ändere noch die Rolle in "value.power" oder "value" und ergänze die Unit: "W".Code tags ist oben das 5. Symbol </>.
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

