added transition config

This commit is contained in:
John Lancaster
2025-11-30 16:41:46 -06:00
parent 05bad81571
commit 25892e1de8
3 changed files with 14 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ bar_lights:
module: light module: light
class: StagedLight class: StagedLight
activate-at-start: true activate-at-start: true
transition: 3
stages: stages:
- start: '03:00 am' - start: '03:00 am'
scene: scene:

View File

@@ -75,9 +75,17 @@ class StagedLight(Hass):
### Actions ### Actions
def activate(self, scene: dict | None = None, **kwargs): def activate(self, scene: dict | None = None, **kwargs: Any):
scene = scene if scene is not None else self.current_scene() if scene is None:
return self.call_service('scene/apply', entities=scene, transition=5) stage = self.current_stage()
kwargs['entities'] = stage.scene_json()
else:
kwargs['entities'] = scene
if t := self.args.get('transition'):
kwargs['transition'] = t
return self.call_service('scene/apply', **kwargs)
def deactivate(self, stage: Stage | None = None, **kwargs): def deactivate(self, stage: Stage | None = None, **kwargs):
stage = stage if stage is not None else self.current_stage() stage = stage if stage is not None else self.current_stage()

View File

@@ -23,8 +23,9 @@ class EntityState(BaseModel, extra='allow'):
class Stage(BaseModel): class Stage(BaseModel):
# start: Annotated[time, BeforeValidator(lambda v: parser(v).time())] # start: Annotated[time, BeforeValidator(lambda v: parser(v).time())]
start: str start: str
_start: datetime = PrivateAttr()
scene: dict[str, EntityState] scene: dict[str, EntityState]
_start: datetime = PrivateAttr()
transition: int | None = None
def assign_start(self, dt: datetime): def assign_start(self, dt: datetime):
self._start = dt self._start = dt