Mercurial > code > home > repos > light-bridge
view light.py @ 5:7eeda7f4f9cd
spell it to_dict, for compat with DataClassJsonMixin
author | drewp@bigasterisk.com |
---|---|
date | Sun, 28 Jan 2024 16:01:43 -0800 |
parents | e8e4fd6d5619 |
children | fc8ed0efcd72 |
line wrap: on
line source
import asyncio import logging from dataclasses import dataclass from color import Color log = logging.getLogger('light') @dataclass class Light: name: str address: str online: bool colorRequest: Color colorMessage: dict colorCurrent: Color latencyMs: float def to_dict(self): return { 'light': { 'name': self.name, 'address': self.address, 'online': self.online, 'colorRequest': self.colorRequest.to_js(), 'colorMessage': self.colorMessage, 'colorCurrent': self.colorCurrent.to_js(), 'latencyMs': self.latencyMs, } } class Lights: _d: dict[str, Light] = {} def add(self, d: Light): self._d[d.name] = d def byName(self, name: str) -> Light: return self._d[name] async def changes(self): # yields None on any data change while True: yield None await asyncio.sleep(1) # todo def to_dict(self): return {'lights': [d.to_dict() for d in sorted(self._d.values(), key=lambda r: r.name)]}