Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Growatt WR Daten als Json

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Growatt WR Daten als Json

    This topic has been deleted. Only users with topic management privileges can see it.
    • teletapi
      teletapi last edited by teletapi

      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.

      Screenshot_1.jpg


      {
      "InverterStatus": 1,
      "InputPower": 29,
      "PV1Voltage": 75,
      "PV1InputCurrent": 0.5,
      "PV1InputPower": 29,
      "PV2Voltage": 0,
      "PV2InputCurrent": 0,
      "PV2InputPower": 0,
      "OutputPower": 28.2,
      "GridFrequency": 50.02,
      "L1ThreePhaseGridVoltage": 237.6,
      "L1ThreePhaseGridOutputCurrent": 0.4,
      "L1ThreePhaseGridOutputPower": 30,
      "L2ThreePhaseGridVoltage": 0,
      "L2ThreePhaseGridOutputCurrent": 0,
      "L2ThreePhaseGridOutputPower": 0,
      "L3ThreePhaseGridVoltage": 0,
      "L3ThreePhaseGridOutputCurrent": 0,
      "L3ThreePhaseGridOutputPower": 0,
      "TodayGenerateEnergy": 0.1,
      "TotalGenerateEnergy": 425.2,
      "TWorkTimeTotal": 12509730,
      "PV1EnergyToday": 0.1,
      "PV1EnergyTotal": 433.2,
      "PV2EnergyToday": 0,
      "PV2EnergyTotal": 0,
      "PVEnergyTotal": 433.2,
      "InverterTemperature": 15,
      "TemperatureInsideIPM": 15,
      "BoostTemperature": 0,
      "DischargePower": 0,
      "ChargePower": 0,
      "BatteryVoltage": 0,
      "SOC": 0,
      "ACPowerToUser": 0,
      "ACPowerToUserTotal": 0,
      "ACPowerToGrid": 0,
      "ACPowerToGridTotal": 0,
      "INVPowerToLocalLoad": 0,
      "INVPowerToLocalLoadTotal": 0,
      "BatteryTemperature": 0,
      "BatteryState": 0,
      "EnergyToUserToday": 0,
      "EnergyToUserTotal": 0,
      "EnergyToGridToday": 0,
      "EnergyToGridTotal": 0,
      "DischargeEnergyToday": 0,
      "DischargeEnergyTotal": 0,
      "ChargeEnergyToday": 0,
      "ChargeEnergyTotal": 0,
      "LocalLoadEnergyToday": 0,
      "LocalLoadEnergyTotal": 0,
      "ACChargeEnergyToday": 0,
      "ACChargeEnergyTotal": 0,
      "Mac": "B4:8A:0A:DA:31:8F",
      "Cnt": 1010
      }

      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


      {"InverterStatus":[1,"(Normal Operation)",false],"InputPower":[25.8,"W",true],"OutputPower":[25.3,"W",true],"TodayGenerateEnergy":[0.1,"kWh",false],"TotalGenerateEnergy":[425.2,"kWh",false],"InverterTemperature":[15,"°C",true],"DischargePower":[0,"W",true],"ChargePower":[0,"W",true],"SOC":[0,"%",true],"INVPowerToLocalLoadTotal":[0,"W",false],"BatteryTemperature":[0,"°C",true],"BatteryState":[0,"",false],"EnergyToUserToday":[0,"kWh",false],"EnergyToUserTotal":[0,"kWh",false],"EnergyToGridToday":[0,"kWh",false],"EnergyToGridTotal":[0,"kWh",false],"DischargeEnergyToday":[0,"kWh",false],"DischargeEnergyTotal":[0,"kWh",false],"ChargeEnergyToday":[0,"kWh",false],"ChargeEnergyTotal":[0,"kWh",false],"LocalLoadEnergyToday":[0,"kWh",false],"LocalLoadEnergyTotal":[0,"kWh",false],"ACChargeEnergyToday":[0,"kWh",false],"ACChargeEnergyTotal":[0,"kWh",false]}

      Vielleicht könnte mich da der ein oder andere unterstützen
      Danke im vorraus

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @teletapi last edited by paul53

        @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.

        teletapi 2 Replies Last reply Reply Quote 0
        • teletapi
          teletapi @paul53 last edited by teletapi

          @paul53 Morjen, vielen dank erstmal dafür das du helfen willst. Ich werde dann mal ein paar Aliase anlegen

          F 1 Reply Last reply Reply Quote 0
          • F
            falkomfs @teletapi last edited by

            @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 1 Reply Last reply Reply Quote 0
            • teletapi
              teletapi @falkomfs last edited by

              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 1 Reply Last reply Reply Quote 0
              • teletapi
                teletapi @paul53 last edited by

                @paul53 wo schreibe ich das hin...?


                JSON.parse(val).InputPower

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @teletapi last edited by

                  @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:

                  Alias_common_power.JPG

                  @teletapi sagte in Growatt WR Daten als Json:

                  wo schreibe ich das hin...?

                  Alias_convert_power.JPG

                  1 Reply Last reply Reply Quote 0
                  • teletapi
                    teletapi last edited by teletapi

                    @paul53
                    hab ich jetzt so erstellt

                    Screenshot_3.jpg

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @teletapi last edited by

                      @teletapi sagte: hab ich jetzt so erstellt

                      Zeige bitte die OBJEKTDATEN in Code tags.

                      teletapi 1 Reply Last reply Reply Quote 0
                      • teletapi
                        teletapi @paul53 last edited by teletapi

                        @paul53

                        {
                        "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
                        
                        
                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @teletapi last edited by paul53

                          @teletapi
                          Ändere noch die Rolle in "value.power" oder "value" und ergänze die Unit: "W".

                          Code tags ist oben das 5. Symbol </>.

                          teletapi 1 Reply Last reply Reply Quote 0
                          • teletapi
                            teletapi @paul53 last edited by teletapi

                            @paul53

                            Screenshot_4.jpg

                            Passiert mir jedesmal mit dem Codetag

                            teletapi 1 Reply Last reply Reply Quote 0
                            • teletapi
                              teletapi @teletapi last edited by

                              Das hat ja super geklappt vielen dank für eure Hilfe
                              Hawe

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              869
                              Online

                              32.0k
                              Users

                              80.5k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              559
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo