@SpacerX: Danke für den super Tipp. Inzwischen hab ich mich etwas in Flux eingearbeitet
Da ich auch Probleme mit nicht passenden Werten hatte, kann Ich ja mal zeigen wie Ich es gelöst hab.
fn: last bringt folgendes Problem. Der Stromverbrauch wird nicht von 0:00 - 0:00Uhr berechnet. Sondern mit dem Wert zuvor. Der letzte also. z.B. 23:00 - 23:00Uhr. Finde Ich nicht ganz so schön. Deshalb hab ich fn: first verwendet.
Damit passten die Zeiten aber nicht mehr. Das hab ich folgt gelöst:
|> map(fn: (r) => ({r with _time: date.add(d: -1h, to: r._time)}))
mit d: -1h, hab ich den Zeitstempel um eine Stunde verschoben.
Mein kompletter Code um auf Stundenbasis zu Downsampeln sieht wie folgt aus :
import "date"
option task = {name: "Stromverbrauch", every: 1h}
data =
from(bucket: "ioBroker")
|> range(start: -24h, stop: 1h)
|> filter(fn: (r) => r["_measurement"] == "javascript.0.Info.StromZaehler.Zaehlerstand_Min")
|> filter(fn: (r) => r["_field"] == "value")
data
|> aggregateWindow(every: 1h, fn: first, createEmpty: false)
|> difference(nonNegative: true, columns: ["_value"])
|> toInt()
|> map(fn: (r) => ({r with _value: r._value / 10}))
|> map(fn: (r) => ({r with _time: date.add(d: -1h, to: r._time)}))
|> set(key: "_Interval", value: "1h")
|> to(bucket: "Energie", org: "inFluxDB", tagColumns: ["_Interval"])
Hoffe ich konnte damit helfen....