1 """Support for AVM Fritz!Box functions."""
20 FRITZ_AUTH_EXCEPTIONS,
24 from .coordinator
import AvmWrapper, FritzData
25 from .services
import async_setup_services, async_unload_services
27 _LOGGER = logging.getLogger(__name__)
31 """Set up fritzboxtools from config entry."""
32 _LOGGER.debug(
"Setting up FRITZ!Box Tools component")
35 host=entry.data[CONF_HOST],
36 port=entry.data[CONF_PORT],
37 username=entry.data[CONF_USERNAME],
38 password=entry.data[CONF_PASSWORD],
39 use_tls=entry.data.get(CONF_SSL, DEFAULT_SSL),
43 await avm_wrapper.async_setup(entry.options)
44 except FRITZ_AUTH_EXCEPTIONS
as ex:
45 raise ConfigEntryAuthFailed
from ex
46 except FRITZ_EXCEPTIONS
as ex:
47 raise ConfigEntryNotReady
from ex
50 "X_AVM-DE_UPnP1" in avm_wrapper.connection.services
51 and not (await avm_wrapper.async_get_upnp_configuration())[
"NewEnable"]
55 await avm_wrapper.async_config_entry_first_refresh()
57 hass.data.setdefault(DOMAIN, {})
58 hass.data[DOMAIN][entry.entry_id] = avm_wrapper
60 if DATA_FRITZ
not in hass.data:
63 entry.async_on_unload(entry.add_update_listener(update_listener))
66 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
74 """Unload FRITZ!Box Tools config entry."""
75 avm_wrapper: AvmWrapper = hass.data[DOMAIN][entry.entry_id]
77 fritz_data = hass.data[DATA_FRITZ]
78 fritz_data.tracked.pop(avm_wrapper.unique_id)
80 if not bool(fritz_data.tracked):
81 hass.data.pop(DATA_FRITZ)
83 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
85 hass.data[DOMAIN].pop(entry.entry_id)
93 """Update when config_entry options update."""
95 await hass.config_entries.async_reload(entry.entry_id)
None async_unload_services(HomeAssistant hass)
None update_listener(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
None async_setup_services(HomeAssistant hass)