mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-16 00:34:04 +02:00
Merge remote-tracking branch 'origin/main' into fix/pr1593-intensity-lifecycle
This commit is contained in:
commit
e0d13c032d
7 changed files with 181 additions and 12 deletions
|
|
@ -21,6 +21,7 @@ from homeassistant.components.light import (
|
|||
ATTR_SUPPORTED_COLOR_MODES,
|
||||
ATTR_TRANSITION,
|
||||
ATTR_XY_COLOR,
|
||||
VALID_TRANSITION,
|
||||
ColorMode,
|
||||
LightEntityFeature,
|
||||
is_on,
|
||||
|
|
@ -626,6 +627,18 @@ def _is_state_event(
|
|||
)
|
||||
|
||||
|
||||
def _turn_off_transition(turn_off_event: Event) -> float | None:
|
||||
"""Normalize the raw event transition using the light service's validator.
|
||||
|
||||
Service-call events retain raw data after validation, so repeat the
|
||||
service's coercion and clamping before calculating transition windows.
|
||||
"""
|
||||
transition = turn_off_event.data[ATTR_SERVICE_DATA].get(ATTR_TRANSITION)
|
||||
if transition is None:
|
||||
return None
|
||||
return VALID_TRANSITION(transition)
|
||||
|
||||
|
||||
def _expand_light_groups(
|
||||
hass: HomeAssistant,
|
||||
lights: list[str],
|
||||
|
|
@ -3174,7 +3187,7 @@ class AdaptiveLightingManager:
|
|||
):
|
||||
return False
|
||||
|
||||
transition = turn_off_event.data[ATTR_SERVICE_DATA].get(ATTR_TRANSITION)
|
||||
transition = _turn_off_transition(turn_off_event)
|
||||
delay = max(transition or 0, TURNING_OFF_DELAY)
|
||||
elapsed = (dt_util.utcnow() - turn_off_event.time_fired).total_seconds()
|
||||
if not 0 <= elapsed <= delay:
|
||||
|
|
@ -3258,7 +3271,7 @@ class AdaptiveLightingManager:
|
|||
|
||||
turn_off_event = self.turn_off_event.get(entity_id)
|
||||
if turn_off_event is not None:
|
||||
transition = turn_off_event.data[ATTR_SERVICE_DATA].get(ATTR_TRANSITION)
|
||||
transition = _turn_off_transition(turn_off_event)
|
||||
else:
|
||||
transition = None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue