@@ -422,10 +422,11 @@ def __init__( # noqa: PLR0913
422422
423423 self ._last_ha_state_write : datetime | None = None
424424 self ._last_written_battery_level : float | None = None
425+ self ._last_written_last_replaced : datetime | None = None
425426
426427 @callback
427428 def _write_tracked_ha_state (self ) -> None :
428- """Write state at startup, on value changes, or when interval elapsed."""
429+ """Write state at startup, on value changes, on important attributes or when interval elapsed."""
429430 native_value = self ._attr_native_value
430431 if isinstance (native_value , int | float | str ):
431432 try :
@@ -435,16 +436,22 @@ def _write_tracked_ha_state(self) -> None:
435436 else :
436437 current_battery_level = None
437438
439+ current_last_replaced = (
440+ self .coordinator .last_replaced if self .enable_replaced else None
441+ )
442+
438443 if self ._last_ha_state_write is not None :
439444 if (
440445 current_battery_level == self ._last_written_battery_level
446+ and current_last_replaced == self ._last_written_last_replaced
441447 and (dt_util .utcnow () - self ._last_ha_state_write ).total_seconds ()
442448 < STATE_WRITE_INTERVAL_SECONDS
443449 ):
444450 return
445451
446452 self ._last_ha_state_write = dt_util .utcnow ()
447453 self ._last_written_battery_level = current_battery_level
454+ self ._last_written_last_replaced = current_last_replaced
448455 self .async_write_ha_state ()
449456
450457 @property
0 commit comments