Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Grafana
  5. Grafana Zeitstempel für bar anpassen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    513

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.3k

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

Grafana Zeitstempel für bar anpassen

Scheduled Pinned Locked Moved Grafana
9 Posts 2 Posters 834 Views 2 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.
  • G Offline
    G Offline
    Gaunt
    wrote on last edited by
    #1

    Hallo Zusammen,

    ich bin mir nicht sicher ob das Topic passt. Wenn es ein bessere gibt, bitte verschieben.
    Ich bau mir gerade ein Grafana bar charts zusammen, in dem mir die 3 verschiedene Daten angezeigt werden sollen:

    1. Strom aus dem Netz (gelb)
    2. Aus der Solaranlage verwendeter Strom (grün)
    3. Von der Solaranlage ins Netz eingespeist (blau)
      Alle Farben werden noch überarbeitet ;-)

    Für die abgelaufenen Monate funktioniert das stacking wunderbar. Für den aktuell laufenden Monitor funktioniert es leider nicht. Ursache ist (nach meiner Vermutung) der Zeitstempel in der InfluxDB. Dieser liegt bei den abgelaufenen Monaten beim auf dem letzten Tag im Monat um 21:00 (Z? UTC?).
    Hat jemand ne Idee wie ich die 3 einzelnen Bars stacken kann?
    mir würde dazu einfallen den Zeitstempel dieses Messpunktes zu manipulieren (Uhrzeit abschneiden).
    Gibt es noch andere Möglichkeiten und weis jemand wie ich das durchführen kann?

    a59f216b-4d9f-4cc7-afc7-39ee28aaa5ca-image.png
    dd05e890-38c7-4b8c-8148-521a9a5ac591-image.png

    Ich freue mich über antworten, werde allerdings erst morgen Abend zum Antworten kommen.

    Marc BergM 1 Reply Last reply
    0
    • G Gaunt

      Hallo Zusammen,

      ich bin mir nicht sicher ob das Topic passt. Wenn es ein bessere gibt, bitte verschieben.
      Ich bau mir gerade ein Grafana bar charts zusammen, in dem mir die 3 verschiedene Daten angezeigt werden sollen:

      1. Strom aus dem Netz (gelb)
      2. Aus der Solaranlage verwendeter Strom (grün)
      3. Von der Solaranlage ins Netz eingespeist (blau)
        Alle Farben werden noch überarbeitet ;-)

      Für die abgelaufenen Monate funktioniert das stacking wunderbar. Für den aktuell laufenden Monitor funktioniert es leider nicht. Ursache ist (nach meiner Vermutung) der Zeitstempel in der InfluxDB. Dieser liegt bei den abgelaufenen Monaten beim auf dem letzten Tag im Monat um 21:00 (Z? UTC?).
      Hat jemand ne Idee wie ich die 3 einzelnen Bars stacken kann?
      mir würde dazu einfallen den Zeitstempel dieses Messpunktes zu manipulieren (Uhrzeit abschneiden).
      Gibt es noch andere Möglichkeiten und weis jemand wie ich das durchführen kann?

      a59f216b-4d9f-4cc7-afc7-39ee28aaa5ca-image.png
      dd05e890-38c7-4b8c-8148-521a9a5ac591-image.png

      Ich freue mich über antworten, werde allerdings erst morgen Abend zum Antworten kommen.

      Marc BergM Offline
      Marc BergM Offline
      Marc Berg
      Most Active
      wrote on last edited by
      #2

      @gaunt sagte in Grafana Zeitstempel für bar anpassen:

      Gibt es noch andere Möglichkeiten und weis jemand wie ich das durchführen kann?

      Zeig mal bitte die Flux-Queries.

      NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

      Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

      Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

      1 Reply Last reply
      0
      • G Offline
        G Offline
        Gaunt
        wrote on last edited by
        #3

        @marc-berg said in Grafana Zeitstempel für bar anpassen:

        Zeig mal bitte die Flux-Queries.

        Hier die Querie von der Solarerzeugung:

        import "timezone"
        option location = timezone.location(name: "Europe/Berlin")
        from(bucket: "IOBroker")
          |> range(start: -10mo, stop: now())
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.Strom.Historie.AktuellerMonat.StromSolarVerwendet")
          |> filter(fn: (r) => r["_field"] == "value")
          |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
          |> yield(name: "Solar")
        

        Hier ist die vom Netzbezug:

        import "timezone"
        option location = timezone.location(name: "Europe/Berlin")
        from(bucket: "IOBroker")
          |> range(start: -10mo, stop: now())
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.Strom.Historie.AktuellerMonat.StromBezug")
          |> filter(fn: (r) => r["_field"] == "value")
          |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
          |> yield(name: "bezug")
        

        Und hier von der Einspeisung aus der Solaranlage ins Netz:

        import "timezone"
        option location = timezone.location(name: "Europe/Berlin")
        from(bucket: "IOBroker")
          |> range(start: -10mo, stop: now())
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.Strom.Historie.AktuellerMonat.StromEingespeist")
          |> filter(fn: (r) => r["_field"] == "value")
          |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
            |> map(fn: (r) => ({ r with _value: r._value * -1.0 }))
          |> yield(name: "Eingespeist")
        

        Alle Datenpunkte werden im IOBroker geschrieben wenn sich der Wert (z.B. Netzbezug) erhöht und vom IOBroker wird alle 10min in die InfluxDB geschrieben.

        Marc BergM 1 Reply Last reply
        0
        • G Gaunt

          @marc-berg said in Grafana Zeitstempel für bar anpassen:

          Zeig mal bitte die Flux-Queries.

          Hier die Querie von der Solarerzeugung:

          import "timezone"
          option location = timezone.location(name: "Europe/Berlin")
          from(bucket: "IOBroker")
            |> range(start: -10mo, stop: now())
            |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.Strom.Historie.AktuellerMonat.StromSolarVerwendet")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
            |> yield(name: "Solar")
          

          Hier ist die vom Netzbezug:

          import "timezone"
          option location = timezone.location(name: "Europe/Berlin")
          from(bucket: "IOBroker")
            |> range(start: -10mo, stop: now())
            |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.Strom.Historie.AktuellerMonat.StromBezug")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
            |> yield(name: "bezug")
          

          Und hier von der Einspeisung aus der Solaranlage ins Netz:

          import "timezone"
          option location = timezone.location(name: "Europe/Berlin")
          from(bucket: "IOBroker")
            |> range(start: -10mo, stop: now())
            |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.Strom.Historie.AktuellerMonat.StromEingespeist")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
              |> map(fn: (r) => ({ r with _value: r._value * -1.0 }))
            |> yield(name: "Eingespeist")
          

          Alle Datenpunkte werden im IOBroker geschrieben wenn sich der Wert (z.B. Netzbezug) erhöht und vom IOBroker wird alle 10min in die InfluxDB geschrieben.

          Marc BergM Offline
          Marc BergM Offline
          Marc Berg
          Most Active
          wrote on last edited by
          #4

          @gaunt sagte in Grafana Zeitstempel für bar anpassen:

          |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)

          Ich bin kein Fan von Offsets in den Queries, was soll damit erreicht werden?

          Versuche mal die drei Zeilen

          |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
          

          auszutauschen durch

          |> aggregateWindow(every: 1mo, fn: last, createEmpty: false, timeSrc: "_start")
          

          Ohne die Quelldaten ist es natürlich etwas schwierig.

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          G 1 Reply Last reply
          0
          • Marc BergM Marc Berg

            @gaunt sagte in Grafana Zeitstempel für bar anpassen:

            |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)

            Ich bin kein Fan von Offsets in den Queries, was soll damit erreicht werden?

            Versuche mal die drei Zeilen

            |> aggregateWindow(every: 1mo, offset: -10s, fn: last, createEmpty: false)
            

            auszutauschen durch

            |> aggregateWindow(every: 1mo, fn: last, createEmpty: false, timeSrc: "_start")
            

            Ohne die Quelldaten ist es natürlich etwas schwierig.

            G Offline
            G Offline
            Gaunt
            wrote on last edited by
            #5

            @marc-berg

            Super cool.
            das hat funktioniert. Der Wert der im November steht, ist zwar der falsche. Aber der gleiche falsche Wert steht auch in der Datenbank. Daher funktioniert es genau so wie es sollte.

            Kannst du mir noch sagen was der Code der das Offset ersetzt hat macht?

            timeSrc: "_start"
            

            aca72d85-e26f-49f1-ad51-274631a1ce2d-image.png

            Marc BergM 1 Reply Last reply
            0
            • G Gaunt

              @marc-berg

              Super cool.
              das hat funktioniert. Der Wert der im November steht, ist zwar der falsche. Aber der gleiche falsche Wert steht auch in der Datenbank. Daher funktioniert es genau so wie es sollte.

              Kannst du mir noch sagen was der Code der das Offset ersetzt hat macht?

              timeSrc: "_start"
              

              aca72d85-e26f-49f1-ad51-274631a1ce2d-image.png

              Marc BergM Offline
              Marc BergM Offline
              Marc Berg
              Most Active
              wrote on last edited by Marc Berg
              #6

              @gaunt sagte in Grafana Zeitstempel für bar anpassen:

              Kannst du mir noch sagen was der Code der das Offset ersetzt hat macht?

              Mit der aggregateWindow Funktion werden ja eine Reihe von Werten (in deinem Fall von einem Monat) zusammengefasst und durch EINEN Wert ersetzt. Mit den "fn" Attribut wird festgelegt, was mit den einzelnen Werten passiert ("sum" für Summe, "mean" für Mittelwert etc.)
              Jedenfalls wird mit dem "timeSrc" Parameter festgelegt, welchen Zeitstempel der resultierende Wert bekommt. Im Standard wird das ENDE des Zeitfensters angenommen, das mit "aggregateWindow" gebildet wird. Mit "_start" wird dagegen der Anfang des Zeitfensters genommen, also 0 Uhr des ersten des Monats.
              Für den aktuellen Monat ist das Ende des jeweiligen Zeitfensters gleich dem letzten aufgezeichneten Wert. Und wenn nicht alle drei Werte in der selben Mikrosekunde aufgezeichnet wurden, kann nicht gestapelt werden.

              Schwierig zu erklären (ohne was dabei aufzumalen). Ich hoffe, ich konnte es ein wenig klarstellen.

              NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

              Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

              Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

              G 1 Reply Last reply
              0
              • Marc BergM Marc Berg

                @gaunt sagte in Grafana Zeitstempel für bar anpassen:

                Kannst du mir noch sagen was der Code der das Offset ersetzt hat macht?

                Mit der aggregateWindow Funktion werden ja eine Reihe von Werten (in deinem Fall von einem Monat) zusammengefasst und durch EINEN Wert ersetzt. Mit den "fn" Attribut wird festgelegt, was mit den einzelnen Werten passiert ("sum" für Summe, "mean" für Mittelwert etc.)
                Jedenfalls wird mit dem "timeSrc" Parameter festgelegt, welchen Zeitstempel der resultierende Wert bekommt. Im Standard wird das ENDE des Zeitfensters angenommen, das mit "aggregateWindow" gebildet wird. Mit "_start" wird dagegen der Anfang des Zeitfensters genommen, also 0 Uhr des ersten des Monats.
                Für den aktuellen Monat ist das Ende des jeweiligen Zeitfensters gleich dem letzten aufgezeichneten Wert. Und wenn nicht alle drei Werte in der selben Mikrosekunde aufgezeichnet wurden, kann nicht gestapelt werden.

                Schwierig zu erklären (ohne was dabei aufzumalen). Ich hoffe, ich konnte es ein wenig klarstellen.

                G Offline
                G Offline
                Gaunt
                wrote on last edited by
                #7

                @marc-berg

                Doch perfekt erklärt. Zu mindestens habe ich es verstanden.

                Was ich eben in meiner Freude Übersehen habe, ist das sich der "Versatz" jetzt auf den Anfang der Datenreihe verschoben hat.
                0a459aa7-a8ca-4f83-bd3a-9320215567a1-image.png

                Die von Grafana aus der DB ausgelesenen Daten sehen so aus:
                ecd2269f-9d03-4c7a-85a9-f3d7713d8384-image.png
                b1faa1e4-64b4-4997-a8fe-184b8e3d53ee-image.png
                1e427364-a640-4112-b931-1e6ce80231bb-image.png
                Das sind die Daten die für diesen Monat in der Datenbank vorliegen (Normalerweise liegen jedoch mehrere Daten für einen Monat vor).
                7ab477be-00de-4efc-b512-043d2a0487fb-image.png

                Marc BergM 1 Reply Last reply
                0
                • G Gaunt

                  @marc-berg

                  Doch perfekt erklärt. Zu mindestens habe ich es verstanden.

                  Was ich eben in meiner Freude Übersehen habe, ist das sich der "Versatz" jetzt auf den Anfang der Datenreihe verschoben hat.
                  0a459aa7-a8ca-4f83-bd3a-9320215567a1-image.png

                  Die von Grafana aus der DB ausgelesenen Daten sehen so aus:
                  ecd2269f-9d03-4c7a-85a9-f3d7713d8384-image.png
                  b1faa1e4-64b4-4997-a8fe-184b8e3d53ee-image.png
                  1e427364-a640-4112-b931-1e6ce80231bb-image.png
                  Das sind die Daten die für diesen Monat in der Datenbank vorliegen (Normalerweise liegen jedoch mehrere Daten für einen Monat vor).
                  7ab477be-00de-4efc-b512-043d2a0487fb-image.png

                  Marc BergM Offline
                  Marc BergM Offline
                  Marc Berg
                  Most Active
                  wrote on last edited by Marc Berg
                  #8

                  @gaunt sagte in Grafana Zeitstempel für bar anpassen:

                  "Versatz" jetzt auf den Anfang der Datenreihe verschoben hat.

                  Je nachdem, welchen Zeitraum man anzeigen lässt kann das natürlich passieren. Das kann man verhindern, indem man immer den Anfang des (bei dir) Monats nimmt. Das geht mit der truncate Funktion. Also die "range" Zeilen noch austauschen und "date" importieren.

                  import "date"
                  |> range(start: date.truncate(t:-10mo, unit:1mo))
                  

                  "stop: now()" kann man weglassen, da sowieso der Defaultwert

                  NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

                  Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                  Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                  G 1 Reply Last reply
                  0
                  • Marc BergM Marc Berg

                    @gaunt sagte in Grafana Zeitstempel für bar anpassen:

                    "Versatz" jetzt auf den Anfang der Datenreihe verschoben hat.

                    Je nachdem, welchen Zeitraum man anzeigen lässt kann das natürlich passieren. Das kann man verhindern, indem man immer den Anfang des (bei dir) Monats nimmt. Das geht mit der truncate Funktion. Also die "range" Zeilen noch austauschen und "date" importieren.

                    import "date"
                    |> range(start: date.truncate(t:-10mo, unit:1mo))
                    

                    "stop: now()" kann man weglassen, da sowieso der Defaultwert

                    G Offline
                    G Offline
                    Gaunt
                    wrote on last edited by
                    #9

                    @marc-berg said in Grafana Zeitstempel für bar anpassen:

                    geht mit der truncate Funktion

                    Genau das hat funktioniert.
                    Vielen Dank nochmal. Das hat mir unglaublich viel geholfen und viele viele Stunden des testen, lesen und Suchens erspart.
                    Zu mindestens wenn das was ich bereits getan habe missachtet.

                    Vielen Dank nochmal :-)

                    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

                    668

                    Online

                    32.7k

                    Users

                    82.5k

                    Topics

                    1.3m

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

                    • Don't have an account? Register

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