1 """Update platform for Teslemetry integration."""
3 from __future__
import annotations
5 from typing
import Any, cast
7 from tesla_fleet_api.const
import Scope
13 from .
import TeslemetryConfigEntry
14 from .entity
import TeslemetryVehicleEntity
15 from .helpers
import handle_vehicle_command
16 from .models
import TeslemetryVehicleData
18 AVAILABLE =
"available"
19 DOWNLOADING =
"downloading"
20 INSTALLING =
"installing"
21 WIFI_WAIT =
"downloading_wifi_wait"
22 SCHEDULED =
"scheduled"
29 entry: TeslemetryConfigEntry,
30 async_add_entities: AddEntitiesCallback,
32 """Set up the Teslemetry update platform from a config entry."""
36 for vehicle
in entry.runtime_data.vehicles
41 """Teslemetry Updates entity."""
45 data: TeslemetryVehicleData,
48 """Initialize the Update."""
49 self.
scopedscoped = Scope.VEHICLE_CMDS
in scopes
52 "vehicle_state_software_update_status",
56 """Update the attributes of the entity."""
65 UpdateEntityFeature.PROGRESS | UpdateEntityFeature.INSTALL
85 "vehicle_state_software_update_version"
96 if install_perc := self.
getget(
"vehicle_state_software_update_install_perc"):
103 self, version: str |
None, backup: bool, **kwargs: Any
105 """Install an update."""
def raise_for_scope(self, Scope scope)
Any|None get(self, str key, Any|None default=None)
None wake_up_if_asleep(self)
None async_install(self, str|None version, bool backup, **Any kwargs)
None _async_update_attrs(self)
None __init__(self, TeslemetryVehicleData data, list[Scope] scopes)
None async_write_ha_state(self)
bool handle_vehicle_command(Awaitable command)
None async_setup_entry(HomeAssistant hass, TeslemetryConfigEntry entry, AddEntitiesCallback async_add_entities)