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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Javascript für JSON Tabelle

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    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.5k

Javascript für JSON Tabelle

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptmonitoring
33 Beiträge 3 Kommentatoren 2.5k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P 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 ?

    AxelF1977A Offline
    AxelF1977A Offline
    AxelF1977
    schrieb am zuletzt editiert von
    #15

    @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.

    ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

    1 Antwort Letzte Antwort
    0
    • AxelF1977A AxelF1977

      @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

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

      @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.

      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

      AxelF1977A 1 Antwort Letzte Antwort
      0
      • paul53P 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.

        AxelF1977A Offline
        AxelF1977A Offline
        AxelF1977
        schrieb am zuletzt editiert von
        #17

        @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

        ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

        paul53P 1 Antwort Letzte Antwort
        0
        • AxelF1977A AxelF1977

          @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

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

          @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.

          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

          AxelF1977A 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @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.

            AxelF1977A Offline
            AxelF1977A Offline
            AxelF1977
            schrieb am zuletzt editiert von
            #19

            @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.

            ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

            1 Antwort Letzte Antwort
            0
            • AxelF1977A AxelF1977

              @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?

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

              @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.

              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

              AxelF1977A 1 Antwort Letzte Antwort
              0
              • paul53P 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.

                AxelF1977A Offline
                AxelF1977A Offline
                AxelF1977
                schrieb am zuletzt editiert von
                #21

                @paul53 sagte in Javascript für JSON Tabelle:

                @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.

                Ich möchte die Werte ja in einer Tabelle über json darstellen. Die nackten Zahlen habe ich, die sind alle da, aber ich kann die so nicht in Tabellenform darstellen. Ich möchte in VIS zu jeder Steckdose (Datenpunkt) die Werte in Tabellenform Monat und Woche darstellen. Deshalb das Ganze

                ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                paul53P 1 Antwort Letzte Antwort
                0
                • AxelF1977A AxelF1977

                  @paul53 sagte in Javascript für JSON Tabelle:

                  @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.

                  Ich möchte die Werte ja in einer Tabelle über json darstellen. Die nackten Zahlen habe ich, die sind alle da, aber ich kann die so nicht in Tabellenform darstellen. Ich möchte in VIS zu jeder Steckdose (Datenpunkt) die Werte in Tabellenform Monat und Woche darstellen. Deshalb das Ganze

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

                  @AxelF1977 sagte:

                  Ich möchte in VIS zu jeder Steckdose (Datenpunkt) die Werte in Tabellenform Monat und Woche darstellen.

                  Das habe ich auch so verstanden. Das hat aber nichts mit dem Vergleich von Monatswerten im gleichen Monat verschiedener Jahre zu tun.

                  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

                  AxelF1977A 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @AxelF1977 sagte:

                    Ich möchte in VIS zu jeder Steckdose (Datenpunkt) die Werte in Tabellenform Monat und Woche darstellen.

                    Das habe ich auch so verstanden. Das hat aber nichts mit dem Vergleich von Monatswerten im gleichen Monat verschiedener Jahre zu tun.

                    AxelF1977A Offline
                    AxelF1977A Offline
                    AxelF1977
                    schrieb am zuletzt editiert von
                    #23

                    @paul53 sagte in Javascript für JSON Tabelle:

                    @AxelF1977 sagte:

                    Ich möchte in VIS zu jeder Steckdose (Datenpunkt) die Werte in Tabellenform Monat und Woche darstellen.

                    Das habe ich auch so verstanden. Das hat aber nichts mit dem Vergleich von Monatswerten im gleichen Monat verschiedener Jahre zu tun.

                    Das stimmt. Dann hatte ich Dich eben falsch verstanden, sorry.

                    ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                    1 Antwort Letzte Antwort
                    0
                    • AxelF1977A 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

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

                      @AxelF1977 sagte:

                      von englisch auf deutsch

                      Man kann das Jahr im $Selector auch unberücksichtigt lassen und im Namen bei gleichzeitiger Übersetzung unterbringen.

                      const idTable = '0_userdata.0.Verbrauch.Gerätename.Monate.json'; // Vorschlag ID JSON-Tabelle
                      const monate = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
                      
                      var select = $('sourceanalytix.0.Geräte-ID.20*.consumed.months.*'); // Geräte-ID ersetzen
                      var ids = []; 
                      var table = [];
                      select.each(function(id, i) {
                          ids[i] = id;
                          table[i] = {};
                          let idx = parseInt(id.substring(id.lastIndexOf('.') + 1)) - 1;
                          let monat = monate[idx];
                          table[i].Name = monat + ' ' + id.split('.')[3]; // z.B. "Februar 2020"
                          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);
                      });
                      

                      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

                      AxelF1977A 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @AxelF1977 sagte:

                        von englisch auf deutsch

                        Man kann das Jahr im $Selector auch unberücksichtigt lassen und im Namen bei gleichzeitiger Übersetzung unterbringen.

                        const idTable = '0_userdata.0.Verbrauch.Gerätename.Monate.json'; // Vorschlag ID JSON-Tabelle
                        const monate = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
                        
                        var select = $('sourceanalytix.0.Geräte-ID.20*.consumed.months.*'); // Geräte-ID ersetzen
                        var ids = []; 
                        var table = [];
                        select.each(function(id, i) {
                            ids[i] = id;
                            table[i] = {};
                            let idx = parseInt(id.substring(id.lastIndexOf('.') + 1)) - 1;
                            let monat = monate[idx];
                            table[i].Name = monat + ' ' + id.split('.')[3]; // z.B. "Februar 2020"
                            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);
                        });
                        
                        AxelF1977A Offline
                        AxelF1977A Offline
                        AxelF1977
                        schrieb am zuletzt editiert von AxelF1977
                        #25

                        @paul53 Danke.

                        Habe es mal eingebaut, funktioniert.

                        ich konnte mir das alles nochmal genauer ansehen. Also der Ordner consumed enthält nur Werte die 0 sind. Evtl. taucht dort wirklich erst ein Wert auf, wenn der Monat/die Woche abgeschlossen ist. Aktuell ist der Monat 0. Das passt nicht wirklich zu dem, wie ich die Werte betrachten möchte. Also im Skript auf meterReadings geändert, und der aktuelle Wert ist da.

                        Auch das umbenennen über das Script läuft klasse, danke.

                        Was jetzt halt wirklich toll wäre, wenn das Script die Ordner unter 0_userdata.0.Verbrauch.Gerätename.Monate.json selbstständig anlegen würde.

                        Also von jedem "Gerät" die Ordnerstruktur mit der json Datei anlegt, es dadurch nur ein Script gibt. Aktuell müsste ich 62 Skripte anlegen, und dazu alle Datenpunkte von Hand, was einfach ewig dauert. Und pflegen ist so wohl auch nicht drin. Wenn dann neue Steckdosen kommen, muss alles wieder von Hand geändert werden.

                        Du wollstest ja noch einen Screenshot mit Daten, ich hoffe diesmal kannst Du mehr erkennen

                        006232b7-637d-4fe5-9684-839b986fdea8-image.png

                        ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                        paul53P 2 Antworten Letzte Antwort
                        0
                        • AxelF1977A AxelF1977

                          @paul53 Danke.

                          Habe es mal eingebaut, funktioniert.

                          ich konnte mir das alles nochmal genauer ansehen. Also der Ordner consumed enthält nur Werte die 0 sind. Evtl. taucht dort wirklich erst ein Wert auf, wenn der Monat/die Woche abgeschlossen ist. Aktuell ist der Monat 0. Das passt nicht wirklich zu dem, wie ich die Werte betrachten möchte. Also im Skript auf meterReadings geändert, und der aktuelle Wert ist da.

                          Auch das umbenennen über das Script läuft klasse, danke.

                          Was jetzt halt wirklich toll wäre, wenn das Script die Ordner unter 0_userdata.0.Verbrauch.Gerätename.Monate.json selbstständig anlegen würde.

                          Also von jedem "Gerät" die Ordnerstruktur mit der json Datei anlegt, es dadurch nur ein Script gibt. Aktuell müsste ich 62 Skripte anlegen, und dazu alle Datenpunkte von Hand, was einfach ewig dauert. Und pflegen ist so wohl auch nicht drin. Wenn dann neue Steckdosen kommen, muss alles wieder von Hand geändert werden.

                          Du wollstest ja noch einen Screenshot mit Daten, ich hoffe diesmal kannst Du mehr erkennen

                          006232b7-637d-4fe5-9684-839b986fdea8-image.png

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

                          @AxelF1977 sagte in Javascript für JSON Tabelle:

                          Du wollstest ja noch einen Screenshot mit Daten

                          Es sind einfach noch zu wenige Daten.

                          @AxelF1977 sagte in Javascript für JSON Tabelle:

                          Also der Ordner consumed enthält nur Werte die 0 sind. Evtl. taucht dort wirklich erst ein Wert auf, wenn der Monat/die Woche abgeschlossen ist.

                          Ja, sehr wahrscheinlich. Unter "meterReadings" werden sich die Zählerstände befinden, wobei der Juni-Wert bei Übergang zum Juli stehen bleiben wird und dann im Juli weiter gezählt wird. Man benötigt die Zählerstände, um die Differenz zwischen Monatsende und Monatsanfang (=Monats-Verbrauch) ermitteln zu können. Für die JSON-Tabelle wirst Du die Werte unter "consumed" benötigen, da diese den Verbrauch (Differenz) für den zugehörigen Zeitraum enthalten werden.

                          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

                          AxelF1977A 1 Antwort Letzte Antwort
                          0
                          • AxelF1977A AxelF1977

                            @paul53 Danke.

                            Habe es mal eingebaut, funktioniert.

                            ich konnte mir das alles nochmal genauer ansehen. Also der Ordner consumed enthält nur Werte die 0 sind. Evtl. taucht dort wirklich erst ein Wert auf, wenn der Monat/die Woche abgeschlossen ist. Aktuell ist der Monat 0. Das passt nicht wirklich zu dem, wie ich die Werte betrachten möchte. Also im Skript auf meterReadings geändert, und der aktuelle Wert ist da.

                            Auch das umbenennen über das Script läuft klasse, danke.

                            Was jetzt halt wirklich toll wäre, wenn das Script die Ordner unter 0_userdata.0.Verbrauch.Gerätename.Monate.json selbstständig anlegen würde.

                            Also von jedem "Gerät" die Ordnerstruktur mit der json Datei anlegt, es dadurch nur ein Script gibt. Aktuell müsste ich 62 Skripte anlegen, und dazu alle Datenpunkte von Hand, was einfach ewig dauert. Und pflegen ist so wohl auch nicht drin. Wenn dann neue Steckdosen kommen, muss alles wieder von Hand geändert werden.

                            Du wollstest ja noch einen Screenshot mit Daten, ich hoffe diesmal kannst Du mehr erkennen

                            006232b7-637d-4fe5-9684-839b986fdea8-image.png

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

                            @AxelF1977 sagte:

                            wenn das Script die Ordner unter 0_userdata.0.Verbrauch.Gerätename.Monate.json selbstständig anlegen würde.

                            Statt Zeile 15:

                            if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
                            else createState(idTable, JSON.stringify(table), {type: 'string'});
                            

                            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

                            AxelF1977A 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @AxelF1977 sagte in Javascript für JSON Tabelle:

                              Du wollstest ja noch einen Screenshot mit Daten

                              Es sind einfach noch zu wenige Daten.

                              @AxelF1977 sagte in Javascript für JSON Tabelle:

                              Also der Ordner consumed enthält nur Werte die 0 sind. Evtl. taucht dort wirklich erst ein Wert auf, wenn der Monat/die Woche abgeschlossen ist.

                              Ja, sehr wahrscheinlich. Unter "meterReadings" werden sich die Zählerstände befinden, wobei der Juni-Wert bei Übergang zum Juli stehen bleiben wird und dann im Juli weiter gezählt wird. Man benötigt die Zählerstände, um die Differenz zwischen Monatsende und Monatsanfang (=Monats-Verbrauch) ermitteln zu können. Für die JSON-Tabelle wirst Du die Werte unter "consumed" benötigen, da diese den Verbrauch (Differenz) für den zugehörigen Zeitraum enthalten werden.

                              AxelF1977A Offline
                              AxelF1977A Offline
                              AxelF1977
                              schrieb am zuletzt editiert von
                              #28

                              @paul53 sagte in Javascript für JSON Tabelle:

                              @AxelF1977 sagte in Javascript für JSON Tabelle:

                              Du wollstest ja noch einen Screenshot mit Daten

                              Es sind einfach noch zu wenige Daten.

                              Welche Daten benötigst Du? Dann probiere natürlich diese zu zeigen. Auf dem Screenshot sind die Werte die ein Ordner eines Datenpunktes hergibt. Viel mehr gibt ein Ordner im sourceanalytix nicht her. Es sei denn ich kann noch weitere Optionen übers Admin Menü einblenden.

                              @AxelF1977 sagte in Javascript für JSON Tabelle:

                              Also der Ordner consumed enthält nur Werte die 0 sind. Evtl. taucht dort wirklich erst ein Wert auf, wenn der Monat/die Woche abgeschlossen ist.

                              Ja, sehr wahrscheinlich. Unter "meterReadings" werden sich die Zählerstände befinden, wobei der Juni-Wert bei Übergang zum Juli stehen bleiben wird und dann im Juli weiter gezählt wird. Man benötigt die Zählerstände, um die Differenz zwischen Monatsende und Monatsanfang (=Monats-Verbrauch) ermitteln zu können. Für die JSON-Tabelle wirst Du die Werte unter "consumed" benötigen, da diese den Verbrauch (Differenz) für den zugehörigen Zeitraum enthalten werden.

                              Verstehe. Dann scheint consumption richtig zu sein, auch wenn da gerade noch alle Werte 0 sind. Das müsste ich dann nächste Woche mal beobachten, der Monatswechsel ist jetzt nicht mehr weit.

                              Ich leihe mir mal einen Screenshot aus dem Forum.

                              Bild Text

                              Hier ist wirklich zu sehen, das unter Meter_Radings die Werte aufaddiert werden, bei consumption jeder Monat einzeln betrachtet wird. Differenz von 03_March zu 04_April ist der Wert von Current_month bei consumption.

                              ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                              1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @AxelF1977 sagte:

                                wenn das Script die Ordner unter 0_userdata.0.Verbrauch.Gerätename.Monate.json selbstständig anlegen würde.

                                Statt Zeile 15:

                                if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
                                else createState(idTable, JSON.stringify(table), {type: 'string'});
                                
                                AxelF1977A Offline
                                AxelF1977A Offline
                                AxelF1977
                                schrieb am zuletzt editiert von
                                #29

                                @paul53 sagte in Javascript für JSON Tabelle:

                                @AxelF1977 sagte:

                                wenn das Script die Ordner unter 0_userdata.0.Verbrauch.Gerätename.Monate.json selbstständig anlegen würde. Statt Zeile 15:

                                if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
                                else createState(idTable, JSON.stringify(table), {type: 'string'});
                                

                                Cool :+1: Funktioniert super. Danke

                                Da es toll wäre, wenn es nur ein Skript pro Monat und eines pro Wochen geben würde, kann das Script nicht jeden Ordner in SA durchgehen und dann für jede ID diese Ordnerstrucktur anlegen?

                                54278e75-1c55-4e04-b7d8-548300665d0b-image.png

                                0_userdata.0.Verbrauch.ID.Monate.json
                                

                                ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                                1 Antwort Letzte Antwort
                                0
                                • AxelF1977A Offline
                                  AxelF1977A Offline
                                  AxelF1977
                                  schrieb am zuletzt editiert von
                                  #30

                                  Ich habe mal ein wenig gebastelt, und bin jetzt bei folgendem Ergebnis. Ist zwar jetzt viel Handarbeit, da die Scripte manuell kopiert und angelegt werden müssen (mal gucken wie lange das dauert), aber das Ergebnis zählt.

                                  Script Monate

                                  var d = new Date();
                                  var n = d.getFullYear();
                                  const idTable = '0_userdata.0.Verbrauch.AlleVerbauchertotal.' + n + '.consumed.Monate.json'; // Vorschlag ID JSON-Tabelle
                                  const monate = ['01 Januar','02 Februar','03 März','04 April','05 Mai','06 Juni','07 Juli','08 August','07 September','10 Oktober','11 November','12 Dezember'];
                                   
                                  var select = $('sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.consumed.months.*'); // Geräte-ID ersetzen
                                  var ids = []; 
                                  var table = [];
                                  select.each(function(id, i) {
                                      ids[i] = id;
                                      table[i] = {};
                                      let idx = parseInt(id.substring(id.lastIndexOf('.') + 1)) - 1;
                                      let monat = monate[idx];
                                      table[i].Name = monat + ' ' + id.split('.')[3]; // z.B. "Februar 2020"
                                      table[i].Wert = getState(id).val;
                                  });
                                  if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
                                  else createState(idTable, JSON.stringify(table), {type: 'string'});
                                   
                                  on(ids, function(dp) {
                                      let idx = ids.indexOf(dp.id);
                                      table[idx].Wert = dp.state.val;
                                      setState(idTable, JSON.stringify(table), true);
                                  });
                                  

                                  Script Wochen

                                  var d = new Date();
                                  var n = d.getFullYear();
                                  const idTable = '0_userdata.0.Verbrauch.AlleVerbauchertotal.' + n + '.consumed.Weeks.json'; // Vorschlag ID JSON-Tabelle
                                  //const monate = ['01 Januar','02 Februar','03 März','04 April','05 Mai','06 Juni','07 Juli','08 August','07 September','10 Oktober','11 November','12 Dezember'];
                                   
                                  var select = $('sourceanalytix.0.0_userdata__0__Berechnungen__AlleVerbauchermitGosund.2020.consumed.weeks.*'); // Geräte-ID ersetzen
                                  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;
                                  });
                                  if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
                                  else createState(idTable, JSON.stringify(table), {type: 'string'});
                                   
                                  on(ids, function(dp) {
                                      let idx = ids.indexOf(dp.id);
                                      table[idx].Wert = dp.state.val;
                                      setState(idTable, JSON.stringify(table), true);
                                  });
                                  

                                  Ordnerstruktur Scripte (das dann für aktuell 62 Ordner) mehr kommen noch dazu
                                  d6bfd9e6-cdcc-4ff1-856d-3b4468573680-image.png

                                  Ordnerstruktur nachdem alles angelegt ist
                                  4a52bc7b-7b61-4f48-a342-2288154d991b-image.png

                                  ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                                  1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @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);
                                    });
                                    
                                    etvE Offline
                                    etvE Offline
                                    etv
                                    schrieb am zuletzt editiert von
                                    #31

                                    Hallo @paul53 ,

                                    ich bin bei der Suche auf diesen Threat gestoßen und hab noch eine Frage dazu:

                                    der Teil in der on(ids ...Funktion wird gebraucht um Änderungen der Datenpunkte in die Tabelle zu übernehmen, oder?

                                    Und der erste Teil legt die Tabelle mit den aktuellen Inhalten der Datenpunkte an, oder?

                                    Brauch für meinen 3d-Drucker auch eine Funktion, die meine Daten aus Octoprint und Energieverbrauch "tabellentauglich" für VIS aufbereitet, weil aktuell hab ich in jedem Datenpunkt nur mittels JSON.stringify eine "Daten-Wurst" im Format ["wert1","wert2","wert3"] liegen.

                                    Liebe Grüße
                                    Tom

                                    …ist schon sehr lange begeisterter ioBroker Nutzer! 1x zu Hause und 1x auf der Alm. ioBroker ist das 'Hirn' des Smarthome und steuert HomeMatic und Shellys, loggt was so passiert, zeigt es auf Tabletts schön an und ermöglicht mir via Cloud Adapter den Fernzugriff...

                                    paul53P 1 Antwort Letzte Antwort
                                    0
                                    • etvE etv

                                      Hallo @paul53 ,

                                      ich bin bei der Suche auf diesen Threat gestoßen und hab noch eine Frage dazu:

                                      der Teil in der on(ids ...Funktion wird gebraucht um Änderungen der Datenpunkte in die Tabelle zu übernehmen, oder?

                                      Und der erste Teil legt die Tabelle mit den aktuellen Inhalten der Datenpunkte an, oder?

                                      Brauch für meinen 3d-Drucker auch eine Funktion, die meine Daten aus Octoprint und Energieverbrauch "tabellentauglich" für VIS aufbereitet, weil aktuell hab ich in jedem Datenpunkt nur mittels JSON.stringify eine "Daten-Wurst" im Format ["wert1","wert2","wert3"] liegen.

                                      Liebe Grüße
                                      Tom

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

                                      @etv sagte:

                                      der Teil in der on(ids ...Funktion wird gebraucht um Änderungen der Datenpunkte in die Tabelle zu übernehmen, oder?

                                      Ja, wenn sich Werte ändern, wird darauf reagiert.

                                      @etv sagte in Javascript für JSON Tabelle:

                                      Und der erste Teil legt die Tabelle mit den aktuellen Inhalten der Datenpunkte an, oder?

                                      Ja.

                                      @etv sagte in Javascript für JSON Tabelle:

                                      "Daten-Wurst" im Format ["wert1","wert2","wert3"]

                                      Bitte komplettes JSON in Code tags posten. Wie soll die JsonTable aussehen ?

                                      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

                                      etvE 1 Antwort Letzte Antwort
                                      0
                                      • paul53P paul53

                                        @etv sagte:

                                        der Teil in der on(ids ...Funktion wird gebraucht um Änderungen der Datenpunkte in die Tabelle zu übernehmen, oder?

                                        Ja, wenn sich Werte ändern, wird darauf reagiert.

                                        @etv sagte in Javascript für JSON Tabelle:

                                        Und der erste Teil legt die Tabelle mit den aktuellen Inhalten der Datenpunkte an, oder?

                                        Ja.

                                        @etv sagte in Javascript für JSON Tabelle:

                                        "Daten-Wurst" im Format ["wert1","wert2","wert3"]

                                        Bitte komplettes JSON in Code tags posten. Wie soll die JsonTable aussehen ?

                                        etvE Offline
                                        etvE Offline
                                        etv
                                        schrieb am zuletzt editiert von
                                        #33

                                        @paul53, OK danke!

                                        Tabelle ist noch im "Rohzustand" und nicht fertiggedacht.....wenn ich das Projekt angehe, dann poste ich das da - herzlichen Dank!!

                                        Liebe Grüße
                                        Tom

                                        …ist schon sehr lange begeisterter ioBroker Nutzer! 1x zu Hause und 1x auf der Alm. ioBroker ist das 'Hirn' des Smarthome und steuert HomeMatic und Shellys, loggt was so passiert, zeigt es auf Tabletts schön an und ermöglicht mir via Cloud Adapter den Fernzugriff...

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


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        376

                                        Online

                                        32.5k

                                        Benutzer

                                        81.7k

                                        Themen

                                        1.3m

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

                                        • Du hast noch kein Konto? Registrieren

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