"""Module for led controls.""" from __future__ import annotations from ...interfaces.led import Led as LedInterface from ..smartmodule import SmartModule, allow_update_after class Led(SmartModule, LedInterface): """Implementation of led controls.""" REQUIRED_COMPONENT = "led" QUERY_GETTER_NAME = "get_led_info" # Led queries can cause device to crash on P100 MINIMUM_UPDATE_INTERVAL_SECS = 60 * 60 def query(self) -> dict: """Query to execute during the update cycle.""" return {self.QUERY_GETTER_NAME: None} @property def mode(self) -> str: """LED mode setting. "always", "never", "night_mode" """ return self.data["led_rule"] @property def led(self) -> bool: """Return current led status.""" return self.data["led_rule"] != "never" @allow_update_after async def set_led(self, enable: bool) -> dict: """Set led. This should probably be a select with always/never/nightmode. """ rule = "always" if enable else "never" return await self.call("set_led_info", dict(self.data, **{"led_rule": rule})) @property def night_mode_settings(self) -> dict: """Night mode settings.""" return { "start": self.data["start_time"], "end": self.data["end_time"], "type": self.data["night_mode_type"], "sunrise_offset": self.data["sunrise_offset"], "sunset_offset": self.data["sunset_offset"], }