ha_gehome/custom_components/ge_home/entities/common/ge_erd_binary_sensor.py

39 lines
1.5 KiB
Python

from typing import Optional
from homeassistant.components.binary_sensor import BinarySensorEntity
from gehomesdk import ErdCode, ErdCodeType, ErdCodeClass
from ...devices import ApplianceApi
from .ge_erd_entity import GeErdEntity
class GeErdBinarySensor(GeErdEntity, BinarySensorEntity):
def __init__(self, api: ApplianceApi, erd_code: ErdCodeType, 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=erd_override, icon_override=icon_on_override, device_class_override=device_class_override)
self._icon_on_override = icon_on_override
self._icon_off_override = icon_off_override
"""GE Entity for binary sensors"""
@property
def is_on(self) -> bool:
"""Return True if entity is on."""
return self._boolify(self.appliance.get_erd_value(self.erd_code))
def _get_erd_icon(self):
if self._icon_on_override and self.is_on:
return self._icon_on_override
if self._icon_off_override and not self.is_on:
return self._icon_off_override
if self._erd_code_class == ErdCodeClass.DOOR or self.device_class == "door":
return "mdi:door-open" if self.is_on else "mdi:door-closed"
return None
def _get_device_class(self) -> Optional[str]:
if self._device_class_override:
return self._device_class_override
if self._erd_code_class == ErdCodeClass.DOOR:
return "door"
return None