Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. (gelöst) benötige Hilfe beim Json in Datenpunkte umwandeln

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (gelöst) benötige Hilfe beim Json in Datenpunkte umwandeln

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

      Hallo Zusammen,

      ich benötige Hilfe beim zerpflücken eines Jason um damit Datenpunkte zu erzeugen/füllen.

      Nachfolgenes Json gibt mein Wechselrichter über Growatt Inverter aus.

      {
        "InverterStatus": 5,
        "InputPower": 3970,
        "PV1Voltage": 447.3,
        "PV1InputCurrent": 8.1,
        "PV1InputPower": 3660.1,
        "PV2Voltage": 502.2,
        "PV2InputCurrent": 0.6,
        "PV2InputPower": 316.1,
        "OutputPower": 349.5,
        "GridFrequency": 49.95,
        "L1ThreePhaseGridVoltage": 404.8,
        "L1ThreePhaseGridOutputCurrent": 0.7,
        "L1ThreePhaseGridOutputPower": 569.4,
        "L2ThreePhaseGridVoltage": 400,
        "L2ThreePhaseGridOutputCurrent": 0.8,
        "L2ThreePhaseGridOutputPower": 0,
        "L3ThreePhaseGridVoltage": 407.6,
        "L3ThreePhaseGridOutputCurrent": 0.8,
        "L3ThreePhaseGridOutputPower": 0,
        "TodayGenerateEnergy": 2.3,
        "TotalGenerateEnergy": 622.6,
        "TWorkTimeTotal": 1521098,
        "PV1EnergyToday": 3.7,
        "PV1EnergyTotal": 336.5,
        "PV2EnergyToday": 0.3,
        "PV2EnergyTotal": 342.7,
        "PVEnergyTotal": 679.2,
        "InverterTemperature": 39.8,
        "TemperatureInsideIPM": 47,
        "BoostTemperature": 50.6,
        "DischargePower": 0,
        "ChargePower": 3270,
        "BatteryVoltage": 219.2,
        "SOC": 87,
        "ACPowerToUser": 0,
        "ACPowerToUserTotal": 0,
        "ACPowerToGrid": 0,
        "ACPowerToGridTotal": 0,
        "INVPowerToLocalLoad": 700,
        "INVPowerToLocalLoadTotal": 700,
        "BatteryTemperature": 237,
        "BatteryState": 5,
        "EnergyToUserToday": 0.4,
        "EnergyToUserTotal": 97.7,
        "EnergyToGridToday": 0.1,
        "EnergyToGridTotal": 429,
        "DischargeEnergyToday": 2.8,
        "DischargeEnergyTotal": 115,
        "ChargeEnergyToday": 3.5,
        "ChargeEnergyTotal": 119.4,
        "LocalLoadEnergyToday": 4,
        "LocalLoadEnergyTotal": 348.7,
        "ACChargeEnergyToday": 0.2,
        "ACChargeEnergyTotal": 12.1,
        "Mac": "44:17:93:11:0F:C7",
        "Cnt": 8437
      }
      

      habe schon diverse Beiträge im Forum gelesen, werde da aber nicht schlau raus.

      Das json wird über MQTT übermittelt
      Grovattinverter.png

      Gruß Michael

      bahnuhr W 2 Replies Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @2hot4you last edited by

        @2hot4you

        var J_Test = '{"InverterStatus": 5,"InputPower": 3970,"PV1Voltage": 447.3}';
        var obj = JSON.parse(J_Test);
        log (obj.PV1Voltage)
        
        
        1 Reply Last reply Reply Quote 0
        • W
          wolfi913 @2hot4you last edited by

          @2hot4you
          oder als Blockly
          Screenshot 2024-06-07 082101.png

          Homoran 2 3 Replies Last reply Reply Quote 1
          • Homoran
            Homoran Global Moderator Administrators @wolfi913 last edited by

            @wolfi913 sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

            @2hot4you
            oder als Blockly
            Screenshot 2024-06-07 082101.png

            oder einfacher ohne Variable json
            einfach die Systemvariable Wert aus dem Bereich Trigger nehmen.

            MartinP 1 Reply Last reply Reply Quote 0
            • MartinP
              MartinP @Homoran last edited by

              @homoran Mein Weg sind Alias-Datenpunkte, dann hat man auch im Object-Tree einen einfacheren Blick auf die Elemente der Struktur, und hat das sowieso ratsame "Aliasieren" gleich mit erledigt...

              86d06ec3-47ae-4771-ac74-9749401e7ad2-grafik.png

              {"battery":63,
              "humidity":54.65,
              "last_seen":"2024-06-07T09:37:48+02:00",
              "linkquality":188,
              "power_outage_count":78,
              "pressure":1008.1,
              "temperature":19.39,
              "voltage":2945}
              
              1 Reply Last reply Reply Quote 2
              • 2
                2hot4you @wolfi913 last edited by

                @wolfi913

                Perfekt, danke läuft

                1 Reply Last reply Reply Quote 0
                • 2
                  2hot4you @wolfi913 last edited by Homoran

                  @wolfi913

                  ich habe noch eine Frage, vielleicht hast Du dazu eine Antwort.

                  Bei der Ausführung vom Skript bekomme Fehlermeldung:

                  7.6.2024, 23:51:42.878	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  7.6.2024, 23:51:47.927	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  7.6.2024, 23:51:52.920	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  7.6.2024, 23:51:57.917	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  7.6.2024, 23:52:02.888	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  7.6.2024, 23:52:07.920	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  7.6.2024, 23:52:12.894	[warn ]: javascript.0 (3511)     at Object.<anonymous> (script.js.Home.Growatt:9:3)
                  

                  MOD-EDIT: Code in code-tags gesetzt!

                  Was bedeutet das ?

                  W Homoran 2 Replies Last reply Reply Quote 0
                  • W
                    wolfi913 @2hot4you last edited by

                    @2hot4you sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

                    Was bedeutet das ?

                    Nur eine Vermutung da ich Dein Script nicht kenne.
                    Evtl. steht im Datenpunkt den Du auswerten willst nichts drin.

                    1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @2hot4you last edited by Homoran

                      @2hot4you sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

                      Was bedeutet das ?

                      zeig doch mal dein Blockly und den erzeugten JS-Code

                      2 1 Reply Last reply Reply Quote 0
                      • 2
                        2hot4you @Homoran last edited by

                        @homoran

                        anbei der Code vom Blockly. Ich habe alle Datenpunkte geprüft, alle mit Werten.

                        on({ id: [].concat(['mqtt.0.OpenInverterGateway']), change: 'ne' }, async (obj) => {
                          let value = obj.state.val;
                          let oldValue = obj.oldState.val;
                          json = getState('mqtt.0.OpenInverterGateway').val;
                          setState('0_userdata.0.Growatt.InverterStatus' /* InverterStatus */, getAttr(json, 'InverterStatus'), true);
                          setState('0_userdata.0.Growatt.InputPower' /* InputPower */, getAttr(json, 'InputPower'), true);
                          setState('0_userdata.0.Growatt.PV1InputPower' /* PV1InputPower */, getAttr(json, 'PV1InputPower'), true);
                          setState('0_userdata.0.Growatt.PV2InputPower' /* PV2InputPower */, getAttr(json, 'PV2InputPower'), true);
                          setState('0_userdata.0.Growatt.PV1EnergyToday' /* PV1EnergyToday */, getAttr(json, 'PV1EnergyToday'), true);
                          setState('0_userdata.0.Growatt.PV2EnergyToday' /* PV2EnergyToday */, getAttr(json, 'PV2EnergyToday'), true);
                          setState('0_userdata.0.Growatt.PVEnergyTotal' /* PVEnergyTotal */, getAttr(json, 'PVEnergyTotal'), true);
                          setState('0_userdata.0.Growatt.DischargePower' /* DischargePower */, getAttr(json, 'DischargePower'), true);
                          setState('0_userdata.0.Growatt.ChargePower' /* ChargePower */, getAttr(json, 'ChargePower'), true);
                          setState('0_userdata.0.Growatt.BatteryVoltage' /* BatteryVoltage */, getAttr(json, 'BatteryVoltage'), true);
                          setState('0_userdata.0.Growatt.BatteryTemperature' /* BatteryTemperature */, getAttr(json, 'BatteryTemperature'), true);
                          setState('0_userdata.0.Growatt.BatteryState' /* BatteryState */, getAttr(json, 'BatteryState'), true);
                          setState('0_userdata.0.Growatt.SOC' /* SOC */, getAttr(json, 'SOC'), true);
                          setState('0_userdata.0.Growatt.ChargeEnergyToday' /* ChargeEnergyToday */, getAttr(json, 'ChargeEnergyToday'), true);
                          setState('0_userdata.0.Growatt.OutputPower' /* OutputPower */, getAttr(json, 'OutputPower'), true);
                          setState('0_userdata.0.Growatt.InverterTemperature' /* InverterTemperature */, getAttr(json, 'InverterTemperature'), true);
                        });
                        
                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @2hot4you last edited by Homoran

                          @2hot4you sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

                          setState('0_userdata.0.Growatt.PV1EnergyToday

                          wenn das Zeile 9 ist, wird der DP angemeckert.

                          @2hot4you sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

                          anbei der Code vom Blockly.

                          und wo ist

                          @homoran sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

                          zeig doch mal dein Blockly

                          2 1 Reply Last reply Reply Quote 0
                          • 2
                            2hot4you @Homoran last edited by

                            @homoran
                            hier ist mein Blockly. Datenpunkt ist da

                            blockly.png

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @2hot4you last edited by Homoran

                              @2hot4you sagte in benötige Hilfe beim Json in Datenpunkte umwandeln:

                              Datenpunkt ist da

                              und wie sieht das json aus?
                              ist da auch der Wert da?

                              es geht auch nicht um den markierten Block!

                              2 1 Reply Last reply Reply Quote 0
                              • 2
                                2hot4you @Homoran last edited by

                                @homoran

                                so sieht das json aus

                                {
                                  "InverterStatus": 5,
                                  "InputPower": 0,
                                  "PV1Voltage": 110,
                                  "PV1InputCurrent": 0,
                                  "PV1InputPower": 0,
                                  "PV2Voltage": 165.6,
                                  "PV2InputCurrent": 0,
                                  "PV2InputPower": 0,
                                  "OutputPower": 0,
                                  "GridFrequency": 49.98,
                                  "L1ThreePhaseGridVoltage": 409.4,
                                  "L1ThreePhaseGridOutputCurrent": 0.3,
                                  "L1ThreePhaseGridOutputPower": 314.1,
                                  "L2ThreePhaseGridVoltage": 404.3,
                                  "L2ThreePhaseGridOutputCurrent": 0.3,
                                  "L2ThreePhaseGridOutputPower": 0,
                                  "L3ThreePhaseGridVoltage": 412.1,
                                  "L3ThreePhaseGridOutputCurrent": 0.3,
                                  "L3ThreePhaseGridOutputPower": 0,
                                  "TodayGenerateEnergy": 49.6,
                                  "TotalGenerateEnergy": 912,
                                  "TWorkTimeTotal": 1918900,
                                  "PV1EnergyToday": 21.6,
                                  "PV1EnergyTotal": 477.8,
                                  "PV2EnergyToday": 32.3,
                                  "PV2EnergyTotal": 509.2,
                                  "PVEnergyTotal": 987,
                                  "InverterTemperature": 31,
                                  "TemperatureInsideIPM": 28.3,
                                  "BoostTemperature": 27.4,
                                  "DischargePower": 0,
                                  "ChargePower": 0.1,
                                  "BatteryVoltage": 212.8,
                                  "SOC": 85,
                                  "ACPowerToUser": 550,
                                  "ACPowerToUserTotal": 550,
                                  "ACPowerToGrid": 0,
                                  "ACPowerToGridTotal": 0,
                                  "INVPowerToLocalLoad": 550,
                                  "INVPowerToLocalLoadTotal": 550,
                                  "BatteryTemperature": 211,
                                  "BatteryState": 5,
                                  "EnergyToUserToday": 0.6,
                                  "EnergyToUserTotal": 102.6,
                                  "EnergyToGridToday": 40.7,
                                  "EnergyToGridTotal": 619.7,
                                  "DischargeEnergyToday": 4.3,
                                  "DischargeEnergyTotal": 147.1,
                                  "ChargeEnergyToday": 5.5,
                                  "ChargeEnergyTotal": 151.1,
                                  "LocalLoadEnergyToday": 12.9,
                                  "LocalLoadEnergyTotal": 472.3,
                                  "ACChargeEnergyToday": 0.1,
                                  "ACChargeEnergyTotal": 15.2,
                                  "Mac": "D4:D4:DA:CC:8F:98",
                                  "Cnt": 1914
                                }
                                
                                Codierknecht 1 Reply Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @2hot4you last edited by

                                  @2hot4you
                                  Also ich würde das wie von @MartinP vorgeschlagen mit Aliasen lösen - komplett ohne Script.

                                  2 1 Reply Last reply Reply Quote 0
                                  • 2
                                    2hot4you @Codierknecht last edited by

                                    @codierknecht

                                    ich habe umgestellt auf Alias 😉

                                    I 1 Reply Last reply Reply Quote 0
                                    • I
                                      iobroker2001 @2hot4you last edited by

                                      Eine Frage hierzu in die Runde:
                                      Ich lese ebenfalls per Alias die MQTT-Daten des Growatt aus.
                                      Abends, wenn der Inverter seinen Betrieb einstellt, fällt der JSON-Datenpunkt aber fast komplett aus.
                                      In der JSON-Struktur ist dann nur noch der Inverterstatus zu sehen.
                                      Dadurch werden die Aliaswerte alle auf NaN gesetzt.
                                      Ist das bei Euch auch so?
                                      Dann müsste ich doch mit einem Blockly die Werte erst zwischenspeichern.
                                      Danke!

                                      I 1 Reply Last reply Reply Quote 0
                                      • I
                                        iobroker2001 @iobroker2001 last edited by

                                        Ich habe das erst einmal so gelöst:
                                        2 Datenpunkte manuell angelegt (Leistung und EnergieHeute), die dann beschrieben werden, wenn der Inverter läuft:

                                        ksnip_20241029-090446.png

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        1.1k
                                        Online

                                        31.7k
                                        Users

                                        79.7k
                                        Topics

                                        1.3m
                                        Posts

                                        7
                                        18
                                        694
                                        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