influxDB und Flux für Zeitabfragen / Tageswerte

influxDB und Flux für Zeitabfragen / Tageswerte

Hat man alle Daten in der influxDB meint man, es wäre einfach diese passend in Grafana anzuzeigen.
Der folgende Code zeigt, dass es irgendwie doch nicht so einfach ist:

import "timezone"

option location = timezone.fixed(offset: 2h)

from(bucket: "iobroker")
  |> range(start: -90d)
  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Solarweb.Current.01_Day.Energy.EnergyConsumptionTotal")
  |> filter(fn: (r) => r["_field"] == "value")
  |> aggregateWindow(every: 1d, fn: max, createEmpty: false)
    |> timeShift(duration: -1m)
  |> set(key: "_measurement", value: "Verbrauch")
  |> set(key: "_field", value: "")

Das was einen Programmierer in den Wahnsinn treibt (neben Codepage) sind gefühlt die Zeitzonen + Sommer und Winterzeit….ahhhhhhhhhh

Irgendwie passte es bei mir auch alles nicht so richtig, die Verschiebung um 2 Stunden half erst einmal.
Wahrscheinlich müsste man UTC-1 oder so – und dann noch irgendwie Sommer und Winterzeit rein bekommen.
Siehe auch:
https://www.influxdata.com/blog/time-zones-in-flux/

wenn ich eine bessere Lösung gefunden habe, schreibe ich diese hier.
Soweit versteht sich dies als erster Workaround.

Weiter im Code:
range – die letzten 90 Tage okay…

dann das andere Gedöns, okay.

Aber der krönende Abschluss für mich:
|> timeShift(duration: -1m)

Die MaxWerte des Tages welche ich auslesen möchte, kommen genau um 00:00 Uhr an.
Und es ist 00:00 Uhr nicht 24:00 Uhr.
Ich dachte schon es liegt an der Influx, dass er mir den heutigen Tag doppelt anzeigt und die restlichen Tag um 1 verschoben – nein. Es liegt an den Daten – okay.
Die Lösung versteht sich von selbst – aber irgendwie auch schon wieder alles viel zu kompliziert 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert