Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Grafana
    5. Maximalwerte in Grafik verändern sich Zeitabhängig [gel]

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Maximalwerte in Grafik verändern sich Zeitabhängig [gel]

    This topic has been deleted. Only users with topic management privileges can see it.
    • OliverIO
      OliverIO @Duffy last edited by OliverIO

      @duffy

      Ohne es ganz genau zu wissen.
      Du hast in der Abfrage mean stehen.
      Wenn die datenbasis nun relativ kleinteilig die Werte aufzeichnet, sagen wir mehrmals pro Sekunde, dann wird nicht jeder Wert tatsächlich angezeigt, sondern auf eine bestimmte Zeitspanne (v.windowPeriod) gemittelt (mean)

      Wenn der gesamtzeitraum nun kleiner ist und du selbst keine Vorgaben machst, dann ist die zeitscheie bei unterschiedlichen gesamtzeiträumen unterschiedlich und dann kann bei stark schwankenden Werten auch relevant unterschiedliche Ergebnisse kommen.
      Du könntest die zeitscheibe (also windowPeriod) fest vorgeben (bspw eine Minute) dann dürfte, egal welcher Zeitraum ausgewählt wurde auch die Anzeige des Einzelwerten gleich sein.
      Nachteil: wenn du dir mit der gleichen Abfrage auch mal sehr große Zeiträume (1 Jahr) anzeigen willst, hat die machine mehr zu tun und dann können werte uU auch nicht immer angezeigt werden.
      (1000 Werte können in Balken zu 1px breite nicht in einem Kasten mit 100px Breite exakt angezeigt werden)

      Duffy 1 Reply Last reply Reply Quote 1
      • Duffy
        Duffy @OliverIO last edited by

        @oliverio sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

        Du könntest die zeitscheibe (also windowPeriod) fest vorgeben (bspw eine Minute) dann dürfte, egal welcher Zeitraum ausgewählt wurde auch die Anzeige des Einzelwerten gleich sein.

        Das würde ich gerne mal probieren. Verrätst du mir bitte wie ich, für das Beispiel, eine Minute festlegen kann.

        Die oben dargestellte Abfrage kommt aus influx und auuser raus kopieren mache ich da gar nichts, soll heissen ich habe keine Ahnung.

        @oliverio sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

        Nachteil: wenn du dir mit der gleichen Abfrage auch mal sehr große Zeiträume (1 Jahr) anzeigen willst, hat die machine mehr zu tun und dann können werte uU auch nicht immer angezeigt werden.

        Aber 1 Jahr wäre bei der aktuellen Abfrage ja auch nicht aussagekräftig sogesehen ein Versuch wert.

        VG Duffy

        OliverIO 1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @Duffy last edited by OliverIO

          @duffy

          Ich kopiere dir am besten mal die Ausgabe von ChatGPT
          Da dort ein Beispiel dran steht, wie du das Zeitfenster bei unterschiedlichen Zeitlängen definieren kannst, also dann, wenn du sehr viele Werte abfragst, dass dann die Zajc Scheibe nicht nur 1 Minute, sondern 5 Minuten oder 1 Stunde ist

          In deiner Flux-Abfrage ist die Aggregat-Zeitspanne (aggregateWindow) aktuell an die Variable v.windowPeriod gebunden – diese wird meist in Grafana oder ähnlichen Tools automatisch durch die UI gesetzt (z. B. abhängig vom Zoom-Level).

          Wenn du fix eine Aggregation auf 1 Minute möchtest, ersetze v.windowPeriod einfach durch "1m".

          👉 Beispiel:

          from(bucket: "iob-Kurzzeit")
            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
            |> filter(fn: (r) => r["_measurement"] == "Stromzähler")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)
            |> yield(name: "mean")
          

          Erklärung:

          • every: 1m → definiert eine feste Aggregationsbreite von 1 Minute.
          • fn: mean → bildet den Durchschnitt aller Werte innerhalb dieser Minute.
          • createEmpty: false → erzeugt keine leeren Zeitfenster, wenn in einem Intervall keine Daten vorhanden sind.

          Falls du stattdessen lieber dynamisch bleiben, aber eine Mindestgröße erzwingen willst (z. B. nie kleiner als 1 Minute), kann man auch folgendes machen:

          every = if v.windowPeriod < 1m then 1m else v.windowPeriod
          
          from(bucket: "iob-Kurzzeit")
            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
            |> filter(fn: (r) => r["_measurement"] == "Stromzähler")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: every, fn: mean, createEmpty: false)
            |> yield(name: "mean")
          

          💡 Damit kannst du sowohl in Grafana weiter dynamisch zoomen, als auch sicherstellen, dass die Aggregation nie feiner als 1 Minute wird.

          Hier noch die Dokumentation der aggregate Funktion
          https://docs.influxdata.com/flux/v0/stdlib/universe/aggregatewindow/

          Duffy 1 Reply Last reply Reply Quote 1
          • Duffy
            Duffy @OliverIO last edited by Duffy

            @oliverio @Marc-Berg

            Guten Morgen ihr Zwei,

            vielen Dank für deine Erklärung.
            Ich habe das einmal so versucht, hat auch geklappt aber es wird jetzt noch weniger angezeigt. In so weit klar da es ja von den Werten aus einer Minute resultiert.

            903fc374-ead9-416b-b7bc-6c3fdf58bad2-grafik.png

            Ich habe einmal die Werte zwischen 11:59 und 12:00 herausgesucht:

            e533ecad-f8e6-4f44-ab21-61c1c7605ded-grafik.png

            Auf die Idee mit der Ki bin ich in diesem Zusammenhang noch gar nicht gekommen aber die hat mir dann eine Lösung ausgespuckt:

            minValues = from(bucket: "iob-Kurzzeit")
            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
            |> filter(fn: (r) => r["_measurement"] == "Stromzähler")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: 1m, fn: min, createEmpty: false)
            |> yield(name: "min")

            maxValues = from(bucket: "iob-Kurzzeit")
            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
            |> filter(fn: (r) => r["_measurement"] == "Stromzähler")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: 1m, fn: max, createEmpty: false)
            |> yield(name: "max")

            union(tables: [minValues, maxValues])

            Das zeigt jetzt die min und max Werte in einer Minute.

            97096bba-11d7-4a5b-98c7-8248824e25ec-grafik.png

            Aber es kommt eine Meldung"Daten ausserhalb des Zeitbereichs auf Daten zoomem"
            Wenn ich da drauf klicke:

            39d22eac-4407-4198-81b3-176801cd5af2-grafik.png

            Kommt aber nur das.
            Wie kann ich das weg bekommen?

            Aber ansonsten bin ich auf jeden Fall mal weiter gekommen. Danke.

            VG Duffy

            OliverIO Marc Berg 2 Replies Last reply Reply Quote 0
            • OliverIO
              OliverIO @Duffy last edited by

              @duffy

              Du hast mit 11:59 bis 00:00 natürlich ein anderes Extrembeispiel gewählt.

              Du willst exakt eine Minute anzeigen mit einer aggregation auf 1 Minute.
              theoretisch hätte ich jetzt genau einen Balken erwartet. Aber evtl zeigten dann jeden einzelnen Wert als Balken an.

              Das 2. ist wieder eine komplett andere Abfrage.
              2 Abfragen mit jeweils Alls min und max Werte die dann mit einem Union wieder ein eine Tabelle verschmolzen wird

              Dann müsstet Du mal sagen was Du eigentlich erreichen wills

              Duffy 1 Reply Last reply Reply Quote 0
              • Marc Berg
                Marc Berg Most Active @Duffy last edited by

                @duffy sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

                minValues = from(bucket: "iob-Kurzzeit")
                |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                |> filter(fn: (r) => r["_measurement"] == "Stromzähler")
                |> filter(fn: (r) => r["_field"] == "value")
                |> aggregateWindow(every: 1m, fn: min, createEmpty: false)
                |> yield(name: "min")

                Ich finde es immer problematisch, mit fixen Zeitfenstern zu arbeiten, wenn man zoomen will. Entweder werden dabei zu viele oder aber zu wenige Datensätze an Grafana übergeben.

                Durch den MIN/MAX Ansatz kannst du jetzt aber wieder mit variablen Fenstern arbeiten. Die Minima und Maxima bleiben dabei konstant. Außerdem würde ich nur eine Abfrage an die DB starten und zwischenspeichern.

                Versuch's mal so:

                data=from(bucket: "iob-Kurzzeit")
                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                    |> filter(fn: (r) => r._measurement == "Stromzähler" and r._field == "value")
                
                // Maximale positive Werte
                maxPositive = data
                  |> filter(fn: (r) => r._value >= 0)
                  |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false)
                
                // Minimale negative Werte
                minNegative = data
                  |> filter(fn: (r) => r._value < 0)
                  |> aggregateWindow(every: v.windowPeriod, fn: min, createEmpty: false)
                
                union(tables: [maxPositive, minNegative])
                  |> sort(columns: ["_time"], desc: false)
                  |> yield(name: "extrema")
                
                Duffy OliverIO 2 Replies Last reply Reply Quote 1
                • Duffy
                  Duffy @OliverIO last edited by

                  @oliverio sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

                  Dann müsstet Du mal sagen was Du eigentlich erreichen wills

                  Im grunde möchte ich nur in der Grafik angezeigt bekommen wann zb in den letzen 2 oder x Tagen die höchste Strom Einspeisung war, also der maximale Einspeisewert. Wenn jetzt auch noch der höchste Verbrauch angezeigt wird, auch gut.

                  Es ist mir auch schon das gleiche aufgefallen bei meinem Windmesser. Auch hier wurde durch "mean" immer der Durchschnitt angezeigt. Aber der ist ja eigentlich egal denn entscheidend wäre ja, wieder blödes Beispiel, wann wieviel Wind war als die Dachziegel vom Dach geflogen sind. (Ist nicht passiert soll nur meine Fragestellung veranschaulichen)

                  Aber so ganz logisch finde ich das mit dem Durchschnitt auch nicht. Wenn ich beispielsweise die Aussentemperaturen aufzeichnen würde und ich hätte am 15.08. 30°C.
                  Wenn ich nun zB Oktober wieder in die Grafik schauen würde hätte ich am 15.08. aufgrund des Durchschnitts nur noch 25,6°C. Ist ja schon was anderes. (auch nur ein Beispiel)

                  @oliverio sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

                  Das 2. ist wieder eine komplett andere Abfrage.
                  2 Abfragen mit jeweils Alls min und max Werte die dann mit einem Union wieder ein eine Tabelle verschmolzen wird

                  Das ist richtig, das hatte sich bei der Nutzung der KI nur gerade so ergeben. Ich hatte nach Max gefragt dabei aber nicht bedacht das es ja min sein muss. So habe ich halt mal beide abgefragt 🙂

                  VG Duffy

                  1 Reply Last reply Reply Quote 0
                  • Duffy
                    Duffy @Marc Berg last edited by

                    @marc-berg sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

                    data=from(bucket: "iob-Kurzzeit")

                    das sieht jetzt auf den ersten Blick richtig gut aus.

                    251b6dcb-58aa-475c-8c28-fd7da05a423d-grafik.png

                    Ich muss jetzt nur weg aber trotzdem danke erst mal.

                    VG Duffy

                    Duffy 1 Reply Last reply Reply Quote 0
                    • Duffy
                      Duffy @Duffy last edited by

                      @Marc-Berg @OliverIO

                      Es funktioniert so wie ich s gemeint hatte.
                      Vielen Dank Euch beiden für eure Unterstützung.

                      Eine Abschließende Frage hätte ich noch.
                      Heute vormittag konnte ich auf eun Dashboard gehen und dort oben rechts auf die 3 Punkte klicken und dort gab es die Möglichkeit das Dashboard zu duplizieren. Danach waren in einem Fenster 2 Dashboards.
                      Bei mir ist aber die Möglichkeit des duplizierens verschwunden. Wisst ihr zufällig wo ich die wieder finden kann?

                      VG Duffy

                      Marc Berg 1 Reply Last reply Reply Quote 0
                      • Marc Berg
                        Marc Berg Most Active @Duffy last edited by

                        @duffy sagte in Maximalwerte in Grafik verändern sich Zeitabhängig:

                        Wisst ihr zufällig wo ich die wieder finden kann?

                        Vorher Edit Mode aktivieren.

                        39306b79-6e54-44ea-a84e-45351b3404c0-grafik.png

                        Duffy 1 Reply Last reply Reply Quote 1
                        • Duffy
                          Duffy @Marc Berg last edited by

                          @marc-berg

                          Du bist klasse, vielen Dank.

                          Gruß Duffy

                          1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @Marc Berg last edited by

                            @marc-berg

                            Ich finde es immer problematisch, mit fixen Zeitfenstern zu arbeiten, wenn man zoomen will.

                            Leider hat sich mittlerweile der scope des threads geändert.

                            Ausgangspunkt war ja das bei unterschiedlichen Zooms und damit zeitbereiche zu ca Zeitpunkten das Diagramm unterschiedliche Werte zeigte, da der Durchschnitt/aggregation sich dadurch ändert.

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            952
                            Online

                            32.3k
                            Users

                            81.1k
                            Topics

                            1.3m
                            Posts

                            4
                            15
                            167
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo