Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for Tractive binary sensors."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
8  BinarySensorDeviceClass,
9  BinarySensorEntity,
10  BinarySensorEntityDescription,
11 )
12 from homeassistant.const import ATTR_BATTERY_CHARGING, EntityCategory
13 from homeassistant.core import HomeAssistant, callback
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from . import Trackables, TractiveClient, TractiveConfigEntry
17 from .const import TRACKER_HARDWARE_STATUS_UPDATED
18 from .entity import TractiveEntity
19 
20 
22  """Tractive sensor."""
23 
24  def __init__(
25  self,
26  client: TractiveClient,
27  item: Trackables,
28  description: BinarySensorEntityDescription,
29  ) -> None:
30  """Initialize sensor entity."""
31  super().__init__(
32  client,
33  item.trackable,
34  item.tracker_details,
35  f"{TRACKER_HARDWARE_STATUS_UPDATED}-{item.tracker_details['_id']}",
36  )
37 
38  self._attr_unique_id_attr_unique_id = f"{item.trackable['_id']}_{description.key}"
39  self._attr_available_attr_available_attr_available = False
40  self.entity_descriptionentity_description = description
41 
42  @callback
43  def handle_status_update(self, event: dict[str, Any]) -> None:
44  """Handle status update."""
45  self._attr_is_on_attr_is_on = event[self.entity_descriptionentity_description.key]
46 
47  super().handle_status_update(event)
48 
49 
51  key=ATTR_BATTERY_CHARGING,
52  translation_key="tracker_battery_charging",
53  device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
54  entity_category=EntityCategory.DIAGNOSTIC,
55 )
56 
57 
59  hass: HomeAssistant,
60  entry: TractiveConfigEntry,
61  async_add_entities: AddEntitiesCallback,
62 ) -> None:
63  """Set up Tractive device trackers."""
64  client = entry.runtime_data.client
65  trackables = entry.runtime_data.trackables
66 
67  entities = [
68  TractiveBinarySensor(client, item, SENSOR_TYPE)
69  for item in trackables
70  if item.tracker_details.get("charging_state") is not None
71  ]
72 
73  async_add_entities(entities)
None __init__(self, TractiveClient client, Trackables item, BinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, TractiveConfigEntry entry, AddEntitiesCallback async_add_entities)