1 """Support for Tractive device trackers."""
3 from __future__
import annotations
12 from .
import Trackables, TractiveClient, TractiveConfigEntry
15 TRACKER_HARDWARE_STATUS_UPDATED,
16 TRACKER_POSITION_UPDATED,
18 from .entity
import TractiveEntity
23 entry: TractiveConfigEntry,
24 async_add_entities: AddEntitiesCallback,
26 """Set up Tractive device trackers."""
27 client = entry.runtime_data.client
28 trackables = entry.runtime_data.trackables
36 """Tractive device tracker."""
38 _attr_translation_key =
"tracker"
40 def __init__(self, client: TractiveClient, item: Trackables) ->
None:
41 """Initialize tracker entity."""
46 f
"{TRACKER_HARDWARE_STATUS_UPDATED}-{item.tracker_details['_id']}",
49 self.
_battery_level_battery_level: int |
None = item.hw_info.get(
"battery_level")
53 self.
_source_type_source_type: str = item.pos_report[
"sensor_used"]
58 """Return the source type, eg gps or router, of the device."""
60 return SourceType.BLUETOOTH
62 return SourceType.ROUTER
67 """Return the battery level of the device."""
87 """Handle entity which will be added."""
88 if not self.
_client_client.subscribed:
102 f
"{TRACKER_POSITION_UPDATED}-{self._tracker_id}",
110 f
"{SERVER_UNAVAILABLE}-{self._user_id}",
None __init__(self, TractiveClient client, Trackables item)
SourceType source_type(self)
None _handle_position_update(self, dict[str, Any] event)
int|None battery_level(self)
None async_added_to_hass(self)
None _handle_hardware_status_update(self, dict[str, Any] event)
None handle_server_unavailable(self)
None async_write_ha_state(self)
None async_on_remove(self, CALLBACK_TYPE func)
Callable[[], None] subscribe(HomeAssistant hass, str topic, MessageCallbackType msg_callback, int qos=DEFAULT_QOS, str encoding="utf-8")
None async_setup_entry(HomeAssistant hass, TractiveConfigEntry entry, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)