Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for Firmata binary sensor input."""
2 
3 import logging
4 
5 from homeassistant.components.binary_sensor import BinarySensorEntity
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import CONF_NAME, CONF_PIN
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.entity_platform import AddEntitiesCallback
10 
11 from .const import CONF_NEGATE_STATE, CONF_PIN_MODE, DOMAIN
12 from .entity import FirmataPinEntity
13 from .pin import FirmataBinaryDigitalInput, FirmataPinUsedException
14 
15 _LOGGER = logging.getLogger(__name__)
16 
17 
19  hass: HomeAssistant,
20  config_entry: ConfigEntry,
21  async_add_entities: AddEntitiesCallback,
22 ) -> None:
23  """Set up the Firmata binary sensors."""
24  new_entities = []
25 
26  board = hass.data[DOMAIN][config_entry.entry_id]
27  for binary_sensor in board.binary_sensors:
28  pin = binary_sensor[CONF_PIN]
29  pin_mode = binary_sensor[CONF_PIN_MODE]
30  negate = binary_sensor[CONF_NEGATE_STATE]
31  api = FirmataBinaryDigitalInput(board, pin, pin_mode, negate)
32  try:
33  api.setup()
34  except FirmataPinUsedException:
35  _LOGGER.error(
36  "Could not setup binary sensor on pin %s since pin already in use",
37  binary_sensor[CONF_PIN],
38  )
39  continue
40  name = binary_sensor[CONF_NAME]
41  binary_sensor_entity = FirmataBinarySensor(api, config_entry, name, pin)
42  new_entities.append(binary_sensor_entity)
43 
44  async_add_entities(new_entities)
45 
46 
48  """Representation of a binary sensor on a Firmata board."""
49 
50  async def async_added_to_hass(self) -> None:
51  """Set up a binary sensor."""
52  await self._api_api.start_pin(self.async_write_ha_stateasync_write_ha_state)
53 
54  async def async_will_remove_from_hass(self) -> None:
55  """Stop reporting a binary sensor."""
56  await self._api_api.stop_pin()
57 
58  @property
59  def is_on(self) -> bool:
60  """Return true if binary sensor is on."""
61  return self._api_api.is_on
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)