Rename classes in Teslemetry (#144179)

This commit is contained in:
Brett Adams 2025-05-04 22:18:39 +10:00 committed by GitHub
parent 8046684179
commit 87fab1fa14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 80 additions and 61 deletions

View File

@ -24,7 +24,7 @@ from .const import TeslemetryState
from .entity import ( from .entity import (
TeslemetryEnergyInfoEntity, TeslemetryEnergyInfoEntity,
TeslemetryEnergyLiveEntity, TeslemetryEnergyLiveEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .models import TeslemetryEnergyData, TeslemetryVehicleData from .models import TeslemetryEnergyData, TeslemetryVehicleData
@ -569,7 +569,7 @@ async def async_setup_entry(
class TeslemetryVehiclePollingBinarySensorEntity( class TeslemetryVehiclePollingBinarySensorEntity(
TeslemetryVehicleEntity, BinarySensorEntity TeslemetryVehiclePollingEntity, BinarySensorEntity
): ):
"""Base class for Teslemetry vehicle binary sensors.""" """Base class for Teslemetry vehicle binary sensors."""

View File

@ -13,7 +13,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import TeslemetryConfigEntry from . import TeslemetryConfigEntry
from .entity import TeslemetryVehicleEntity from .entity import TeslemetryVehiclePollingEntity
from .helpers import handle_command, handle_vehicle_command from .helpers import handle_command, handle_vehicle_command
from .models import TeslemetryVehicleData from .models import TeslemetryVehicleData
@ -73,7 +73,7 @@ async def async_setup_entry(
) )
class TeslemetryButtonEntity(TeslemetryVehicleEntity, ButtonEntity): class TeslemetryButtonEntity(TeslemetryVehiclePollingEntity, ButtonEntity):
"""Base class for Teslemetry buttons.""" """Base class for Teslemetry buttons."""
entity_description: TeslemetryButtonEntityDescription entity_description: TeslemetryButtonEntityDescription

View File

@ -30,7 +30,7 @@ from . import TeslemetryConfigEntry
from .const import DOMAIN, TeslemetryClimateSide from .const import DOMAIN, TeslemetryClimateSide
from .entity import ( from .entity import (
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_vehicle_command from .helpers import handle_vehicle_command
@ -64,7 +64,7 @@ async def async_setup_entry(
async_add_entities( async_add_entities(
chain( chain(
( (
TeslemetryPollingClimateEntity( TeslemetryVehiclePollingClimateEntity(
vehicle, TeslemetryClimateSide.DRIVER, entry.runtime_data.scopes vehicle, TeslemetryClimateSide.DRIVER, entry.runtime_data.scopes
) )
if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25" if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25"
@ -74,7 +74,7 @@ async def async_setup_entry(
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
), ),
( (
TeslemetryPollingCabinOverheatProtectionEntity( TeslemetryVehiclePollingCabinOverheatProtectionEntity(
vehicle, entry.runtime_data.scopes vehicle, entry.runtime_data.scopes
) )
if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25" if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25"
@ -178,7 +178,9 @@ class TeslemetryClimateEntity(TeslemetryRootEntity, ClimateEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingClimateEntity(TeslemetryClimateEntity, TeslemetryVehicleEntity): class TeslemetryVehiclePollingClimateEntity(
TeslemetryClimateEntity, TeslemetryVehiclePollingEntity
):
"""Polling vehicle climate entity.""" """Polling vehicle climate entity."""
_attr_supported_features = ( _attr_supported_features = (
@ -430,8 +432,8 @@ class TeslemetryCabinOverheatProtectionEntity(TeslemetryRootEntity, ClimateEntit
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingCabinOverheatProtectionEntity( class TeslemetryVehiclePollingCabinOverheatProtectionEntity(
TeslemetryVehicleEntity, TeslemetryCabinOverheatProtectionEntity TeslemetryVehiclePollingEntity, TeslemetryCabinOverheatProtectionEntity
): ):
"""Vehicle Cabin Overheat Protection.""" """Vehicle Cabin Overheat Protection."""

View File

@ -21,7 +21,7 @@ from homeassistant.helpers.restore_state import RestoreEntity
from . import TeslemetryConfigEntry from . import TeslemetryConfigEntry
from .entity import ( from .entity import (
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_vehicle_command from .helpers import handle_vehicle_command
@ -43,13 +43,15 @@ async def async_setup_entry(
async_add_entities( async_add_entities(
chain( chain(
( (
TeslemetryPollingWindowEntity(vehicle, entry.runtime_data.scopes) TeslemetryVehiclePollingWindowEntity(vehicle, entry.runtime_data.scopes)
if vehicle.api.pre2021 or vehicle.firmware < "2024.26" if vehicle.api.pre2021 or vehicle.firmware < "2024.26"
else TeslemetryStreamingWindowEntity(vehicle, entry.runtime_data.scopes) else TeslemetryStreamingWindowEntity(vehicle, entry.runtime_data.scopes)
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
), ),
( (
TeslemetryPollingChargePortEntity(vehicle, entry.runtime_data.scopes) TeslemetryVehiclePollingChargePortEntity(
vehicle, entry.runtime_data.scopes
)
if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25" if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25"
else TeslemetryStreamingChargePortEntity( else TeslemetryStreamingChargePortEntity(
vehicle, entry.runtime_data.scopes vehicle, entry.runtime_data.scopes
@ -57,7 +59,9 @@ async def async_setup_entry(
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
), ),
( (
TeslemetryPollingFrontTrunkEntity(vehicle, entry.runtime_data.scopes) TeslemetryVehiclePollingFrontTrunkEntity(
vehicle, entry.runtime_data.scopes
)
if vehicle.api.pre2021 or vehicle.firmware < "2024.26" if vehicle.api.pre2021 or vehicle.firmware < "2024.26"
else TeslemetryStreamingFrontTrunkEntity( else TeslemetryStreamingFrontTrunkEntity(
vehicle, entry.runtime_data.scopes vehicle, entry.runtime_data.scopes
@ -65,7 +69,9 @@ async def async_setup_entry(
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
), ),
( (
TeslemetryPollingRearTrunkEntity(vehicle, entry.runtime_data.scopes) TeslemetryVehiclePollingRearTrunkEntity(
vehicle, entry.runtime_data.scopes
)
if vehicle.api.pre2021 or vehicle.firmware < "2024.26" if vehicle.api.pre2021 or vehicle.firmware < "2024.26"
else TeslemetryStreamingRearTrunkEntity( else TeslemetryStreamingRearTrunkEntity(
vehicle, entry.runtime_data.scopes vehicle, entry.runtime_data.scopes
@ -121,8 +127,8 @@ class TeslemetryWindowEntity(TeslemetryRootEntity, CoverEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingWindowEntity( class TeslemetryVehiclePollingWindowEntity(
TeslemetryVehicleEntity, TeslemetryWindowEntity, CoverEntity TeslemetryVehiclePollingEntity, TeslemetryWindowEntity, CoverEntity
): ):
"""Polling cover entity for windows.""" """Polling cover entity for windows."""
@ -238,8 +244,8 @@ class TeslemetryChargePortEntity(
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingChargePortEntity( class TeslemetryVehiclePollingChargePortEntity(
TeslemetryVehicleEntity, TeslemetryChargePortEntity TeslemetryVehiclePollingEntity, TeslemetryChargePortEntity
): ):
"""Polling cover entity for the charge port.""" """Polling cover entity for the charge port."""
@ -312,8 +318,8 @@ class TeslemetryFrontTrunkEntity(TeslemetryRootEntity, CoverEntity):
# In the future this could be extended to add aftermarket close support through a option flow # In the future this could be extended to add aftermarket close support through a option flow
class TeslemetryPollingFrontTrunkEntity( class TeslemetryVehiclePollingFrontTrunkEntity(
TeslemetryVehicleEntity, TeslemetryFrontTrunkEntity TeslemetryVehiclePollingEntity, TeslemetryFrontTrunkEntity
): ):
"""Polling cover entity for the front trunk.""" """Polling cover entity for the front trunk."""
@ -381,8 +387,8 @@ class TeslemetryRearTrunkEntity(TeslemetryRootEntity, CoverEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingRearTrunkEntity( class TeslemetryVehiclePollingRearTrunkEntity(
TeslemetryVehicleEntity, TeslemetryRearTrunkEntity TeslemetryVehiclePollingEntity, TeslemetryRearTrunkEntity
): ):
"""Base class for the rear trunk cover entities.""" """Base class for the rear trunk cover entities."""
@ -424,7 +430,7 @@ class TeslemetryStreamingRearTrunkEntity(
self._attr_is_closed = None if value is None else not value self._attr_is_closed = None if value is None else not value
class TeslemetrySunroofEntity(TeslemetryVehicleEntity, CoverEntity): class TeslemetrySunroofEntity(TeslemetryVehiclePollingEntity, CoverEntity):
"""Cover entity for the sunroof.""" """Cover entity for the sunroof."""
_attr_device_class = CoverDeviceClass.WINDOW _attr_device_class = CoverDeviceClass.WINDOW

View File

@ -19,7 +19,7 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.restore_state import RestoreEntity from homeassistant.helpers.restore_state import RestoreEntity
from . import TeslemetryConfigEntry from . import TeslemetryConfigEntry
from .entity import TeslemetryVehicleEntity, TeslemetryVehicleStreamEntity from .entity import TeslemetryVehiclePollingEntity, TeslemetryVehicleStreamEntity
from .models import TeslemetryVehicleData from .models import TeslemetryVehicleData
PARALLEL_UPDATES = 0 PARALLEL_UPDATES = 0
@ -74,7 +74,8 @@ async def async_setup_entry(
"""Set up the Teslemetry device tracker platform from a config entry.""" """Set up the Teslemetry device tracker platform from a config entry."""
entities: list[ entities: list[
TeslemetryPollingDeviceTrackerEntity | TeslemetryStreamingDeviceTrackerEntity TeslemetryVehiclePollingDeviceTrackerEntity
| TeslemetryStreamingDeviceTrackerEntity
] = [] ] = []
# Only add vehicle location entities if the user has granted vehicle location scope. # Only add vehicle location entities if the user has granted vehicle location scope.
if Scope.VEHICLE_LOCATION not in entry.runtime_data.scopes: if Scope.VEHICLE_LOCATION not in entry.runtime_data.scopes:
@ -85,7 +86,9 @@ async def async_setup_entry(
if vehicle.api.pre2021 or vehicle.firmware < description.streaming_firmware: if vehicle.api.pre2021 or vehicle.firmware < description.streaming_firmware:
if description.polling_prefix: if description.polling_prefix:
entities.append( entities.append(
TeslemetryPollingDeviceTrackerEntity(vehicle, description) TeslemetryVehiclePollingDeviceTrackerEntity(
vehicle, description
)
) )
else: else:
entities.append( entities.append(
@ -95,7 +98,9 @@ async def async_setup_entry(
async_add_entities(entities) async_add_entities(entities)
class TeslemetryPollingDeviceTrackerEntity(TeslemetryVehicleEntity, TrackerEntity): class TeslemetryVehiclePollingDeviceTrackerEntity(
TeslemetryVehiclePollingEntity, TrackerEntity
):
"""Base class for Teslemetry Tracker Entities.""" """Base class for Teslemetry Tracker Entities."""
entity_description: TeslemetryDeviceTrackerEntityDescription entity_description: TeslemetryDeviceTrackerEntityDescription

View File

@ -38,7 +38,7 @@ class TeslemetryRootEntity(Entity):
) )
class TeslemetryEntity( class TeslemetryPollingEntity(
TeslemetryRootEntity, TeslemetryRootEntity,
CoordinatorEntity[ CoordinatorEntity[
TeslemetryVehicleDataCoordinator TeslemetryVehicleDataCoordinator
@ -98,7 +98,7 @@ class TeslemetryEntity(
"""Update the attributes of the entity.""" """Update the attributes of the entity."""
class TeslemetryVehicleEntity(TeslemetryEntity): class TeslemetryVehiclePollingEntity(TeslemetryPollingEntity):
"""Parent class for Teslemetry Vehicle entities.""" """Parent class for Teslemetry Vehicle entities."""
_last_update: int = 0 _last_update: int = 0
@ -130,7 +130,7 @@ class TeslemetryVehicleEntity(TeslemetryEntity):
return self.coordinator.data.get(self.key) return self.coordinator.data.get(self.key)
class TeslemetryEnergyLiveEntity(TeslemetryEntity): class TeslemetryEnergyLiveEntity(TeslemetryPollingEntity):
"""Parent class for Teslemetry Energy Site Live entities.""" """Parent class for Teslemetry Energy Site Live entities."""
api: EnergySite api: EnergySite
@ -151,7 +151,7 @@ class TeslemetryEnergyLiveEntity(TeslemetryEntity):
super().__init__(data.live_coordinator, key) super().__init__(data.live_coordinator, key)
class TeslemetryEnergyInfoEntity(TeslemetryEntity): class TeslemetryEnergyInfoEntity(TeslemetryPollingEntity):
"""Parent class for Teslemetry Energy Site Info Entities.""" """Parent class for Teslemetry Energy Site Info Entities."""
api: EnergySite api: EnergySite
@ -170,7 +170,7 @@ class TeslemetryEnergyInfoEntity(TeslemetryEntity):
super().__init__(data.info_coordinator, key) super().__init__(data.info_coordinator, key)
class TeslemetryEnergyHistoryEntity(TeslemetryEntity): class TeslemetryEnergyHistoryEntity(TeslemetryPollingEntity):
"""Parent class for Teslemetry Energy History Entities.""" """Parent class for Teslemetry Energy History Entities."""
def __init__( def __init__(
@ -189,7 +189,7 @@ class TeslemetryEnergyHistoryEntity(TeslemetryEntity):
super().__init__(data.history_coordinator, key) super().__init__(data.history_coordinator, key)
class TeslemetryWallConnectorEntity(TeslemetryEntity): class TeslemetryWallConnectorEntity(TeslemetryPollingEntity):
"""Parent class for Teslemetry Wall Connector Entities.""" """Parent class for Teslemetry Wall Connector Entities."""
_attr_has_entity_name = True _attr_has_entity_name = True

View File

@ -17,7 +17,7 @@ from . import TeslemetryConfigEntry
from .const import DOMAIN from .const import DOMAIN
from .entity import ( from .entity import (
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_vehicle_command from .helpers import handle_vehicle_command
@ -38,7 +38,7 @@ async def async_setup_entry(
async_add_entities( async_add_entities(
chain( chain(
( (
TeslemetryPollingVehicleLockEntity( TeslemetryVehiclePollingVehicleLockEntity(
vehicle, Scope.VEHICLE_CMDS in entry.runtime_data.scopes vehicle, Scope.VEHICLE_CMDS in entry.runtime_data.scopes
) )
if vehicle.api.pre2021 or vehicle.firmware < "2024.26" if vehicle.api.pre2021 or vehicle.firmware < "2024.26"
@ -48,7 +48,7 @@ async def async_setup_entry(
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
), ),
( (
TeslemetryPollingCableLockEntity( TeslemetryVehiclePollingCableLockEntity(
vehicle, Scope.VEHICLE_CMDS in entry.runtime_data.scopes vehicle, Scope.VEHICLE_CMDS in entry.runtime_data.scopes
) )
if vehicle.api.pre2021 or vehicle.firmware < "2024.26" if vehicle.api.pre2021 or vehicle.firmware < "2024.26"
@ -81,8 +81,8 @@ class TeslemetryVehicleLockEntity(TeslemetryRootEntity, LockEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingVehicleLockEntity( class TeslemetryVehiclePollingVehicleLockEntity(
TeslemetryVehicleEntity, TeslemetryVehicleLockEntity TeslemetryVehiclePollingEntity, TeslemetryVehicleLockEntity
): ):
"""Polling vehicle lock entity for Teslemetry.""" """Polling vehicle lock entity for Teslemetry."""
@ -152,8 +152,8 @@ class TeslemetryCableLockEntity(TeslemetryRootEntity, LockEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingCableLockEntity( class TeslemetryVehiclePollingCableLockEntity(
TeslemetryVehicleEntity, TeslemetryCableLockEntity TeslemetryVehiclePollingEntity, TeslemetryCableLockEntity
): ):
"""Polling cable lock entity for Teslemetry.""" """Polling cable lock entity for Teslemetry."""

View File

@ -18,7 +18,7 @@ from homeassistant.helpers.restore_state import RestoreEntity
from . import TeslemetryConfigEntry from . import TeslemetryConfigEntry
from .entity import ( from .entity import (
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_vehicle_command from .helpers import handle_vehicle_command
@ -52,7 +52,7 @@ async def async_setup_entry(
"""Set up the Teslemetry Media platform from a config entry.""" """Set up the Teslemetry Media platform from a config entry."""
async_add_entities( async_add_entities(
TeslemetryPollingMediaEntity(vehicle, entry.runtime_data.scopes) TeslemetryVehiclePollingMediaEntity(vehicle, entry.runtime_data.scopes)
if vehicle.api.pre2021 or vehicle.firmware < "2025.2.6" if vehicle.api.pre2021 or vehicle.firmware < "2025.2.6"
else TeslemetryStreamingMediaEntity(vehicle, entry.runtime_data.scopes) else TeslemetryStreamingMediaEntity(vehicle, entry.runtime_data.scopes)
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
@ -107,7 +107,9 @@ class TeslemetryMediaEntity(TeslemetryRootEntity, MediaPlayerEntity):
await handle_vehicle_command(self.api.media_prev_track()) await handle_vehicle_command(self.api.media_prev_track())
class TeslemetryPollingMediaEntity(TeslemetryVehicleEntity, TeslemetryMediaEntity): class TeslemetryVehiclePollingMediaEntity(
TeslemetryVehiclePollingEntity, TeslemetryMediaEntity
):
"""Polling vehicle media player class.""" """Polling vehicle media player class."""
def __init__( def __init__(

View File

@ -33,7 +33,7 @@ from . import TeslemetryConfigEntry
from .entity import ( from .entity import (
TeslemetryEnergyInfoEntity, TeslemetryEnergyInfoEntity,
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_command, handle_vehicle_command from .helpers import handle_command, handle_vehicle_command
@ -140,7 +140,7 @@ async def async_setup_entry(
async_add_entities( async_add_entities(
chain( chain(
( (
TeslemetryPollingNumberEntity( TeslemetryVehiclePollingNumberEntity(
vehicle, vehicle,
description, description,
entry.runtime_data.scopes, entry.runtime_data.scopes,
@ -183,8 +183,8 @@ class TeslemetryVehicleNumberEntity(TeslemetryRootEntity, NumberEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingNumberEntity( class TeslemetryVehiclePollingNumberEntity(
TeslemetryVehicleEntity, TeslemetryVehicleNumberEntity TeslemetryVehiclePollingEntity, TeslemetryVehicleNumberEntity
): ):
"""Vehicle polling number entity.""" """Vehicle polling number entity."""

View File

@ -20,7 +20,7 @@ from . import TeslemetryConfigEntry
from .entity import ( from .entity import (
TeslemetryEnergyInfoEntity, TeslemetryEnergyInfoEntity,
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_command, handle_vehicle_command from .helpers import handle_command, handle_vehicle_command
@ -177,7 +177,7 @@ async def async_setup_entry(
async_add_entities( async_add_entities(
chain( chain(
( (
TeslemetryPollingSelectEntity( TeslemetryVehiclePollingSelectEntity(
vehicle, description, entry.runtime_data.scopes vehicle, description, entry.runtime_data.scopes
) )
if vehicle.api.pre2021 if vehicle.api.pre2021
@ -223,7 +223,9 @@ class TeslemetrySelectEntity(TeslemetryRootEntity, SelectEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingSelectEntity(TeslemetryVehicleEntity, TeslemetrySelectEntity): class TeslemetryVehiclePollingSelectEntity(
TeslemetryVehiclePollingEntity, TeslemetrySelectEntity
):
"""Base polling vehicle select entity class.""" """Base polling vehicle select entity class."""
def __init__( def __init__(

View File

@ -41,7 +41,7 @@ from .entity import (
TeslemetryEnergyHistoryEntity, TeslemetryEnergyHistoryEntity,
TeslemetryEnergyInfoEntity, TeslemetryEnergyInfoEntity,
TeslemetryEnergyLiveEntity, TeslemetryEnergyLiveEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
TeslemetryWallConnectorEntity, TeslemetryWallConnectorEntity,
) )
@ -1633,7 +1633,7 @@ class TeslemetryStreamSensorEntity(TeslemetryVehicleStreamEntity, RestoreSensor)
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryVehicleSensorEntity(TeslemetryVehicleEntity, SensorEntity): class TeslemetryVehicleSensorEntity(TeslemetryVehiclePollingEntity, SensorEntity):
"""Base class for Teslemetry vehicle metric sensors.""" """Base class for Teslemetry vehicle metric sensors."""
entity_description: TeslemetryVehicleSensorEntityDescription entity_description: TeslemetryVehicleSensorEntityDescription
@ -1696,7 +1696,7 @@ class TeslemetryStreamTimeSensorEntity(TeslemetryVehicleStreamEntity, SensorEnti
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryVehicleTimeSensorEntity(TeslemetryVehicleEntity, SensorEntity): class TeslemetryVehicleTimeSensorEntity(TeslemetryVehiclePollingEntity, SensorEntity):
"""Base class for Teslemetry vehicle time sensors.""" """Base class for Teslemetry vehicle time sensors."""
entity_description: TeslemetryTimeEntityDescription entity_description: TeslemetryTimeEntityDescription

View File

@ -25,7 +25,7 @@ from . import TeslemetryConfigEntry
from .entity import ( from .entity import (
TeslemetryEnergyInfoEntity, TeslemetryEnergyInfoEntity,
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_command, handle_vehicle_command from .helpers import handle_command, handle_vehicle_command
@ -134,7 +134,7 @@ async def async_setup_entry(
async_add_entities( async_add_entities(
chain( chain(
( (
TeslemetryPollingVehicleSwitchEntity( TeslemetryVehiclePollingVehicleSwitchEntity(
vehicle, description, entry.runtime_data.scopes vehicle, description, entry.runtime_data.scopes
) )
if vehicle.api.pre2021 if vehicle.api.pre2021
@ -184,8 +184,8 @@ class TeslemetryVehicleSwitchEntity(TeslemetryRootEntity, SwitchEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingVehicleSwitchEntity( class TeslemetryVehiclePollingVehicleSwitchEntity(
TeslemetryVehicleEntity, TeslemetryVehicleSwitchEntity TeslemetryVehiclePollingEntity, TeslemetryVehicleSwitchEntity
): ):
"""Base class for Teslemetry polling vehicle switch entities.""" """Base class for Teslemetry polling vehicle switch entities."""

View File

@ -15,7 +15,7 @@ from homeassistant.helpers.restore_state import RestoreEntity
from . import TeslemetryConfigEntry from . import TeslemetryConfigEntry
from .entity import ( from .entity import (
TeslemetryRootEntity, TeslemetryRootEntity,
TeslemetryVehicleEntity, TeslemetryVehiclePollingEntity,
TeslemetryVehicleStreamEntity, TeslemetryVehicleStreamEntity,
) )
from .helpers import handle_vehicle_command from .helpers import handle_vehicle_command
@ -38,7 +38,7 @@ async def async_setup_entry(
"""Set up the Teslemetry update platform from a config entry.""" """Set up the Teslemetry update platform from a config entry."""
async_add_entities( async_add_entities(
TeslemetryPollingUpdateEntity(vehicle, entry.runtime_data.scopes) TeslemetryVehiclePollingUpdateEntity(vehicle, entry.runtime_data.scopes)
if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25" if vehicle.api.pre2021 or vehicle.firmware < "2024.44.25"
else TeslemetryStreamingUpdateEntity(vehicle, entry.runtime_data.scopes) else TeslemetryStreamingUpdateEntity(vehicle, entry.runtime_data.scopes)
for vehicle in entry.runtime_data.vehicles for vehicle in entry.runtime_data.vehicles
@ -62,7 +62,9 @@ class TeslemetryUpdateEntity(TeslemetryRootEntity, UpdateEntity):
self.async_write_ha_state() self.async_write_ha_state()
class TeslemetryPollingUpdateEntity(TeslemetryVehicleEntity, TeslemetryUpdateEntity): class TeslemetryVehiclePollingUpdateEntity(
TeslemetryVehiclePollingEntity, TeslemetryUpdateEntity
):
"""Teslemetry Updates entity.""" """Teslemetry Updates entity."""
def __init__( def __init__(