1 """Support for System Bridge binary sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
9 BinarySensorDeviceClass,
11 BinarySensorEntityDescription,
18 from .const
import DOMAIN
19 from .coordinator
import SystemBridgeDataUpdateCoordinator
20 from .data
import SystemBridgeData
21 from .entity
import SystemBridgeEntity
24 @dataclass(frozen=True)
26 """Class describing System Bridge binary sensor entities."""
28 value_fn: Callable = round
32 """Return if any camera is in use."""
33 if data.system.camera_usage
is not None:
34 return len(data.system.camera_usage) > 0
38 BASE_BINARY_SENSOR_TYPES: tuple[SystemBridgeBinarySensorEntityDescription, ...] = (
41 translation_key=
"camera_in_use",
43 value_fn=camera_in_use,
47 translation_key=
"pending_reboot",
49 value_fn=
lambda data: data.system.pending_reboot,
52 key=
"version_available",
53 device_class=BinarySensorDeviceClass.UPDATE,
54 value_fn=
lambda data: data.system.version_newer_available,
58 BATTERY_BINARY_SENSOR_TYPES: tuple[SystemBridgeBinarySensorEntityDescription, ...] = (
60 key=
"battery_is_charging",
61 device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
62 value_fn=
lambda data: data.battery.is_charging,
68 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
70 """Set up System Bridge binary sensor based on a config entry."""
71 coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
75 for description
in BASE_BINARY_SENSOR_TYPES
79 coordinator.data.battery
80 and coordinator.data.battery.percentage
81 and coordinator.data.battery.percentage > -1
85 for description
in BATTERY_BINARY_SENSOR_TYPES
92 """Define a System Bridge binary sensor."""
94 entity_description: SystemBridgeBinarySensorEntityDescription
98 coordinator: SystemBridgeDataUpdateCoordinator,
99 description: SystemBridgeBinarySensorEntityDescription,
112 """Return the boolean state of the binary sensor."""
None __init__(self, SystemBridgeDataUpdateCoordinator coordinator, SystemBridgeBinarySensorEntityDescription description, int api_port)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
bool|None camera_in_use(SystemBridgeData data)