Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Grafana
    5. Stapel-Balkengrafik mit Grafana

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Stapel-Balkengrafik mit Grafana

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

      @laser Ok, trifft ja nicht so viel an.
      Und mit jeder Stunde, kreierst die auch nicht extrem viel unnötigen "Datenmüll"

      1 Reply Last reply Reply Quote 0
      • W
        wolfi913 @mickemup last edited by

        @mickemup sagte in Stapel-Balkengrafik mit Grafana:

        mir der Range können wir ja noch schauen, was genau gewollt ist.

        Klar, dazu müssen ja zuerst mal Daten geloggt sein.
        Mein Beispiel würde ja auch den aktuellen Tag abschneiden und nicht anzeigen sondern nur vollständige Tage.

        L 1 Reply Last reply Reply Quote 0
        • L
          Laser @wolfi913 last edited by Laser

          @wolfi913 ich miste erst mal aus. Habe auch noch die einzelnen Monate drin. Das stammt Alles aus der Zeit vor Grafana. Da hatte ich einzelne Balken in VIS.

          L 1 Reply Last reply Reply Quote 0
          • L
            Laser @Laser last edited by Laser

            @wolfi913
            1Wert ist ja in jedem currentDay drin. 1 Tag sollte angezeigt werden. Habe Das mal so gemacht (ist aber noch ein Fehler drin):

            import "timezone"
            import "date"
            option location = timezone.location(name: "Europe/Berlin")
            
            from(bucket: "iobroker")
             // |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
              |> range(start: date.add(d: -7d, to: today()), stop: date.truncate(t: today(), unit: 1d))
              |> filter(fn: (r)
              => r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay"
              or r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay")
              |> filter(fn: (r) => r["_field"] == "value")
              |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
              |> yield(name: "last")
            
            W 1 Reply Last reply Reply Quote 0
            • W
              wolfi913 @Laser last edited by

              @laser
              Stell mal die Range auf

                |> range(start: -7d, stop: v.timeRangeStop)
              

              Den aktuellen Tag zeigt er Dir ja mit der anderen Auswertung nicht an. Da werden nur ganze Tage genommen.
              Außerdem würde ich je eine Query je Datenpunkt machen.

              L 1 Reply Last reply Reply Quote 0
              • L
                Laser @wolfi913 last edited by Laser

                @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                e

                Da paßt noch was mit den Zeiten nicht. Kann nicht gestapelt werden. Ich versuche noch mal mit einzelnen Query.
                (Darstellung mit dem Zeitversatz besteht aber noch)
                d342e9f6-593c-4796-941e-4f75ad3a7217-image.png

                Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.
                Ist diese Beschreibung richtig? https://docs.influxdata.com/flux/v0/stdlib/universe/range/ u.a.m.

                W icebear 2 Replies Last reply Reply Quote 0
                • W
                  wolfi913 @Laser last edited by wolfi913

                  @laser
                  Das mit

                    |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                  

                  funktioniert nicht für den aktuellen Tag, nur für die ganzen Tage.
                  Da müsste vermutlich noch zusätzlich mit timeShift oder was Ähnlichem gearbeitet werden.

                  L 1 Reply Last reply Reply Quote 1
                  • L
                    Laser @wolfi913 last edited by

                    @wolfi913 mal sehen, wie das morgen aussieht. Da habe ich schon 2 Tage...

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      wolfi913 @Laser last edited by wolfi913

                      @laser
                      Probier mal mit

                        |> truncateTimeColumn(unit: 1d)
                      

                      hinter dem aggregateWindow...

                      Dann sollte der anzuzeigende Wert jeweils auf Mitternacht gesetzt werden.
                      Screenshot 2025-02-04 182825.png
                      Und dann sollten die Werte wieder gesynct sein.

                      L 1 Reply Last reply Reply Quote 0
                      • L
                        Laser @wolfi913 last edited by Laser

                        @wolfi913 sagte in Stapel-Balkengrafik mit Grafana:

                        9bea4f26-e74f-4a8a-82ac-644d69d486e7-image.png

                        |> truncateTimeColumn(unit: 1d)

                        import "timezone"
                        import "date"
                        option location = timezone.location(name: "Europe/Berlin")
                        
                        from(bucket: "iobroker")
                        |> range(start: -7d, stop: v.timeRangeStop)
                         |> filter(fn: (r)
                          => r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay")
                         |> filter(fn: (r) => r["_field"] == "value")
                         |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                         |> truncateTimeColumn(unit: 1d)
                         |> yield(name: "last")
                        
                        import "timezone"
                        import "date"
                        option location = timezone.location(name: "Europe/Berlin")
                        
                        from(bucket: "iobroker")
                         |> range(start: -7d, stop: v.timeRangeStop)
                         |> filter(fn: (r)
                          => r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay")
                         |> filter(fn: (r) => r["_field"] == "value")
                         |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                         |> truncateTimeColumn(unit: 1d)
                         |> yield(name: "last")
                        
                        W 1 Reply Last reply Reply Quote 0
                        • W
                          wolfi913 @Laser last edited by

                          @laser
                          Schaut besser aus 😊

                          L 1 Reply Last reply Reply Quote 0
                          • L
                            Laser @wolfi913 last edited by Laser

                            @wolfi913 Ja. Und das "verodern" in der Filterliste ist nicht gut? Welche Nachteile könnte das bringen?

                            import "timezone"
                            import "date"
                            option location = timezone.location(name: "Europe/Berlin")
                            
                            from(bucket: "iobroker")
                            |> range(start: -7d, stop: v.timeRangeStop)
                             |> filter(fn: (r)
                              => r["_measurement"] == "sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay"
                             or  r["_measurement"] == "sourceanalytix.0.alias__0__VE-Total__H19.currentYear.delivered.01_currentDay")
                             |> filter(fn: (r) => r["_field"] == "value")
                             |> aggregateWindow(every: 1d, fn: last, createEmpty: true, timeSrc: "_start")
                             |> truncateTimeColumn(unit: 1d)
                             |> yield(name: "last")
                            

                            Bin schon gespannt, wie das morgen mit 2 Tagen aussieht! Heute möchte ich erst mal nicht mehr nerven. Danke an alle Beteilgten!

                            W 1 Reply Last reply Reply Quote 0
                            • W
                              wolfi913 @Laser last edited by

                              @laser
                              Müsste vermutlich auch mit ODER funktionieren.
                              Ich finde einzelne Query's irgendwie besser daher mach ich's wenn möglich lieber immer einzeln.
                              Kann dann (zumindest bin ich der Meinung) in den Overrides besser arbeiten.
                              Außerdem funktionieren dann auch so Sachen wie Rechenoperationen
                              Screenshot 2025-02-04 184132.png
                              einfacher.

                              L 1 Reply Last reply Reply Quote 0
                              • L
                                Laser @wolfi913 last edited by Laser

                                @wolfi913 Ja, funktioniert auch mit "or". Wenn man etwas spezielles mit den Daten vorhat, ist einzeln besser. Das werde ich im Auge behalten.
                                War sehr informativ/ aufregend. Und viel Datenmüll beseitigt. Werde jetzt das TV-Programm zum Runterkommen genießen!🙂

                                mickemup 1 Reply Last reply Reply Quote 0
                                • mickemup
                                  mickemup @Laser last edited by

                                  @laser
                                  Gerne
                                  Hatte am Anfang auch mit Grafana/Influx usw. zu kämpfen und musste mich da reinfuxen.
                                  Habe kurz ein Dashboard Testweise angepasst mit der Annahme, dass du das so angedacht hast:

                                  7bce7133-95ba-4a6f-9d4c-a1b776b957cb-image.png

                                  1dabd38b-fd2f-4ffa-87e3-fd53a79b9ae4-image.png

                                  d1ecfd00-41ac-4bed-9f45-28d2f1da31d2-image.png

                                  import "date"
                                  import "timezone"
                                  option location = timezone.location(name: "Europe/Madrid")
                                  
                                  from(bucket: "iobroker_inflog")
                                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energy.Day_Einspeisung")
                                    |> filter(fn: (r) => r["_field"] == "value")
                                      |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start")
                                  

                                  Wichtig: Da die Range nun mit den Query Options "definiert" wird, muss da das v.TimeRang... rein
                                  Ansonsten bist du ja mit den Queries schon gut beraten worden 🙂

                                  1 Reply Last reply Reply Quote 1
                                  • icebear
                                    icebear @Laser last edited by

                                    @laser said in Stapel-Balkengrafik mit Grafana:

                                    Das Ganze muß ich erst mal verarbeiten. Ich werde morgen noch mal frisch ran gehen.

                                    Ich würde dir auch empfehlen in Zukunft Alias-ID's zu verwenden.
                                    Wenn du mit den ellenlangen DP-Bezeichnung weiterarbeitest kannst du bei komplexeren Abfragen schnell den Überblick verlieren.

                                    Du kannst ja beim anlegen für die influxDB unten eine Alias-ID vergeben, das ist dann später bei komplexen Abfragen wesentlich übersichtlicher.

                                    Z.B. anstatt

                                    sourceanalytix.0.alias__0__Shelly1EM-Power__Total-EM1.currentYear.delivered.01_currentDay

                                    nimmst du als Alias

                                    Shelly1_Pow_Total_curDay

                                    L 1 Reply Last reply Reply Quote 1
                                    • L
                                      Laser @icebear last edited by Laser

                                      @icebear @mickemup Der zweite Balken ist heute aufgetaucht. Die Balken wandern jetzt nach links? Auch nicht verkehrt.
                                      Bisher hatte ich 7 Balken mit der Unterschrift der Wochentage. Fing links an und rechts war es noch leer.
                                      Aliasnamen, die ich auch zuordnen kann, muß ich mir noch schnell überlegen.

                                      029c0edb-5e27-4393-9fdf-25c727d51288-image.png

                                      mickemup 1 Reply Last reply Reply Quote 0
                                      • mickemup
                                        mickemup @Laser last edited by mickemup

                                        @laser Dann schau einfach meinen letzten Post an, dort habe ich dir das mal "aufbereitet" von Mo bis So....
                                        Und gib doch den Dingern via Override (auch im Post ersichtlich) mal anständige Namen 🙂

                                        L 1 Reply Last reply Reply Quote 0
                                        • L
                                          Laser @mickemup last edited by Laser

                                          @mickemup Bin dabei. Wenn ich die Aliasse einführe, sind ja meine beiden Tage weg. Das wollte ich erst mal abwarten. Mit den alten Namen. Die Namen mit "Overide" ändern, nicht mit einem Alias in Influx?
                                          Jetzt ist Mo bis Sonntag dran. Die "Query Options" haben bei mir andere Einträge.

                                          mickemup 1 Reply Last reply Reply Quote 0
                                          • mickemup
                                            mickemup @Laser last edited by mickemup

                                            @laser
                                            Das mit den Aliasen ist nice to have und wohl mehr ein genereller Punkt um sich das leben zu vereinfachen für die Zukunft.

                                            Die Anzeigenamen kannst du in Grafana anpassen (da habe ich auch ein Bild drin)
                                            Und eben Query-Options musst du anpassen (wie auf meinem Bild) damit immer Mo-So angezeigt wird
                                            Also einfach die Einträge relative Time und Timeshift

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            741
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            76
                                            3372
                                            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