Source code for kasa.interfaces.thermostat

"""Interact with a TPLink Thermostat."""

from __future__ import annotations

from abc import ABC, abstractmethod
from enum import Enum
from typing import Annotated, Literal

from ..module import FeatureAttribute, Module


[docs] class ThermostatState(Enum): """Thermostat state.""" Heating = "heating" Calibrating = "progress_calibration" Idle = "idle" Off = "off" Unknown = "unknown"
[docs] class Thermostat(Module, ABC): """Base class for TP-Link Thermostat.""" @property @abstractmethod def state(self) -> bool: """Return thermostat state."""
[docs] @abstractmethod async def set_state(self, enabled: bool) -> dict: """Set thermostat state."""
@property @abstractmethod def mode(self) -> ThermostatState: """Return thermostat state.""" @property @abstractmethod def target_temperature(self) -> Annotated[float, FeatureAttribute()]: """Return target temperature."""
[docs] @abstractmethod async def set_target_temperature( self, target: float ) -> Annotated[dict, FeatureAttribute()]: """Set target temperature."""
@property @abstractmethod def temperature(self) -> Annotated[float, FeatureAttribute()]: """Return current humidity in percentage.""" return self._device.sys_info["current_temp"] @property @abstractmethod def temperature_unit(self) -> Literal["celsius", "fahrenheit"]: """Return current temperature unit."""
[docs] @abstractmethod async def set_temperature_unit( self, unit: Literal["celsius", "fahrenheit"] ) -> dict: """Set the device temperature unit."""