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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    697

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    637

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Javascript für JSON Tabelle

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptmonitoring
33 Beiträge 3 Kommentatoren 2.7k 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.
  • 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

                              685

                              Online

                              32.6k

                              Benutzer

                              81.9k

                              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