I’ve created my own task to update Tageswerte each day. I’m not sure if it´s the best flux-style. But the dry-run worked.
option task = {
name: "Update Tageswerte",
cron: "59 23 * * *",
}
// Produktion #############################################################
dProdMin = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/ProductionActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
//|> first()
)
|> first()
dProdMax = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/ProductionActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
)
|> last()
dProd = join(tables: {dProdMin, dProdMax}, on: ["_start"])
|> map(
fn: (r) => ({
_time: today(),
_measurement: "data",
_field: "dailyProd",
_value: r._value_dProdMax - r._value_dProdMin,
}),
)
|> to(bucket: "tageswerte")
// Verbrauch #############################################################
dConMin = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/ConsumptionActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
//|> first()
)
|> first()
dConMax = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/ConsumptionActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
)
|> last()
dCon = join(tables: {dConMin, dConMax}, on: ["_start"])
|> map(
fn: (r) => ({
_time: today(),
_measurement: "data",
_field: "dailyCon",
_value: r._value_dConMax - r._value_dConMin,
}),
)
|> to(bucket: "tageswerte")
// Verkauf #############################################################
dSellMin = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/GridSellActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
//|> first()
)
|> first()
dSellMax = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/GridSellActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
)
|> last()
dSell = join(tables: {dSellMin, dSellMax}, on: ["_start"])
|> map(
fn: (r) => ({
_time: today(),
_measurement: "data",
_field: "dailySell",
_value: r._value_dSellMax - r._value_dSellMin,
}),
)
|> to(bucket: "tageswerte")
// Einkauf #############################################################
dBuyMin = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/GridBuyActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
//|> first()
)
|> first()
dBuyMax = from(bucket: "ems")
|> range(start: today())
|> filter(fn: (r) => r._measurement == "data" and r._field == "_sum/GridBuyActiveEnergy")
|> map(
fn: (r) => ({
_time: r._time,
_start: r._start,
_stop: r._stop,
_value: r._value,
}),
)
|> last()
dBuy = join(tables: {dBuyMin, dBuyMax}, on: ["_start"])
|> map(
fn: (r) => ({
_time: today(),
_measurement: "data",
_field: "dailyBuy",
_value: r._value_dBuyMax - r._value_dBuyMin,
}),
)
//|>yield()
|> to(bucket: "tageswerte")