mirror of
https://github.com/jdejaegh/irm-kmi-ha.git
synced 2025-06-27 11:39:26 +02:00
Translation and device info
This commit is contained in:
parent
67ab04499e
commit
adc9e5d013
8 changed files with 277 additions and 33 deletions
|
@ -8,7 +8,6 @@ from homeassistant.components.binary_sensor import (BinarySensorDeviceClass,
|
||||||
BinarySensorEntity)
|
BinarySensorEntity)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
|
@ -36,12 +35,7 @@ class IrmKmiWarning(CoordinatorEntity, BinarySensorEntity):
|
||||||
self._attr_unique_id = entry.entry_id
|
self._attr_unique_id = entry.entry_id
|
||||||
self.entity_id = binary_sensor.ENTITY_ID_FORMAT.format(f"weather_warning_{str(entry.title).lower()}")
|
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_name = f"Warning {entry.title}"
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = coordinator.shared_device_info
|
||||||
entry_type=DeviceEntryType.SERVICE,
|
|
||||||
identifiers={(DOMAIN, entry.entry_id)},
|
|
||||||
manufacturer="IRM KMI",
|
|
||||||
name=f"Warning {entry.title}"
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_on(self) -> bool | None:
|
def is_on(self) -> bool | None:
|
||||||
|
|
|
@ -6,7 +6,6 @@ from aiohttp import web
|
||||||
from homeassistant.components.camera import Camera, async_get_still_stream
|
from homeassistant.components.camera import Camera, async_get_still_stream
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
|
@ -36,12 +35,7 @@ class IrmKmiRadar(CoordinatorEntity, Camera):
|
||||||
self.content_type = 'image/svg+xml'
|
self.content_type = 'image/svg+xml'
|
||||||
self._name = f"Radar {entry.title}"
|
self._name = f"Radar {entry.title}"
|
||||||
self._attr_unique_id = entry.entry_id
|
self._attr_unique_id = entry.entry_id
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = coordinator.shared_device_info
|
||||||
entry_type=DeviceEntryType.SERVICE,
|
|
||||||
identifiers={(DOMAIN, entry.entry_id)},
|
|
||||||
manufacturer="IRM KMI",
|
|
||||||
name=f"Radar {entry.title}"
|
|
||||||
)
|
|
||||||
|
|
||||||
self._image_index = False
|
self._image_index = False
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ from homeassistant.const import ATTR_LATITUDE, ATTR_LONGITUDE, CONF_ZONE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import issue_registry
|
from homeassistant.helpers import issue_registry
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
|
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
||||||
from homeassistant.helpers.update_coordinator import (DataUpdateCoordinator,
|
from homeassistant.helpers.update_coordinator import (DataUpdateCoordinator,
|
||||||
UpdateFailed)
|
UpdateFailed)
|
||||||
|
|
||||||
|
@ -48,6 +49,12 @@ class IrmKmiCoordinator(DataUpdateCoordinator):
|
||||||
self._dark_mode = get_config_value(entry, CONF_DARK_MODE)
|
self._dark_mode = get_config_value(entry, CONF_DARK_MODE)
|
||||||
self._style = get_config_value(entry, CONF_STYLE)
|
self._style = get_config_value(entry, CONF_STYLE)
|
||||||
self._config_entry = entry
|
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:
|
async def _async_update_data(self) -> ProcessedCoordinatorData:
|
||||||
"""Fetch data from API endpoint.
|
"""Fetch data from API endpoint.
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from homeassistant.components import sensor
|
from homeassistant.components import sensor
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
|
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
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._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.entity_id = sensor.ENTITY_ID_FORMAT.format(f"{str(entry.title).lower()}_{pollen}_level")
|
||||||
self._attr_options = PollenParser.get_option_values()
|
self._attr_options = PollenParser.get_option_values()
|
||||||
self._attr_name = f"Pollen {pollen}"
|
self._attr_device_info = coordinator.shared_device_info
|
||||||
self._attr_device_info = DeviceInfo(
|
|
||||||
entry_type=DeviceEntryType.SERVICE,
|
|
||||||
identifiers={(DOMAIN, entry.entry_id)},
|
|
||||||
manufacturer="IRM KMI",
|
|
||||||
name=f"Pollen {pollen}"
|
|
||||||
)
|
|
||||||
self._pollen = pollen
|
self._pollen = pollen
|
||||||
# TODO add translation for name
|
self._attr_translation_key = f"pollen_{pollen}"
|
||||||
# self._attr_translation_key = f"pollen_{pollen}"
|
|
||||||
# _LOGGER.debug(f"translation key: {self._attr_translation_key}")
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def native_value(self) -> str | None:
|
def native_value(self) -> str | None:
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (UnitOfPrecipitationDepth, UnitOfPressure,
|
from homeassistant.const import (UnitOfPrecipitationDepth, UnitOfPressure,
|
||||||
UnitOfSpeed, UnitOfTemperature)
|
UnitOfSpeed, UnitOfTemperature)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
|
@ -39,12 +38,8 @@ class IrmKmiWeather(CoordinatorEntity, WeatherEntity):
|
||||||
WeatherEntity.__init__(self)
|
WeatherEntity.__init__(self)
|
||||||
self._name = entry.title
|
self._name = entry.title
|
||||||
self._attr_unique_id = entry.entry_id
|
self._attr_unique_id = entry.entry_id
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = coordinator.shared_device_info
|
||||||
entry_type=DeviceEntryType.SERVICE,
|
|
||||||
identifiers={(DOMAIN, entry.entry_id)},
|
|
||||||
manufacturer="IRM KMI",
|
|
||||||
name=entry.title
|
|
||||||
)
|
|
||||||
self._deprecated_forecast_as = get_config_value(entry, CONF_USE_DEPRECATED_FORECAST)
|
self._deprecated_forecast_as = get_config_value(entry, CONF_USE_DEPRECATED_FORECAST)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Add table
Reference in a new issue