From 0da518e951cf77dc247a06ac2520ea59bdcf53ad Mon Sep 17 00:00:00 2001 From: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com> Date: Mon, 12 Jan 2026 10:53:25 +0100 Subject: [PATCH] Fix scrape sensor device name (#160765) --- homeassistant/components/scrape/sensor.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/scrape/sensor.py b/homeassistant/components/scrape/sensor.py index 3e7f416166b..c6682fba5a8 100644 --- a/homeassistant/components/scrape/sensor.py +++ b/homeassistant/components/scrape/sensor.py @@ -142,6 +142,8 @@ async def async_setup_entry( class ScrapeSensor(CoordinatorEntity[ScrapeCoordinator], ManualTriggerSensorEntity): """Representation of a web scrape sensor.""" + _sensor_name: str | None = None + def __init__( self, hass: HomeAssistant, @@ -162,14 +164,26 @@ class ScrapeSensor(CoordinatorEntity[ScrapeCoordinator], ManualTriggerSensorEnti self._value_template = value_template self._attr_native_value = None if not yaml and (unique_id := trigger_entity_config.get(CONF_UNIQUE_ID)): - self._attr_name = None + self._sensor_name = None self._attr_has_entity_name = True self._attr_device_info = DeviceInfo( entry_type=DeviceEntryType.SERVICE, identifiers={(DOMAIN, unique_id)}, manufacturer="Scrape", - name=self.name, + name=self._rendered[CONF_NAME], ) + else: + self._sensor_name = self._rendered.get(CONF_NAME) + + @property + def name(self) -> str | None: + """Return the name of the sensor. + + Override needed because TriggerBaseEntity.name always returns the + rendered name, ignoring _attr_name. When has_entity_name is True, + we need name to return None to use the device name instead. + """ + return self._sensor_name def _extract_value(self) -> Any: """Parse the html extraction in the executor."""