mirror of https://github.com/home-assistant/core
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
"""The Rollease Acmeda Automate integration."""
|
|
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.const import Platform
|
|
from homeassistant.core import HomeAssistant
|
|
import homeassistant.helpers.entity_registry as er
|
|
|
|
from .hub import PulseHub
|
|
|
|
CONF_HUBS = "hubs"
|
|
|
|
PLATFORMS = [Platform.COVER, Platform.SENSOR]
|
|
|
|
type AcmedaConfigEntry = ConfigEntry[PulseHub]
|
|
|
|
|
|
async def async_setup_entry(
|
|
hass: HomeAssistant, config_entry: AcmedaConfigEntry
|
|
) -> bool:
|
|
"""Set up Rollease Acmeda Automate hub from a config entry."""
|
|
|
|
await _migrate_unique_ids(hass, config_entry)
|
|
|
|
hub = PulseHub(hass, config_entry)
|
|
|
|
if not await hub.async_setup():
|
|
return False
|
|
|
|
config_entry.runtime_data = hub
|
|
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
|
|
|
|
return True
|
|
|
|
|
|
async def _migrate_unique_ids(hass: HomeAssistant, entry: AcmedaConfigEntry) -> None:
|
|
"""Migrate pre-config flow unique ids."""
|
|
entity_registry = er.async_get(hass)
|
|
registry_entries = er.async_entries_for_config_entry(
|
|
entity_registry, entry.entry_id
|
|
)
|
|
for reg_entry in registry_entries:
|
|
if isinstance(reg_entry.unique_id, int): # type: ignore[unreachable]
|
|
entity_registry.async_update_entity( # type: ignore[unreachable]
|
|
reg_entry.entity_id, new_unique_id=str(reg_entry.unique_id)
|
|
)
|
|
|
|
|
|
async def async_unload_entry(
|
|
hass: HomeAssistant, config_entry: AcmedaConfigEntry
|
|
) -> bool:
|
|
"""Unload a config entry."""
|
|
hub = config_entry.runtime_data
|
|
|
|
unload_ok = await hass.config_entries.async_unload_platforms(
|
|
config_entry, PLATFORMS
|
|
)
|
|
|
|
if not await hub.async_reset():
|
|
return False
|
|
|
|
return unload_ok
|