1 """The Logitech Harmony Hub integration."""
11 from .const
import HARMONY_OPTIONS_UPDATE, PLATFORMS
12 from .data
import HarmonyConfigEntry, HarmonyData
14 _LOGGER = logging.getLogger(__name__)
18 """Set up Logitech Harmony Hub from a config entry."""
25 address = entry.data[CONF_HOST]
26 name = entry.data[CONF_NAME]
27 data =
HarmonyData(hass, address, name, entry.unique_id)
32 entry.async_on_unload(entry.add_update_listener(_update_listener))
34 async
def _async_on_stop(event: Event) ->
None:
37 entry.async_on_unload(
38 hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP, _async_on_stop)
41 entry.runtime_data = data
42 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
48 hass: HomeAssistant, entry_id: str, data: HarmonyData
50 names_to_ids = {activity[
"label"]: activity[
"id"]
for activity
in data.activities}
53 def _async_migrator(entity_entry: er.RegistryEntry) -> dict[str, str] |
None:
56 parts = entity_entry.unique_id.split(
"-", 1)
58 activity_name = parts[1]
59 activity_id = names_to_ids.get(activity_name)
61 if activity_id
is not None:
63 "Migrating unique_id from [%s] to [%s]",
64 entity_entry.unique_id,
67 return {
"new_unique_id": f
"activity_{activity_id}"}
71 await er.async_migrate_entries(hass, entry_id, _async_migrator)
76 hass: HomeAssistant, entry: HarmonyConfigEntry
78 options =
dict(entry.options)
80 for importable_option
in (ATTR_ACTIVITY, ATTR_DELAY_SECS):
81 if importable_option
not in entry.options
and importable_option
in entry.data:
82 options[importable_option] = entry.data[importable_option]
86 hass.config_entries.async_update_entry(entry, options=options)
90 """Handle options update."""
92 hass, f
"{HARMONY_OPTIONS_UPDATE}-{entry.unique_id}", entry.options
97 """Unload a config entry."""
98 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
100 await entry.runtime_data.shutdown()
bool async_unload_entry(HomeAssistant hass, HarmonyConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, HarmonyConfigEntry entry)
None _async_import_options_from_data_if_missing(HomeAssistant hass, HarmonyConfigEntry entry)
None _migrate_old_unique_ids(HomeAssistant hass, str entry_id, HarmonyData data)
None _update_listener(HomeAssistant hass, HarmonyConfigEntry entry)
None async_dispatcher_send(HomeAssistant hass, str signal, *Any args)