Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The Rollease Acmeda Automate integration."""
2 
3 from homeassistant.config_entries import ConfigEntry
4 from homeassistant.const import Platform
5 from homeassistant.core import HomeAssistant
7 
8 from .hub import PulseHub
9 
10 CONF_HUBS = "hubs"
11 
12 PLATFORMS = [Platform.COVER, Platform.SENSOR]
13 
14 type AcmedaConfigEntry = ConfigEntry[PulseHub]
15 
16 
18  hass: HomeAssistant, config_entry: AcmedaConfigEntry
19 ) -> bool:
20  """Set up Rollease Acmeda Automate hub from a config entry."""
21 
22  await _migrate_unique_ids(hass, config_entry)
23 
24  hub = PulseHub(hass, config_entry)
25 
26  if not await hub.async_setup():
27  return False
28 
29  config_entry.runtime_data = hub
30  await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
31 
32  return True
33 
34 
35 async def _migrate_unique_ids(hass: HomeAssistant, entry: AcmedaConfigEntry) -> None:
36  """Migrate pre-config flow unique ids."""
37  entity_registry = er.async_get(hass)
38  registry_entries = er.async_entries_for_config_entry(
39  entity_registry, entry.entry_id
40  )
41  for reg_entry in registry_entries:
42  if isinstance(reg_entry.unique_id, int): # type: ignore[unreachable]
43  entity_registry.async_update_entity( # type: ignore[unreachable]
44  reg_entry.entity_id, new_unique_id=str(reg_entry.unique_id)
45  )
46 
47 
49  hass: HomeAssistant, config_entry: AcmedaConfigEntry
50 ) -> bool:
51  """Unload a config entry."""
52  hub = config_entry.runtime_data
53 
54  unload_ok = await hass.config_entries.async_unload_platforms(
55  config_entry, PLATFORMS
56  )
57 
58  if not await hub.async_reset():
59  return False
60 
61  return unload_ok
bool async_setup_entry(HomeAssistant hass, AcmedaConfigEntry config_entry)
Definition: __init__.py:19
bool async_unload_entry(HomeAssistant hass, AcmedaConfigEntry config_entry)
Definition: __init__.py:50
None _migrate_unique_ids(HomeAssistant hass, AcmedaConfigEntry entry)
Definition: __init__.py:35