python-kasa/kasa/smart/modules/frostprotection.py
Teemu R 9dcd8ec91b
Improve temperature controls (#872)
This improves the temperature control features to allow implementing
climate platform support for homeassistant.

Also adds frostprotection module, which is also used to turn
the thermostat on and off.
2024-05-02 13:05:26 +00:00

59 lines
1.7 KiB
Python

"""Frost protection module."""
from __future__ import annotations
from typing import TYPE_CHECKING
from ...feature import Feature
from ..smartmodule import SmartModule
# TODO: this may not be necessary with __future__.annotations
if TYPE_CHECKING:
from ..smartdevice import SmartDevice
class FrostProtectionModule(SmartModule):
"""Implementation for frost protection module.
This basically turns the thermostat on and off.
"""
REQUIRED_COMPONENT = "frost_protection"
# TODO: the information required for current features do not require this query
QUERY_GETTER_NAME = "get_frost_protection"
def __init__(self, device: SmartDevice, module: str):
super().__init__(device, module)
self._add_feature(
Feature(
device,
name="Frost protection enabled",
container=self,
attribute_getter="enabled",
attribute_setter="set_enabled",
type=Feature.Type.Switch,
)
)
@property
def enabled(self) -> bool:
"""Return True if frost protection is on."""
return self._device.sys_info["frost_protection_on"]
async def set_enabled(self, enable: bool):
"""Enable/disable frost protection."""
return await self.call(
"set_device_info",
{"frost_protection_on": enable},
)
@property
def minimum_temperature(self) -> int:
"""Return frost protection minimum temperature."""
return self.data["min_temp"]
@property
def temperature_unit(self) -> str:
"""Return frost protection temperature unit."""
return self.data["temp_unit"]