Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. JSON mit unbekannter Anzahl an DP

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

JSON mit unbekannter Anzahl an DP

Scheduled Pinned Locked Moved Blockly
17 Posts 4 Posters 1.1k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    JoergH
    wrote on last edited by
    #1

    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 mickymM 2 Replies Last reply
    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...

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #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 Replies Last reply
      0
      • paul53P paul53

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

        J Offline
        J Offline
        JoergH
        wrote on last edited by
        #3

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

        1 Reply Last reply
        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 Online
          mickymM Online
          mickym
          Most Active
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #5

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

            mickymM 1 Reply Last reply
            0
            • J JoergH

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

              mickymM Online
              mickymM Online
              mickym
              Most Active
              wrote on last edited by
              #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 Reply Last reply
              0
              • paul53P paul53

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

                J Offline
                J Offline
                JoergH
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by 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 Reply Last reply
                  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
                    wrote on last edited by
                    #9

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

                    J 1 Reply Last reply
                    0
                    • J JoergH

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

                      J Offline
                      J Offline
                      JoergH
                      wrote on last edited by 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 Reply Last reply
                      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
                        wrote on last edited by
                        #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 Reply Last reply
                        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
                          wrote on last edited by
                          #12

                          @paul53 Achso, einfach manuell?

                          paul53P 1 Reply Last reply
                          0
                          • J JoergH

                            @paul53 Achso, einfach manuell?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #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 Reply Last reply
                            0
                            • paul53P paul53

                              @joergh sagte: einfach manuell?

                              Ja, wie sonst?

                              or change the state type to array.
                              
                              J Offline
                              J Offline
                              JoergH
                              wrote on last edited by
                              #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 Reply Last reply
                              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
                                wrote on last edited by
                                #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 Reply Last reply
                                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
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  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
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    535

                                    Online

                                    32.4k

                                    Users

                                    81.4k

                                    Topics

                                    1.3m

                                    Posts
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Recent
                                    • Tags
                                    • Unread 0
                                    • Categories
                                    • Unreplied
                                    • Popular
                                    • GitHub
                                    • Docu
                                    • Hilfe