Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for Android IP Webcam binary sensors."""
2 
3 from __future__ import annotations
4 
6  BinarySensorDeviceClass,
7  BinarySensorEntity,
8  BinarySensorEntityDescription,
9 )
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from .const import MOTION_ACTIVE
14 from .coordinator import AndroidIPCamConfigEntry, AndroidIPCamDataUpdateCoordinator
15 from .entity import AndroidIPCamBaseEntity
16 
17 BINARY_SENSOR_DESCRIPTION = BinarySensorEntityDescription(
18  key="motion_active",
19  name="Motion active",
20  device_class=BinarySensorDeviceClass.MOTION,
21 )
22 
23 
25  hass: HomeAssistant,
26  config_entry: AndroidIPCamConfigEntry,
27  async_add_entities: AddEntitiesCallback,
28 ) -> None:
29  """Set up the IP Webcam sensors from config entry."""
30 
31  async_add_entities([IPWebcamBinarySensor(config_entry.runtime_data)])
32 
33 
35  """Representation of an IP Webcam binary sensor."""
36 
37  def __init__(
38  self,
39  coordinator: AndroidIPCamDataUpdateCoordinator,
40  ) -> None:
41  """Initialize the binary sensor."""
42  self.entity_descriptionentity_description = BINARY_SENSOR_DESCRIPTION
43  self._attr_unique_id_attr_unique_id = (
44  f"{coordinator.config_entry.entry_id}-{BINARY_SENSOR_DESCRIPTION.key}"
45  )
46  super().__init__(coordinator)
47 
48  @property
49  def available(self) -> bool:
50  """Return availability if setting is enabled."""
51  return MOTION_ACTIVE in self.camcamcam.enabled_sensors and super().available
52 
53  @property
54  def is_on(self) -> bool:
55  """Return if motion is detected."""
56  return self.camcamcam.get_sensor_value(MOTION_ACTIVE) == 1.0
None __init__(self, AndroidIPCamDataUpdateCoordinator coordinator)
None async_setup_entry(HomeAssistant hass, AndroidIPCamConfigEntry config_entry, AddEntitiesCallback async_add_entities)