1 """Tesla Fleet parent entity class."""
3 from abc
import abstractmethod
6 from tesla_fleet_api
import EnergySpecific, VehicleSpecific
7 from tesla_fleet_api.const
import Scope
13 from .const
import DOMAIN
14 from .coordinator
import (
15 TeslaFleetEnergySiteInfoCoordinator,
16 TeslaFleetEnergySiteLiveCoordinator,
17 TeslaFleetVehicleDataCoordinator,
19 from .helpers
import wake_up_vehicle
20 from .models
import TeslaFleetEnergyData, TeslaFleetVehicleData
25 TeslaFleetVehicleDataCoordinator
26 | TeslaFleetEnergySiteLiveCoordinator
27 | TeslaFleetEnergySiteInfoCoordinator
30 """Parent class for all TeslaFleet entities."""
32 _attr_has_entity_name =
True
38 coordinator: TeslaFleetVehicleDataCoordinator
39 | TeslaFleetEnergySiteLiveCoordinator
40 | TeslaFleetEnergySiteInfoCoordinator,
41 api: VehicleSpecific | EnergySpecific,
44 """Initialize common aspects of a TeslaFleet entity."""
53 """Return if sensor is available."""
54 return self.coordinator.last_update_success
and self._attr_available
58 """Return a specific value from coordinator data."""
59 return self.coordinator.data.get(self.
keykey)
61 def get(self, key: str, default: Any |
None =
None) -> Any |
None:
62 """Return a specific value from coordinator data."""
63 return self.coordinator.data.get(key, default)
66 """Return a specific number from coordinator data."""
67 if isinstance(value := self.coordinator.data.get(key), (int, float)):
73 """Return if the value is a literal None."""
74 return self.
getget(self.
keykey,
False)
is None
77 def has(self) -> bool:
78 """Return True if a specific value is in coordinator data."""
79 return self.
keykey
in self.coordinator.data
82 """Handle updated data from the coordinator."""
84 self.async_write_ha_state()
88 """Update the attributes of the entity."""
91 """Raise an error if a scope is not available."""
93 raise ServiceValidationError(
94 translation_domain=DOMAIN,
95 translation_key=f
"missing_scope_{scope.name.lower()}",
100 """Parent class for TeslaFleet Vehicle entities."""
102 _last_update: int = 0
106 data: TeslaFleetVehicleData,
109 """Initialize common aspects of a Tesla Fleet entity."""
115 super().
__init__(data.coordinator, data.api, key)
119 """Return a specific value from coordinator data."""
120 return self.coordinator.data.get(self.
keykey)
123 """Wake up the vehicle if its asleep."""
128 """Parent class for TeslaFleet Energy Site Live entities."""
132 data: TeslaFleetEnergyData,
135 """Initialize common aspects of a Tesla Fleet Energy Site Live entity."""
139 super().
__init__(data.live_coordinator, data.api, key)
143 """Parent class for TeslaFleet Energy Site Info entities."""
147 data: TeslaFleetEnergyData,
150 """Initialize common aspects of a Tesla Fleet Energy Site Info entity."""
154 super().
__init__(data.info_coordinator, data.api, key)
158 TeslaFleetEntity, CoordinatorEntity[TeslaFleetEnergySiteLiveCoordinator]
160 """Parent class for Tesla Fleet Wall Connector entities."""
162 _attr_has_entity_name =
True
166 data: TeslaFleetEnergyData,
170 """Initialize common aspects of a Tesla Fleet entity."""
175 model: str |
None =
None
176 for wc
in data.info_coordinator.data.get(
"components_wall_connectors", []):
178 model = wc.get(
"part_name")
182 identifiers={(DOMAIN, din)},
183 manufacturer=
"Tesla",
184 name=
"Wall Connector",
185 via_device=(DOMAIN,
str(data.id)),
186 serial_number=din.split(
"-")[-1],
190 super().
__init__(data.live_coordinator, data.api, key)
194 """Return a specific wall connector value from coordinator data."""
196 self.coordinator.data.get(
"wall_connectors", {})
None __init__(self, TeslaFleetEnergyData data, str key)
None __init__(self, TeslaFleetEnergyData data, str key)
None __init__(self, TeslaFleetVehicleDataCoordinator|TeslaFleetEnergySiteLiveCoordinator|TeslaFleetEnergySiteInfoCoordinator coordinator, VehicleSpecific|EnergySpecific api, str key)
Any|None get(self, str key, Any|None default=None)
None _handle_coordinator_update(self)
None _async_update_attrs(self)
None raise_for_read_only(self, Scope scope)
float get_number(self, str key, float default)
None wake_up_if_asleep(self)
None __init__(self, TeslaFleetVehicleData data, str key)
None __init__(self, TeslaFleetEnergyData data, str din, str key)
None wake_up_vehicle(TeslaFleetVehicleData vehicle)