Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. JSON mit unbekannter Anzahl an DP

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    13
    1
    117

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    561

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

JSON mit unbekannter Anzahl an DP

Geplant Angeheftet Gesperrt Verschoben Blockly
17 Beiträge 4 Kommentatoren 1.3k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • J JoergH

    Hi,

    ich möchte gerne einen JSON beliebiger Länge auswerten und die enthaltenen Datenpunkte automatisch anlegen, falls noch nicht vorhanden. Wie kann man das mit Blockly machen?
    Ich hänge da, da ich nicht weiss wie ich die Attributnamen auslesen kann...

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #2

    @joergh
    Schau mal hier. Mit Blockly wird das nichts.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    J 2 Antworten Letzte Antwort
    0
    • paul53P paul53

      @joergh
      Schau mal hier. Mit Blockly wird das nichts.

      J Offline
      J Offline
      JoergH
      schrieb am zuletzt editiert von
      #3

      @paul53 Achso. Schade. Dachte das ginge...Danke für die Info!

      1 Antwort Letzte Antwort
      0
      • J JoergH

        Hi,

        ich möchte gerne einen JSON beliebiger Länge auswerten und die enthaltenen Datenpunkte automatisch anlegen, falls noch nicht vorhanden. Wie kann man das mit Blockly machen?
        Ich hänge da, da ich nicht weiss wie ich die Attributnamen auslesen kann...

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #4

        @joergh Wenn Du NodeRed nutzt habe ich einen fertigen Flow.

        https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        J 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          @joergh Wenn Du NodeRed nutzt habe ich einen fertigen Flow.

          https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

          J Offline
          J Offline
          JoergH
          schrieb am zuletzt editiert von
          #5

          @mickym Danke, das ist nett, aber mit NodeRed habe ich noch nichts gemacht. Schlage mich dann mit Javascript rum ;-)

          mickymM 1 Antwort Letzte Antwort
          0
          • J JoergH

            @mickym Danke, das ist nett, aber mit NodeRed habe ich noch nichts gemacht. Schlage mich dann mit Javascript rum ;-)

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #6

            @joergh Na dann jedem das Seine. ;)

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @joergh
              Schau mal hier. Mit Blockly wird das nichts.

              J Offline
              J Offline
              JoergH
              schrieb am zuletzt editiert von
              #7

              @paul53 Hallo Paul, ich habe mir das nun versucht einzurichten und Deinen Code dazu genutzt:

              const idJSON = 'mqtt.0.espaltherma.ATTR';
              
              const path = '0_userdata.0.Altherma.'; // Pfad anpassen
              
               
              
              on(idJSON, function (dp) {
              
                  let obj = JSON.parse(dp.state.val);
              
                  Object.keys(obj).forEach(function(key) {
              
                      if(existsState(path + key)) setState(path + key, obj[key], true);
              
                      else createState(path + key, obj[key], {read: true, write: false, type: typeof obj[key], name: key});
              
                  });
              
              });
              
              

              Das JSON sieht folgendermaßen aus:

              [{"Aktuelle Betriebsart":"Heating","Thermostat EIN/AUS":"OFF","Wiederanlaufverzögerung":"OFF","Abtauung":"OFF","Betrieb / Störung":"Normal","Störcode":" 0","Außenlufttemp.":8.4,"O/U Wärmetauscher Temp.":14.8,"Ablassleitungstemp.":67.9,"Ansaugleitungstemperatur":21.9,"O/U Wärmetauscher Mitteltemp.":11,"Druck":10.6,"INV Primärstrom (A)":0,"Stromaufnahme INV-Verdichter (A)":0,"Spannung (V)":243,"Drehzahl Verdichter (U/Sek)":0,"Ventilator 1 (10 rpm)":0,"Frostschutz":"OFF","Sollwert Brauchwasser":50,"Sollwert Heizungsvorlauf":33.8,"Wasserflussschalter":"OFF","Bivalenter Betrieb":"OFF","3-Wege-Ventil (Ein: DHW_Aus: Raum)":"OFF","Heizstab Stufe 1":"OFF","Heizstab Stufe 2":"OFF","Auslass Wasser Wärmetauscher Temp. (R1T)":28.4,"Auslass Wasser BUH Temp. (R2T)":29.4,"R4T-Wasser Rücklauftemp. vor dem Plattenwärmetauscher":27.8,"R5T-Brauchwassertemperatur im Speicher":50.8,"RT Temp.":20,"Außen Umgebungs- oder Ext-Sensor":0,"Hochleistungs-DHW-Betrieb. EIN/AUS":"OFF","Raumheizbetrieb EIN/AUS":"ON","Notbetrieb aktiviert/nicht aktiviert":"OFF","Haupt-RT-Heizung":"OFF","Speicher vorheizen ein/aus":"OFF","Umwälzpumpenbetrieb":"OFF","Alarmausgabe":"OFF","Durchflussmenge (l/min)":46.2,"Wasserdruck":1.6,"Pumpengeschwindigkeit (0: max-100: Stopp)":24,"Boiler Betrieb Anforderung":"OFF","Boiler DHW Anforderung":"OFF","M5VIN":"4.95V","M5AmpIn":"99.375mA","M5BatV":"4.18V","M5BatCur":"0mA","M5BatPwr":"0mW","WifiRSSI":"-39dBm","FreeMem":"188420"}]
              

              Er legt mir aber nur den Datenpunkt 0 an und der enthält das komplette JSON ohne eckige Klammern...ich vermute, dass da was mit dem Format nicht korrekt ist?

              252e0309-6cb1-4eb1-b81f-0f96a28f4032-grafik.png

              paul53P 1 Antwort Letzte Antwort
              0
              • J JoergH

                @paul53 Hallo Paul, ich habe mir das nun versucht einzurichten und Deinen Code dazu genutzt:

                const idJSON = 'mqtt.0.espaltherma.ATTR';
                
                const path = '0_userdata.0.Altherma.'; // Pfad anpassen
                
                 
                
                on(idJSON, function (dp) {
                
                    let obj = JSON.parse(dp.state.val);
                
                    Object.keys(obj).forEach(function(key) {
                
                        if(existsState(path + key)) setState(path + key, obj[key], true);
                
                        else createState(path + key, obj[key], {read: true, write: false, type: typeof obj[key], name: key});
                
                    });
                
                });
                
                

                Das JSON sieht folgendermaßen aus:

                [{"Aktuelle Betriebsart":"Heating","Thermostat EIN/AUS":"OFF","Wiederanlaufverzögerung":"OFF","Abtauung":"OFF","Betrieb / Störung":"Normal","Störcode":" 0","Außenlufttemp.":8.4,"O/U Wärmetauscher Temp.":14.8,"Ablassleitungstemp.":67.9,"Ansaugleitungstemperatur":21.9,"O/U Wärmetauscher Mitteltemp.":11,"Druck":10.6,"INV Primärstrom (A)":0,"Stromaufnahme INV-Verdichter (A)":0,"Spannung (V)":243,"Drehzahl Verdichter (U/Sek)":0,"Ventilator 1 (10 rpm)":0,"Frostschutz":"OFF","Sollwert Brauchwasser":50,"Sollwert Heizungsvorlauf":33.8,"Wasserflussschalter":"OFF","Bivalenter Betrieb":"OFF","3-Wege-Ventil (Ein: DHW_Aus: Raum)":"OFF","Heizstab Stufe 1":"OFF","Heizstab Stufe 2":"OFF","Auslass Wasser Wärmetauscher Temp. (R1T)":28.4,"Auslass Wasser BUH Temp. (R2T)":29.4,"R4T-Wasser Rücklauftemp. vor dem Plattenwärmetauscher":27.8,"R5T-Brauchwassertemperatur im Speicher":50.8,"RT Temp.":20,"Außen Umgebungs- oder Ext-Sensor":0,"Hochleistungs-DHW-Betrieb. EIN/AUS":"OFF","Raumheizbetrieb EIN/AUS":"ON","Notbetrieb aktiviert/nicht aktiviert":"OFF","Haupt-RT-Heizung":"OFF","Speicher vorheizen ein/aus":"OFF","Umwälzpumpenbetrieb":"OFF","Alarmausgabe":"OFF","Durchflussmenge (l/min)":46.2,"Wasserdruck":1.6,"Pumpengeschwindigkeit (0: max-100: Stopp)":24,"Boiler Betrieb Anforderung":"OFF","Boiler DHW Anforderung":"OFF","M5VIN":"4.95V","M5AmpIn":"99.375mA","M5BatV":"4.18V","M5BatCur":"0mA","M5BatPwr":"0mW","WifiRSSI":"-39dBm","FreeMem":"188420"}]
                

                Er legt mir aber nur den Datenpunkt 0 an und der enthält das komplette JSON ohne eckige Klammern...ich vermute, dass da was mit dem Format nicht korrekt ist?

                252e0309-6cb1-4eb1-b81f-0f96a28f4032-grafik.png

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #8

                @joergh sagte: Format nicht korrekt ist?

                    let obj = JSON.parse(dp.state.val)[0];
                

                Die Attribute enthalten viele unzulässige Zeichen, die auch für eine ID schlecht sind.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                J 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @joergh sagte: Format nicht korrekt ist?

                      let obj = JSON.parse(dp.state.val)[0];
                  

                  Die Attribute enthalten viele unzulässige Zeichen, die auch für eine ID schlecht sind.

                  J Offline
                  J Offline
                  JoergH
                  schrieb am zuletzt editiert von
                  #9

                  @paul53 Aaah! Danke. Ist wohl noch in einem Array verpackt...jetzt klappt es. Super, vielen Dank!

                  J 1 Antwort Letzte Antwort
                  0
                  • J JoergH

                    @paul53 Aaah! Danke. Ist wohl noch in einem Array verpackt...jetzt klappt es. Super, vielen Dank!

                    J Offline
                    J Offline
                    JoergH
                    schrieb am zuletzt editiert von JoergH
                    #10

                    @paul53

                    Hallo Paul,

                    ich hätte noch einmal ein Thema mit der Routine. Und zwar habe ich nun einen mqtt JSON, welches u.a. einen array enthält. Das Script läuft zwar, aber er mault, dass ich ihm einen array an ein object übergeben würde und dass das in Zukunft nicht mehr laufen könnte.

                    Das JSON sieht so aus:

                    {"sniu":false,"serialNumber":"SMDBEM10201221","deviceID":12,"lastUpdate":1706889837119,"voltageV":53.628,"currentA":0.086,"powerW":4.612007999999999,"capacityP":67.0,"capacityAh":45.63075583333333,"ratedCapacityAh":68.0,"ratedVoltageV":51.2,"ratedChargeCurrentC":1.0588235294117647,"ratedDischargeCurrentC":1.2705882352941176,"storageName":"bank1","remainingTimeSign":0,"dcConnected":true,"available":true,"busName":"bus0","chargeControl":100,"dischargeControl":100,"chargePower":{"sniu":false,"serialNumber":"SMDBEM10201221","deviceID":12,"lastUpdate":1706889837129,"powerW":4.612007999999999,"voltageV":53.628,"currentA":0.086,"ratedPowerW":3686,"powerName":"bank1-chargingPower","energyWh":1696104.19315948,"powerType":"stCharge","available":true},"dischargePower":{"sniu":false,"serialNumber":"SMDBEM10201221","deviceID":12,"lastUpdate":1706889837129,"powerW":0.0,"voltageV":53.628,"currentA":0.0,"ratedPowerW":4423,"powerName":"bank1-dischargingPower","energyWh":1657202.721438139,"powerType":"stDischarge","available":true},"alertMap":{},"updateProgress":null,"cellVoltageVArr":[3.349,3.351,3.352,3.356,3.351,3.353,3.351,3.351,3.35,3.352,3.356,3.345,3.363,3.339,3.363,3.346],"maxCellValue":3363,"maxCellNumber":14,"minCellValue":3339,"minCellNumber":13,"balansingStatus":142,"eventCount":0,"gyroX":null,"gyroY":null,"gyroZ":null,"temp0":36.61,"temp1":null,"temp2":null,"alignedCapacity":-1837154049,"chargeCounter":75219,"dischargeCounter":74942,"remChargeTime":0,"remDischargeTime":0,"maxChargeCurrent":142849,"maxDischargeCurrent":-141185,"maxChargeCurrentDuration":36,"maxDischargeCurrentDuration":983,"maxCellDiff":null,"minCellDiffNum":null,"maxCellDiffNum":null,"maxCellDiffValue":null,"ioDataArr":[{"state":4,"pendingState":255},{"state":4,"pendingState":255},{"state":4,"pendingState":255}],"mainProtectionStatus":0,"mainRelayStatus":1,"warningReg":null,"warningCount":0,"errorReg":null,"errorCount":0,"controlLastUpdate":1706889837119}
                    

                    und die Warnung im Log dann so:

                    javascript.0
                    	2024-02-02 17:05:48.274	warn	at processImmediate (node:internal/timers:476:21)
                    javascript.0
                    	2024-02-02 17:05:48.274	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11229:62)
                    javascript.0
                    	2024-02-02 17:05:48.274	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
                    javascript.0
                    	2024-02-02 17:05:48.274	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1266:38)
                    javascript.0
                    	2024-02-02 17:05:48.274	warn	at Object.<anonymous> (script.js.Energy:12:26)
                    javascript.0
                    	2024-02-02 17:05:48.274	warn	at Array.forEach (<anonymous>)
                    javascript.0
                    	2024-02-02 17:05:48.273	warn	at script.js.Energy:13:41
                    javascript.0
                    	2024-02-02 17:05:48.273	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1740:20)
                    javascript.0
                    	2024-02-02 17:05:48.272	warn	You are assigning a array to the state "0_userdata.0.Battery10201221.ioDataArr" which expects a object. Please fix your code to use a object or change the state type to array. This warning might become an error in future versions.
                    

                    Was kann ich machen?

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • J JoergH

                      @paul53

                      Hallo Paul,

                      ich hätte noch einmal ein Thema mit der Routine. Und zwar habe ich nun einen mqtt JSON, welches u.a. einen array enthält. Das Script läuft zwar, aber er mault, dass ich ihm einen array an ein object übergeben würde und dass das in Zukunft nicht mehr laufen könnte.

                      Das JSON sieht so aus:

                      {"sniu":false,"serialNumber":"SMDBEM10201221","deviceID":12,"lastUpdate":1706889837119,"voltageV":53.628,"currentA":0.086,"powerW":4.612007999999999,"capacityP":67.0,"capacityAh":45.63075583333333,"ratedCapacityAh":68.0,"ratedVoltageV":51.2,"ratedChargeCurrentC":1.0588235294117647,"ratedDischargeCurrentC":1.2705882352941176,"storageName":"bank1","remainingTimeSign":0,"dcConnected":true,"available":true,"busName":"bus0","chargeControl":100,"dischargeControl":100,"chargePower":{"sniu":false,"serialNumber":"SMDBEM10201221","deviceID":12,"lastUpdate":1706889837129,"powerW":4.612007999999999,"voltageV":53.628,"currentA":0.086,"ratedPowerW":3686,"powerName":"bank1-chargingPower","energyWh":1696104.19315948,"powerType":"stCharge","available":true},"dischargePower":{"sniu":false,"serialNumber":"SMDBEM10201221","deviceID":12,"lastUpdate":1706889837129,"powerW":0.0,"voltageV":53.628,"currentA":0.0,"ratedPowerW":4423,"powerName":"bank1-dischargingPower","energyWh":1657202.721438139,"powerType":"stDischarge","available":true},"alertMap":{},"updateProgress":null,"cellVoltageVArr":[3.349,3.351,3.352,3.356,3.351,3.353,3.351,3.351,3.35,3.352,3.356,3.345,3.363,3.339,3.363,3.346],"maxCellValue":3363,"maxCellNumber":14,"minCellValue":3339,"minCellNumber":13,"balansingStatus":142,"eventCount":0,"gyroX":null,"gyroY":null,"gyroZ":null,"temp0":36.61,"temp1":null,"temp2":null,"alignedCapacity":-1837154049,"chargeCounter":75219,"dischargeCounter":74942,"remChargeTime":0,"remDischargeTime":0,"maxChargeCurrent":142849,"maxDischargeCurrent":-141185,"maxChargeCurrentDuration":36,"maxDischargeCurrentDuration":983,"maxCellDiff":null,"minCellDiffNum":null,"maxCellDiffNum":null,"maxCellDiffValue":null,"ioDataArr":[{"state":4,"pendingState":255},{"state":4,"pendingState":255},{"state":4,"pendingState":255}],"mainProtectionStatus":0,"mainRelayStatus":1,"warningReg":null,"warningCount":0,"errorReg":null,"errorCount":0,"controlLastUpdate":1706889837119}
                      

                      und die Warnung im Log dann so:

                      javascript.0
                      	2024-02-02 17:05:48.274	warn	at processImmediate (node:internal/timers:476:21)
                      javascript.0
                      	2024-02-02 17:05:48.274	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11229:62)
                      javascript.0
                      	2024-02-02 17:05:48.274	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
                      javascript.0
                      	2024-02-02 17:05:48.274	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1266:38)
                      javascript.0
                      	2024-02-02 17:05:48.274	warn	at Object.<anonymous> (script.js.Energy:12:26)
                      javascript.0
                      	2024-02-02 17:05:48.274	warn	at Array.forEach (<anonymous>)
                      javascript.0
                      	2024-02-02 17:05:48.273	warn	at script.js.Energy:13:41
                      javascript.0
                      	2024-02-02 17:05:48.273	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1740:20)
                      javascript.0
                      	2024-02-02 17:05:48.272	warn	You are assigning a array to the state "0_userdata.0.Battery10201221.ioDataArr" which expects a object. Please fix your code to use a object or change the state type to array. This warning might become an error in future versions.
                      

                      Was kann ich machen?

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #11

                      @joergh sagte: Was kann ich machen?

                      Ändere den Typ von "0_userdata.0.Battery10201221.ioDataArr" in "array".

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      J 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @joergh sagte: Was kann ich machen?

                        Ändere den Typ von "0_userdata.0.Battery10201221.ioDataArr" in "array".

                        J Offline
                        J Offline
                        JoergH
                        schrieb am zuletzt editiert von
                        #12

                        @paul53 Achso, einfach manuell?

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • J JoergH

                          @paul53 Achso, einfach manuell?

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #13

                          @joergh sagte: einfach manuell?

                          Ja, wie sonst?

                          or change the state type to array.
                          

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          J 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @joergh sagte: einfach manuell?

                            Ja, wie sonst?

                            or change the state type to array.
                            
                            J Offline
                            J Offline
                            JoergH
                            schrieb am zuletzt editiert von
                            #14

                            @paul53 Ich habe da zu kompliziert gedacht und vermutet man muss das beim Anlegen programmiertechnisch regeln. Hab sie nun einfach manuell angelegt und jetzt ist Ruhe.
                            Danke für den Tipp!

                            R 1 Antwort Letzte Antwort
                            0
                            • J JoergH

                              @paul53 Ich habe da zu kompliziert gedacht und vermutet man muss das beim Anlegen programmiertechnisch regeln. Hab sie nun einfach manuell angelegt und jetzt ist Ruhe.
                              Danke für den Tipp!

                              R Offline
                              R Offline
                              Ralf 8
                              schrieb am zuletzt editiert von
                              #15

                              Hallo,

                              vielen Dank für eure Beiträge. Leider komme ich mit meinem JSON trotzdem nicht zurecht,
                              da mittendrin ein Array liegt. Wenn ich den Skript oben ohne [0] laufen lasse, stehen alle Daten von params in einem neuen JSON.

                              Ich benötige eigentlich nur den Parameter total_act_power.

                              Mit Alias habe ich es auch versucht, aber

                              JSON.parse(val).params.[em:0]
                               JSON.parse(val).params.['em:0'] 
                               JSON.parse(val).params.'em:0'
                              

                              funktionieren nicht.

                              Aus diesem JSON möchte ich einen Datenpunkt für total_act_power erstellen:

                              {
                                "src": "shellypro3em-xyz",
                                "dst": "shellypro3em-xyz/events",
                                "method": "NotifyStatus",
                                "params": {
                                  "ts": 1718631165.1,
                                  "em:0": {
                                    "id": 0,
                                    "a_act_power": -153.9,
                                    "a_aprt_power": 174.1,
                                    "a_current": 0.751,
                                    "a_freq": 50,
                                    "a_pf": 0.89,
                                    "a_voltage": 231.6,
                                    "b_act_power": 43.1,
                                    "b_aprt_power": 70.7,
                                    "b_current": 0.305,
                                    "b_freq": 50,
                                    "b_pf": 0.61,
                                    "b_voltage": 231.5,
                                    "c_act_power": 41.1,
                                    "c_aprt_power": 81.9,
                                    "c_current": 0.354,
                                    "c_freq": 50,
                                    "c_pf": 0.51,
                                    "c_voltage": 231.4,
                                    "n_current": null,
                                    "total_act_power": -69.696,
                                    "total_aprt_power": 326.678,
                                    "total_current": 1.411
                                  }
                                }
                              }
                              
                              
                              paul53P 1 Antwort Letzte Antwort
                              0
                              • R Ralf 8

                                Hallo,

                                vielen Dank für eure Beiträge. Leider komme ich mit meinem JSON trotzdem nicht zurecht,
                                da mittendrin ein Array liegt. Wenn ich den Skript oben ohne [0] laufen lasse, stehen alle Daten von params in einem neuen JSON.

                                Ich benötige eigentlich nur den Parameter total_act_power.

                                Mit Alias habe ich es auch versucht, aber

                                JSON.parse(val).params.[em:0]
                                 JSON.parse(val).params.['em:0'] 
                                 JSON.parse(val).params.'em:0'
                                

                                funktionieren nicht.

                                Aus diesem JSON möchte ich einen Datenpunkt für total_act_power erstellen:

                                {
                                  "src": "shellypro3em-xyz",
                                  "dst": "shellypro3em-xyz/events",
                                  "method": "NotifyStatus",
                                  "params": {
                                    "ts": 1718631165.1,
                                    "em:0": {
                                      "id": 0,
                                      "a_act_power": -153.9,
                                      "a_aprt_power": 174.1,
                                      "a_current": 0.751,
                                      "a_freq": 50,
                                      "a_pf": 0.89,
                                      "a_voltage": 231.6,
                                      "b_act_power": 43.1,
                                      "b_aprt_power": 70.7,
                                      "b_current": 0.305,
                                      "b_freq": 50,
                                      "b_pf": 0.61,
                                      "b_voltage": 231.5,
                                      "c_act_power": 41.1,
                                      "c_aprt_power": 81.9,
                                      "c_current": 0.354,
                                      "c_freq": 50,
                                      "c_pf": 0.51,
                                      "c_voltage": 231.4,
                                      "n_current": null,
                                      "total_act_power": -69.696,
                                      "total_aprt_power": 326.678,
                                      "total_current": 1.411
                                    }
                                  }
                                }
                                
                                
                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #16

                                @ralf-8 sagte: Mit Alias habe ich es auch versucht

                                JSON.parse(val).params['em:0'].total_act_power
                                

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                R 1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @ralf-8 sagte: Mit Alias habe ich es auch versucht

                                  JSON.parse(val).params['em:0'].total_act_power
                                  
                                  R Offline
                                  R Offline
                                  Ralf 8
                                  schrieb am zuletzt editiert von
                                  #17

                                  @paul53 sagte in JSON mit unbekannter Anzahl an DP:

                                  JSON.parse(val).params['em:0'].total_act_power

                                  Herzlichen Dank. Super. Jetzt geht es.
                                  Dass zwischen params und ['em:0'] kein Punkt benötigt wird, muss man erstmal herausfinden.

                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  848

                                  Online

                                  32.5k

                                  Benutzer

                                  81.8k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe