mirror of
https://github.com/home-assistant/core.git
synced 2026-04-02 00:20:30 +01:00
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
"""UK Environment Agency Flood Monitoring Integration."""
|
|
|
|
from homeassistant.const import Platform
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import device_registry as dr
|
|
|
|
from .const import DOMAIN
|
|
from .coordinator import EafmConfigEntry, EafmCoordinator
|
|
|
|
PLATFORMS = [Platform.SENSOR]
|
|
|
|
|
|
def _fix_device_registry_identifiers(
|
|
hass: HomeAssistant, entry: EafmConfigEntry
|
|
) -> None:
|
|
"""Fix invalid identifiers in device registry.
|
|
|
|
Added in 2026.4, can be removed in 2026.10 or later.
|
|
"""
|
|
device_registry = dr.async_get(hass)
|
|
for device_entry in dr.async_entries_for_config_entry(
|
|
device_registry, entry.entry_id
|
|
):
|
|
old_identifier = (DOMAIN, "measure-id", entry.data["station"])
|
|
if old_identifier not in device_entry.identifiers: # type: ignore[comparison-overlap]
|
|
continue
|
|
new_identifiers = device_entry.identifiers.copy()
|
|
new_identifiers.discard(old_identifier)
|
|
new_identifiers.add((DOMAIN, entry.data["station"]))
|
|
device_registry.async_update_device(
|
|
device_entry.id, new_identifiers=new_identifiers
|
|
)
|
|
|
|
|
|
async def async_setup_entry(hass: HomeAssistant, entry: EafmConfigEntry) -> bool:
|
|
"""Set up flood monitoring sensors for this config entry."""
|
|
_fix_device_registry_identifiers(hass, entry)
|
|
coordinator = EafmCoordinator(hass, entry=entry)
|
|
await coordinator.async_config_entry_first_refresh()
|
|
entry.runtime_data = coordinator
|
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
|
return True
|
|
|
|
|
|
async def async_unload_entry(hass: HomeAssistant, entry: EafmConfigEntry) -> bool:
|
|
"""Unload flood monitoring sensors."""
|
|
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|