I’m currently using pvoutput to get my solar energy generation. Since that only returns a daily running total I have knocked up an automation and some sensors to track the running total Is there a better way than this?
template:
- sensor:
- name: "Power Generation"
unit_of_measurement: "W"
state_class: "measurement"
device_class: "power"
unique_id: pvoutput_power_generation
state: '{% if is_state_attr("sensor.pvoutput", "power_generation", "NaN") %}0{% else %}{{ states.sensor.pvoutput.attributes.power_generation }}{% endif %}'
- sensor:
- name: "Solar Energy Running Total"
unit_of_measurement: "kWh"
state_class: "measurement"
device_class: "energy"
attributes:
last_reset: "1970-01-01T00:00:00+00:00"
unique_id: solar_energy_running_total
state: 0
input_number:
solar_generation_daily_last_update:
step: .001
unit_of_measurement: kWh
min: 0
max: 30
automation:
- alias: calculate_running_solar_generation
id: calculate_running_solar_generation
trigger:
- platform: state
entity_id: sensor.energy_generation
action:
- service: python_script.set_state
data_template:
entity_id: sensor.solar_energy_running_total
state: "{{ (states('sensor.solar_energy_running_total') | float) + (states('sensor.energy_generation') | float) - (states('input_number.solar_generation_daily_last_update') | float) }}"
- service: input_number.set_value
target:
entity_id: input_number.solar_generation_daily_last_update
data:
value: "{{ states('sensor.energy_generation') }}"
Python script from here How to manually set state/value of sensor? - #3 by rodpayne