diff --git a/homeassistant/components/proximity/sensor.py b/homeassistant/components/proximity/sensor.py index c562467f8be..8eb7aae9bb9 100644 --- a/homeassistant/components/proximity/sensor.py +++ b/homeassistant/components/proximity/sensor.py @@ -69,6 +69,7 @@ class TrackedEntityDescriptor(NamedTuple): entity_id: str identifier: str + name: str def _device_info(coordinator: ProximityDataUpdateCoordinator) -> DeviceInfo: @@ -95,13 +96,24 @@ async def async_setup_entry( entity_reg = er.async_get(hass) for tracked_entity_id in coordinator.tracked_entities: + tracked_entity_object_id = tracked_entity_id.split(".")[-1] if (entity_entry := entity_reg.async_get(tracked_entity_id)) is not None: tracked_entity_descriptors.append( - TrackedEntityDescriptor(tracked_entity_id, entity_entry.id) + TrackedEntityDescriptor( + tracked_entity_id, + entity_entry.id, + entity_entry.name + or entity_entry.original_name + or tracked_entity_object_id, + ) ) else: tracked_entity_descriptors.append( - TrackedEntityDescriptor(tracked_entity_id, tracked_entity_id) + TrackedEntityDescriptor( + tracked_entity_id, + tracked_entity_id, + tracked_entity_object_id, + ) ) entities += [ @@ -165,7 +177,7 @@ class ProximityTrackedEntitySensor( self._attr_unique_id = f"{coordinator.config_entry.entry_id}_{tracked_entity_descriptor.identifier}_{description.key}" self._attr_device_info = _device_info(coordinator) self._attr_translation_placeholders = { - "tracked_entity": self.tracked_entity_id.split(".")[-1] + "tracked_entity": tracked_entity_descriptor.name } async def async_added_to_hass(self) -> None: diff --git a/tests/components/proximity/test_init.py b/tests/components/proximity/test_init.py index bce4c319ce0..8fa9e4a1ce1 100644 --- a/tests/components/proximity/test_init.py +++ b/tests/components/proximity/test_init.py @@ -11,7 +11,12 @@ from homeassistant.components.proximity.const import ( DOMAIN, ) from homeassistant.components.script import scripts_with_entity -from homeassistant.const import CONF_ZONE, STATE_UNAVAILABLE, STATE_UNKNOWN +from homeassistant.const import ( + ATTR_FRIENDLY_NAME, + CONF_ZONE, + STATE_UNAVAILABLE, + STATE_UNKNOWN, +) from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er import homeassistant.helpers.issue_registry as ir @@ -1205,7 +1210,7 @@ async def test_sensor_unique_ids( ) -> None: """Test that when tracked entity is renamed.""" t1 = entity_registry.async_get_or_create( - "device_tracker", "device_tracker", "test1" + "device_tracker", "device_tracker", "test1", original_name="Test tracker 1" ) hass.states.async_set(t1.entity_id, "not_home") @@ -1227,10 +1232,12 @@ async def test_sensor_unique_ids( assert await hass.config_entries.async_setup(mock_config.entry_id) await hass.async_block_till_done() - sensor_t1 = f"sensor.home_{t1.entity_id.split('.')[-1]}_distance" + sensor_t1 = "sensor.home_test_tracker_1_distance" entity = entity_registry.async_get(sensor_t1) assert entity assert entity.unique_id == f"{mock_config.entry_id}_{t1.id}_dist_to_zone" + state = hass.states.get(sensor_t1) + assert state.attributes.get(ATTR_FRIENDLY_NAME) == "home Test tracker 1 Distance" entity = entity_registry.async_get("sensor.home_test2_distance") assert entity