Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. JSON Objekte in Liste

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

JSON Objekte in Liste

Scheduled Pinned Locked Moved Off Topic
94 Posts 3 Posters 8.3k Views 2 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.
  • L legro

    @mickym

    Jetzt wollte ich's wissen! Um das Ganze besser zu verstehen, habe ich die Objektnamen Tarif1, Tarif2 weggelassen ..

    {
      "Tarife": [
        {
          {
            "Name" : "Tarif1"
            "Energiepreis": 0.3963,
            "Intervall": {
              "Startwert": 0,
              "Endwert": 486303
            },
            "Zeitraum": {
              "Start": "2023-01-01",
              "Ende": "2023-06-30"
            }
          }
        },
        {
          {
            "Name" : "Tarif2"
            "Energiepreis": 0.3328,
            "Intervall": {
              "Startwert": 486303,
              "Endwert": null
            },
            "Zeitraum": {
              "Start": "2023-07-01",
              "Ende": "2024-06-30"
            }
          }
        }
      ]
    }
    

    .. und folgendes kodiert ..

    544197fd-7609-4093-a030-66ec725e8b4c-image.png

    Dies funktioniert nicht mehr. Ich erhalte, egal auf was ich selektiere, stets null.

    17:13:13.763	info	javascript.0 (2182) Start javascript script.js.TestSkripte.JSON_Test
    17:13:13.771	info	javascript.0 (2182) script.js.TestSkripte.JSON_Test: null
    17:13:13.771	info	javascript.0 (2182) script.js.TestSkripte.JSON_Test: null
    17:13:13.771	info	javascript.0 (2182) script.js.TestSkripte.JSON_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
    

    Welchen Denkfehler habe ich nun schon wieder gemacht?

    mickymM Offline
    mickymM Offline
    mickym
    Most Active
    wrote on last edited by
    #12

    @legro sagte in JSON Objekte in Liste:

    etzt wollte ich's wissen! Um das Ganze besser zu verstehen, habe ich die Objektnamen Tarif1, Tarif2 weggelassen .

    Du darfst das nicht einfach weglassen. Jedes Objekt wird durch eine Eigenschaft festgelegt und die hast Du damit weggenommen.

    Ein JSON Objekt wird durch geschweifte Klammern definiert, dabei besteht es aus verschiedenen Eigenschaften in Anführungszeichen und einem Wert, der durch einen Doppelpunkt getrennt ist.

    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

      @legro sagte: Tut es eben nicht.

      Du musst das (ungültige) Objekt (JSON) korrigieren: Lösche Zeilen 3, 15, 17 und 30. Außerdem fehlt jeweils ein Komma hinter "Tarif1" und "Tarif2".

      L Online
      L Online
      legro
      wrote on last edited by legro
      #13

      @paul53 @mickym

      Ich habe verstanden worin mein Fehler bestand. Die {..} um die Listenobjekte müssen weg, wenn diese Objekte keinen Namen (mehr) besitzen.

      Aber es funktioniert noch immer nicht. Egal auf was ich selektiere, ich erhalte ich in den nachfolgenden Beispielen stets null.
      2ea22af8-e48b-4a29-8e3e-34a63c88fe3b-image.png

      Ebenso erhalte ich die Liste nicht mehr ausgegeben, wenn ich ..
      58b5410c-0bff-48cd-8dfb-9639b66d138f-image.png

      Was mache ich nun schon wieder falsch?

      Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

      paul53P mickymM 2 Replies Last reply
      0
      • L legro

        @paul53 @mickym

        Ich habe verstanden worin mein Fehler bestand. Die {..} um die Listenobjekte müssen weg, wenn diese Objekte keinen Namen (mehr) besitzen.

        Aber es funktioniert noch immer nicht. Egal auf was ich selektiere, ich erhalte ich in den nachfolgenden Beispielen stets null.
        2ea22af8-e48b-4a29-8e3e-34a63c88fe3b-image.png

        Ebenso erhalte ich die Liste nicht mehr ausgegeben, wenn ich ..
        58b5410c-0bff-48cd-8dfb-9639b66d138f-image.png

        Was mache ich nun schon wieder falsch?

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #14

        @legro sagte: schon wieder falsch?

        Zeig mal das JSON.

        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

        L 1 Reply Last reply
        0
        • paul53P paul53

          @legro sagte: schon wieder falsch?

          Zeig mal das JSON.

          L Online
          L Online
          legro
          wrote on last edited by legro
          #15

          @paul53

          Es ist (hoffentlich) identisch mit dem von dir vorgeschlagenen JSON.

          {
            "Tarife": [
                {
                  "Name" : "Tarif1"
                  "Energiepreis": 0.3963,
                  "Intervall": {
                    "Startwert": 0,
                    "Endwert": 486303
                  },
                  "Zeitraum": {
                    "Start": "2023-01-01",
                    "Ende": "2023-06-30"
                  }
              },
                {
                  "Name" : "Tarif2"
                  "Energiepreis": 0.3328,
                  "Intervall": {
                    "Startwert": 486303,
                    "Endwert": null
                  },
                  "Zeitraum": {
                    "Start": "2023-07-01",
                    "Ende": "2024-06-30"
                  }
                }
            ]
          }
          

          Ich habe einen Verdacht ..

          Damit die Selektion via "." anstelle von [Index] funktioniert, müssen die Listenobjekte benannt sein.

          Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

          paul53P 1 Reply Last reply
          0
          • L legro

            @paul53

            Es ist (hoffentlich) identisch mit dem von dir vorgeschlagenen JSON.

            {
              "Tarife": [
                  {
                    "Name" : "Tarif1"
                    "Energiepreis": 0.3963,
                    "Intervall": {
                      "Startwert": 0,
                      "Endwert": 486303
                    },
                    "Zeitraum": {
                      "Start": "2023-01-01",
                      "Ende": "2023-06-30"
                    }
                },
                  {
                    "Name" : "Tarif2"
                    "Energiepreis": 0.3328,
                    "Intervall": {
                      "Startwert": 486303,
                      "Endwert": null
                    },
                    "Zeitraum": {
                      "Start": "2023-07-01",
                      "Ende": "2024-06-30"
                    }
                  }
              ]
            }
            

            Ich habe einen Verdacht ..

            Damit die Selektion via "." anstelle von [Index] funktioniert, müssen die Listenobjekte benannt sein.

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by paul53
            #16

            @legro sagte: identisch mit dem von dir vorgeschlagenen JSON.

            @paul53 sagte in JSON Objekte in Liste:

            Außerdem fehlt jeweils ein Komma hinter "Tarif1" und "Tarif2".

            Zeilen 4, 16.

            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

            1 Reply Last reply
            1
            • mickymM Offline
              mickymM Offline
              mickym
              Most Active
              wrote on last edited by
              #17

              Hier mal die Definitionen, die Du verinnerlichen musst:

              =======================================================================
              Also ein ARRAY beginnt IMMER mit einer ECKIGEN Klammer und schließt mit einer ECKIGEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt.

              =======================================================================

              Also ein OBJEKT beginnt IMMER mit einer GESCHWEIFTEN Klammer und schließt mit einer GESCHWEIFTEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt. Ein Element besteht immer aus einer Eigenschaft in Anführungszeichen und dann ein Doppelpunkt und dann dem Wert der Eigenschaft. So wie Du es zuerst gemacht hast.

              =======================================================================

              Und wie Du dann üben kannst - kannst an diesem Mammut Thread sehen. ;)

              https://forum.iobroker.net/post/905403

              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.

              L 1 Reply Last reply
              0
              • L legro

                @paul53 @mickym

                Ich habe verstanden worin mein Fehler bestand. Die {..} um die Listenobjekte müssen weg, wenn diese Objekte keinen Namen (mehr) besitzen.

                Aber es funktioniert noch immer nicht. Egal auf was ich selektiere, ich erhalte ich in den nachfolgenden Beispielen stets null.
                2ea22af8-e48b-4a29-8e3e-34a63c88fe3b-image.png

                Ebenso erhalte ich die Liste nicht mehr ausgegeben, wenn ich ..
                58b5410c-0bff-48cd-8dfb-9639b66d138f-image.png

                Was mache ich nun schon wieder falsch?

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                wrote on last edited by mickym
                #18

                @legro Und hier hängt es halt davon ab, ob Du mit Listen arbeiten willst oder nicht. Ich habe Dir ja den direkten Pfad gezeigt, weil ich den Umweg über Listen zu umständlich fand.

                Ich empfehle Dir grundsätzlich so ein Tool wie: https://jsonformatter.org/ zu verwenden - da siehst Du schon auf den ersten Blick dass Du Dich verheddert hast. ;)

                d844040d-3f89-47d2-92e1-592601ddd0e9-image.png

                was gefehlt hat, sind die beiden Kommas. ;) Habe ich im Screenshot markiert.

                621f8546-f882-43b4-8755-29224d302263-image.png

                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
                1
                • mickymM mickym

                  Hier mal die Definitionen, die Du verinnerlichen musst:

                  =======================================================================
                  Also ein ARRAY beginnt IMMER mit einer ECKIGEN Klammer und schließt mit einer ECKIGEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt.

                  =======================================================================

                  Also ein OBJEKT beginnt IMMER mit einer GESCHWEIFTEN Klammer und schließt mit einer GESCHWEIFTEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt. Ein Element besteht immer aus einer Eigenschaft in Anführungszeichen und dann ein Doppelpunkt und dann dem Wert der Eigenschaft. So wie Du es zuerst gemacht hast.

                  =======================================================================

                  Und wie Du dann üben kannst - kannst an diesem Mammut Thread sehen. ;)

                  https://forum.iobroker.net/post/905403

                  L Online
                  L Online
                  legro
                  wrote on last edited by legro
                  #19

                  @mickym @paul53

                  Es funktioniert. Es lag natürlich an den fehlenden Kommas.

                  VIELEN DANK FÜR EURE GEDULD UND GROßARTIGE HILFE

                  Ich versuche einmal eine Zusammenfassung ..

                  In Blockly funktioniert die in ARRAYs übliche Syntax zum Selektieren auf die einzelnen Elemente nicht mittels der Angabe [Index], sondern ebenfalls über "."

                  In den Anfängen hatte ich kodiert ..

                  Tarife[1].Name
                  Tarife[0].Intervall.Endwert
                  ..

                  Auf die Idee, dass hier, der Index zwischen zwei Punkten einzuschließen, es tut, bin ich nicht gekommen.

                  Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                  L 1 Reply Last reply
                  0
                  • L legro

                    @mickym @paul53

                    Es funktioniert. Es lag natürlich an den fehlenden Kommas.

                    VIELEN DANK FÜR EURE GEDULD UND GROßARTIGE HILFE

                    Ich versuche einmal eine Zusammenfassung ..

                    In Blockly funktioniert die in ARRAYs übliche Syntax zum Selektieren auf die einzelnen Elemente nicht mittels der Angabe [Index], sondern ebenfalls über "."

                    In den Anfängen hatte ich kodiert ..

                    Tarife[1].Name
                    Tarife[0].Intervall.Endwert
                    ..

                    Auf die Idee, dass hier, der Index zwischen zwei Punkten einzuschließen, es tut, bin ich nicht gekommen.

                    L Online
                    L Online
                    legro
                    wrote on last edited by legro
                    #20

                    Hat sich erledigt.

                    Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                    mickymM 1 Reply Last reply
                    0
                    • L legro

                      Hat sich erledigt.

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      wrote on last edited by mickym
                      #21

                      @legro Ja das kannst Du auch nicht. Insbesondere nicht mit Blockly alleine, sondern wenn Du JSONATA verwendest - das ist eine geniale Bibliothek. ;)

                      https://docs.jsonata.org/overview

                      78a77db7-6d18-45d7-8562-18a30e99f02d-image.png

                      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.

                      L 1 Reply Last reply
                      0
                      • mickymM mickym

                        @legro Ja das kannst Du auch nicht. Insbesondere nicht mit Blockly alleine, sondern wenn Du JSONATA verwendest - das ist eine geniale Bibliothek. ;)

                        https://docs.jsonata.org/overview

                        78a77db7-6d18-45d7-8562-18a30e99f02d-image.png

                        L Online
                        L Online
                        legro
                        wrote on last edited by legro
                        #22

                        @mickym

                        Zum Formatieren von JSON-Ausdrücken nutze ich Visual Studio Code.

                        Wie kann man JSONata in ioBroker verwenden?

                        Unter Konvertierung habe ich dazu in Blockly den Baustein JSON Ausdruck .. gefunden. Ich probiere das mal aus.

                        Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                        mickymM 1 Reply Last reply
                        0
                        • L legro

                          @mickym

                          Zum Formatieren von JSON-Ausdrücken nutze ich Visual Studio Code.

                          Wie kann man JSONata in ioBroker verwenden?

                          Unter Konvertierung habe ich dazu in Blockly den Baustein JSON Ausdruck .. gefunden. Ich probiere das mal aus.

                          mickymM Offline
                          mickymM Offline
                          mickym
                          Most Active
                          wrote on last edited by mickym
                          #23

                          @legro ich hab dir doch einen Screenshot gepostet mit einer Lösung und JSONATA. Zum Üben kannst Du übrigens auch das JSONATA try Fenster verwenden. Links die Eingangsdaten, rechts oben Dein Code, rechts unten das Ergebnis. Das ganze kann man auch abspeichern.

                          Schau mal : https://try.jsonata.org/8DLapvppx

                          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.

                          L 1 Reply Last reply
                          1
                          • mickymM mickym

                            @legro ich hab dir doch einen Screenshot gepostet mit einer Lösung und JSONATA. Zum Üben kannst Du übrigens auch das JSONATA try Fenster verwenden. Links die Eingangsdaten, rechts oben Dein Code, rechts unten das Ergebnis. Das ganze kann man auch abspeichern.

                            Schau mal : https://try.jsonata.org/8DLapvppx

                            L Online
                            L Online
                            legro
                            wrote on last edited by legro
                            #24

                            @mickym

                            Ich bin doch schon fleißig am Üben.:slightly_smiling_face:

                            Mein erstes Ziel ..

                            011ff32a-3533-4721-b862-6ef5362bd926-image.png

                            .. habe ich schon erreicht.

                            Der JSONata-Block verhält sich ziemlich seltsam. Man kann ihn nicht anstelle von "Ergebnis" in der Summenbildung verwenden.

                            Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                            mickymM 1 Reply Last reply
                            0
                            • L legro

                              @mickym

                              Ich bin doch schon fleißig am Üben.:slightly_smiling_face:

                              Mein erstes Ziel ..

                              011ff32a-3533-4721-b862-6ef5362bd926-image.png

                              .. habe ich schon erreicht.

                              Der JSONata-Block verhält sich ziemlich seltsam. Man kann ihn nicht anstelle von "Ergebnis" in der Summenbildung verwenden.

                              mickymM Offline
                              mickymM Offline
                              mickym
                              Most Active
                              wrote on last edited by
                              #25

                              @legro Wenn Du JSONATA verwendest - dann brauchst Du alles andere nicht - ich habe Dir doch den Link geschickt. Wenn Du die Doku anschaust, dann referenzierst Du mit $ das aktuelle Objekt - ausserdem ist es geschickter mit JSONATA zu rechnen und lieber das Ergebnis als Liste ausgeben zu lassen.

                              Ich habe Dir doch unten den Link geschickt - da solltest Du doch das try Fenster mit Deinem Objekt bekommen haben. Um für jeden Tarif das Produkt von Preis und Startwert zu bekommen - machst Du das erst mal in JSONATA. Wenn Du Gesamtsumme haben willst geht das noch einfacher.

                              Der Link sollte Dir doch folgendes zeigen. ;)

                              f8562220-bd8c-4b4c-b499-9907f111ada7-image.png

                              Um nun die Produkte der einzelnen Tarife zu bilden:

                              9e446702-67b6-4d04-8701-405c64d9cee3-image.png

                              Du musst halt bissi üben, wenn Du Dich mit JSONATA beschäftigen willst.

                              Wie Du siehst wird nun für jeden Tarif das Produkt gebildet und in einem Array gespeichert. Das Ganze kannst Du dann auch noch aufsummieren.

                              c7c04071-cb11-4466-8bcd-b0bcedddb7f7-image.png

                              Wenn Du das dann in JSONATA Fenster alles gemacht hast - dann referenzierst Du im Blockly das Objekt auf der linken Seite einfach mit $, wie in dem Code rechts oben.

                              f2596f67-0947-439b-8a4d-725ea33268e7-image.png

                              Hier zum Import:

                              <xml xmlns="https://developers.google.com/blockly/xml">
                               <variables>
                                 <variable id="NWR;`_N@3a:sTiBKQkne">Objekt</variable>
                               </variables>
                               <block type="variables_set" id="M@F*zUMa;{#yJo2.2goG" x="-1137" y="-337">
                                 <field name="VAR" id="NWR;`_N@3a:sTiBKQkne">Objekt</field>
                                 <value name="VALUE">
                                   <block type="convert_json2object" id="wV#~g_#qRM}fhgD[;waT">
                                     <value name="VALUE">
                                       <block type="text" id="7@h4[@Y-M.M.tsLuCU56">
                                         <field name="TEXT">{   "Tarife": [     {       "Tarif1": {         "Energiepreis": 0.3963,         "Intervall": {           "Startwert": 0,           "Endwert": 486303         },         "Zeitraum": {           "Start": "2023-01-01",           "Ende": "2023-06-30"         }       }     },     {       "Tarif2": {         "Energiepreis": 0.3328,         "Intervall": {           "Startwert": 486303,           "Endwert": null         },         "Zeitraum": {           "Start": "2023-07-01",           "Ende": "2024-06-30"         }       }     }   ] }</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="debug" id="9S+u#Vzo/zuptK|}o,?9">
                                     <field name="Severity">log</field>
                                     <value name="TEXT">
                                       <shadow type="text" id="COg%Nwdd92sEj=QP[Lt)">
                                         <field name="TEXT">test</field>
                                       </shadow>
                                       <block type="variables_get" id="N=A4,QQsE8/8~[BL])Xc">
                                         <field name="VAR" id="NWR;`_N@3a:sTiBKQkne">Objekt</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="debug" id="^5#in-UU}%!K~KPOKHz_">
                                         <field name="Severity">log</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="-,TGC$b5|aHgxT-/9J]`">
                                             <field name="TEXT">test</field>
                                           </shadow>
                                           <block type="convert_jsonata" id="lJ3pgV,d!Gi]8s,TMKUf">
                                             <value name="EXPRESSION">
                                               <shadow type="text" id="$?E[/Hc*GGc|PsLH./zl">
                                                 <field name="TEXT">$.Tarife.*.(Energiepreis * Intervall.Startwert / 1000) ~&gt; $sum()</field>
                                               </shadow>
                                             </value>
                                             <value name="TARGET">
                                               <block type="variables_get" id="$EtNHY[c50V=?^FK.SM-">
                                                 <field name="VAR" id="NWR;`_N@3a:sTiBKQkne">Objekt</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                              </xml>
                              

                              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.

                              L 1 Reply Last reply
                              1
                              • mickymM mickym

                                @legro Wenn Du JSONATA verwendest - dann brauchst Du alles andere nicht - ich habe Dir doch den Link geschickt. Wenn Du die Doku anschaust, dann referenzierst Du mit $ das aktuelle Objekt - ausserdem ist es geschickter mit JSONATA zu rechnen und lieber das Ergebnis als Liste ausgeben zu lassen.

                                Ich habe Dir doch unten den Link geschickt - da solltest Du doch das try Fenster mit Deinem Objekt bekommen haben. Um für jeden Tarif das Produkt von Preis und Startwert zu bekommen - machst Du das erst mal in JSONATA. Wenn Du Gesamtsumme haben willst geht das noch einfacher.

                                Der Link sollte Dir doch folgendes zeigen. ;)

                                f8562220-bd8c-4b4c-b499-9907f111ada7-image.png

                                Um nun die Produkte der einzelnen Tarife zu bilden:

                                9e446702-67b6-4d04-8701-405c64d9cee3-image.png

                                Du musst halt bissi üben, wenn Du Dich mit JSONATA beschäftigen willst.

                                Wie Du siehst wird nun für jeden Tarif das Produkt gebildet und in einem Array gespeichert. Das Ganze kannst Du dann auch noch aufsummieren.

                                c7c04071-cb11-4466-8bcd-b0bcedddb7f7-image.png

                                Wenn Du das dann in JSONATA Fenster alles gemacht hast - dann referenzierst Du im Blockly das Objekt auf der linken Seite einfach mit $, wie in dem Code rechts oben.

                                f2596f67-0947-439b-8a4d-725ea33268e7-image.png

                                Hier zum Import:

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                 <variables>
                                   <variable id="NWR;`_N@3a:sTiBKQkne">Objekt</variable>
                                 </variables>
                                 <block type="variables_set" id="M@F*zUMa;{#yJo2.2goG" x="-1137" y="-337">
                                   <field name="VAR" id="NWR;`_N@3a:sTiBKQkne">Objekt</field>
                                   <value name="VALUE">
                                     <block type="convert_json2object" id="wV#~g_#qRM}fhgD[;waT">
                                       <value name="VALUE">
                                         <block type="text" id="7@h4[@Y-M.M.tsLuCU56">
                                           <field name="TEXT">{   "Tarife": [     {       "Tarif1": {         "Energiepreis": 0.3963,         "Intervall": {           "Startwert": 0,           "Endwert": 486303         },         "Zeitraum": {           "Start": "2023-01-01",           "Ende": "2023-06-30"         }       }     },     {       "Tarif2": {         "Energiepreis": 0.3328,         "Intervall": {           "Startwert": 486303,           "Endwert": null         },         "Zeitraum": {           "Start": "2023-07-01",           "Ende": "2024-06-30"         }       }     }   ] }</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="9S+u#Vzo/zuptK|}o,?9">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text" id="COg%Nwdd92sEj=QP[Lt)">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="variables_get" id="N=A4,QQsE8/8~[BL])Xc">
                                           <field name="VAR" id="NWR;`_N@3a:sTiBKQkne">Objekt</field>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="debug" id="^5#in-UU}%!K~KPOKHz_">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="-,TGC$b5|aHgxT-/9J]`">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="convert_jsonata" id="lJ3pgV,d!Gi]8s,TMKUf">
                                               <value name="EXPRESSION">
                                                 <shadow type="text" id="$?E[/Hc*GGc|PsLH./zl">
                                                   <field name="TEXT">$.Tarife.*.(Energiepreis * Intervall.Startwert / 1000) ~&gt; $sum()</field>
                                                 </shadow>
                                               </value>
                                               <value name="TARGET">
                                                 <block type="variables_get" id="$EtNHY[c50V=?^FK.SM-">
                                                   <field name="VAR" id="NWR;`_N@3a:sTiBKQkne">Objekt</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                                </xml>
                                

                                L Online
                                L Online
                                legro
                                wrote on last edited by legro
                                #26

                                @mickym

                                Vielen herzlichen Dank für deine freundliche und äußerst hilfreiche Unterstützung. Für mich ist es jedoch offenbar noch ein langer Weg, bis ich JSONata so gut beherrsche, dass ein Kodieren in JSONata schneller geht als mit Blockly.:disappointed:

                                Derzeit lese ich mich in die äußerst dürftige Dokumentation von JSONata ein. Allein schon bei dem Ausprobieren von $key, $lookup, $sum, .. begehe ich wohl typische Anfängerfehler, die mir den Spaß (noch) gründlich verderben. Aber ich will's tapfer weiter versuchen.

                                Mein erstes Ziel: Die Kosten für unseren Strombezug über alle Tarife hinweg zu ermitteln.

                                Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                                mickymM 1 Reply Last reply
                                0
                                • L legro

                                  @mickym

                                  Vielen herzlichen Dank für deine freundliche und äußerst hilfreiche Unterstützung. Für mich ist es jedoch offenbar noch ein langer Weg, bis ich JSONata so gut beherrsche, dass ein Kodieren in JSONata schneller geht als mit Blockly.:disappointed:

                                  Derzeit lese ich mich in die äußerst dürftige Dokumentation von JSONata ein. Allein schon bei dem Ausprobieren von $key, $lookup, $sum, .. begehe ich wohl typische Anfängerfehler, die mir den Spaß (noch) gründlich verderben. Aber ich will's tapfer weiter versuchen.

                                  Mein erstes Ziel: Die Kosten für unseren Strombezug über alle Tarife hinweg zu ermitteln.

                                  mickymM Offline
                                  mickymM Offline
                                  mickym
                                  Most Active
                                  wrote on last edited by
                                  #27

                                  @legro Ja man muss das verstehen - hat bei mir auch länger gedauert. Mit der Formel unten sollte aber Dein Ziel zu erreichen sein. Wir können das ja mal durchgehen, wenn Du willst. Aber natürlich nur wenn Du willst.

                                  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.

                                  L 1 Reply Last reply
                                  0
                                  • mickymM mickym

                                    @legro Ja man muss das verstehen - hat bei mir auch länger gedauert. Mit der Formel unten sollte aber Dein Ziel zu erreichen sein. Wir können das ja mal durchgehen, wenn Du willst. Aber natürlich nur wenn Du willst.

                                    L Online
                                    L Online
                                    legro
                                    wrote on last edited by
                                    #28

                                    @mickym

                                    Oh ja, sehr gerne. Ich melde mich mit meinen Versuchen.

                                    Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                                    mickymM 1 Reply Last reply
                                    0
                                    • L legro

                                      @mickym

                                      Oh ja, sehr gerne. Ich melde mich mit meinen Versuchen.

                                      mickymM Offline
                                      mickymM Offline
                                      mickym
                                      Most Active
                                      wrote on last edited by mickym
                                      #29

                                      @legro Du sollst es einfach in dem JSONATA try Fenster machen - da Du sofort das Ergebnis siehst. Wenn dann alles stimmt brauchst Du den Code nur rauskopieren und im Blockly als JSONATA Ausdruck verwenden.

                                      Wie gesagt mit dem Code:

                                      $.Tarife.*.(Energiepreis * Intervall.Startwert / 1000) ~> $sum()
                                      

                                      hast Du alles was Du brauchst.

                                      Gib einfach mal nur das $ ein und schau was im Ergebnisfenster auftaucht, dann $.Tarife usw. - und wenn Du Dir die Ergebnisse erklären kannst ist gut, wenn nicht, dann sag Bescheid.

                                      Um das mit der Doku zu erklären. Das $ steht für das aktuelle Objekt - am Anfang als für alles:

                                      03842591-4034-4fe5-b212-872f6d5eb2f2-image.png

                                      Hier den Auszug aus der Doku:
                                      1414a6ff-e7ac-44ad-a3a0-5d8b89d507a0-image.png

                                      Dann probierst Du Tarife, also

                                      $.Tarife
                                      

                                      8458d247-6dd7-4ce7-aa77-8d8671e39f5d-image.png

                                      Du siehst also als Ergebnis das Array - im Ausgangsobjekt Anfang und Ende gelb markiert.

                                      Nun kommt der Stern - sprich wir wollen alle Tarife bzw. Objekte haben, egal wie sie heißen:

                                      $.Tarife.*
                                      

                                      fe260397-52a9-41e4-abce-a2a8926c4bdc-image.png

                                      Mit dem Stern hast Du eine Art Wildcard oder Joker - als Platzhalter. ;)

                                      f9239947-ff56-4496-9c64-4dc75508b3c2-image.png

                                      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.

                                      L 1 Reply Last reply
                                      0
                                      • mickymM mickym

                                        @legro Du sollst es einfach in dem JSONATA try Fenster machen - da Du sofort das Ergebnis siehst. Wenn dann alles stimmt brauchst Du den Code nur rauskopieren und im Blockly als JSONATA Ausdruck verwenden.

                                        Wie gesagt mit dem Code:

                                        $.Tarife.*.(Energiepreis * Intervall.Startwert / 1000) ~> $sum()
                                        

                                        hast Du alles was Du brauchst.

                                        Gib einfach mal nur das $ ein und schau was im Ergebnisfenster auftaucht, dann $.Tarife usw. - und wenn Du Dir die Ergebnisse erklären kannst ist gut, wenn nicht, dann sag Bescheid.

                                        Um das mit der Doku zu erklären. Das $ steht für das aktuelle Objekt - am Anfang als für alles:

                                        03842591-4034-4fe5-b212-872f6d5eb2f2-image.png

                                        Hier den Auszug aus der Doku:
                                        1414a6ff-e7ac-44ad-a3a0-5d8b89d507a0-image.png

                                        Dann probierst Du Tarife, also

                                        $.Tarife
                                        

                                        8458d247-6dd7-4ce7-aa77-8d8671e39f5d-image.png

                                        Du siehst also als Ergebnis das Array - im Ausgangsobjekt Anfang und Ende gelb markiert.

                                        Nun kommt der Stern - sprich wir wollen alle Tarife bzw. Objekte haben, egal wie sie heißen:

                                        $.Tarife.*
                                        

                                        fe260397-52a9-41e4-abce-a2a8926c4bdc-image.png

                                        Mit dem Stern hast Du eine Art Wildcard oder Joker - als Platzhalter. ;)

                                        f9239947-ff56-4496-9c64-4dc75508b3c2-image.png

                                        L Online
                                        L Online
                                        legro
                                        wrote on last edited by
                                        #30

                                        @mickym

                                        In diesem Beitrag hast du eine Link auf meine Datenstruktur zum Testen referiert. Wie hast du diesen Link erstellt?

                                        Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                                        mickymM 1 Reply Last reply
                                        0
                                        • L legro

                                          @mickym

                                          In diesem Beitrag hast du eine Link auf meine Datenstruktur zum Testen referiert. Wie hast du diesen Link erstellt?

                                          mickymM Offline
                                          mickymM Offline
                                          mickym
                                          Most Active
                                          wrote on last edited by
                                          #31

                                          @legro

                                          @legro sagte in JSON Objekte in Liste:

                                          @mickym

                                          In diesem Beitrag hast du eine Link auf meine Datenstruktur zum Testen referiert. Wie hast du diesen Link erstellt?

                                          Du kannst Dein Fenster teilen:

                                          c1e53840-946c-453f-8ba9-dc16cf42e800-image.png

                                          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.

                                          L 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

                                          708

                                          Online

                                          32.5k

                                          Users

                                          81.7k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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