import logging
from homeassistant.components.switch import (
SwitchDeviceClass,
SwitchEntity,
SwitchEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import OumanEH800Device
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up Ouman EH-800 device sensors."""
device = hass.data[DOMAIN].get(entry.entry_id)
entities: list[OumanEH800DeviceHomeAwaySwitch] = [
OumanEH800DeviceHomeAwaySwitch(
device,
SwitchEntityDescription(
key="home_away",
device_class=SwitchDeviceClass.SWITCH,
),
)
]
async_add_entities(entities, True)
class OumanEH800DeviceHomeAwaySwitch(SwitchEntity):
entity_description: SwitchEntityDescription
def __init__(
self,
device: OumanEH800Device,
description: SwitchEntityDescription,
) -> None:
self._device = device
self.entity_description = description
self._attr_name = description.key.replace("_", " ").capitalize()
self._attr_unique_id = f"ouman_eh800_{description.key}"
self._attr_device_info = device.device_info
@property
def is_on(self) -> bool:
value = int(self._device.device.data.get(self.entity_description.key))
if value > 0:
return False
return True
async def async_turn_off(
self,
**kwargs, # pylint: disable=unused-argument
):
await self._device.device.update_value(self.entity_description.key, 1)
self.async_write_ha_state()
async def async_turn_on(
self,
**kwargs, # pylint: disable=unused-argument
):
await self._device.device.update_value(self.entity_description.key, 0)
self.async_write_ha_state()
async def async_update(self) -> None:
await self._device.async_update()