stagedlight

This commit is contained in:
John Lancaster
2025-11-21 17:45:56 -06:00
parent 98d9ad0556
commit 852dbcfd8f
5 changed files with 102 additions and 77 deletions

View File

@@ -1,19 +1,9 @@
import functools
from datetime import datetime, time
from pathlib import Path
from typing import Annotated, Any
from datetime import datetime
from typing import Any
from appdaemon.adapi import ADAPI
from pydantic import (
BaseModel,
BeforeValidator,
Field,
PrivateAttr,
TypeAdapter,
field_serializer,
field_validator,
)
from rich import print as rprint
from pydantic import BaseModel
from pydantic import PrivateAttr
from pydantic import field_serializer
class EntityState(BaseModel):
@@ -21,16 +11,25 @@ class EntityState(BaseModel):
color_temp_kelvin: int
brightness: int
@field_serializer("state")
@field_serializer('state')
def convert_state(self, val: Any):
if val:
return "on"
return 'on'
else:
return "off"
return 'off'
class Stage(BaseModel):
# start: Annotated[time, BeforeValidator(lambda v: parser(v).time())]
start: str
_start: time = PrivateAttr()
_start: datetime = PrivateAttr()
scene: dict[str, EntityState]
def assign_start(self, dt: datetime):
self._start = dt
def formatted_start(self, fmt: str) -> str:
return self._start.strftime(fmt)
def scene_json(self):
return self.model_dump(mode='json')['scene']