"""Implementation of the ambient light (LAS) module found in some dimmers.""" from .module import Module # TODO create tests and use the config reply there # [{"hw_id":0,"enable":0,"dark_index":1,"min_adc":0,"max_adc":2450, # "level_array":[{"name":"cloudy","adc":490,"value":20}, # {"name":"overcast","adc":294,"value":12}, # {"name":"dawn","adc":222,"value":9}, # {"name":"twilight","adc":222,"value":9}, # {"name":"total darkness","adc":111,"value":4}, # {"name":"custom","adc":2400,"value":97}]}] class AmbientLight(Module): """Implements ambient light controls for the motion sensor.""" def query(self): """Request configuration.""" return self.query_for_command("get_config") @property def presets(self) -> dict: """Return device-defined presets for brightness setting.""" return self.data["level_array"] @property def enabled(self) -> bool: """Return True if the module is enabled.""" return bool(self.data["enable"]) async def set_enabled(self, state: bool): """Enable/disable LAS.""" return await self.call("set_enable", {"enable": int(state)}) async def current_brightness(self) -> int: """Return current brightness. Return value units. """ return await self.call("get_current_brt") async def set_brightness_limit(self, value: int): """Set the limit when the motion sensor is inactive. See `presets` for preset values. Custom values are also likely allowed. """ return await self.call("set_brt_level", {"index": 0, "value": value})