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. Off Topic
  4. 24h-Verteilung des Verbrauchs über 1 Jahr in Grafana

NEWS

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

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    554

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

Geplant Angeheftet Gesperrt Verschoben Off Topic
12 Beiträge 4 Kommentatoren 1.1k 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.
  • 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
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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, lxc für IoB, InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies, Zigbee etc

      1 Antwort Letzte Antwort
      0
      • W Offline
        W Offline
        WasserStrom
        schrieb am zuletzt editiert von
        #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 Antworten Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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, lxc für IoB, InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies, Zigbee etc

            W 1 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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, lxc für IoB, InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies, Zigbee etc

              XsevX 1 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #9

                @ullij Super danke, schau ich mir an.

                1 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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, lxc für IoB, InfluxDB2, Grafana, u.a. *** Homematic & Homematic IP, Shellies, Zigbee etc

                    W 1 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 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

                      373

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      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