1 """Update platform for Tessie integration."""
3 from __future__
import annotations
7 from tessie_api
import schedule_software_update
13 from .
import TessieConfigEntry
14 from .const
import TessieUpdateStatus
15 from .entity
import TessieEntity
16 from .models
import TessieVehicleData
23 entry: TessieConfigEntry,
24 async_add_entities: AddEntitiesCallback,
26 """Set up the Tessie Update platform from a config entry."""
27 data = entry.runtime_data
33 """Tessie Updates entity."""
35 _attr_supported_features = UpdateEntityFeature.PROGRESS
39 vehicle: TessieVehicleData,
41 """Initialize the Update."""
46 """Flag supported features."""
47 if self.
getget(
"vehicle_state_software_update_status")
in (
48 TessieUpdateStatus.AVAILABLE,
49 TessieUpdateStatus.SCHEDULED,
56 """Return the current app version."""
58 return self.coordinator.data[
"vehicle_state_car_version"].split(
" ")[0]
62 """Return the latest version."""
63 if self.
getget(
"vehicle_state_software_update_status")
in (
64 TessieUpdateStatus.AVAILABLE,
65 TessieUpdateStatus.SCHEDULED,
66 TessieUpdateStatus.INSTALLING,
67 TessieUpdateStatus.DOWNLOADING,
68 TessieUpdateStatus.WIFI_WAIT,
70 return self.
getget(
"vehicle_state_software_update_version")
75 """Update installation progress."""
77 self.
getget(
"vehicle_state_software_update_status")
78 == TessieUpdateStatus.INSTALLING
83 """Update installation progress."""
85 self.
getget(
"vehicle_state_software_update_status")
86 == TessieUpdateStatus.INSTALLING
88 return self.
getget(
"vehicle_state_software_update_install_perc")
92 self, version: str |
None, backup: bool, **kwargs: Any
94 """Install an update."""
95 await self.
runrun(schedule_software_update, in_seconds=0)
97 (
"vehicle_state_software_update_status", TessieUpdateStatus.INSTALLING)
Any get(self, str|None key=None, Any|None default=None)
None set(self, *Any args)
None run(self, Callable[..., Awaitable[dict[str, Any]]] func, **Any kargs)
str installed_version(self)
str|None latest_version(self)
None __init__(self, TessieVehicleData vehicle)
None async_install(self, str|None version, bool backup, **Any kwargs)
int|None update_percentage(self)
UpdateEntityFeature supported_features(self)
str|None installed_version(self)
None async_setup_entry(HomeAssistant hass, TessieConfigEntry entry, AddEntitiesCallback async_add_entities)