1 """Platform for eq3 binary sensor entities."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
5 from typing
import TYPE_CHECKING
7 from eq3btsmart.models
import Status
10 BinarySensorDeviceClass,
12 BinarySensorEntityDescription,
18 from .
import Eq3ConfigEntry
19 from .const
import ENTITY_KEY_BATTERY, ENTITY_KEY_DST, ENTITY_KEY_WINDOW
20 from .entity
import Eq3Entity
23 @dataclass(frozen=True, kw_only=True)
25 """Entity description for eq3 binary sensors."""
27 value_func: Callable[[Status], bool]
30 BINARY_SENSOR_ENTITY_DESCRIPTIONS = [
32 value_func=
lambda status: status.is_low_battery,
33 key=ENTITY_KEY_BATTERY,
34 device_class=BinarySensorDeviceClass.BATTERY,
35 entity_category=EntityCategory.DIAGNOSTIC,
38 value_func=
lambda status: status.is_window_open,
39 key=ENTITY_KEY_WINDOW,
40 device_class=BinarySensorDeviceClass.WINDOW,
43 value_func=
lambda status: status.is_dst,
45 translation_key=ENTITY_KEY_DST,
46 entity_category=EntityCategory.DIAGNOSTIC,
53 entry: Eq3ConfigEntry,
54 async_add_entities: AddEntitiesCallback,
56 """Set up the entry."""
60 for entity_description
in BINARY_SENSOR_ENTITY_DESCRIPTIONS
65 """Base class for eQ-3 binary sensor entities."""
67 entity_description: Eq3BinarySensorEntityDescription
71 entry: Eq3ConfigEntry,
72 entity_description: Eq3BinarySensorEntityDescription,
74 """Initialize the entity."""
76 super().
__init__(entry, entity_description.key)
81 """Return the state of the binary sensor."""
84 assert self.
_thermostat_thermostat.status
is not None
None __init__(self, Eq3ConfigEntry entry, Eq3BinarySensorEntityDescription entity_description)
None async_setup_entry(HomeAssistant hass, Eq3ConfigEntry entry, AddEntitiesCallback async_add_entities)