1 """The fritzbox_callmonitor integration."""
5 from fritzconnection.core.exceptions
import FritzConnectionException, FritzSecurityError
6 from requests.exceptions
import ConnectionError
as RequestsConnectionError
13 from .base
import FritzBoxPhonebook
14 from .const
import CONF_PHONEBOOK, CONF_PREFIXES, PLATFORMS
16 _LOGGER = logging.getLogger(__name__)
18 type FritzBoxCallMonitorConfigEntry = ConfigEntry[FritzBoxPhonebook]
22 hass: HomeAssistant, config_entry: FritzBoxCallMonitorConfigEntry
24 """Set up the fritzbox_callmonitor platforms."""
26 host=config_entry.data[CONF_HOST],
27 username=config_entry.data[CONF_USERNAME],
28 password=config_entry.data[CONF_PASSWORD],
29 phonebook_id=config_entry.data[CONF_PHONEBOOK],
30 prefixes=config_entry.options.get(CONF_PREFIXES),
34 await hass.async_add_executor_job(fritzbox_phonebook.init_phonebook)
35 except FritzSecurityError
as ex:
38 "User has insufficient permissions to access AVM FRITZ!Box settings and"
44 except FritzConnectionException
as ex:
45 raise ConfigEntryAuthFailed
from ex
46 except RequestsConnectionError
as ex:
47 _LOGGER.error(
"Unable to connect to AVM FRITZ!Box call monitor: %s", ex)
48 raise ConfigEntryNotReady
from ex
50 config_entry.runtime_data = fritzbox_phonebook
51 config_entry.async_on_unload(config_entry.add_update_listener(update_listener))
52 await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
58 hass: HomeAssistant, config_entry: FritzBoxCallMonitorConfigEntry
60 """Unloading the fritzbox_callmonitor platforms."""
61 return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)
65 hass: HomeAssistant, config_entry: FritzBoxCallMonitorConfigEntry
67 """Update listener to reload after option has changed."""
68 await hass.config_entries.async_reload(config_entry.entry_id)
None update_listener(HomeAssistant hass, FritzBoxCallMonitorConfigEntry config_entry)
bool async_unload_entry(HomeAssistant hass, FritzBoxCallMonitorConfigEntry config_entry)
bool async_setup_entry(HomeAssistant hass, FritzBoxCallMonitorConfigEntry config_entry)