1 """Support for Subaru device tracker."""
3 from __future__
import annotations
7 from subarulink.const
import LATITUDE, LONGITUDE, TIMESTAMP
15 DataUpdateCoordinator,
18 from .
import get_device_info
23 VEHICLE_HAS_REMOTE_SERVICE,
31 config_entry: ConfigEntry,
32 async_add_entities: AddEntitiesCallback,
34 """Set up the Subaru device tracker by config_entry."""
35 entry: dict = hass.data[DOMAIN][config_entry.entry_id]
36 coordinator: DataUpdateCoordinator = entry[ENTRY_COORDINATOR]
37 vehicle_info: dict = entry[ENTRY_VEHICLES]
40 for vehicle
in vehicle_info.values()
41 if vehicle[VEHICLE_HAS_REMOTE_SERVICE]
46 CoordinatorEntity[DataUpdateCoordinator[dict[str, Any]]], TrackerEntity
48 """Class for Subaru device tracker."""
50 _attr_translation_key =
"location"
51 _attr_has_entity_name =
True
54 def __init__(self, vehicle_info: dict, coordinator: DataUpdateCoordinator) ->
None:
55 """Initialize the device tracker."""
57 self.
vinvin = vehicle_info[VEHICLE_VIN]
63 """Return entity specific state attributes."""
65 "Position timestamp": self.coordinator.data[self.
vinvin][VEHICLE_STATUS].
get(
72 """Return latitude value of the vehicle."""
73 return self.coordinator.data[self.
vinvin][VEHICLE_STATUS].
get(LATITUDE)
77 """Return longitude value of the vehicle."""
78 return self.coordinator.data[self.
vinvin][VEHICLE_STATUS].
get(LONGITUDE)
82 """Return if entity is available."""
83 if vehicle_data := self.coordinator.data.get(self.
vinvin):
84 if status := vehicle_data.get(VEHICLE_STATUS):
85 return status.keys() & {LATITUDE, LONGITUDE, TIMESTAMP}
dict[str, Any]|None extra_state_attributes(self)
float|None longitude(self)
None __init__(self, dict vehicle_info, DataUpdateCoordinator coordinator)
float|None latitude(self)
web.Response get(self, web.Request request, str config_key)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
def get_device_info(vehicle_info)