diff --git a/homeassistant/components/aemet/entity.py b/homeassistant/components/aemet/entity.py index ba3f7e56193..f48eaa1593d 100644 --- a/homeassistant/components/aemet/entity.py +++ b/homeassistant/components/aemet/entity.py @@ -7,14 +7,32 @@ from typing import Any from aemet_opendata.helpers import dict_nested_value from homeassistant.components.weather import Forecast +from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity +from .const import DOMAIN from .coordinator import WeatherUpdateCoordinator class AemetEntity(CoordinatorEntity[WeatherUpdateCoordinator]): """Define an AEMET entity.""" + def __init__( + self, + coordinator: WeatherUpdateCoordinator, + name: str, + unique_id: str, + ) -> None: + """Initialize the entity.""" + super().__init__(coordinator) + self._attr_device_info = DeviceInfo( + name=name, + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, unique_id)}, + manufacturer="AEMET", + model="Forecast", + ) + def get_aemet_forecast(self, forecast_mode: str) -> list[Forecast]: """Return AEMET entity forecast by mode.""" return self.coordinator.data["forecast"][forecast_mode] diff --git a/homeassistant/components/aemet/sensor.py b/homeassistant/components/aemet/sensor.py index 268112070e8..cafb9be8a70 100644 --- a/homeassistant/components/aemet/sensor.py +++ b/homeassistant/components/aemet/sensor.py @@ -392,10 +392,12 @@ class AemetSensor(AemetEntity, SensorEntity): config_entry: ConfigEntry, ) -> None: """Initialize the sensor.""" - super().__init__(coordinator) + assert config_entry.unique_id is not None + unique_id = config_entry.unique_id + super().__init__(coordinator, name, unique_id) self.entity_description = description self._attr_name = f"{name} {description.name}" - self._attr_unique_id = f"{config_entry.unique_id}-{description.key}" + self._attr_unique_id = f"{unique_id}-{description.key}" @property def native_value(self): diff --git a/homeassistant/components/aemet/weather.py b/homeassistant/components/aemet/weather.py index 4df0b1081f5..9c905941f62 100644 --- a/homeassistant/components/aemet/weather.py +++ b/homeassistant/components/aemet/weather.py @@ -71,7 +71,7 @@ class AemetWeather( coordinator: WeatherUpdateCoordinator, ) -> None: """Initialize the sensor.""" - super().__init__(coordinator) + super().__init__(coordinator, name, unique_id) self._attr_name = name self._attr_unique_id = unique_id diff --git a/tests/components/aemet/snapshots/test_diagnostics.ambr b/tests/components/aemet/snapshots/test_diagnostics.ambr index 4b678dc1da5..8d4132cad84 100644 --- a/tests/components/aemet/snapshots/test_diagnostics.ambr +++ b/tests/components/aemet/snapshots/test_diagnostics.ambr @@ -20,7 +20,7 @@ 'pref_disable_polling': False, 'source': 'user', 'title': 'Mock Title', - 'unique_id': None, + 'unique_id': '**REDACTED**', 'version': 1, }), 'coord_data': dict({ diff --git a/tests/components/aemet/util.py b/tests/components/aemet/util.py index bb8885f7b4c..162ee657513 100644 --- a/tests/components/aemet/util.py +++ b/tests/components/aemet/util.py @@ -68,6 +68,7 @@ async def async_init_integration(hass: HomeAssistant): CONF_NAME: "AEMET", }, entry_id="7442b231f139e813fc1939281123f220", + unique_id="40.30403754--3.72935236", ) config_entry.add_to_hass(hass)