From 062b347ba6bdfd7b7012b2574b0a4ed084f8add4 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 14 Jul 2026 10:45:00 +0200 Subject: [PATCH] Use entity state attribute enums in MQTT (#176467) --- .../components/mqtt/device_tracker.py | 33 ++++++++++++------- homeassistant/components/mqtt/diagnostics.py | 12 +++---- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/homeassistant/components/mqtt/device_tracker.py b/homeassistant/components/mqtt/device_tracker.py index 0efba71bbf72..8cf181e7699d 100644 --- a/homeassistant/components/mqtt/device_tracker.py +++ b/homeassistant/components/mqtt/device_tracker.py @@ -7,16 +7,18 @@ from typing import TYPE_CHECKING, Any, override import voluptuous as vol from homeassistant.components import device_tracker -from homeassistant.components.device_tracker import SourceType, TrackerEntity +from homeassistant.components.device_tracker import ( + SourceType, + TrackerEntity, + TrackerEntityStateAttribute, +) from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( - ATTR_GPS_ACCURACY, - ATTR_LATITUDE, - ATTR_LONGITUDE, CONF_NAME, CONF_VALUE_TEMPLATE, STATE_HOME, STATE_NOT_HOME, + EntityStateAttribute, ) from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import config_validation as cv @@ -162,16 +164,18 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity): ) -> None: """Extract the location from the extra state attributes.""" if ( - ATTR_LATITUDE in extra_state_attributes - or ATTR_LONGITUDE in extra_state_attributes + EntityStateAttribute.LATITUDE in extra_state_attributes + or EntityStateAttribute.LONGITUDE in extra_state_attributes ): latitude: float | None longitude: float | None gps_accuracy: float if isinstance( - latitude := extra_state_attributes.get(ATTR_LATITUDE), (int, float) + latitude := extra_state_attributes.get(EntityStateAttribute.LATITUDE), + (int, float), ) and isinstance( - longitude := extra_state_attributes.get(ATTR_LONGITUDE), (int, float) + longitude := extra_state_attributes.get(EntityStateAttribute.LONGITUDE), + (int, float), ): self._attr_latitude = latitude self._attr_longitude = longitude @@ -187,9 +191,11 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity): extra_state_attributes, ) - if ATTR_GPS_ACCURACY in extra_state_attributes: + if TrackerEntityStateAttribute.GPS_ACCURACY in extra_state_attributes: if isinstance( - gps_accuracy := extra_state_attributes[ATTR_GPS_ACCURACY], + gps_accuracy := extra_state_attributes[ + TrackerEntityStateAttribute.GPS_ACCURACY + ], (int, float), ): self._attr_location_accuracy = gps_accuracy @@ -210,5 +216,10 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity): self._attr_extra_state_attributes = { attribute: value for attribute, value in extra_state_attributes.items() - if attribute not in {ATTR_GPS_ACCURACY, ATTR_LATITUDE, ATTR_LONGITUDE} + if attribute + not in { + TrackerEntityStateAttribute.GPS_ACCURACY, + EntityStateAttribute.LATITUDE, + EntityStateAttribute.LONGITUDE, + } } diff --git a/homeassistant/components/mqtt/diagnostics.py b/homeassistant/components/mqtt/diagnostics.py index 68d4b2fb9c7c..5ab4861201f4 100644 --- a/homeassistant/components/mqtt/diagnostics.py +++ b/homeassistant/components/mqtt/diagnostics.py @@ -5,12 +5,7 @@ from typing import Any from homeassistant.components import device_tracker from homeassistant.components.diagnostics import async_redact_data from homeassistant.config_entries import ConfigEntry -from homeassistant.const import ( - ATTR_LATITUDE, - ATTR_LONGITUDE, - CONF_PASSWORD, - CONF_USERNAME, -) +from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, EntityStateAttribute from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers.device_registry import DeviceEntry @@ -18,7 +13,10 @@ from homeassistant.helpers.device_registry import DeviceEntry from . import debug_info, is_connected REDACT_CONFIG = {CONF_PASSWORD, CONF_USERNAME} -REDACT_STATE_DEVICE_TRACKER = {ATTR_LATITUDE, ATTR_LONGITUDE} +REDACT_STATE_DEVICE_TRACKER = { + EntityStateAttribute.LATITUDE, + EntityStateAttribute.LONGITUDE, +} async def async_get_config_entry_diagnostics(