NEWS
(gelöst) Grafana Gesamtverbrauch der letzten 7Tage
-
Hallo,
ich komme seit einigen Tagen nicht weiter.
Ich versuche mir den Gesamtverbrauch der letzten 7Tage anzeigen zu lassen, also nicht den verbrauch über 7Tag (je ein Messert pro Tag). Sondern Grafana/Influx soll diese 7 Tage summieren und sie in einem Balken anzeigen.
Soweit ich gelesen habe ist das Problem das Influx 7d = 1Woche interpretiert und somit immer am Donnerstag (Unixepochwoche) beginnt (läst sich zwar mit offset auf Montag umbiegen, aber macht es nicht besser). Das führt dann natürlich dazu das ich nicht die letzten 7 Tage angezeigt bekomme, sondern den Verbrauch seit beginn der Woche. Habe jetzt schon alles möglich versucht, mit Timeshift usw. aber will einfach nicht.
So sieht das aktuell aus, was aber nicht funktioniert.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()
Habe das ganze auch schon über
fn: sum
versucht, aber das Problem ist ja nicht das Berechnen sondern der Start der Berechnung.
Weiß jemand wie man das ganze anstellen könnte?
Zählerstand, ist wie der Name schon sagt der aktuelle Stromzählerstand und soll als "Bar gauge" dargestellt werden. -
@goodold hast Du das so eingestellt?
-
@djmarc75 ja das passt, ist auch nicht wirklich das Problem, man muss hier mit einem offset arbeiten. Das Problem ist das er dann halt als Startpunkt der Berechnung Montag nimmt und nicht "heute -7". Der Startpunkt bzw. "every: 7d" wird von Influx als 1 Woche interpretiert.
-
@goodold
Ich nutze Grafana mit dem SQL-Adapter, kann also zu Influx nix beitragen.
Aber in Grafana kann ich den Zeitraum doch prima eingrenzen:... 7z/ubersicht?orgId=1&from=now-7d&to=now
-
@codierknecht jep und dann rechnet er von Donnerstag bzw. je nach offset, aber bleibt Fix auf dem Tag. Ihn interessiert das begrenzen nicht, da er denkt das ich was anderes will.
-
@goodold dann probiere mal |> range(start: -7d)
-
@spacerx gleiches Ergebnis, hatte ich auch schon getestet.
Das hört sich extrem einfach an "letzte 7 Tage summieren" ist aber glaube ich nicht mit einer simplen Eingrenzung oder Verschiebung via TimeShift möglich. Ich glaube da muss man etwas mehr tun um Influx auszutrixen. -
@goodold
Nur damit ich das richtig verstehe:
Du willst also den Verbrauch der letzten 7 Tage aufsummieren. Heute also den Verbrauch vom 14. bis zum 21.
Und wenn Du morgen reinschaust, den vom 15. bis zum 22. ?????Kann Influx nicht mit einer Art SQL abgefragt werden?
In Oracle oder jedem anderen Dialekt wäre das trivial:SELECT SUM(Verbrauch) AS Wochenverbrauch FROM Tabelle WHERE Datum > SysDate - 7
-
@codierknecht richtig verstanden, genau so soll es sein.
Bin halt auch relativ neu in Influx, dachte auch anfangs das kann doch nicht so schwer sein, aber egal was ich teste es klappt nicht. -
@goodold sagte in Grafana Gesamtverbrauch der letzten 7Tage (every: 7d):
jep und dann rechnet er von Donnerstag
aber das stellst du doch in hier ein, wann die Woche beginnt
-
@goodold ich könnte mir vorstellen das es an dem "timeSrc:" in dem aggregateWindow liegen könnte. Das mal zum Test raus nehmen.
-
@crunchip
Wann die Woche beginnt, sollte hier eigentlich nicht relevant sein.
Wenn ich das Problem korrekt verstanden habe, möchte er die letzten 7 Tage auswerten.
Influx interpretiert das aber wohl als Woche. -
@codierknecht sagte in Grafana Gesamtverbrauch der letzten 7Tage (every: 7d):
Wann die Woche beginnt, sollte hier eigentlich nicht relevant sein.
@goodold sagte in Grafana Gesamtverbrauch der letzten 7Tage (every: 7d):
Woche interpretiert und somit immer am Donnerstag (Unixepochwoche) beginn
-
@spacerx das mit "timeSrc:" hatte ich auch schon probiert, funktioniert auch nicht.
-
ich hab zwar mit influxdb2 noch nix am Hut, nur mal instaliert, aber wenn ich das so probiere, sieht der query so aus
und in Grafana wird das auch so angezeigt, also nix versetzt
-
@crunchip Wähl mal etwas was ein Zählerstand ist, also etwas was hochzählt am besten (Stromzählerstand, Gaszählerstand).
Dann das ganze nicht als "Diagramm TimeSeries" sondern eine Bar gauge oder Balkendiagramm.
Dann soll das ganze nicht über einen bestimmten Zeitraum angezeigt werden, sondern alle Tage in einem Balken summiert.Falls du dich mit der Verschieben auf die Unix Zeit beziehst, dieser Effekt kommt bei dem Diagramm nicht vor, nur bei Summierungen.
-
@goodold sagte in Grafana Gesamtverbrauch der letzten 7Tage (every: 7d):
@crunchip Wähl mal etwas was ein Zählerstand ist, also etwas was hochzählt am besten (Stromzählerstand, Gaszählerstand).
Dann das ganze nicht als "Diagramm TimeSeries" sondern eine Bar gauge oder Balkendiagramm.
Dann soll dir ja nicht das ganze über eine bestimmte zeit angezeigt werden, sondern alle Tage auf einem Balken.
Falls du dich mit der Verschieben auf die Unix Zeit beziehst, dieser Effekt kommt bei dem Diagramm nicht vor, nur bei Summierungen.Du willst also den Verbrauch der letzten 7 Tage über den Zählerstand berechnen?
Wozu dann "SUM"?
Es reicht doch, den Zählerstand von vor 7 Tagen vom aktuellen Zählerstand zu subtrahieren. -
@goodold sagte in Grafana Gesamtverbrauch der letzten 7Tage (every: 7d):
Wähl mal etwas was ein Zählerstand ist, also etwas was hochzählt am besten (Stromzählerstand, Gaszählerstand).
das hab ich laufen, allerdings mit influxdb1.x
-
@codierknecht richtig! und wie mache ich das in Flux?
@crunchip das ist ja auch irgendwie das Problem, wenn man was findet dann zu Influx 1.x, aber wie setze ich das in 2.x um?
-
@goodold sagte in Grafana Gesamtverbrauch der letzten 7Tage (every: 7d):
@codierknecht richtig! und wie mache ich das in Flux?
Das kann ich Dir nicht sagen.
Dieser ganze Influx-Kram ist mir etwas suspekt. Bevor ich mich da auch noch reinarbeite, nehme ich daher den SQL-Adapter.
Da kenne ich mich berufsbedingt wenigstens einigermaßen aus.Vielleicht schaut ja hier mal jemand mit entsprechenden Kenntnissen in Influx2 vorbei.
Die Aufgabe klingt nicht sonderlich kompliziert: AktuellerWert - WertVor7Tagen.
In reinem SQL wieder ziemlich simpel:SELECT MAX(Zaehlerstand) - MIN(Zaehlerstand) AS Verbrauch FROM Tabelle WHERE Datum >= SysDate - 7
[EDIT]
Ich mache etwas ähnliches mit meinem Gaszähler. Allerdings tage- und nicht wochenweise.
Darum schreibe ich jede Nacht um 23:59 den Tagesverbrauch in einen eigenen DP weg. Der SQL-Adapter protokolliert das dann schön für mich.
Ist es (in der Art) sowas was Du brauchst?