1 """Support the UPB PIM."""
16 EVENT_UPB_SCENE_CHANGED,
19 _LOGGER = logging.getLogger(__name__)
20 PLATFORMS = [Platform.LIGHT, Platform.SCENE]
24 """Set up a new config_entry for UPB PIM."""
26 url = config_entry.data[CONF_HOST]
27 file = config_entry.data[CONF_FILE_PATH]
29 upb = upb_lib.UpbPim({
"url": url,
"UPStartExportFile": file})
30 await upb.async_connect()
31 hass.data.setdefault(DOMAIN, {})
32 hass.data[DOMAIN][config_entry.entry_id] = {
"upb": upb}
34 await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
36 def _element_changed(element, changeset):
37 if (change := changeset.get(
"last_change"))
is None:
39 if change.get(
"command")
is None:
43 EVENT_UPB_SCENE_CHANGED,
45 ATTR_COMMAND: change[
"command"],
46 ATTR_ADDRESS: element.addr.index,
47 ATTR_BRIGHTNESS_PCT: change.get(
"level", -1),
48 ATTR_RATE: change.get(
"rate", -1),
52 for link
in upb.links:
53 element = upb.links[link]
54 element.add_callback(_element_changed)
60 """Unload the config_entry."""
61 unload_ok = await hass.config_entries.async_unload_platforms(
62 config_entry, PLATFORMS
65 upb = hass.data[DOMAIN][config_entry.entry_id][
"upb"]
67 hass.data[DOMAIN].pop(config_entry.entry_id)
74 _LOGGER.debug(
"Migrating from version %s", entry.version)
76 if entry.version == 1:
78 if entry.minor_version == 1:
80 hass.config_entries.async_update_entry(
81 entry, unique_id=
str(entry.unique_id), minor_version=minor_version
84 _LOGGER.debug(
"Migration successful")
bool async_migrate_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry config_entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry config_entry)