@@ -284,9 +284,27 @@ def update(
284284 """Get pulse update."""
285285 last_reset = datetime .now (tz = LOCAL_TIMEZONE )
286286 if self ._energy_id in ENERGY_HOUR_COUNTERS :
287+ # No syncing needed for the hour-counters, they reset when the device pulsecounter(s) reset
287288 last_reset = last_reset .replace (minute = 0 , second = 0 , microsecond = 0 )
288289 if self ._energy_id in ENERGY_DAY_COUNTERS :
289- last_reset = last_reset .replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
290+ # Sync the daily reset time with the device pulsecounter(s) reset time
291+ if self ._is_consumption :
292+ if self ._pulse_collection .consumption_last_hourly_reset is not None :
293+ last_reset = last_reset .replace (
294+ hour = 0 ,
295+ minute = self ._pulse_collection .consumption_last_hourly_reset .minutes ,
296+ second = self ._pulse_collection .consumption_last_hourly_reset .seconds ,
297+ microsecond = self ._pulse_collection .consumption_last_hourly_reset .microseconds ,
298+ )
299+ elif self ._pulse_collection .production_last_hourly_reset is not None :
300+ last_reset = last_reset .replace (
301+ hour = 0 ,
302+ minute = self ._pulse_collection .production_last_hourly_reset .minutes ,
303+ second = self ._pulse_collection .production_last_hourly_reset .seconds ,
304+ microsecond = self ._pulse_collection .production_last_hourly_reset .microseconds ,
305+ )
306+ else :
307+ last_reset = last_reset .replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
290308
291309 pulses , last_update = pulse_collection .collected_pulses (
292310 last_reset , self ._is_consumption
0 commit comments