# Calculate collected "current Watt" values to kWh

Hi,

I saw people asking similar questions in the forum, but couldn’t find an answer. Thus trying again:
Currently I managed to get to ONE value, representing the mean power consumption during a specific time period, e.g. today so far 262W consumption in average.

In detail, this query…

from(bucket: “openHAB”)
|> range(start: today(), stop: now())
|> filter(fn: (r) => r[“_measurement”] == “Shelly3EM_ALL_CURRENTWATTS”)
|> mean()

…results in:

What’s missing is a mapping or rather calculation to kWh, e.g. using

|> map(fn: (r) => ({r with _value: r._value * TIME_PERIOD__HOURS / 1000.0}))

I tried several attemps with “date.hour(now ())” but I always faced syntax erros

Any help is highly appreciated.

I’ve now addressed this the following way. No clue if there is a more elegant solution:

passedHours = from(bucket: “openHAB”)
|> range(start: today(), stop: now())
|> filter(fn: (r) => r[“_measurement”] == “Shelly3EM_ALL_CURRENTWATTS”)
|> elapsed(unit: 1s)
|> aggregateWindow(every: 1d, fn: sum, column:“elapsed”)
|> map(fn: (r) => ({ r with elapsed: float(v: r.elapsed)/3600.0 }))

averageWatt = from(bucket: “openHAB”)
|> range(start: today(), stop: now())
|> filter(fn: (r) => r[“_measurement”] == “Shelly3EM_ALL_CURRENTWATTS”)
|> aggregateWindow(every: 1d, fn: mean)

join(tables: {t1: passedHours, t2: averageWatt}, on: [“_time”])
|> map(fn: (r) => ({ r with kWh: float(v: r._value) * float (v: r.elapsed) / 1000.0}))
|> drop(columns: [“_value”, “elapsed”])