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

                                  743

                                  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