NEWS
Growatt WR Daten als Json
-
Hallo,
Ich brauch mal wieder eure Hilfe
Ich habe gerade einen gebrauchten Growatt Mic 600 TL-X gekauft und heute angeschlossen. Da ich den offiziellen USB Stick Shine Wifi-X nicht benutzen möchte sondern einen zwar originalen aber mit alternativ Software beschriebenen Stick der mir die WR Daten per Mqtt auf meinen Iobroker (Mosquitto Broker) (Mqtt adapter) sendet hier kommen die Daten als Json an.Jetzt steh ich allerdings vor dem Problem wie bekomme ich diese Daten in einzelne Datenpunkte.
Ich hab hier schon einiges gelesen aber begriffen hab ich davon nur sehr wenig und ich steh etwas auf dem Schlauch.
Hier noch die json Rohdaten
Vielleicht könnte mich da der ein oder andere unterstützen
Danke im vorraus -
@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).InputPower
Ich 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 });
-
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.
-
@paul53 wo schreibe ich das hin...?
-
@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...?
-
@paul53
hab ich jetzt so erstellt -
@teletapi sagte: hab ich jetzt so erstellt
Zeige bitte die OBJEKTDATEN in Code tags.
-
{ "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 </>.
-
-
Das hat ja super geklappt vielen dank für eure Hilfe
Hawe