Home Assistant Unofficial Reference 2024.12.1
device_tracker.py
Go to the documentation of this file.
1 """Support for tracking MySensors devices."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.device_tracker import TrackerEntity
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import Platform
8 from homeassistant.core import HomeAssistant, callback
9 from homeassistant.helpers.dispatcher import async_dispatcher_connect
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from . import setup_mysensors_platform
13 from .const import MYSENSORS_DISCOVERY, DiscoveryInfo
14 from .entity import MySensorsChildEntity
15 from .helpers import on_unload
16 
17 
19  hass: HomeAssistant,
20  config_entry: ConfigEntry,
21  async_add_entities: AddEntitiesCallback,
22 ) -> None:
23  """Set up this platform for a specific ConfigEntry(==Gateway)."""
24 
25  @callback
26  def async_discover(discovery_info: DiscoveryInfo) -> None:
27  """Discover and add a MySensors device tracker."""
29  hass,
30  Platform.DEVICE_TRACKER,
31  discovery_info,
32  MySensorsDeviceTracker,
33  async_add_entities=async_add_entities,
34  )
35 
36  on_unload(
37  hass,
38  config_entry.entry_id,
40  hass,
41  MYSENSORS_DISCOVERY.format(config_entry.entry_id, Platform.DEVICE_TRACKER),
42  async_discover,
43  ),
44  )
45 
46 
48  """Represent a MySensors device tracker."""
49 
50  @callback
51  def _async_update(self) -> None:
52  """Update the controller with the latest value from a device."""
53  super()._async_update()
54  node = self.gateway.sensors[self.node_id]
55  child = node.children[self.child_id]
56  position: str = child.values[self.value_type]
57  latitude, longitude, _ = position.split(",")
58  self._attr_latitude_attr_latitude = float(latitude)
59  self._attr_longitude_attr_longitude = float(longitude)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
None on_unload(HomeAssistant hass, GatewayId gateway_id, Callable fnct)
Definition: helpers.py:45
None async_discover(DiscoveryInfo discovery_info)
Definition: sensor.py:217
list[MySensorsChildEntity]|None setup_mysensors_platform(HomeAssistant hass, Platform domain, DiscoveryInfo discovery_info, type[MySensorsChildEntity]|Mapping[SensorType, type[MySensorsChildEntity]] device_class,(tuple|None) device_args=None, Callable|None async_add_entities=None)
Definition: __init__.py:112
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)
Definition: dispatcher.py:103