NEWS
[gelöst]Grafana 8.4.3 InfluxDB2.11 Flux monatlich
-
@marsmännchen sollte es mit differenz gehen, gibt es dies aber auch bei flux
https://docs.influxdata.com/flux/v0.x/stdlib/universe/difference/ -
@crunchip
Ja die Anleitungen lese ich schon ganze Woche, und ausser das ich |> difference() unten dran füge hab ich nicht viel davon verstanden.
Bringt mir aber auch nicht das gewünschte Ergebnis.
Aber mit |> difference() geht das schon irgendwie in die richtige Richtung.....
Das is halt eher ein basteln und probieren als sinvolle "Datenverarbeitung".
-
@marsmännchen said in Grafana 8.4.3 InfluxDB2.11 Flux monatliche Darstellung:
Hat vielleicht jemand eine Idee?
Täglich mit Differenz (also die Summe aus allen Differenzen)
|> aggregateWindow(every: 24h, fn: sum, timeSrc: "_start")
oder
|> aggregateWindow(every: 1d, fn: last, timeSrc: "_start")
Wenn dein Gaszähler schon Gesamtwerte liefert... also immer den letzten. Aber mit AggregateWindow kannst du jedenfalls die X-Achse teilen...
oder
|> aggregateWindow(every: 1mo, fn: last, timeSrc: "_start")
für 1 Monat
-
@ftd sagte in Grafana 8.4.3 InfluxDB2.11 Flux monatliche Darstellung:
|> aggregateWindow(every: 24h, fn: sum, timeSrc: "_start")
nein, ist scheinbar auch nicht was ich brauche.
Sieht alles noch falscher aus als nur mit difference:
Hier mit|> aggregateWindow(every: 24h, fn: sum, timeSrc: "_start")
Hier hab ich das eine aggregateWindow weggelassen:
Und so weiter, alle möglichen Konstellationen durch.
Am ehesten kommts mit nur difference() dabei:
-
Am ehesten kommts mit nur difference() dabei:
Was heißt denn "am ähnlichsten"? Das ist doch das, was Du wolltest. Er aggregiert die Daten innerhalb 24 Std. auf und stellt dann den Wert dar...Was fehlt denn noch?
-
@joergh
mit am ehesten meine ich Kleinigkeiten des Designs. Datum unten, Farbe,.. aber das sind Kleinigkeiten merk ich gerade. Ich würde das mal als gelöst deklarieren. Ich schätze mal den Rest schaffe ich irgendwie.
Danke sehr an alle! -
@marsmännchen
Hallo, bist du an dem Thema weiter dran geblieben und hast "den Rest" auch geschafft? Ich bin nahezu am verzweifeln, da mir die Funktion Difference() nicht die Differenz zum Vorgängerwert ermittelt -
@kalli71
"der Rest" ist wohl etwas untergegangen. Da meine Datenaufnahme im Moment generell nicht funktioniert, konnte ich weiterhin nichts optimieren.
Ist natürlich schwer dir einen Tipp oder Hinweis zu geben wenn du keine weiteren Info´s mitteilst. -
@marsmännchen Danke für Deine Rückmeldung. Ich versuche aus meinen Stromzählerveränderungen (werden bei Änderungern protokolliert) den stündlichen verbrauch zu berechnen. Mit Flux komme ich aber an meine Grenzen.
Ich habe z.B. eine Protokollierung um 17:20h mit 1000KWh Zählerstand, 17:58h mit 1001KWh und um 19:45h einen neuen Zählerstand mit 1001KWh. Wenn ich jetzt eine Zeitleiste auf Stundenbasis aufstelle (18h, 19h, 20h) müsste Grafana die einzelnen Punkte zwischen den Messwerten interpolieren und als value in der Tabelle notieren. Hier wird aber nichts interpoliert, sondern zu den Zeitpunkten die Ganzzahlwerte fortgeschrieben. Daher ist bei der Umrechnung in Verbrauch/Zeitintervall das Ergebnis 0 oder 1. -
@ftd hast du eine Idee wie man den Verbrauch der letzten 7 Tage anzeigen könnte?
from(bucket: "data") |> range(start: -7d, stop: now()) |> filter(fn: (r) => r["_measurement"] == "Zaehlerstand") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 7d, fn: last, timeSrc: "_start") |> difference() // bzw. mit Offset // |> aggregateWindow(every: 7d, fn: last, timeSrc: "_start", offset: 4d) // |> difference()
damit funktioniert es nicht da er immer von Montage/Donnerstag rechnet, da Grafana die Unix-Epochenwochen verwendet und diese beginnt halt am Donnerstag und somit rechnet er immer von Donnerstag den Verbrauch bzw. von Montag wenn man mit Offset arbeitet. Das liegt daran das 7 Tage = 1 Woche sind und er das "falsch" Interpretiert.
-
@goodold sagte in [gelöst]Grafana 8.4.3 InfluxDB2.11 Flux monatlich:
from(bucket: "data")
Du kannst ein offset definieren:
from(bucket: "data") |> range(start: -7d, stop: now()) |> filter(fn: (r) => r["_measurement"] == "Zaehlerstand") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 7d, offset: -3d, fn: last, timeSrc: "_start") |> difference()
-
Ist zwar schon eine Weile her, aber vielleicht hilft die Herangehensweise jemandem. Den folgenden Code habe ich im Data Explorer der neuen InfluxDB 2.x quasi fast automatisch erstellen lassen. Wer in etwa weiß wie die InfluxQL Abfragen funktionieren, der braucht kaum Code lernen wie ich finde. Die Weboberfläche der neuen DB erreicht man unter der IP Adresse des Hosts über Port :8086 im Browser und dort sieht es nach dem Anmelden und 4-5 Clicks dann z.B. so aus:
Hier können nach belieben Code-Schnipsel zusammengebracht und ggf. angepasst werden. Ich habe Difference() aus der Liste unten rechts per Click eingefügt, nonNegative auf true geändert und aggregateWindow auf every: 1mo. Das war es dann auch schon.
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "sonoff.0.Gartenkraftwerk II.ENERGY_Total" or r["_measurement"] == "sonoff.0.MiniJoule.ENERGY_Total") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 1mo , fn: last, timeSrc: "_start") |> difference(nonNegative: true, columns: ["_value"]) |> yield(name: "last")
Den Code dann 1:1 in Grafana kopiert und siehe da, passt. In den Query Options die Relative Time auf 1Y und schon wirft Grafana saubere Monatswerte der saldierenden Zählerwerte aus.
Anpassungen der Optik sind wie gewohnt und nach belieben möglich.