Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. JSON Objekte in Liste

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    JSON Objekte in Liste

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      legro @mickym last edited by

      @mickym

      Da kam halt nix

      Wie gesagt, ich war noch dabei das Ganze zu verdauen. Außerdem hatte ich meine Datenstruktur ja nochmals geändert und den ARRAYs Bezeichner zugeordnet. Nun versuche ich mal zur Übung in dieser neuen Struktur das Ganze zu lösen.

      Da habe ich ja große Glück gehabt, dir begegnet zu sein.☺

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @legro last edited by

        @legro Na ich bin hier nur Gast - weil ich kein Blockly mag und alles mit NodeRed mache und das kann mit Objekten viel besser umgehen und dort nutzt man auch viel JSONATA. Dann weiß ich halt, dass im Javascript Adapter also sowohl im Blockly, also auch im Javascript diese phantastische Bibliothek implementiert wurde. Deshalb mache ich hin und wieder die Blockly user darauf aufmerksam, dass man das auch nutzen kann - nicht muss. Ansonsten mische mich in der Regel bei Puzzlern weniger ein. 😉

        L 1 Reply Last reply Reply Quote 0
        • L
          legro @mickym last edited by

          @mickym sagte in JSON Objekte in Liste:

          @legro .. weil ich kein Blockly mag und alles mit NodeRed mache ..

          Nun ja, auf meine alten Tage werde ich die Welt nicht mehr aus den Angeln heben können. Ich bleibe daher zunächst einmal bei Blockly, weil ich's halt leidlich kenne.

          Nun setze ich mich einmal daran, die Lösungen nachzurechnen. Irgendwie habe ich das Gefühl, dass mit der Summenbildung noch etwas nicht stimmt.🤔 Darüber hinaus versuche ich mich einmal das Ganze mit der neuen Datenstruktur (benannte ARRAYs für Bezug, Verkauf und Erzeugt) zu realisieren.

          Dank deiner Hilfestellung habe ich einen Einblick gewonnen, den ich ansonsten wohl erst nach Stunden erreicht hätte. Danke!

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @legro last edited by

            @legro sagte in JSON Objekte in Liste:

            Nun setze ich mich einmal daran, die Lösungen nachzurechnen.

            Ich habs mal beim Bezug unten gemacht - und das kam mir richtig vor. Aber schau mal. 😉

            L 1 Reply Last reply Reply Quote 0
            • L
              legro @mickym last edited by

              @mickym

              00a69e9d-454f-4e9b-9844-c2aa61110804-image.png

              Das Ergebnis ist leider nicht die gewünschte Summe. Es fehlt der Betrag zwischen den Ständen[0] und [1] -> 2510.191 * 0,3693

              Müssten nicht die Indizes "parametrisiert" werden, damit sie alle Werte durchlaufen?

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @legro last edited by mickym

                @legro Na ja - das ist das was ich nicht verstehe. Ich hab es mit dem letzten Energiepreis verrechnet. Ich blicke das nicht.
                Rechne mir doch mal ein Objekt im Detail vor also den Bezug

                 {
                      "Name": "Bezug",
                      "Stände": [
                        {
                          "Datum": "2023-01-01",
                          "Energiepreis": 0.3963,
                          "Wert": 468303
                        },
                        {
                          "Datum": "2023-06-30",
                          "Energiepreis": 0.3328,
                          "Wert": 482512
                        }
                      ]
                    }
                

                Wie soll das bitte gerechnet werden. Step für Step please.

                Der 1. Energiepreis ist doch irrelevant - das war doch meine Frage die ganze Zeit. Du misst doch mit den Zählerwerten W - wandelst das in kW um. Dann nimmst Du doch die Differenz und die kannst Du doch nur mit EINEM Preis multiplizieren. Der Preis im ersten Objekt spielt doch gar keine Rolle deswegen wurde nicht 2510,191 *0,3693 gerechnet, sondern nur die Differenz (2597930 - 2510191)/1000, also 87,739 mit 0,3328 multipliziert, was somit 29,1995392 ergibt. Also der 1. Preis ist doch Nonsense.
                Oder Du nimmst einen Mittelwert - aber Du kannst ja nicht 2 Preise voneinander abziehen. Das würde im 1. Beispiel einen negativen Betrag ergeben. 😉

                Die Preise für jedes Objekt an sich, sind doch total irrelevant: https://try.jsonata.org/vAh2mh_SG

                55eafbce-60f6-4a5e-b0ef-34356123dfc8-image.png

                das kannst Du auf diese Weise haben. Dann hast Du 2510,191 * 0,3693 = 994,7886933

                Die Einzelpreise dieser Stände sind aber irrelevant.

                Wie gesagt - Rechne mir bitte EIN Objekt mit den beiden Zählerständen vor, wie Du es haben möchtest.

                L 1 Reply Last reply Reply Quote 0
                • L
                  legro @mickym last edited by legro

                  @mickym sagte in JSON Objekte in Liste:

                  Wie gesagt - Rechne mir bitte EIN Objekt mit den beiden Zählerständen vor, wie Du es haben möchtest.

                  In diesem Beitrag habe ich versucht, die Aufgabenstellung zu reduzieren. Sinnvollerweise sollte man wohl ein leeres Element (Energiepries=0 und Wert=0) in jedem ARRAY Bezug, Verbrauch und Verkauf einführen, um über alles Differenzen zwei aufeinander folgender Werte zu summieren.

                  In JSONata fand ich bisher keine Kontrollstrukturen, die so etwas ermöglichen. Hier muss ich dann wohl doch noch mit Blockly ran.

                  Da ich ja nur immer eine Summe für jedes ARRAY getrennt haben muss, habe ich die Datenstruktur und Abfrage wie hier ausgeführt geändert.

                  Nun ja, ich habe mich für den Anfang wohl schlichtweg übernommen. Erst einmal kleiner Brötchen backen, wäre wohl besser.

                  mickym 2 Replies Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @legro last edited by mickym

                    @legro Nun bitte sehr: https://try.jsonata.org/lM8bWJD1Q

                    Hier war dein Array

                    [0,2,4,7,9]
                    

                    und das sind die Differenzen

                    [
                      2,
                      2,
                      3,
                      2
                    ]
                    

                    c887c7c5-7196-4a76-9683-2fefd43c7bbb-image.png

                    und die Summe ist dann 9 😁

                    9e888c77-f1af-462c-8779-92f72bdf736a-image.png

                    Ok - ich verstehe, da hast zum Schluss mehr als 2 Elemente in Deinen Arrays. Trotzdem ist der 1. Preis immer irrelevant.

                    1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @legro last edited by

                      @legro Ja das Problem ist dass Dein Array ja wächst, deswegen dürfen wir nicht mit fixen Indizes arbeiten. Ich überlege noch.

                      L 1 Reply Last reply Reply Quote 0
                      • L
                        legro @mickym last edited by legro

                        @mickym

                        Ok - ich verstehe, da hast zum Schluss mehr als 2 Elemente in Deinen Arrays. Trotzdem ist der 1. Preis immer irrelevant.

                        Daher ja auch die Idee eine "leeren Elementes", damit die Iteration gelingt.

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @legro last edited by

                          @legro Ja passt schon - wir könnten das auch mit Codieren in JSONATA lösen - aber ich tüftle noch. 😉

                          L 2 Replies Last reply Reply Quote 0
                          • L
                            legro @mickym last edited by legro

                            @mickym sagte in JSON Objekte in Liste:

                            @legro Ja passt schon - wir könnten das auch mit Codieren in JSONATA lösen - aber ich tüftle noch. 😉

                            Ich bin voller Bewunderung!👍

                            Allerdings verstehe ich noch nicht die Syntax in dem Ausdruck $#$i.[$$[$i+1]-$$[$i]] Da muss ich noch kräftig nachdenken.

                            1 Reply Last reply Reply Quote 0
                            • L
                              legro @mickym last edited by

                              @mickym

                              Hier habe ich das Ganze für die neue Datenstruktur mit benannten ARRAYs einmal ausgeführt.

                              Wie gesagt: leider verstehe ich die Syntax mit den Indizes noch nicht so richtig.

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @legro last edited by

                                @legro Ja wie gesagt das nützt nichts, ich gehe ja davon aus, dass Dein Array weiter wächst.

                                L 1 Reply Last reply Reply Quote 0
                                • L
                                  legro @mickym last edited by

                                  @mickym sagte in JSON Objekte in Liste:

                                  @legro Ja wie gesagt das nützt nichts, ich gehe ja davon aus, dass Dein Array weiter wächst.

                                  Wenn ich in dem Beispiel-ARRAY mit den Zahlen Elemente ergänze, wird doch alles dynamisch bereits berücksichtigt. Das Ganze funktioniert doch schon wie gewünscht. Oder wo liegt mein Denkfehler?

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @legro last edited by

                                    @legro Ja da funktioniert es auch aber ich komme mit den Objekten noch nicht klar - ich versuch das nun mal mit bissi Code. Hab einfach bissi Geduld.

                                    L 1 Reply Last reply Reply Quote 0
                                    • L
                                      legro @mickym last edited by legro

                                      @mickym sagte in JSON Objekte in Liste:

                                      @legro Ja da funktioniert es auch aber ich komme mit den Objekten noch nicht klar - ich versuch das nun mal mit bissi Code. Hab einfach bissi Geduld.

                                      Du kannst gerne alle Zeit der Welt haben. Wenn du bei der Anpassung an meinen Beispielcode noch überlegen muss, habe ich gar keinen Mut das Beispiel daraufhin zu erweitern.

                                      Kannst du bitte die neue Struktur verwenden?

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @legro last edited by

                                        @legro Ja mach ich

                                        1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active last edited by mickym

                                          So ich habs fertig. 😉 Deine Formel stimmt meines Erachtens auch nicht - aber so dürfte das nun gehen.

                                          https://try.jsonata.org/p-SrPKlgy

                                          Die Summe ist nun: 1213.29

                                          (gerundet)

                                          Wenn Du die Aufsummierung weglässt, siehst Du das Ergebnis jedes Blocks:

                                          [
                                            190.3172341,
                                            0,
                                            1022.9705301
                                          ]
                                          

                                          6f4903a5-b84d-46b8-a301-bd3950a389a4-image.png

                                          Grundsätzlich würde ich aber mit Sonderzeichen aufpassen - also Umlauten auch wenn es hier im Moment kein Problem gibt

                                          Man kann das Ganze auch ohne Programm schreiben:

                                          https://try.jsonata.org/AUkOIVcjP

                                          ABER - deine 1. Struktur war viel besser. ....

                                          damit geht es in einer Zeile: https://try.jsonata.org/1lDqzoiKc

                                          a2ea621f-5e1b-4280-84ac-0cd4d53e3b9c-image.png

                                          Das liegt daran weil Du das Objekt Stände benannt hast. Sowas ist wesentlich besser, als unbenannte Objekte in einem Array aneinanderzureihen. Ich hätte auch deine jetzige Struktur in die alte Struktur überführen können, hängt halt davon ab, wie Du die erzeugst.

                                          Nachtrag:

                                          Im Prinzip ist es egal - ob Du mit einem 0 Wert anfängst oder nicht - es wird halt immer brav die Differenz zwischen einem Objekt und seinem Vorgänger ermittelt und wenn das Stände Array nur ein Objekt enthält, wird 0 zurückgegeben.

                                          Und das Array kann nun beliebig wachsen. 😉

                                          L 1 Reply Last reply Reply Quote 1
                                          • L
                                            legro @mickym last edited by

                                            @mickym

                                            Vielen herzlichen Dank für die vielen Mühen, die du sicherlich trotz deinem großen Können hast auf dich genommen. Wie ich befürchtet habe: Das Ganze war gleich mehrere Nummern zu groß für einen Anfänger wie mich. Da du jedoch gleich mehrere Lösungen anbietest, habe ich Hoffnung, wenigstens die ein oder andere zu verstehen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            602
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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