"""Switches: флаги-свойства (economy/powerful/min_heat/...).""" from __future__ import annotations from typing import Any from homeassistant.components.switch import SwitchEntity from pyfglair import Prop from pyfglair.templates import prop_info from .const import SWITCH_PROPS from .coordinator import FglairCoordinator, FglairRuntime from .entity import FglairEntity class FglairSwitch(FglairEntity, SwitchEntity): def __init__( self, coordinator: FglairCoordinator, prop: Prop, key: str, ) -> None: super().__init__(coordinator, prop.name.lower(), key) self._prop = prop @property def is_on(self) -> bool: return self.raw_value(self._prop) == 1 async def async_turn_on(self, **kwargs: Any) -> None: await self.coordinator.async_write([(self._prop, 1)]) async def async_turn_off(self, **kwargs: Any) -> None: await self.coordinator.async_write([(self._prop, 0)]) async def async_setup_entry(hass, entry, async_add_entities) -> None: runtime: FglairRuntime = entry.runtime_data coordinator = runtime.coordinator template = runtime.client.template entities = [] for prop, key in SWITCH_PROPS.items(): if prop_info(template, prop) is None: continue if not coordinator.features.enabled(key): continue entities.append(FglairSwitch(coordinator, prop, key)) async_add_entities(entities)