Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javascript für JSON Tabelle

    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

    Javascript für JSON Tabelle

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

      Hallo,

      ich möchte aus einzelnen Datenpunkten einen JSON String für eine Tabelle machen. Erste Hilfe habe ich bereits im Forum gefunden, möchte das aber noch erweitern.

      Es geht um Daten aus dem Sourceanalytix Adapter. Einmal für die Monate, einmal für die einzelnen Wochen.

      Wie folgt sieht mein Script gerade aus

      const idTable = '0_userdata.0.json.AlleVerbrauchertotalmonate'; // ID JSON-Tabelle
      const ids = ['sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.01_January','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.02_February','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.03_March','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.04_April','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.05_May','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.06_June','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.07_July','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.08_August','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.09_September','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.10_October','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.11_November','sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months.12_December']; 
       
      var table = [];
      for(let i = 0; i < ids.length; i++) {
          table[i] = {};
          table[i].Name = getObject(ids[i]).common.name;
          table[i].Wert = getState(ids[i]).val;
      }
      setState(idTable, JSON.stringify(table), true);
       
      on(ids, function(dp) {
          let idx = ids.indexOf(dp.id);
          table[idx].Wert = dp.state.val;
          setState(idTable, JSON.stringify(table), true);
      });
      

      Wie Ihr seht, habe ich erstmal jeden Datenpunkt einzeln angegeben, aus dem der String zusammengebaut werde soll. Bei 12, wie hier, geht das ja noch, bei 56 Wochen, ist das schon mehr. Wie sage ich dem Script, nehme alle Datenpunkte aus dem Ordner

      sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.months
      oder
      sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.weeks

      Das wäre so der Anfang um es mir leichter zu machen. Dann muss ich für die ganzen einzelnen Datenpunkte, die analysiert werden (62 Stück), jeweils ein Script machen. Oder geht das auch noch einfacher?

      Da es so viele Ordner mit Datenpunkten sind, wo ich auch noch Namen anpassen muss, geht das Umbennen per Script?

      85bababb-9413-487a-8fa8-e362431be965-image.png

      Die rechte Spalte soll andere Namen haben

      So soll das dann aussehen, von englisch auf deutsch (oder muss das alles von Hand erfolgen?)

      4db1cab1-5a25-42b7-8500-b4ac2a15184e-image.png

      Vielen Dank

      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @AxelF1977 last edited by

        @AxelF1977 sagte:

        nehme alle Datenpunkte aus dem Ordner

        const idTable = '0_userdata.0.json.AlleVerbrauchertotalwochen'; // ID JSON-Tabelle
        const select = $('sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.weeks.*');
        
        var ids = []; 
        var table = [];
        select.each(function(id, i) {
            ids[i] = id;
            table[i] = {};
            table[i].Name = getObject(id).common.name;
            table[i].Wert = getState(id).val;
        });
        setState(idTable, JSON.stringify(table), true);
         
        on(ids, function(dp) {
            let idx = ids.indexOf(dp.id);
            table[idx].Wert = dp.state.val;
            setState(idTable, JSON.stringify(table), true);
        });
        
        AxelF1977 etv 2 Replies Last reply Reply Quote 1
        • AxelF1977
          AxelF1977 @paul53 last edited by AxelF1977

          @paul53 sagte in Javascript für JSON Tabelle:

          @AxelF1977 sagte:

          nehme alle Datenpunkte aus dem Ordner

          const idTable = '0_userdata.0.json.AlleVerbrauchertotalwochen'; // ID JSON-Tabelle
          const select = $('sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.meterReadings.weeks.*');
          
          var ids = []; 
          var table = [];
          select.each(function(id, i) {
              ids[i] = id;
              table[i] = {};
              table[i].Name = getObject(id).common.name;
              table[i].Wert = getState(id).val;
          });
          setState(idTable, JSON.stringify(table), true);
           
          on(ids, function(dp) {
              let idx = ids.indexOf(dp.id);
              table[idx].Wert = dp.state.val;
              setState(idTable, JSON.stringify(table), true);
          });
          

          Mal wieder vielen Dank.

          Wo ich jetzt gerade dabei bin die ganzen Skripte anzulegen, fällt mir eine Sache auf, 2021 müsste ich alle Skripte neu machen. Das ist doof.

          Hast Du eine Idee wie man das umsetzen kann, ohne jedes Jahr alle Skripte und Datenpunkte neu anlegen zu müssen? Z.B. ein Skript was einfach in jedem Unterordner im Sourceanalytix mit den Namen mounth o. weeks einen Datenpunkt erstellt (per Script) und dann die JSON Werte schreibt?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @AxelF1977 last edited by

            @AxelF1977 sagte:

            Skript was einfach in jedem Unterordner im Sourceanalytix mit den Namen mounth o. weeks einen Datenpunkt erstellt

            Eigene Datenpunkte haben unter "sourceanalytix.0" nichts verloren, da Adapter ihre Datenpunkte verwalten, also auch löschen können.

            AxelF1977 1 Reply Last reply Reply Quote 0
            • AxelF1977
              AxelF1977 @paul53 last edited by AxelF1977

              @paul53 hm ok, ja, gutes Argument.

              Wie könnte es ansonsten gehen? Per Script zu jedem Datenpunkt mit den Ordnern mounth und weeks unter userdata Ordner und anlegen lassen und Dan automatisch die Datenpunkte anlegen lassen?

              • userdata
                • json
                  • Jahr
                    • Datenpunkte
              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @AxelF1977 last edited by

                @AxelF1977 sagte:

                Wie könnte es ansonsten gehen?

                Eigene Datenpunkte unter "0_userdata.0" erstellen.
                Welche Datenpunkte sollen wann erstellt werden ?

                AxelF1977 1 Reply Last reply Reply Quote 0
                • AxelF1977
                  AxelF1977 @paul53 last edited by

                  @paul53 sagte in Javascript für JSON Tabelle:

                  @AxelF1977 sagte:

                  Wie könnte es ansonsten gehen?

                  Eigene Datenpunkte unter "0_userdata.0" erstellen.
                  Welche Datenpunkte sollen wann erstellt werden ?

                  Ich habe oben mal ausführlicher geschrieben.
                  Jedes Jahr die Datenpunkte neu anlegen ist das was mich gerade abschreckt. Und dann auch die Scripte neu anlegen, weil es ein neues Jahr ist. Ich möchte die Werte behalten vom Jahr zuvor.

                  Wenn also der Adapter am 01.01. die Ordner für 2021 erstellt, wäre es super wenn das dann automatisch unter userdata auch passiert. Mit dem neuen Datenpunkten.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @AxelF1977 last edited by

                    @AxelF1977 sagte:

                    neu anlegen, weil es ein neues Jahr ist. Ich möchte die Werte behalten vom Jahr zuvor.

                    Soll es über mehrere Jahre gehen ? Wie viele (welche) Datenpunkte stehen unter "weeks" bzw. "months" ?

                    Anstelle der vielen Datenpunkte (pro Woche / pro Monat) würde ich die historischen Werte in je einem Array speichern.

                    AxelF1977 1 Reply Last reply Reply Quote 0
                    • AxelF1977
                      AxelF1977 @paul53 last edited by

                      @paul53 sagte in Javascript für JSON Tabelle:

                      @AxelF1977 sagte:

                      neu anlegen, weil es ein neues Jahr ist. Ich möchte die Werte behalten vom Jahr zuvor.

                      Soll es über mehrere Jahre gehen ? Wie viele (welche) Datenpunkte stehen unter "weeks" bzw. "months" ?

                      Hallo @paul53,

                      erstmal Danke für die Antwort, und danke das Du dran bleibst.

                      Die Struktur eines jeden Ordners ist im Adapter genau gleich, und sieht aus wie auf dem Screenshot

                      3e4f1342-fc2e-4586-8d1c-987ee772ccf1-image.png

                      Nächstes Jahr kommt dann Ordner 2021 mit der selben Struktur dazu usw. Der Ordner month erhält 12 Datenpunkte, einen zu jedem Monat. Selbiges für den Ordner weeks, ein Datenpunkt pro Woche.

                      Ich mpöchte diese Daten min. der letzten 2 Jahre inkl. dem laufenden Jahr halten. Um Vergleiche anstellen zu können und auszuwerten wie sich wo welcher Verbrauch verändert hat.

                      @paul53 sagte in Javascript für JSON Tabelle:

                      Anstelle der vielen Datenpunkte (pro Woche / pro Monat) würde ich die historischen Werte in je einem Array speichern.

                      Hier verstehe ich gerade nur Bahnhof

                      paul53 3 Replies Last reply Reply Quote 0
                      • paul53
                        paul53 @AxelF1977 last edited by paul53

                        @AxelF1977 sagte:

                        Ich mpöchte diese Daten min. der letzten 2 Jahre inkl. dem laufenden Jahr halten.

                        Das würde ich mit 2 Datenpunkten machen, die alle Werte der letzten 2 Jahre (24 Monate / 104 Wochen) enthalten. Dann muss man keine neuen Datenpunkte erstellen und keine zu alten Datenpunkte löschen.

                        AxelF1977 1 Reply Last reply Reply Quote 0
                        • AxelF1977
                          AxelF1977 @paul53 last edited by

                          @paul53 sagte in Javascript für JSON Tabelle:

                          @AxelF1977 sagte:

                          Ich mpöchte diese Daten min. der letzten 2 Jahre inkl. dem laufenden Jahr halten.

                          Das würde ich mit 2 Datenpunkten machen, die alle Werte der letzten 2 Jahre (24 Monate / 104 Wochen) enthalten. Dann muss man keine neuen Datenpunkte erstellen und keine zu alten Datenpunkte löschen.

                          Ok, ich versuche mir das gerade vorzustellen, wie das funktioniert. Aber mit Filtern sollte man dann ja da die Werte zum Vergleichen gezielt rausholen könne, oder?

                          Also was habe ich aktuell im Juni verbraucht, und wieviel jeweils im Juni der letzten 2 Jahre?

                          paul53 2 Replies Last reply Reply Quote 0
                          • paul53
                            paul53 @AxelF1977 last edited by

                            @AxelF1977 sagte:

                            Aber mit Filtern sollte man dann ja da die Werte zum Vergleichen gezielt rausholen könne, oder?

                            Ja.

                            AxelF1977 1 Reply Last reply Reply Quote 0
                            • AxelF1977
                              AxelF1977 @paul53 last edited by

                              @paul53 sagte in Javascript für JSON Tabelle:

                              @AxelF1977 sagte:

                              Aber mit Filtern sollte man dann ja da die Werte zum Vergleichen gezielt rausholen könne, oder?

                              Ja.

                              Dann würde das ja super funktionieren.

                              1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @AxelF1977 last edited by paul53

                                @AxelF1977 sagte:

                                Die Struktur eines jeden Ordners ist im Adapter genau gleich, und sieht aus wie auf dem Screenshot

                                Wann erstellt SourceAnalytix die Ordner-Struktur ? Jedes Jahr am 1. Januar ? Komplett für das ganze Jahr ? Werden die Ordner des Vorjahres gelöscht ?

                                AxelF1977 1 Reply Last reply Reply Quote 0
                                • AxelF1977
                                  AxelF1977 @paul53 last edited by

                                  @paul53 sagte in Javascript für JSON Tabelle:

                                  @AxelF1977 sagte:

                                  Die Struktur eines jeden Ordners ist im Adapter genau gleich, und sieht aus wie auf dem Screenshot

                                  Wann erstellt SourceAnalytix die Ordner-Struktur ? Jedes Jahr am 1. Januar ? Komplett für das ganze Jahr ?

                                  Soweit ich es verstanden habe ja. Mit Wechsel ins neue Jahr werden die Ordner erstellt, inkl der gesamten Struktur. Die alten bleiben erhalten.
                                  Das sind Erfahrungen die ich gelesen habe, ich selber hatte den Fall bisher nicht.

                                  1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @AxelF1977 last edited by paul53

                                    @AxelF1977 sagte:

                                    sieht aus wie auf dem Screenshot

                                    Zeige bitte mal die Status-Ansicht der gleichen Datenpunkte, in der man Wert, Zeitstempel und letzte Änderung sehen kann. Ich möchte ein Vorstellung davon bekommen, was wann in die Datenpunkte geschrieben wird.

                                    AxelF1977 1 Reply Last reply Reply Quote 0
                                    • AxelF1977
                                      AxelF1977 @paul53 last edited by

                                      @paul53 sagte in Javascript für JSON Tabelle:

                                      @AxelF1977 sagte:

                                      sieht aus wie auf dem Screenshot

                                      Zeige bitte mal die Status-Ansicht der gleichen Datenpunkte, in der man Wert, Zeitstempel und letzte Änderung sehen kann. Ich möchte ein Vorstellung davon bekommen, was wann in die Datenpunkte geschrieben wird.

                                      Ich hoffe damit kannst Du was anfangen. Ich bin auf Arbeit und habe nur per VPN mit meinem Mobiltelefon zugriff

                                      8f1892c3-95e9-4b09-affc-16c655836a8a-image.png

                                      Screenshot erstellt um 11:01 Uhr

                                      Anbei ein anderer Datenpunkt, der sich öfter aktualisiert, da hier alle Verbrauchswerte zusammenlaufen. Die Datenpunkte werden bei Änderung sofort aktualisiert.

                                      c2f4ea7f-82a4-47ac-98e9-5ec913043e9c-image.png

                                      Screenshot erstellt 11:09 Uhr

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @AxelF1977 last edited by

                                        @AxelF1977 sagte:

                                        Anbei ein anderer Datenpunkt,

                                        Welcher ?

                                        @AxelF1977 sagte in Javascript für JSON Tabelle:

                                        Ich hoffe damit kannst Du was anfangen.

                                        Das ist noch etwas wenig, um daraus etwas zu erkennen.
                                        Da die Datenpunkte unter "meterReadings" sind, würde ich vermuten, dass sie die Zählerstände enthalten (z.B. Ende des Monats / aktuell des laufenden Monats) ? Was Du auswerten möchtest, sind vermutlich die Monats-/Wochen-Verbrauchswerte, die sich meiner Meinung nach unter "consumed" befinden sollten.

                                        AxelF1977 1 Reply Last reply Reply Quote 0
                                        • AxelF1977
                                          AxelF1977 @paul53 last edited by

                                          @paul53 sagte in Javascript für JSON Tabelle:

                                          @AxelF1977 sagte:

                                          Anbei ein anderer Datenpunkt,

                                          Welcher ?

                                          @AxelF1977 sagte in Javascript für JSON Tabelle:

                                          Ich hoffe damit kannst Du was anfangen.

                                          Das ist noch etwas wenig, um daraus etwas zu erkennen.
                                          Da die Datenpunkte unter "meterReadings" sind, würde ich vermuten, dass sie die Zählerstände enthalten (z.B. Ende des Monats / aktuell des laufenden Monats) ? Was Du auswerten möchtest, sind vermutlich die Monats-/Wochen-Verbrauchswerte, die sich meiner Meinung nach unter "consumed" befinden sollten.

                                          Ich prüfe dass dann heute Abend wenn ich zu Hause bin. Da kann ich dann besser Arbeiten. Am Mobiltelefon ist das furchtbar.

                                          Ich probiere Dir dann alle Infos zukommen zu lassen.

                                          Vielen Dank für die Zeit, die Du hier opferst um mir zu helfen.

                                          1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @AxelF1977 last edited by paul53

                                            @AxelF1977 sagte:

                                            was habe ich aktuell im Juni verbraucht, und wieviel jeweils im Juni der letzten 2 Jahre?

                                            @AxelF1977 sagte in Javascript für JSON Tabelle:

                                            Die alten bleiben erhalten.

                                            Dann hast Du doch alle Werte, die für Vergleiche benötigt werden, in der Struktur von SourceAnalytix.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            643
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring
                                            3
                                            33
                                            2005
                                            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