34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
import logging
|
|
|
|
from gehomesdk import ErdCodeType
|
|
from homeassistant.components.switch import SwitchEntity
|
|
|
|
from ...devices import ApplianceApi
|
|
from .ge_erd_binary_sensor import GeErdBinarySensor
|
|
from .bool_converter import BoolConverter
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
class GeErdSwitch(GeErdBinarySensor, SwitchEntity):
|
|
"""Switches for boolean ERD codes."""
|
|
device_class = "switch"
|
|
|
|
def __init__(self, api: ApplianceApi, erd_code: ErdCodeType, bool_converter: BoolConverter = BoolConverter(), erd_override: str = None, icon_on_override: str = None, icon_off_override: str = None, device_class_override: str = None):
|
|
super().__init__(api, erd_code, erd_override, icon_on_override, icon_off_override, device_class_override)
|
|
self._converter = bool_converter
|
|
|
|
@property
|
|
def is_on(self) -> bool:
|
|
"""Return True if switch is on."""
|
|
return self._converter.boolify(self.appliance.get_erd_value(self.erd_code))
|
|
|
|
async def async_turn_on(self, **kwargs):
|
|
"""Turn the switch on."""
|
|
_LOGGER.debug(f"Turning on {self.unique_id}")
|
|
await self.appliance.async_set_erd_value(self.erd_code, self._converter.true_value())
|
|
|
|
async def async_turn_off(self, **kwargs):
|
|
"""Turn the switch off."""
|
|
_LOGGER.debug(f"Turning off {self.unique_id}")
|
|
await self.appliance.async_set_erd_value(self.erd_code, self._converter.false_value())
|