I need to monitor the energy consumption of an entire building, so I have the follow template sensor to combine the energy consumption:
- platform: template
sensors:
energy_consumption:
friendly_name: "Energy Consumption"
unit_of_measurement: "kWh"
value_template: "{{ (states('sensor.fibarowp9_electric_consumed_kwh') | float + states('sensor.fibarowp10_electric_consumed_kwh') | float + states('sensor.fibarowp11_electric_consumed_kwh') | float + states('sensor.fibarowp12_electric_consumed_kwh') | float + states('sensor.fibarowp13_electric_consumed_kwh') | float + states('sensor.fibarowp14_electric_consumed_kwh') | float + states('sensor.fibarowp15_electric_consumed_kwh') | float + states('sensor.fibarowp16_electric_consumed_kwh') | float + states('sensor.fibarowp17_electric_consumed_kwh') | float) | round(3) }}"
Then I use the utility meter to generate energy consumption reports:
utility_meter:
energy_consumption_quarter_hourly:
source: sensor.energy_consumption
cycle: quarter-hourly
energy_consumption_hourly:
source: sensor.energy_consumption
cycle: hourly
energy_consumption_daily:
source: sensor.energy_consumption
cycle: daily
energy_consumption_weekly:
source: sensor.energy_consumption
cycle: weekly
energy_consumption_monthly:
source: sensor.energy_consumption
cycle: monthly
energy_consumption_yearly:
source: sensor.energy_consumption
cycle: yearly
The problem is, sensor.energy_consumption sometimes decreases in value when a sensor is unavailable. This messes up the reporting from utility meter. Is there any way to ensure that sensor.energy_consumption can only increase in value? Or can I make a new sensor using a template that only increases in value?
Ideally, I would have some kind of template which compares the new value to the previous value, and if the new value is less than the previous value, discard it.