Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Control binary sensor instances."""
2 
3 import asyncio
4 from datetime import timedelta
5 import logging
6 
7 from ProgettiHWSW.input import Input
8 
9 from homeassistant.components.binary_sensor import BinarySensorEntity
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14  CoordinatorEntity,
15  DataUpdateCoordinator,
16 )
17 
18 from . import setup_input
19 from .const import DEFAULT_POLLING_INTERVAL_SEC, DOMAIN
20 
21 _LOGGER = logging.getLogger(DOMAIN)
22 
23 
25  hass: HomeAssistant,
26  config_entry: ConfigEntry,
27  async_add_entities: AddEntitiesCallback,
28 ) -> None:
29  """Set up the binary sensors from a config entry."""
30  board_api = hass.data[DOMAIN][config_entry.entry_id]
31  input_count = config_entry.data["input_count"]
32 
33  async def async_update_data():
34  """Fetch data from API endpoint of board."""
35  async with asyncio.timeout(5):
36  return await board_api.get_inputs()
37 
38  coordinator = DataUpdateCoordinator(
39  hass,
40  _LOGGER,
41  name="binary_sensor",
42  update_method=async_update_data,
43  update_interval=timedelta(seconds=DEFAULT_POLLING_INTERVAL_SEC),
44  )
45  await coordinator.async_refresh()
46 
49  coordinator,
50  f"Input #{i}",
51  setup_input(board_api, i),
52  )
53  for i in range(1, int(input_count) + 1)
54  )
55 
56 
58  """Represent a binary sensor."""
59 
60  def __init__(self, coordinator, name, sensor: Input) -> None:
61  """Set initializing values."""
62  super().__init__(coordinator)
63  self._attr_name_attr_name = name
64  self._sensor_sensor = sensor
65 
66  @property
67  def is_on(self):
68  """Get sensor state."""
69  return self.coordinator.data[self._sensor_sensor.id]
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Input setup_input(ProgettiHWSWAPI api, int input_number)
Definition: __init__.py:40