Home Assistant Unofficial Reference 2024.12.1
device_tracker.py
Go to the documentation of this file.
1 """Demo platform for the Device tracker component."""
2 
3 from __future__ import annotations
4 
5 import random
6 
7 from homeassistant.components.device_tracker import SeeCallback
8 from homeassistant.core import HomeAssistant, ServiceCall
9 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
10 
11 from .const import DOMAIN, SERVICE_RANDOMIZE_DEVICE_TRACKER_DATA
12 
13 
15  hass: HomeAssistant,
16  config: ConfigType,
17  see: SeeCallback,
18  discovery_info: DiscoveryInfoType | None = None,
19 ) -> bool:
20  """Set up the demo tracker."""
21 
22  def offset() -> float:
23  """Return random offset."""
24  return (random.randrange(500, 2000)) / 2e5 * random.choice((-1, 1))
25 
26  def random_see(dev_id: str, name: str) -> None:
27  """Randomize a sighting."""
28  see(
29  dev_id=dev_id,
30  host_name=name,
31  gps=(hass.config.latitude + offset(), hass.config.longitude + offset()),
32  gps_accuracy=random.randrange(50, 150),
33  battery=random.randrange(10, 90),
34  )
35 
36  def observe(call: ServiceCall | None = None) -> None:
37  """Observe three entities."""
38  random_see("demo_paulus", "Paulus")
39  random_see("demo_anne_therese", "Anne Therese")
40 
41  observe()
42 
43  see(
44  dev_id="demo_home_boy",
45  host_name="Home Boy",
46  gps=(hass.config.latitude - 0.00002, hass.config.longitude + 0.00002),
47  gps_accuracy=20,
48  battery=53,
49  )
50 
51  hass.services.register(DOMAIN, SERVICE_RANDOMIZE_DEVICE_TRACKER_DATA, observe)
52 
53  return True
bool setup_scanner(HomeAssistant hass, ConfigType config, SeeCallback see, DiscoveryInfoType|None discovery_info=None)
None see(HomeAssistant hass, str|None mac=None, str|None dev_id=None, str|None host_name=None, str|None location_name=None, GPSType|None gps=None, int|None gps_accuracy=None, int|None battery=None, dict[str, Any]|None attributes=None)
Definition: legacy.py:184