Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for Taps Affs."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 import logging
7 
8 from tapsaff import TapsAff
9 import voluptuous as vol
10 
12  PLATFORM_SCHEMA as BINARY_SENSOR_PLATFORM_SCHEMA,
13  BinarySensorEntity,
14 )
15 from homeassistant.const import CONF_LOCATION, CONF_NAME
16 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
20 
21 _LOGGER = logging.getLogger(__name__)
22 
23 DEFAULT_NAME = "Taps Aff"
24 
25 SCAN_INTERVAL = timedelta(minutes=30)
26 
27 PLATFORM_SCHEMA = BINARY_SENSOR_PLATFORM_SCHEMA.extend(
28  {
29  vol.Required(CONF_LOCATION): cv.string,
30  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
31  }
32 )
33 
34 
36  hass: HomeAssistant,
37  config: ConfigType,
38  add_entities: AddEntitiesCallback,
39  discovery_info: DiscoveryInfoType | None = None,
40 ) -> None:
41  """Set up the Taps Aff binary sensor."""
42  name = config.get(CONF_NAME)
43  location = config.get(CONF_LOCATION)
44 
45  taps_aff_data = TapsAffData(location)
46 
47  add_entities([TapsAffSensor(taps_aff_data, name)], True)
48 
49 
51  """Implementation of a Taps Aff binary sensor."""
52 
53  def __init__(self, taps_aff_data, name):
54  """Initialize the Taps Aff sensor."""
55  self.datadata = taps_aff_data
56  self._name_name = name
57 
58  @property
59  def name(self):
60  """Return the name of the sensor."""
61  return f"{self._name}"
62 
63  @property
64  def is_on(self):
65  """Return true if taps aff."""
66  return self.datadata.is_taps_aff
67 
68  def update(self) -> None:
69  """Get the latest data."""
70  self.datadata.update()
71 
72 
74  """Class for handling the data retrieval for pins."""
75 
76  def __init__(self, location):
77  """Initialize the data object."""
78 
79  self._is_taps_aff_is_taps_aff = None
80  self.taps_afftaps_aff = TapsAff(location)
81 
82  @property
83  def is_taps_aff(self):
84  """Return true if taps aff."""
85  return self._is_taps_aff_is_taps_aff
86 
87  def update(self):
88  """Get the latest data from the Taps Aff API and updates the states."""
89  try:
90  self._is_taps_aff_is_taps_aff = self.taps_afftaps_aff.is_taps_aff
91  except RuntimeError:
92  _LOGGER.error("Update failed. Check configured location")
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)