mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-23 03:33:35 +00:00
58afeb28a1
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
53 lines
1.5 KiB
Python
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"],
|
|
}
|