Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import "influxdata/influxdb/monitor"
- import "experimental"
- import "date"
- monthStart = date.truncate(t: now(), unit: 1mo)
- monthEnd = experimental.subDuration(d: 1d, from: experimental.addDuration(d: 1mo, to: date.truncate(t: now(), unit: 1mo)))
- startDate = experimental.subDuration(d: 1y, from: monthStart)
- stopDate = experimental.subDuration(d: 0y, from: monthEnd)
- data = from(bucket: "openhab_db/autogen")
- |> range(start: startDate, stop: stopDate)
- |> filter(fn: (r) => r["_measurement"] == "EliasPCRoomRelay")
- |> filter(fn: (r) => r["_field"] == "value")
- |> map(fn: (r) => ({r with _level: string(v: r._value)}))
- toOn = data
- |> monitor.stateChanges(toLevel: "1")
- toOff = data
- |> monitor.stateChanges(toLevel: "0")
- union(tables: [toOn, toOff])
- |> group(columns: ["_measurement"], mode:"by")
- |> sort(columns: ["_time"], desc: false)
- |> elapsed(unit: 1m)
- |> filter(fn: (r) => r._value == 1)
- |> aggregateWindow(every: 1mo, fn: sum, column: "elapsed")
- |> map(fn: (r) => ({ r with hours: (float(v: r.elapsed/60)) }))
- |> map(fn: (r) => ({ r with energy: 0.8*(float(v: r.elapsed/60)) }))
- |> timeShift(duration: -1mo)
- |> keep(columns: ["_time", "_measurement", "energy"])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement