improved trigger code

This commit is contained in:
2024-12-17 20:48:00 +01:00
parent 35c86ffbd3
commit 494ba80e88
6 changed files with 66 additions and 26 deletions
+24 -16
View File
@@ -2,7 +2,7 @@ from trigger import Trigger
from config import Config
from roonapi import RoonApi, RoonDiscovery # type: ignore
from functools import cached_property
from typing import Any, NamedTuple
from typing import Any, NamedTuple, Union
from pathlib import Path
@@ -16,11 +16,22 @@ class RoonServer(NamedTuple):
class RoonTrigger(Trigger):
def __init__(self, _config: Config) -> None:
super().__init__(_config)
self.set_status()
@property
def playing(self) -> bool:
return False
def set_status(self) -> None:
zones_state = list()
for zone_id in self.roonapi.zones:
self.log.debug(self.roonapi.zones[zone_id])
zone = self.roonapi.zones[zone_id]
self.log.debug("zone_id: %s zone_info: %s" , zone_id, zone)
zone_name = zone['display_name']
zone_state = zone['state']
self.log.info("zone_id: %s name: %s, state: %s" , zone_id, zone_name, zone_state)
zones_state.append(zone_state)
self.active = True if "playing" in zones_state else False
@cached_property
def appinfo(self) -> dict[str, Any]:
_appinfo = {
@@ -69,15 +80,12 @@ class RoonTrigger(Trigger):
_roonapi = RoonApi(self.appinfo, self.token, self.server.ip, self.server.port, True)
return _roonapi
def my_state_callback(self, event, changed_ids):
def roon_state_callback(self, event: str, changed_ids: Union[str, list[str]]) -> None:
"""Call when something changes in roon."""
self.log.info("my_state_callback event:%s changed_ids: %s" % (event, changed_ids))
for zone_id in changed_ids:
zone = self.roonapi.zones[zone_id]
self.log.info("zone_id:%s zone_info: %s" % (zone_id, zone))
def run(self) -> bool:
self.roonapi.register_state_callback(self.my_state_callback)
return False
self.log.debug(
"%s event: %s changed_ids: %s" , RoonTrigger.roon_state_callback.__qualname__, event, changed_ids
)
self.set_status()
async def async_run(self) -> None:
self.roonapi.register_state_callback(self.roon_state_callback, "zones_changed")
+4 -2
View File
@@ -1,10 +1,12 @@
from trigger import Trigger
from config import Config
import random
class TestTrigger1(Trigger):
def __init__(self, _config: Config) -> None:
super().__init__(_config)
def run(self) -> bool:
def run(self) -> None:
choices = [False, True]
self.log.info("run check code of %s", self.__class__.__name__)
return False
self.active = random.choice(choices)