diff --git a/custom_components/irm_kmi/binary_sensor.py b/custom_components/irm_kmi/binary_sensor.py index 567309d..e911b13 100644 --- a/custom_components/irm_kmi/binary_sensor.py +++ b/custom_components/irm_kmi/binary_sensor.py @@ -8,7 +8,6 @@ from homeassistant.components.binary_sensor import (BinarySensorDeviceClass, BinarySensorEntity) from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -36,12 +35,7 @@ class IrmKmiWarning(CoordinatorEntity, BinarySensorEntity): self._attr_unique_id = entry.entry_id self.entity_id = binary_sensor.ENTITY_ID_FORMAT.format(f"weather_warning_{str(entry.title).lower()}") self._attr_name = f"Warning {entry.title}" - self._attr_device_info = DeviceInfo( - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, entry.entry_id)}, - manufacturer="IRM KMI", - name=f"Warning {entry.title}" - ) + self._attr_device_info = coordinator.shared_device_info @property def is_on(self) -> bool | None: diff --git a/custom_components/irm_kmi/camera.py b/custom_components/irm_kmi/camera.py index df5ca56..6f5d2fd 100644 --- a/custom_components/irm_kmi/camera.py +++ b/custom_components/irm_kmi/camera.py @@ -6,7 +6,6 @@ from aiohttp import web from homeassistant.components.camera import Camera, async_get_still_stream from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -36,12 +35,7 @@ class IrmKmiRadar(CoordinatorEntity, Camera): self.content_type = 'image/svg+xml' self._name = f"Radar {entry.title}" self._attr_unique_id = entry.entry_id - self._attr_device_info = DeviceInfo( - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, entry.entry_id)}, - manufacturer="IRM KMI", - name=f"Radar {entry.title}" - ) + self._attr_device_info = coordinator.shared_device_info self._image_index = False diff --git a/custom_components/irm_kmi/coordinator.py b/custom_components/irm_kmi/coordinator.py index da4147c..1c26286 100644 --- a/custom_components/irm_kmi/coordinator.py +++ b/custom_components/irm_kmi/coordinator.py @@ -12,6 +12,7 @@ from homeassistant.const import ATTR_LATITUDE, ATTR_LONGITUDE, CONF_ZONE from homeassistant.core import HomeAssistant from homeassistant.helpers import issue_registry from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.update_coordinator import (DataUpdateCoordinator, UpdateFailed) @@ -48,6 +49,12 @@ class IrmKmiCoordinator(DataUpdateCoordinator): self._dark_mode = get_config_value(entry, CONF_DARK_MODE) self._style = get_config_value(entry, CONF_STYLE) self._config_entry = entry + self.shared_device_info = DeviceInfo( + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, entry.entry_id)}, + manufacturer="IRM KMI", + name=f"{entry.title}" + ) async def _async_update_data(self) -> ProcessedCoordinatorData: """Fetch data from API endpoint. diff --git a/custom_components/irm_kmi/sensor.py b/custom_components/irm_kmi/sensor.py index f71f6f8..66e2049 100644 --- a/custom_components/irm_kmi/sensor.py +++ b/custom_components/irm_kmi/sensor.py @@ -2,11 +2,9 @@ import logging from homeassistant.components import sensor - from homeassistant.components.sensor import SensorDeviceClass, SensorEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -38,17 +36,9 @@ class IrmKmiPollen(CoordinatorEntity, SensorEntity): self._attr_unique_id = f"{entry.entry_id}-pollen-{pollen}" self.entity_id = sensor.ENTITY_ID_FORMAT.format(f"{str(entry.title).lower()}_{pollen}_level") self._attr_options = PollenParser.get_option_values() - self._attr_name = f"Pollen {pollen}" - self._attr_device_info = DeviceInfo( - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, entry.entry_id)}, - manufacturer="IRM KMI", - name=f"Pollen {pollen}" - ) + self._attr_device_info = coordinator.shared_device_info self._pollen = pollen - # TODO add translation for name - # self._attr_translation_key = f"pollen_{pollen}" - # _LOGGER.debug(f"translation key: {self._attr_translation_key}") + self._attr_translation_key = f"pollen_{pollen}" @property def native_value(self) -> str | None: diff --git a/custom_components/irm_kmi/translations/en.json b/custom_components/irm_kmi/translations/en.json index 7fd5c43..ebd4add 100644 --- a/custom_components/irm_kmi/translations/en.json +++ b/custom_components/irm_kmi/translations/en.json @@ -74,5 +74,93 @@ } } } + }, + "entity": { + "sensor": { + "pollen_alder": { + "name": "Alder pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + }, + "pollen_ash": { + "name": "Ash pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + }, + "pollen_birch": { + "name": "Birch pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + }, + "pollen_grasses": { + "name": "Grass pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + }, + "pollen_hazel": { + "name": "Hazel pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + }, + "pollen_mugwort": { + "name": "Mugwort pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + }, + "pollen_oak": { + "name": "Oak pollen", + "state": { + "active": "Active", + "green": "Green", + "yellow": "Yellow", + "orange": "Orange", + "red": "Red", + "purple": "Purple", + "none": "None" + } + } + } } } diff --git a/custom_components/irm_kmi/translations/fr.json b/custom_components/irm_kmi/translations/fr.json index 39fd18c..547ddb2 100644 --- a/custom_components/irm_kmi/translations/fr.json +++ b/custom_components/irm_kmi/translations/fr.json @@ -74,5 +74,93 @@ } } } + }, + "entity": { + "sensor": { + "pollen_alder": { + "name": "Pollen d'aulne", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + }, + "pollen_ash": { + "name": "Pollen de frêne", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + }, + "pollen_birch": { + "name": "Pollen de bouleau", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + }, + "pollen_grasses": { + "name": "Pollen de graminées", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + }, + "pollen_hazel": { + "name": "Pollen de noisetier", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + }, + "pollen_mugwort": { + "name": "Pollen d'armoise", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + }, + "pollen_oak": { + "name": "Pollen de chêne", + "state": { + "active": "Actif", + "green": "Vert", + "yellow": "Jaune", + "orange": "Orange", + "red": "Rouge", + "purple": "Violet", + "none": "Aucun" + } + } + } } } diff --git a/custom_components/irm_kmi/translations/nl.json b/custom_components/irm_kmi/translations/nl.json index e520411..620e7a8 100644 --- a/custom_components/irm_kmi/translations/nl.json +++ b/custom_components/irm_kmi/translations/nl.json @@ -74,5 +74,93 @@ } } } + }, + "entity": { + "sensor": { + "pollen_alder": { + "name": "Elzenpollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + }, + "pollen_ash": { + "name": "Essen pollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + }, + "pollen_birch": { + "name": "Berken pollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + }, + "pollen_grasses": { + "name": "Graspollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + }, + "pollen_hazel": { + "name": "Hazelaar pollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + }, + "pollen_mugwort": { + "name": "Alsem pollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + }, + "pollen_oak": { + "name": "Eiken pollen", + "state": { + "active": "Actief", + "green": "Groen", + "yellow": "Geel", + "orange": "Oranje", + "red": "Rood", + "purple": "Paars", + "none": "Geen" + } + } + } } } diff --git a/custom_components/irm_kmi/weather.py b/custom_components/irm_kmi/weather.py index 0adcc46..02172ff 100644 --- a/custom_components/irm_kmi/weather.py +++ b/custom_components/irm_kmi/weather.py @@ -8,7 +8,6 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import (UnitOfPrecipitationDepth, UnitOfPressure, UnitOfSpeed, UnitOfTemperature) from homeassistant.core import HomeAssistant -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -39,12 +38,8 @@ class IrmKmiWeather(CoordinatorEntity, WeatherEntity): WeatherEntity.__init__(self) self._name = entry.title self._attr_unique_id = entry.entry_id - self._attr_device_info = DeviceInfo( - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, entry.entry_id)}, - manufacturer="IRM KMI", - name=entry.title - ) + self._attr_device_info = coordinator.shared_device_info + self._deprecated_forecast_as = get_config_value(entry, CONF_USE_DEPRECATED_FORECAST) @property