python
This commit is contained in:
67
custom_components/yandex_station/water_heater.py
Normal file
67
custom_components/yandex_station/water_heater.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import logging
|
||||
|
||||
from homeassistant.components.water_heater import (
|
||||
WaterHeaterEntity,
|
||||
WaterHeaterEntityFeature,
|
||||
)
|
||||
from homeassistant.const import UnitOfTemperature
|
||||
|
||||
from .core.entity import YandexEntity
|
||||
from .hass import hass_utils
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
INCLUDE_TYPES = ("devices.types.cooking.kettle",)
|
||||
|
||||
|
||||
async def async_setup_entry(hass, entry, async_add_entities):
|
||||
async_add_entities(
|
||||
YandexKettle(quasar, device, config)
|
||||
for quasar, device, config in hass_utils.incluce_devices(hass, entry)
|
||||
if device["type"] in INCLUDE_TYPES
|
||||
)
|
||||
|
||||
|
||||
# noinspection PyAbstractClass
|
||||
class YandexKettle(WaterHeaterEntity, YandexEntity):
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
_attr_translation_key = "kettle"
|
||||
|
||||
def internal_init(self, capabilities: dict, properties: dict):
|
||||
self._attr_operation_list = ["on", "off"] if "on" in capabilities else []
|
||||
|
||||
if item := capabilities.get("tea_mode"):
|
||||
self._attr_operation_list += [i["value"] for i in item["modes"]]
|
||||
|
||||
if self._attr_operation_list:
|
||||
self._attr_supported_features |= WaterHeaterEntityFeature.OPERATION_MODE
|
||||
|
||||
if item := capabilities.get("temperature"):
|
||||
self._attr_supported_features |= WaterHeaterEntityFeature.TARGET_TEMPERATURE
|
||||
self._attr_min_temp = item["range"]["min"]
|
||||
self._attr_max_temp = item["range"]["max"]
|
||||
|
||||
def internal_update(self, capabilities: dict, properties: dict):
|
||||
if "on" in capabilities:
|
||||
self._attr_current_operation = "on" if capabilities["on"] else "off"
|
||||
if "temperature" in capabilities:
|
||||
self._attr_target_temperature = capabilities["temperature"]
|
||||
if "temperature" in properties:
|
||||
self._attr_current_temperature = properties["temperature"]
|
||||
|
||||
async def async_set_operation_mode(self, operation_mode):
|
||||
if operation_mode == "on":
|
||||
await self.device_action("on", True)
|
||||
elif operation_mode == "off":
|
||||
await self.device_action("on", False)
|
||||
else:
|
||||
await self.device_action("tea_mode", operation_mode)
|
||||
|
||||
async def async_set_temperature(self, temperature: float, **kwargs):
|
||||
await self.device_action("temperature", temperature)
|
||||
|
||||
async def async_turn_on(self):
|
||||
await self.device_action("on", True)
|
||||
|
||||
async def async_turn_off(self):
|
||||
await self.device_action("on", False)
|
||||
Reference in New Issue
Block a user