mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Fix lingering timer in ZHA light transition (#91683)
This commit is contained in:
parent
dace1add1f
commit
ec914815bd
@ -138,6 +138,11 @@ class BaseLight(LogMixin, light.LightEntity):
|
|||||||
self._transitioning_group: bool = False
|
self._transitioning_group: bool = False
|
||||||
self._transition_listener: Callable[[], None] | None = None
|
self._transition_listener: Callable[[], None] | None = None
|
||||||
|
|
||||||
|
async def async_will_remove_from_hass(self) -> None:
|
||||||
|
"""Disconnect entity object when removed."""
|
||||||
|
self._async_unsub_transition_listener()
|
||||||
|
await super().async_will_remove_from_hass()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def extra_state_attributes(self) -> dict[str, Any]:
|
def extra_state_attributes(self) -> dict[str, Any]:
|
||||||
"""Return state attributes."""
|
"""Return state attributes."""
|
||||||
@ -575,8 +580,7 @@ class BaseLight(LogMixin, light.LightEntity):
|
|||||||
SIGNAL_LIGHT_GROUP_TRANSITION_START,
|
SIGNAL_LIGHT_GROUP_TRANSITION_START,
|
||||||
{"entity_ids": self._entity_ids},
|
{"entity_ids": self._entity_ids},
|
||||||
)
|
)
|
||||||
if self._transition_listener is not None:
|
self._async_unsub_transition_listener()
|
||||||
self._transition_listener()
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_transition_start_timer(self, transition_time) -> None:
|
def async_transition_start_timer(self, transition_time) -> None:
|
||||||
@ -596,14 +600,19 @@ class BaseLight(LogMixin, light.LightEntity):
|
|||||||
self.async_transition_complete,
|
self.async_transition_complete,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def _async_unsub_transition_listener(self) -> None:
|
||||||
|
"""Unsubscribe transition listener."""
|
||||||
|
if self._transition_listener:
|
||||||
|
self._transition_listener()
|
||||||
|
self._transition_listener = None
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_transition_complete(self, _=None) -> None:
|
def async_transition_complete(self, _=None) -> None:
|
||||||
"""Set _transitioning_individual to False and write HA state."""
|
"""Set _transitioning_individual to False and write HA state."""
|
||||||
self.debug("transition complete - future attribute reports will write HA state")
|
self.debug("transition complete - future attribute reports will write HA state")
|
||||||
self._transitioning_individual = False
|
self._transitioning_individual = False
|
||||||
if self._transition_listener:
|
self._async_unsub_transition_listener()
|
||||||
self._transition_listener()
|
|
||||||
self._transition_listener = None
|
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
if isinstance(self, LightGroup):
|
if isinstance(self, LightGroup):
|
||||||
async_dispatcher_send(
|
async_dispatcher_send(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user