Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Grafana
    5. Grafana + Influx 2 + Flux + Bar Gauge

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Grafana + Influx 2 + Flux + Bar Gauge

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SpacerX last edited by

      @laser Das könnte mit Mapping funktionieren. Wenn der Objektname für jeden Tag anders ist, dann den Objektnahmen mit dem Wochentag überschreiben.

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

        @spacerx Sowas will ich ja machen. Das zu überschreibende Feld auswählen. Das geht ja mit dem Pfeil rechts/ "wählen". Zu lang, wird abgeschnitten. 2. Version: kopieren des Namens aus dem Bucket- hat nicht geklappt. 3. suchen nach "Tuesday" funktioniert, aber nur so lange, wie es diese Bezeichnung nur 1x gibt, bei öfteren Vorkommen von "thuesday"wird es problematisch. Endet wieder in einer endlosen Versuchsreihe.
        EDIT: kopieren eines längeren Teiles aus dem Namen (in der Hoffnung, dieser Teil ist einmalig) und danach suchen lassen. Hat erst mal funktioniert. Weitertesten ist angesagt. Schön ist etwas Anderes! FLUX finde ich nicht so toll! Ist umfangreich, aber auch sehr umständlich zu bedienen.

        S ? 3 Replies Last reply Reply Quote 0
        • S
          SpacerX @Laser last edited by SpacerX

          @laser Ich hab hier noch einen Link zu Value Mapping
          https://grafana.com/docs/grafana/latest/panels-visualizations/configure-value-mappings/

          Edit:
          Ah ne das wird nichts, geht ja nicht um die Value. Sorry

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

            @spacerx Das Feld rechts läßt sich ja doch vergrößern! Auf einem sehr breitem Monitor klappt auch die Auswahl beim Override. Nichts für kleine Bildschirme.

            1 Reply Last reply Reply Quote 0
            • ?
              A Former User @Laser last edited by

              @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

              Sowas will ich ja machen. Das zu überschreibende Feld auswählen.

              Moin,

              ist jetzt vielleicht nicht die beste Lösung, da Du ja schon Daten in der Datenbank stehen hast, die diesen elendig langen Namen tragen.

              Aber für zukünftige Vorhaben, kann man das ja versuchen, zu berücksichtigen 🙂

              Du kannst beim DP, wenn Du ihn in eine DB oder in History speicherst, einen kürzeren Namen vergeben.
              712f4c97-54c5-47fc-a37c-69157d076558-image.png

              Nachträglich kann man das auch noch ändern,

              1. Export der Daten als CSV Namen anpassen und wieder Importieren, siehe Doku influxDB
              2. Die vorhandenen Werte durch einen Task in influxDB umformen, sprich Namen kürzen und in ein anderes Bucket schreiben, das dann nutzen, um die Diagramme zu bauen.
              3. FLUX abfrage so gestalten, dass der originale Name ersetzt wird, z.B.:
              import "timezone"
              option location = timezone.location(name: "Europe/Berlin")
              from(bucket: "iobroker_strom")
              |> range(start: -7d, stop: now())
              |> filter(fn: (r) => r["_measurement"] == "sonoff.0.DVES_8AA766.SENSOR.SML.total_kwh")
              |> filter(fn: (r) => r["_field"] == "value")
              // hier ersetze ich den langen Namen "sonoff.0.DVES_8AA766.SENSOR.SML.total_kwh" in "aktuelle Woche"
              |> set(key: "_field", value: "aktuelle Woche")
              |> drop(columns:["from","ack", "q"])
              |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start", createEmpty: false)
              |> difference()
              

              VG
              Bernd

              1 Reply Last reply Reply Quote 1
              • ?
                A Former User @Laser last edited by

                @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                Schön ist etwas Anderes! FLUX finde ich nicht so toll! Ist umfangreich, aber auch sehr umständlich zu bedienen.

                Moin,

                das ist nicht das Problem von FLUX, das ist ja nur die Abfragesprache, dass die GUI von Grafana keine Langen XXL Namen anzeigen kann, ist ja eher Dein Problem, wenn Du die Namen so in der DB abspeicherst 😉
                Ich habe leider kein Beispiel, kann mir aber vorstellen, wenn Du in dem Feld anfängst zu tippen, dass dann die Auswahl eingeschränkt wird, bis das passende angezeigt wird.

                VG
                Bernd

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

                  @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                  @spacerx
                  Das geht schon in die Richtung. Bisher ist mir nur gelungen, daß immer z.B. "Montag! in allen Feldern steht.
                  Die Unterschrift meiner Balken (einzelne Werte aus Sourceanalytix) ist aber kein Datum, sondern ein Objektname.

                  Dieser Name ist aber so lang, daß er beim Auswählen rechts aus dem Bild hinausgeht und nicht sichtbar ist.

                  mit einem Zufallstreffer hat es 1x geklappt:

                  ein mögliche Lösung wäre, an deine Queries anzuhängen:

                    |> keep(columns: ["_value"])
                    |> rename(columns: {_value:"Montag"})
                  
                    |> keep(columns: ["_value"])
                    |> rename(columns: {_value:"Dienstag"})
                  

                  Damit entfernst du alle anderen Spalten und Grafana bekommt nur den "Kurznamen", also Spaltennamen. Das setzt natürlich voraus, dass die Spalte "_value" existiert und vorher nicht schon umbenannt wurde.

                  af3c429f-9d77-4ffe-8057-17b6baf62fe5-grafik.png

                  L 1 Reply Last reply Reply Quote 2
                  • L
                    Laser @Marc Berg last edited by

                    @marc-berg sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                    |> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"})
                    Das sieht dann so aus:
                    96bf40c8-0613-4516-a5e6-b4ef5ea28d26-image.png
                    Das ist sicher der elegantere Weg. Passt nur noch nicht ganz.

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

                      @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                      Das ist sicher der elegantere Weg. Passt nur noch nicht ganz.

                      Zeig mal deine Queries. Hast du vielleicht noch Overrides definiert?

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

                        @marc-berg
                        from(bucket: "iobroker")
                        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                        |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__OpenDTU-Gesamptproduktion__yieldtotal.currentYear.delivered.currentWeek.01_Monday")
                        |> filter(fn: (r) => r["_field"] == "value")
                        |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
                        |> yield(name: "mean")
                        |> keep(columns: ["_value"])
                        |> rename(columns: {_value:"Montag"})

                        keine overides

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

                          @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                          |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
                          |> yield(name: "mean")

                          das muss weg, wenn ich die Anforderung richtig verstehe:

                          |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
                          |> yield(name: "mean")
                          

                          und das hier muss in Grafana eingestellt sein:

                          4fadcb47-d27f-4c8e-9efe-f6fb790da92f-grafik.png

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

                            @marc-berg So ist es OK!
                            from(bucket: "iobroker")
                            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                            |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__OpenDTU-Gesamptproduktion__yieldtotal.currentYear.delivered.currentWeek.01_Monday")
                            |> filter(fn: (r) => r["_field"] == "value")
                            |> keep(columns: ["_value"])
                            |> rename(columns: {_value:"Montag"})
                            c4a761a8-4116-449a-b0d1-49807b6e4888-image.png

                            Und:
                            4da8e477-e526-4e56-b950-350413dbd530-image.png

                            Das ist für mich absolutes Neuland. Da muß ich mich erst einarbeiten.

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

                              @Marc-Berg
                              Die Unterschrift wird geändert. Jedoch ändert sich auch der angezeigte Zahlenwert. 1,54 werden angezeigt, 1,97 müssten es sein.
                              def07b60-bb3d-42f8-b448-7a1489aa10eb-image.png

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

                                @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                                @Marc-Berg
                                Die Unterschrift wird geändert. Jedoch ändert sich auch der angezeigte Zahlenwert. 1,54 werden angezeigt, 1,97 müssten es sein.

                                Verstehe gerade Null, was du meinst. Außerdem wurden doch oben in deinem Beispiel für Montag vorher und nach den Änderungen jeweils 2.59kWh angezeigt!?

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

                                  @marc-berg Ja, es wird etwas angezeigt. Aber bei genauer Kontrolle, zum Beispiel am Sonntag (aktueller Tag), habe ich den Wert in den Objekten mit dem angezeigten Wert nach der Korrektur der Unterschrift verglichen. Die beiden Werte stimmen nicht überein. Ohne die Korrektur schon. In der Datenbank steht auch der richtige Wert. ( Bildschirmausdruck).

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

                                    @laser
                                    Wenn ich es richtig verstehe, soll doch der Wert, der in diesem Datenpunkt steht:

                                    3dc8c3c0-d27e-4700-9372-52d6c1851409-grafik.png

                                    1:1 angezeigt werden, oder? Das wäre dann der letzte Wert, der in die Datenbank geloggt wurde.
                                    Vor diesem Hintergrund ergibt es für mich keinen Sinn, mit einem Mittelwert über die Funktion "aggregateWindow (mean)" zu arbeiten. Stattdessen wirst du mit |> last() den jüngsten Wert erhalten.

                                    Vielleicht zeigst du einfach mal den Inhalt des Datenpunkts und die letzten geloggten Werte in der Influxdb. Villeicht lässt es sich das Problem damit besser auflösen.

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

                                      @marc-berg der Sonntag mit den Problemwerten ist ja nun vorbei. Hier der Wert des Objektes (nun "vergangene Woche")
                                      4dc7b80f-8bf9-4956-95a9-22674f54dbd3-image.png
                                      angezeigt wurde das in meinem vorherigen Beitrag gezeigte.
                                      Eine Befehlsrefernz , wo z.B. "mean" und "last" erklärt wird, suche ich noch. Das "mean" könnte der Fehler sein.
                                      Diese Befehlsfolge wurde automatisch erstellt, ich habe da nichts dazu getan.
                                      Aber das kommt ja in der abgewandelten Form in Grafana gar nicht mehr vor?

                                      from(bucket: "iobroker")
                                        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                        |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
                                        |> filter(fn: (r) => r["_field"] == "value")
                                        |> keep(columns: ["_value"])
                                        |> rename(columns: {_value:"Montag"})
                                      

                                      Nur in der Datenbank selber:

                                      from(bucket: "iobroker")
                                        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                        |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
                                        |> filter(fn: (r) => r["_field"] == "value")
                                        |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
                                        |> yield(name: "mean")
                                      
                                      Marc Berg 1 Reply Last reply Reply Quote 0
                                      • Marc Berg
                                        Marc Berg Most Active @Laser last edited by Marc Berg

                                        @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                                        Diese Befehlsfolge wurde automatisch erstellt, ich habe da nichts dazu getan.

                                        Genau das ist das Problem. In der Gui der Influxdb wird standardmäßig die "aggregateWindow" Funktion ergänzt. Je nach ausgewählten Zeitraum werden dann z.B. Mittelwerte (mean) berechnet. Wenn du die Zeile entfernst und dafür

                                        |> last()
                                        

                                        einfügst, wird der letzte im "Range" Zeitraum selektierte Wert geliefert.

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

                                          @marc-berg so? (scheint den richtigen Wert anzuzeigen)
                                          from(bucket: "iobroker")
                                          |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                          |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
                                          |> filter(fn: (r) => r["_field"] == "value")
                                          |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
                                          |> keep(columns: ["_value"])
                                          |> rename(columns: {_value:"Montag"})

                                          06fb7f93-8b2f-4f16-8a51-d9f5348e6663-image.png

                                          ? Marc Berg 2 Replies Last reply Reply Quote 0
                                          • ?
                                            A Former User @Laser last edited by

                                            @laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:

                                            from(bucket: "iobroker")
                                            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                            |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
                                            |> filter(fn: (r) => r["_field"] == "value")
                                            |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
                                            |> keep(columns: ["_value"])
                                            |> rename(columns: {_value:"Montag"})

                                            Moin,

                                            wie @Marc-Berg schon sagte, das aggregateWindow brauchst Du nicht, da Du ja nur den letzten Wert vom Tag brauchst.

                                            from(bucket: "iobroker")
                                            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                            |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
                                            |> filter(fn: (r) => r["_field"] == "value")
                                            |> keep(columns: ["_value"])
                                            |> rename(columns: {_value:"Montag"})
                                            |> last ()
                                            

                                            VG
                                            Bernd

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            565
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            51
                                            1912
                                            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