From b4665cc0eb42ece99d3aad06fdd15f3e10af7d51 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Sun, 12 Jul 2026 21:37:25 +0200 Subject: [PATCH] Use state attribute enums in Teslemetry (#175970) Co-authored-by: Claude Opus 4.8 (1M context) --- .../components/teslemetry/device_tracker.py | 5 +-- .../components/teslemetry/media_player.py | 33 ++++++++++++++----- homeassistant/components/teslemetry/update.py | 22 ++++++++++--- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/teslemetry/device_tracker.py b/homeassistant/components/teslemetry/device_tracker.py index 4e8c360080f1..97dcd8b1515d 100644 --- a/homeassistant/components/teslemetry/device_tracker.py +++ b/homeassistant/components/teslemetry/device_tracker.py @@ -13,6 +13,7 @@ from homeassistant.components.device_tracker import ( TrackerEntity, TrackerEntityDescription, ) +from homeassistant.const import EntityStateAttribute from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.restore_state import RestoreEntity @@ -147,8 +148,8 @@ class TeslemetryStreamingDeviceTrackerEntity( """Handle entity which will be added.""" await super().async_added_to_hass() if (state := await self.async_get_last_state()) is not None: - self._attr_latitude = state.attributes.get("latitude") - self._attr_longitude = state.attributes.get("longitude") + self._attr_latitude = state.attributes.get(EntityStateAttribute.LATITUDE) + self._attr_longitude = state.attributes.get(EntityStateAttribute.LONGITUDE) self.async_on_remove( self.entity_description.value_listener( self.vehicle.stream_vehicle, self._location_callback diff --git a/homeassistant/components/teslemetry/media_player.py b/homeassistant/components/teslemetry/media_player.py index dbe684963022..5c1d332c103d 100644 --- a/homeassistant/components/teslemetry/media_player.py +++ b/homeassistant/components/teslemetry/media_player.py @@ -10,6 +10,7 @@ from homeassistant.components.media_player import ( MediaPlayerDeviceClass, MediaPlayerEntity, MediaPlayerEntityFeature, + MediaPlayerEntityStateAttribute, MediaPlayerState, ) from homeassistant.core import HomeAssistant @@ -201,14 +202,30 @@ class TeslemetryStreamingMediaEntity( self._attr_state = MediaPlayerState(state.state) except ValueError: self._attr_state = None - self._attr_volume_level = state.attributes.get("volume_level") - self._attr_media_title = state.attributes.get("media_title") - self._attr_media_artist = state.attributes.get("media_artist") - self._attr_media_album_name = state.attributes.get("media_album_name") - self._attr_media_playlist = state.attributes.get("media_playlist") - self._attr_media_duration = state.attributes.get("media_duration") - self._attr_media_position = state.attributes.get("media_position") - self._attr_source = state.attributes.get("source") + self._attr_volume_level = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_VOLUME_LEVEL + ) + self._attr_media_title = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_TITLE + ) + self._attr_media_artist = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_ARTIST + ) + self._attr_media_album_name = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_ALBUM_NAME + ) + self._attr_media_playlist = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_PLAYLIST + ) + self._attr_media_duration = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_DURATION + ) + self._attr_media_position = state.attributes.get( + MediaPlayerEntityStateAttribute.MEDIA_POSITION + ) + self._attr_source = state.attributes.get( + MediaPlayerEntityStateAttribute.INPUT_SOURCE + ) self.async_write_ha_state() diff --git a/homeassistant/components/teslemetry/update.py b/homeassistant/components/teslemetry/update.py index d3e552883d7e..c592070bba43 100644 --- a/homeassistant/components/teslemetry/update.py +++ b/homeassistant/components/teslemetry/update.py @@ -6,7 +6,11 @@ from tesla_fleet_api import firmware_at_least from tesla_fleet_api.const import Scope from tesla_fleet_api.teslemetry import Vehicle -from homeassistant.components.update import UpdateEntity, UpdateEntityFeature +from homeassistant.components.update import ( + UpdateEntity, + UpdateEntityFeature, + UpdateEntityStateAttribute, +) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.restore_state import RestoreEntity @@ -154,10 +158,18 @@ class TeslemetryStreamingUpdateEntity( """Handle entity which will be added.""" await super().async_added_to_hass() if (state := await self.async_get_last_state()) is not None: - self._attr_in_progress = state.attributes.get("in_progress", False) - self._attr_update_percentage = state.attributes.get("update_percentage") - self._attr_installed_version = state.attributes.get("installed_version") - self._attr_latest_version = state.attributes.get("latest_version") + self._attr_in_progress = state.attributes.get( + UpdateEntityStateAttribute.IN_PROGRESS, False + ) + self._attr_update_percentage = state.attributes.get( + UpdateEntityStateAttribute.UPDATE_PERCENTAGE + ) + self._attr_installed_version = state.attributes.get( + UpdateEntityStateAttribute.INSTALLED_VERSION + ) + self._attr_latest_version = state.attributes.get( + UpdateEntityStateAttribute.LATEST_VERSION + ) self._attr_supported_features = UpdateEntityFeature( state.attributes.get( "supported_features", self._attr_supported_features