python-kasa/kasa/smart/modules/led.py
Steven B. 58afeb28a1
Update smart request parameter handling (#1061)
Changes to the smart request handling:
- Do not send params if null
- Drop the requestId parameter
- get_preset_rules doesn't send parameters for preset component version less than 3
- get_led_info no longer sends the wrong parameters
- get_on_off_gradually_info no longer sends an empty {} parameter
2024-07-23 19:02:20 +01:00

53 lines
1.5 KiB
Python

"""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):
"""LED mode setting.
"always", "never", "night_mode"
"""
return self.data["led_rule"]
@property
def led(self):
"""Return current led status."""
return self.data["led_rule"] != "never"
@allow_update_after
async def set_led(self, enable: bool):
"""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):
"""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"],
}