Description
I want to collect the daily energy meter values (absolute and daily values in / out) and wrote a function for that:
sensors_daily = [
{"name": "sensor.energy_meter_energy_in_kwh", "format": "%7.1f"},
{"name": "sensor.energy_meter_energy_out_kwh", "format": "%7.1f"},
{"name": "sensor.energy_meter_energy_in_daily", "format": "%4.1f"},
{"name": "sensor.energy_meter_energy_out_daily", "format": "%4.1f"}]
sensors_monthly = [
{"name": "sensor.energy_meter_energy_in_kwh", "format": "%7.1f"},
{"name": "sensor.energy_meter_energy_out_kwh", "format": "%7.1f"},
{"name": "sensor.energy_meter_energy_in_monthly", "format": "%5.1f"},
{"name": "sensor.energy_meter_energy_out_monthly", "format": "%5.1f"}]
sensors_yearly = [
{"name": "sensor.energy_meter_energy_in_kwh", "format": "%7.1f"},
{"name": "sensor.energy_meter_energy_out_kwh", "format": "%7.1f"},
{"name": "sensor.energy_meter_energy_in_yearly", "format": "%6.1f"},
{"name": "sensor.energy_meter_energy_out_yearly", "format": "%6.1f"}]
@time_trigger("once(midnight-30s)")
def write_at_midnight():
dt_now = datetime.now() #+ timedelta(days=-1) # for the day before
write_sensors_to_file(dt_now, dt_now.strftime('/config/logs/%Y-%m-energy.log'), sensors_daily)
if is_last_day_in_month(dt_now):
write_sensors_to_file(dt_now, dt_now.strftime('/config/logs/%Y-energy.log'), sensors_monthly)
if is_last_day_in_year(dt_now):
write_sensors_to_file(dt_now, '/config/logs/energy.log', sensors_yearly)
The function works in general, but is not triggered every day:
`
2021-10-06 23:59:30 2038.3 114.5 8.3 0.1
2021-10-08 23:59:30 2059.6 114.8 12.8 0.0
2021-10-12 23:59:30 2107.0 115.0 9.8 0.0
2021-10-23 23:59:30 2228.3 115.7 13.1 0.1
2021-10-25 23:59:30 2253.5 115.8 13.6 0.0
2021-10-30 23:59:30 2306.2 116.0 10.4 0.0
2021-11-01 23:59:30 2325.2 116.1 10.4 0.0
2021-11-13 23:59:30 2486.4 116.2 17.4 0.0
2021-11-17 23:59:30 2542.1 116.2 14.5 0.0
2021-11-21 23:59:30 2605.7 116.2 16.4 0.0
2021-12-12 23:59:30 2972.2 116.2 17.0 0.0
2021-12-13 23:59:30 2986.4 116.2 14.2 0.0
2021-12-22 23:59:30 3127.4 116.2 17.8 0.0
2021-12-24 23:59:30 3164.0 116.2 16.6 0.0
2021-12-29 23:59:30 3252.3 116.2 14.4 0.0
2021-12-30 23:59:30 3266.9 116.2 14.6 0.0
...
`
I have no idea how to solve it. Right now I changed the trigger to @time_trigger("cron(0 0 * * *)")
to check if this is running every day, but here I have to compute the daily usage since the values are zeroed at midnight...