1 """Contains device trackers exposed by the Starlink integration."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
9 TrackerEntityDescription,
15 from .const
import ATTR_ALTITUDE, DOMAIN
16 from .coordinator
import StarlinkData
17 from .entity
import StarlinkEntity
21 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
23 """Set up all binary sensors for this entry."""
24 coordinator = hass.data[DOMAIN][entry.entry_id]
28 for description
in DEVICE_TRACKERS
32 @dataclass(frozen=True, kw_only=True)
34 """Describes a Starlink button entity."""
36 latitude_fn: Callable[[StarlinkData], float]
37 longitude_fn: Callable[[StarlinkData], float]
38 altitude_fn: Callable[[StarlinkData], float]
43 key=
"device_location",
44 translation_key=
"device_location",
45 entity_registry_enabled_default=
False,
46 latitude_fn=
lambda data: data.location[
"latitude"],
47 longitude_fn=
lambda data: data.location[
"longitude"],
48 altitude_fn=
lambda data: data.location[
"altitude"],
54 """A TrackerEntity for Starlink devices. Handles creating unique IDs."""
56 entity_description: StarlinkDeviceTrackerEntityDescription
60 """Return latitude value of the device."""
65 """Return longitude value of the device."""
70 """Return device specific attributes."""
72 ATTR_ALTITUDE: self.
entity_descriptionentity_description.altitude_fn(self.coordinator.data)
float|None longitude(self)
float|None latitude(self)
dict[str, Any] extra_state_attributes(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)