Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. 24h-Verteilung des Verbrauchs über 1 Jahr in Grafana

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

24h-Verteilung des Verbrauchs über 1 Jahr in Grafana

24h-Verteilung des Verbrauchs über 1 Jahr in Grafana

Scheduled Pinned Locked Moved Off Topic
12 Posts 4 Posters 1.1k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    WasserStrom
    wrote on last edited by
    #1

    Hallo,

    ich habe mir ein Blockly gebaut, um die InfluxDB-Daten (Impulse vom Stromzähler) statistisch nach Tageszeit auszuwerten, um zu wissen, um wieviel Uhr meistens viel Strom verbraucht wird.

    Wie kann ich jetzt diese Tagesstatistik in Grafana darstellen lassen?
    Sollte ich am besten 1 Datenpunkt mit 24 Werten erzeugen? Die müsste ich beim nächsten Start des Skripts überschreiben... ich stehe auf dem Schlauch.

    Grüße,
    Philipp

    Das Ergebnis sieht so aus:

    22:20:53.074	info	javascript.0 (26023) script.js.tagesstatistik_wc: Tagesstatistik vom 01.05.22 bis 01.05.23
    22:20:53.078	info	javascript.0 (26023) script.js.tagesstatistik_wc: 0 Uhr: 0.4 %
    22:20:53.080	info	javascript.0 (26023) script.js.tagesstatistik_wc: 1 Uhr: 0.6 %
    22:20:53.082	info	javascript.0 (26023) script.js.tagesstatistik_wc: 2 Uhr: 1.2 %
    22:20:53.084	info	javascript.0 (26023) script.js.tagesstatistik_wc: 3 Uhr: 0.6 %
    22:20:53.086	info	javascript.0 (26023) script.js.tagesstatistik_wc: 4 Uhr: 1.2 %
    22:20:53.088	info	javascript.0 (26023) script.js.tagesstatistik_wc: 5 Uhr: 2.8 %
    22:20:53.089	info	javascript.0 (26023) script.js.tagesstatistik_wc: 6 Uhr: 2.4 %
    22:20:53.091	info	javascript.0 (26023) script.js.tagesstatistik_wc: 7 Uhr: 2.6 %
    22:20:53.094	info	javascript.0 (26023) script.js.tagesstatistik_wc: 8 Uhr: 14.2 %
    22:20:53.095	info	javascript.0 (26023) script.js.tagesstatistik_wc: 9 Uhr: 4 %
    22:20:53.098	info	javascript.0 (26023) script.js.tagesstatistik_wc: 10 Uhr: 2.4 %
    22:20:53.100	info	javascript.0 (26023) script.js.tagesstatistik_wc: 11 Uhr: 2 %
    22:20:53.101	info	javascript.0 (26023) script.js.tagesstatistik_wc: 12 Uhr: 5.6 %
    22:20:53.103	info	javascript.0 (26023) script.js.tagesstatistik_wc: 13 Uhr: 14.2 %
    22:20:53.105	info	javascript.0 (26023) script.js.tagesstatistik_wc: 14 Uhr: 4.4 %
    22:20:53.107	info	javascript.0 (26023) script.js.tagesstatistik_wc: 15 Uhr: 5.2 %
    22:20:53.108	info	javascript.0 (26023) script.js.tagesstatistik_wc: 16 Uhr: 13.6 %
    22:20:53.110	info	javascript.0 (26023) script.js.tagesstatistik_wc: 17 Uhr: 5.6 %
    22:20:53.112	info	javascript.0 (26023) script.js.tagesstatistik_wc: 18 Uhr: 10.2 %
    22:20:53.115	info	javascript.0 (26023) script.js.tagesstatistik_wc: 19 Uhr: 2.8 %
    22:20:53.116	info	javascript.0 (26023) script.js.tagesstatistik_wc: 20 Uhr: 1.8 %
    22:20:53.119	info	javascript.0 (26023) script.js.tagesstatistik_wc: 21 Uhr: 0.8 %
    22:20:53.120	info	javascript.0 (26023) script.js.tagesstatistik_wc: 22 Uhr: 1 %
    22:20:53.122	info	javascript.0 (26023) script.js.tagesstatistik_wc: 23 Uhr: 0.4 %
    

    Das Blockly sieht so aus:
    blockly_influxdb-statistik.png

    var ende, anfang, stundenanalyse, anzahl_datensaetze, i, result, zeit, wert, stunde;
    
    function listsRepeat(value, n) {
      var array = [];
      for (var i = 0; i < n; i++) {
        array[i] = value;
      }
      return array;
    }
    
    
    // Statistik nach Tageszeit sortiert
    // Timeshift in Tagen [0]
    ende = parseFloat((new Date().getTime())) - parseFloat(0) * 86400000;
    // Dauer in Tage [7]
    anfang = parseFloat(ende) - parseFloat(365) * 86400000;
    sendTo("influxdb.0", "getHistory", {
       "id": 'javascript.0.energycounter.ec_pulses',
       "options": {start: anfang, end: ende, aggregate: "none"}
    }, async function (result) {
        stundenanalyse = listsRepeat(0, 24);
      anzahl_datensaetze = getAttr(result, 'result').length;
      var i_end = parseFloat(anzahl_datensaetze) - 1;
      var i_inc = 1;
      if (0 > i_end) {
        i_inc = -i_inc;
      }
      for (i = 0; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) {
        // .val=value       .ts=timestamp
        zeit = getAttr(result, (['result.',i,'.ts'].join('')));
        stunde = getDateObject(zeit).getHours();
        stundenanalyse[((parseFloat(stunde) + 1) - 1)] = parseFloat(stundenanalyse[((parseFloat(stunde) + 1) - 1)]) + 1;
      }
      console.log((['Tagesstatistik vom ',formatDate(getDateObject(anfang), "DD.MM.YY"),' bis ',formatDate(getDateObject(ende), "DD.MM.YY")].join('')));
      for (i = 0; i <= 23; i++) {
        wert = stundenanalyse[((parseFloat(i) + 1) - 1)];
        console.log(([i,' Uhr: ',Math.round((parseFloat((parseFloat(wert) / anzahl_datensaetze)) * 100)*10)/10,' %'].join('')));
      }
      });
    

    U 1 Reply Last reply
    0
    • W WasserStrom

      Hallo,

      ich habe mir ein Blockly gebaut, um die InfluxDB-Daten (Impulse vom Stromzähler) statistisch nach Tageszeit auszuwerten, um zu wissen, um wieviel Uhr meistens viel Strom verbraucht wird.

      Wie kann ich jetzt diese Tagesstatistik in Grafana darstellen lassen?
      Sollte ich am besten 1 Datenpunkt mit 24 Werten erzeugen? Die müsste ich beim nächsten Start des Skripts überschreiben... ich stehe auf dem Schlauch.

      Grüße,
      Philipp

      Das Ergebnis sieht so aus:

      22:20:53.074	info	javascript.0 (26023) script.js.tagesstatistik_wc: Tagesstatistik vom 01.05.22 bis 01.05.23
      22:20:53.078	info	javascript.0 (26023) script.js.tagesstatistik_wc: 0 Uhr: 0.4 %
      22:20:53.080	info	javascript.0 (26023) script.js.tagesstatistik_wc: 1 Uhr: 0.6 %
      22:20:53.082	info	javascript.0 (26023) script.js.tagesstatistik_wc: 2 Uhr: 1.2 %
      22:20:53.084	info	javascript.0 (26023) script.js.tagesstatistik_wc: 3 Uhr: 0.6 %
      22:20:53.086	info	javascript.0 (26023) script.js.tagesstatistik_wc: 4 Uhr: 1.2 %
      22:20:53.088	info	javascript.0 (26023) script.js.tagesstatistik_wc: 5 Uhr: 2.8 %
      22:20:53.089	info	javascript.0 (26023) script.js.tagesstatistik_wc: 6 Uhr: 2.4 %
      22:20:53.091	info	javascript.0 (26023) script.js.tagesstatistik_wc: 7 Uhr: 2.6 %
      22:20:53.094	info	javascript.0 (26023) script.js.tagesstatistik_wc: 8 Uhr: 14.2 %
      22:20:53.095	info	javascript.0 (26023) script.js.tagesstatistik_wc: 9 Uhr: 4 %
      22:20:53.098	info	javascript.0 (26023) script.js.tagesstatistik_wc: 10 Uhr: 2.4 %
      22:20:53.100	info	javascript.0 (26023) script.js.tagesstatistik_wc: 11 Uhr: 2 %
      22:20:53.101	info	javascript.0 (26023) script.js.tagesstatistik_wc: 12 Uhr: 5.6 %
      22:20:53.103	info	javascript.0 (26023) script.js.tagesstatistik_wc: 13 Uhr: 14.2 %
      22:20:53.105	info	javascript.0 (26023) script.js.tagesstatistik_wc: 14 Uhr: 4.4 %
      22:20:53.107	info	javascript.0 (26023) script.js.tagesstatistik_wc: 15 Uhr: 5.2 %
      22:20:53.108	info	javascript.0 (26023) script.js.tagesstatistik_wc: 16 Uhr: 13.6 %
      22:20:53.110	info	javascript.0 (26023) script.js.tagesstatistik_wc: 17 Uhr: 5.6 %
      22:20:53.112	info	javascript.0 (26023) script.js.tagesstatistik_wc: 18 Uhr: 10.2 %
      22:20:53.115	info	javascript.0 (26023) script.js.tagesstatistik_wc: 19 Uhr: 2.8 %
      22:20:53.116	info	javascript.0 (26023) script.js.tagesstatistik_wc: 20 Uhr: 1.8 %
      22:20:53.119	info	javascript.0 (26023) script.js.tagesstatistik_wc: 21 Uhr: 0.8 %
      22:20:53.120	info	javascript.0 (26023) script.js.tagesstatistik_wc: 22 Uhr: 1 %
      22:20:53.122	info	javascript.0 (26023) script.js.tagesstatistik_wc: 23 Uhr: 0.4 %
      

      Das Blockly sieht so aus:
      blockly_influxdb-statistik.png

      var ende, anfang, stundenanalyse, anzahl_datensaetze, i, result, zeit, wert, stunde;
      
      function listsRepeat(value, n) {
        var array = [];
        for (var i = 0; i < n; i++) {
          array[i] = value;
        }
        return array;
      }
      
      
      // Statistik nach Tageszeit sortiert
      // Timeshift in Tagen [0]
      ende = parseFloat((new Date().getTime())) - parseFloat(0) * 86400000;
      // Dauer in Tage [7]
      anfang = parseFloat(ende) - parseFloat(365) * 86400000;
      sendTo("influxdb.0", "getHistory", {
         "id": 'javascript.0.energycounter.ec_pulses',
         "options": {start: anfang, end: ende, aggregate: "none"}
      }, async function (result) {
          stundenanalyse = listsRepeat(0, 24);
        anzahl_datensaetze = getAttr(result, 'result').length;
        var i_end = parseFloat(anzahl_datensaetze) - 1;
        var i_inc = 1;
        if (0 > i_end) {
          i_inc = -i_inc;
        }
        for (i = 0; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) {
          // .val=value       .ts=timestamp
          zeit = getAttr(result, (['result.',i,'.ts'].join('')));
          stunde = getDateObject(zeit).getHours();
          stundenanalyse[((parseFloat(stunde) + 1) - 1)] = parseFloat(stundenanalyse[((parseFloat(stunde) + 1) - 1)]) + 1;
        }
        console.log((['Tagesstatistik vom ',formatDate(getDateObject(anfang), "DD.MM.YY"),' bis ',formatDate(getDateObject(ende), "DD.MM.YY")].join('')));
        for (i = 0; i <= 23; i++) {
          wert = stundenanalyse[((parseFloat(i) + 1) - 1)];
          console.log(([i,' Uhr: ',Math.round((parseFloat((parseFloat(wert) / anzahl_datensaetze)) * 100)*10)/10,' %'].join('')));
        }
        });
      

      U Offline
      U Offline
      UlliJ
      wrote on last edited by
      #2

      @wasserstrom
      Hi, das Histogramm sollte das sein was Du suchst. Leider gerade keine Zeit für ein Beispiel
      VG UlliJ

      Proxmox auf iNuc, VM's IOB, Raspberrymatic, lxc für InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies etc

      Lucifor1976L 1 Reply Last reply
      0
      • U UlliJ

        @wasserstrom
        Hi, das Histogramm sollte das sein was Du suchst. Leider gerade keine Zeit für ein Beispiel
        VG UlliJ

        Lucifor1976L Offline
        Lucifor1976L Offline
        Lucifor1976
        wrote on last edited by
        #3

        Das brauchst du garnicht so kompliziert zu tun.
        Das kann Grafana direkt.

        Ein Hochzähler reicht, also ein Wert der permanent größer wird und keine negativen Werte bekommen kann.

        In Grafana dann Bar, im Query last und difference einstellen, Timezone auf Europe/Berlin stellen und ralative Zeit auf 1d oder was immer du willst.

        ioBroker@Debian 12 VM auf Proxmox 8.4.1 | HP Proliant DL380G9 | DS923+ 10TB | RS4021+ 144TB | Unifi Netzwerk 6AP, 3 EtagenSwitche | Anycubic MegaS+Kossel+Chiron, Elektroniker und Funkamateur

        U 1 Reply Last reply
        0
        • Lucifor1976L Lucifor1976

          Das brauchst du garnicht so kompliziert zu tun.
          Das kann Grafana direkt.

          Ein Hochzähler reicht, also ein Wert der permanent größer wird und keine negativen Werte bekommen kann.

          In Grafana dann Bar, im Query last und difference einstellen, Timezone auf Europe/Berlin stellen und ralative Zeit auf 1d oder was immer du willst.

          U Offline
          U Offline
          UlliJ
          wrote on last edited by
          #4

          @lucifor1976
          das würde dann in etwa so etwas ergeben
          ad83564c-dee7-4846-a4c9-6f28044c15f3-grafik.png

          die Abfrage dazu in InfluxQL (für meinen DP)

          SELECT non_negative_difference(last(cumulative_sum)) FROM(
          SELECT cumulative_sum(non_negative_difference(last("value"))) FROM "0_userdata.0.4000_EnergieErzeugung.Zaehler.NetzbezugTotal" WHERE $timeFilter GROUP BY time(5m)
          ) WHERE $timeFilter GROUP BY time(1h) 
          

          sieht aber nur für 24h so aus. Wenn mehr als ein Tag ausgewählt wird sieht das anders aus
          a7133359-fc1e-414f-8a84-d0724b6eead2-grafik.png

          Glaube @WasserStrom möchte so etwas haben
          6d52fd6d-fbf4-4c42-8565-1c60147a0805-grafik.png
          aber mit der Uhrzeit auf der X-Achse und den Bezug summiert auf der Y-Achse.
          Das habe ich aber bislang nicht hinbekommen. Vielleicht sind da ja andere die helfen können.

          Proxmox auf iNuc, VM's IOB, Raspberrymatic, lxc für InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies etc

          1 Reply Last reply
          0
          • W Offline
            W Offline
            WasserStrom
            wrote on last edited by
            #5

            @ullij , @Lucifor1976

            Wow, das sind ja super Funktionen. Aber genau: ich suche eine Funktion, die alle Mittelwerte für zB. 1 Uhr über die letzten 365 Tage addiert. Was jetzt $timeFilter macht habe ich auch nach Recherche im Internet nicht ganz verstanden.

            Ich könnte natürlich auch mein Skript für die Analyse laufen lassen und dann mit falschen Zeitwerten (ein Wert für 1 Uhr, einen für 2 Uhr und so weiter) abspeichern. Kann man überhaupt die Zeitstempel der Datenwerte manipulieren?

            XsevX U 2 Replies Last reply
            0
            • W WasserStrom

              @ullij , @Lucifor1976

              Wow, das sind ja super Funktionen. Aber genau: ich suche eine Funktion, die alle Mittelwerte für zB. 1 Uhr über die letzten 365 Tage addiert. Was jetzt $timeFilter macht habe ich auch nach Recherche im Internet nicht ganz verstanden.

              Ich könnte natürlich auch mein Skript für die Analyse laufen lassen und dann mit falschen Zeitwerten (ein Wert für 1 Uhr, einen für 2 Uhr und so weiter) abspeichern. Kann man überhaupt die Zeitstempel der Datenwerte manipulieren?

              XsevX Offline
              XsevX Offline
              Xsev
              wrote on last edited by
              #6

              Das ist ja eine super Übersicht, kann mir zufällig jemand den Abfrage Code für eine Maria DB geben um das Diagramm wie oben abgebildet mit dem stündlichen Verbrauch darzustellen?

              U 1 Reply Last reply
              0
              • W WasserStrom

                @ullij , @Lucifor1976

                Wow, das sind ja super Funktionen. Aber genau: ich suche eine Funktion, die alle Mittelwerte für zB. 1 Uhr über die letzten 365 Tage addiert. Was jetzt $timeFilter macht habe ich auch nach Recherche im Internet nicht ganz verstanden.

                Ich könnte natürlich auch mein Skript für die Analyse laufen lassen und dann mit falschen Zeitwerten (ein Wert für 1 Uhr, einen für 2 Uhr und so weiter) abspeichern. Kann man überhaupt die Zeitstempel der Datenwerte manipulieren?

                U Offline
                U Offline
                UlliJ
                wrote on last edited by
                #7

                @wasserstrom sagte in 24h-Verteilung des Verbrauchs über 1 Jahr in Grafana:

                Ich könnte natürlich auch mein Skript für die Analyse laufen lassen und dann mit falschen Zeitwerten (ein Wert für 1 Uhr, einen für 2 Uhr und so weiter) abspeichern. Kann man überhaupt die Zeitstempel der Datenwerte manipulieren?

                Da Du doch ohnehin schon ein script hast:
                erweitere das um ein Json in einen DP zu schreiben und nimm das JSON-Chart Widget von material design. Kategorien 1-23 mit jeweils einem Verbrauchswert. Die Daten kannst Du ja weiter in der InfluxDB halten und für andere Dinge verwenden. Das Chart habe ich selbst nicht in Gebrauch und kann da nicht wirklich helfen...nur als Idee

                Proxmox auf iNuc, VM's IOB, Raspberrymatic, lxc für InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies etc

                W 1 Reply Last reply
                0
                • XsevX Xsev

                  Das ist ja eine super Übersicht, kann mir zufällig jemand den Abfrage Code für eine Maria DB geben um das Diagramm wie oben abgebildet mit dem stündlichen Verbrauch darzustellen?

                  U Offline
                  U Offline
                  UlliJ
                  wrote on last edited by
                  #8

                  @xsev
                  da bei mir seit 3 Jahren Influx läuft..habe ich vergessen wie das damals so war. Aber hier der Thread sieht ganz gut aus
                  https://forum.iobroker.net/topic/10735/grafana-abfragen-von-iobroker-mysql

                  Proxmox auf iNuc, VM's IOB, Raspberrymatic, lxc für InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies etc

                  XsevX 1 Reply Last reply
                  1
                  • U UlliJ

                    @xsev
                    da bei mir seit 3 Jahren Influx läuft..habe ich vergessen wie das damals so war. Aber hier der Thread sieht ganz gut aus
                    https://forum.iobroker.net/topic/10735/grafana-abfragen-von-iobroker-mysql

                    XsevX Offline
                    XsevX Offline
                    Xsev
                    wrote on last edited by
                    #9

                    @ullij Super danke, schau ich mir an.

                    1 Reply Last reply
                    0
                    • U UlliJ

                      @wasserstrom sagte in 24h-Verteilung des Verbrauchs über 1 Jahr in Grafana:

                      Ich könnte natürlich auch mein Skript für die Analyse laufen lassen und dann mit falschen Zeitwerten (ein Wert für 1 Uhr, einen für 2 Uhr und so weiter) abspeichern. Kann man überhaupt die Zeitstempel der Datenwerte manipulieren?

                      Da Du doch ohnehin schon ein script hast:
                      erweitere das um ein Json in einen DP zu schreiben und nimm das JSON-Chart Widget von material design. Kategorien 1-23 mit jeweils einem Verbrauchswert. Die Daten kannst Du ja weiter in der InfluxDB halten und für andere Dinge verwenden. Das Chart habe ich selbst nicht in Gebrauch und kann da nicht wirklich helfen...nur als Idee

                      W Offline
                      W Offline
                      WasserStrom
                      wrote on last edited by
                      #10

                      @ullij

                      Sorry, ich musste die letzten Tage meine Iobroker-Installation reparieren, weil sie extrem langsam geworden war.

                      Super Idee mit dem JSON und dann im Widget anzeigen. So sollte es gehen.

                      Aber ich habe bei mir aus Performance-Gründen (ich habe einen Raspberry 1b) VIS ausgeschaltet und lasse alles auf Grafana anzeigen.

                      Wie kann ich also ein Array/Liste (zB. {0.1;0.5;0.3;0.1}) oder von mir aus JSON in Grafana anzeigen lassen?
                      Mit dem Histogramm statt Timeseries vielleicht?
                      Gibt es eine Transformation, die aus einer Liste eine Wertefolge machen kann?

                      Bisher habe beim probieren in Grafana noch keine Idee gefunden.

                      U 1 Reply Last reply
                      0
                      • W WasserStrom

                        @ullij

                        Sorry, ich musste die letzten Tage meine Iobroker-Installation reparieren, weil sie extrem langsam geworden war.

                        Super Idee mit dem JSON und dann im Widget anzeigen. So sollte es gehen.

                        Aber ich habe bei mir aus Performance-Gründen (ich habe einen Raspberry 1b) VIS ausgeschaltet und lasse alles auf Grafana anzeigen.

                        Wie kann ich also ein Array/Liste (zB. {0.1;0.5;0.3;0.1}) oder von mir aus JSON in Grafana anzeigen lassen?
                        Mit dem Histogramm statt Timeseries vielleicht?
                        Gibt es eine Transformation, die aus einer Liste eine Wertefolge machen kann?

                        Bisher habe beim probieren in Grafana noch keine Idee gefunden.

                        U Offline
                        U Offline
                        UlliJ
                        wrote on last edited by
                        #11

                        @wasserstrom
                        Hi, hatte die letzten Tage auch keine Zeit.

                        Json in Grafana sollte wie folgt gehen
                        Datasource JSON in Grafana einrichten (IP ist die vom Iobroker)
                        bf9b67ed-7e0b-4dae-9a6b-dd2edb391af5-grafik.png

                        Dann neues Panel anlegen mit Datenquelle "JSON" und dann bei Metric den Datenpunkt wählen
                        3296fca7-5a46-4e6c-97ff-7ea4cc9e67c8-grafik.png
                        Danach kannst Du ja mit den Charttypen spielen wie Du willst
                        Hoffe das hilft
                        VG

                        Proxmox auf iNuc, VM's IOB, Raspberrymatic, lxc für InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies etc

                        W 1 Reply Last reply
                        0
                        • U UlliJ

                          @wasserstrom
                          Hi, hatte die letzten Tage auch keine Zeit.

                          Json in Grafana sollte wie folgt gehen
                          Datasource JSON in Grafana einrichten (IP ist die vom Iobroker)
                          bf9b67ed-7e0b-4dae-9a6b-dd2edb391af5-grafik.png

                          Dann neues Panel anlegen mit Datenquelle "JSON" und dann bei Metric den Datenpunkt wählen
                          3296fca7-5a46-4e6c-97ff-7ea4cc9e67c8-grafik.png
                          Danach kannst Du ja mit den Charttypen spielen wie Du willst
                          Hoffe das hilft
                          VG

                          W Offline
                          W Offline
                          WasserStrom
                          wrote on last edited by
                          #12

                          @ullij
                          Hi, das war es nicht wonach ich suchte. Ich habe es jetzt herausgefunden.

                          Ich habe es jetzt so gelöst, dass ich

                          • einen Datenpunkt im Format number angelegt habe und in InfluxDB speichern lasse
                          • im Skript bei jedem Aufruf alle historischen Daten lösche
                          • im Skript 24 Daten (prozentualer Verbrauch zu dieser Tageszeit) speichere (und das "from" des Datenpunkts missbrauche um meinen eigenen Text/Beschreibung zu dem entsprechenden Wert/Verbrauch zu speichern)
                          • in Grafana sowohl das "from" als auch "value" in einem Table anzeigen lasse (und die echte Zeit ausblende)

                          So siehts jetzt in Grafana aus:
                          33fb0238-980e-4184-8c43-78926abfa18f-grafik.png

                          Das ist das Skript (JS-export vom blockly):

                          var wert, ende, anfang, wert_prozentual, stundenanalyse, anzahl_datensaetze, i, result, zeit, stunde, j, zeitstempel, ursprung;
                          
                          function listsRepeat(value, n) {
                           var array = [];
                           for (var i = 0; i < n; i++) {
                             array[i] = value;
                           }
                           return array;
                          }
                          
                          
                          // Statistik nach Tageszeit sortiert
                          // Timeshift in Tagen [0]
                          ende = parseFloat((new Date().getTime())) - parseFloat(0) * 86400000;
                          // Dauer in Tage [7]
                          anfang = parseFloat(ende) - parseFloat(7) * 86400000;
                          wert_prozentual = listsRepeat(0, 24);
                          sendTo("influxdb.0", "getHistory", {
                            "id": 'javascript.0.energycounter.ec_pulses',
                            "options": {start: anfang, end: ende, aggregate: "none"}
                          }, async function (result) {
                             stundenanalyse = listsRepeat(0, 24);
                           anzahl_datensaetze = getAttr(result, 'result').length;
                           var i_end = parseFloat(anzahl_datensaetze) - 1;
                           var i_inc = 1;
                           if (0 > i_end) {
                             i_inc = -i_inc;
                           }
                           for (i = 0; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) {
                             // .val=value       .ts=timestamp
                             zeit = getAttr(result, (['result.',i,'.ts'].join('')));
                             stunde = getDateObject(zeit).getHours();
                             // Analyse in welcher Stunde des Tages der Energiepuls kam
                             stundenanalyse[((parseFloat(stunde) + 1) - 1)] = parseFloat(stundenanalyse[((parseFloat(stunde) + 1) - 1)]) + 1;
                           }
                           console.log((['Tagesstatistik vom ',formatDate(getDateObject(anfang), "JJJJ.MM.TT SS:mm:ss.sss"),' bis ',formatDate(getDateObject(ende), "JJJJ.MM.TT SS:mm:ss.sss")].join('')));
                           for (i = 0; i <= 23; i++) {
                             wert = stundenanalyse[((parseFloat(i) + 1) - 1)];
                             wert_prozentual[((parseFloat(i) + 1) - 1)] = Math.round((parseFloat((parseFloat(wert) / anzahl_datensaetze)) * 100)*10)/10;
                             console.log(([i,' Uhr: ',wert_prozentual[((parseFloat(i) + 1) - 1)],' %'].join('')));
                           }
                           // Jetzt wird die Statistik in InfluxDB geschrieben
                           sendTo("influxdb.0", "deleteAll", {
                              "id": 'javascript.0.test.statistiker'
                           });
                           for (j = 0; j <= 23; j++) {
                             zeitstempel = parseFloat(1685311202800) + parseFloat(j) * 60000;
                             wert = wert_prozentual[((parseFloat(j) + 1) - 1)];
                             console.log(('Ergebnis der Anbfrage: ' + String(wert)));
                             ursprung = String(('' + j)) + ' Uhr';
                             sendTo("influxdb.0", "storeState", {
                                "id": 'javascript.0.test.statistiker',
                                "state": {ts: zeitstempel, val: wert, ack: false, from: ursprung}
                             }, async function (result) {
                                 // Rückmeldung von influxDB ausgeben:
                               });
                           }
                           });
                          

                          Die zwei Queries in Grafana:

                          SELECT "from" FROM "autogen"."javascript.0.test.statistiker" WHERE $timeFilter
                          SELECT "value" FROM "autogen"."javascript.0.test.statistiker" WHERE $timeFilter
                          

                          Und hier die anderen Einstellungen (overrides und transformations) in Grafana:
                          ea635dd2-270a-4690-8e64-e19f069e4483-grafik.png

                          Wieso schreibe ich das so ausführlich? Vielleicht ist es ja auch für andere Leute interessant:

                          • Grafana zur Visualisierung der Iobroker-Daten zu nutzen -> Grafana kann man auf dem PC installieren und so Ressourcen beim Iobroker-Rechner (zB Raspberry 1b bei mir) sparen
                          • Beliebigen Text (zB. der letzte Emailabsender, die letzte Zeile der Iobroker-Log-Datei oder einen Zufallstext zur Begrüßung) im Grafana-Dashboard anzuzeigen (ist im Skript die Kategorie zB. "7 Uhr")

                          Viel Spass damit! 🙂

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          597

                          Online

                          32.4k

                          Users

                          81.3k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe