1 """Binary sensor entity platform for Tailwind."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
8 from gotailwind
import TailwindDoor
11 BinarySensorDeviceClass,
13 BinarySensorEntityDescription,
19 from .entity
import TailwindDoorEntity
20 from .typing
import TailwindConfigEntry
23 @dataclass(kw_only=True, frozen=True)
25 """Class describing Tailwind door binary sensor entities."""
27 is_on_fn: Callable[[TailwindDoor], bool]
30 DESCRIPTIONS: tuple[TailwindDoorBinarySensorEntityDescription, ...] = (
33 translation_key=
"operational_problem",
34 entity_category=EntityCategory.DIAGNOSTIC,
35 device_class=BinarySensorDeviceClass.PROBLEM,
36 is_on_fn=
lambda door: door.locked_out,
43 entry: TailwindConfigEntry,
44 async_add_entities: AddEntitiesCallback,
46 """Set up Tailwind binary sensor based on a config entry."""
49 for description
in DESCRIPTIONS
50 for door_id
in entry.runtime_data.data.doors
55 """Representation of a Tailwind door binary sensor entity."""
57 entity_description: TailwindDoorBinarySensorEntityDescription
61 """Return the state of the binary sensor."""
63 self.coordinator.data.doors[self.
door_iddoor_id]
None async_setup_entry(HomeAssistant hass, TailwindConfigEntry entry, AddEntitiesCallback async_add_entities)