mirror of https://github.com/simbaja/ha_gehome.git
39 lines
1.5 KiB
Python
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
|