1 """Device tracker for MyBMW vehicles."""
3 from __future__
import annotations
8 from bimmer_connected.vehicle
import MyBMWVehicle
14 from .
import BMWConfigEntry
15 from .const
import ATTR_DIRECTION
16 from .coordinator
import BMWDataUpdateCoordinator
17 from .entity
import BMWBaseEntity
19 _LOGGER = logging.getLogger(__name__)
24 config_entry: BMWConfigEntry,
25 async_add_entities: AddEntitiesCallback,
27 """Set up the MyBMW tracker from config entry."""
28 coordinator = config_entry.runtime_data.coordinator
29 entities: list[BMWDeviceTracker] = []
31 for vehicle
in coordinator.account.vehicles:
33 if not vehicle.is_vehicle_tracking_enabled:
36 "Tracking is (currently) disabled for vehicle %s (%s), defaulting"
46 """MyBMW device tracker."""
48 _attr_force_update =
False
49 _attr_translation_key =
"car"
50 _attr_icon =
"mdi:car"
54 coordinator: BMWDataUpdateCoordinator,
55 vehicle: MyBMWVehicle,
57 """Initialize the Tracker."""
58 super().
__init__(coordinator, vehicle)
65 """Return entity specific state attributes."""
66 return {ATTR_DIRECTION: self.
vehiclevehicle.vehicle_location.heading}
70 """Return latitude value of the device."""
72 self.
vehiclevehicle.vehicle_location.location[0]
73 if self.
vehiclevehicle.is_vehicle_tracking_enabled
74 and self.
vehiclevehicle.vehicle_location.location
80 """Return longitude value of the device."""
82 self.
vehiclevehicle.vehicle_location.location[1]
83 if self.
vehiclevehicle.is_vehicle_tracking_enabled
84 and self.
vehiclevehicle.vehicle_location.location
dict[str, Any] extra_state_attributes(self)
float|None latitude(self)
None __init__(self, BMWDataUpdateCoordinator coordinator, MyBMWVehicle vehicle)
float|None longitude(self)
None async_setup_entry(HomeAssistant hass, BMWConfigEntry config_entry, AddEntitiesCallback async_add_entities)