Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Platform for binarysensor integration."""
2 
3 from __future__ import annotations
4 
5 from boschshcpy import SHCBatteryDevice, SHCSession, SHCShutterContact
6 from boschshcpy.device import SHCDevice
7 
9  BinarySensorDeviceClass,
10  BinarySensorEntity,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from .const import DATA_SESSION, DOMAIN
17 from .entity import SHCEntity
18 
19 
21  hass: HomeAssistant,
22  config_entry: ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up the SHC binary sensor platform."""
26  session: SHCSession = hass.data[DOMAIN][config_entry.entry_id][DATA_SESSION]
27 
28  entities: list[BinarySensorEntity] = [
30  device=binary_sensor,
31  parent_id=session.information.unique_id,
32  entry_id=config_entry.entry_id,
33  )
34  for binary_sensor in (
35  session.device_helper.shutter_contacts
36  + session.device_helper.shutter_contacts2
37  )
38  ]
39 
40  entities.extend(
42  device=binary_sensor,
43  parent_id=session.information.unique_id,
44  entry_id=config_entry.entry_id,
45  )
46  for binary_sensor in (
47  session.device_helper.motion_detectors
48  + session.device_helper.shutter_contacts
49  + session.device_helper.shutter_contacts2
50  + session.device_helper.smoke_detectors
51  + session.device_helper.thermostats
52  + session.device_helper.twinguards
53  + session.device_helper.universal_switches
54  + session.device_helper.wallthermostats
55  + session.device_helper.water_leakage_detectors
56  )
57  )
58 
59  async_add_entities(entities)
60 
61 
63  """Representation of an SHC shutter contact sensor."""
64 
65  _attr_name = None
66 
67  def __init__(self, device: SHCDevice, parent_id: str, entry_id: str) -> None:
68  """Initialize an SHC shutter contact sensor.."""
69  super().__init__(device, parent_id, entry_id)
70  switcher = {
71  "ENTRANCE_DOOR": BinarySensorDeviceClass.DOOR,
72  "REGULAR_WINDOW": BinarySensorDeviceClass.WINDOW,
73  "FRENCH_WINDOW": BinarySensorDeviceClass.DOOR,
74  "GENERIC": BinarySensorDeviceClass.WINDOW,
75  }
76  self._attr_device_class_attr_device_class = switcher.get(
77  self._device_device.device_class, BinarySensorDeviceClass.WINDOW
78  )
79 
80  @property
81  def is_on(self):
82  """Return the state of the sensor."""
83  return self._device_device.state == SHCShutterContact.ShutterContactService.State.OPEN
84 
85 
87  """Representation of an SHC battery reporting sensor."""
88 
89  _attr_device_class = BinarySensorDeviceClass.BATTERY
90 
91  def __init__(self, device: SHCDevice, parent_id: str, entry_id: str) -> None:
92  """Initialize an SHC battery reporting sensor."""
93  super().__init__(device, parent_id, entry_id)
94  self._attr_unique_id_attr_unique_id_attr_unique_id = f"{device.serial}_battery"
95 
96  @property
97  def is_on(self):
98  """Return the state of the sensor."""
99  return (
100  self._device_device.batterylevel != SHCBatteryDevice.BatteryLevelService.State.OK
101  )
None __init__(self, SHCDevice device, str parent_id, str entry_id)
None __init__(self, SHCDevice device, str parent_id, str entry_id)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)