1 """Support for Big Ass Fans binary sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from typing
import cast
9 from aiobafi6
import Device
12 BinarySensorDeviceClass,
14 BinarySensorEntityDescription,
19 from .
import BAFConfigEntry
20 from .entity
import BAFDescriptionEntity
23 @dataclass(frozen=True, kw_only=True)
25 BinarySensorEntityDescription,
27 """Class describing BAF binary sensor entities."""
29 value_fn: Callable[[Device], bool |
None]
35 device_class=BinarySensorDeviceClass.OCCUPANCY,
36 value_fn=
lambda device: cast(bool |
None, device.fan_occupancy_detected),
43 entry: BAFConfigEntry,
44 async_add_entities: AddEntitiesCallback,
46 """Set up BAF binary sensors."""
47 device = entry.runtime_data
48 if device.has_occupancy:
50 BAFBinarySensor(device, description)
for description
in OCCUPANCY_SENSORS
55 """BAF binary sensor."""
57 entity_description: BAFBinarySensorDescription
61 """Update attrs from device."""
None _async_update_attrs(self)
None async_setup_entry(HomeAssistant hass, BAFConfigEntry entry, AddEntitiesCallback async_add_entities)