1 """The totalconnect component."""
3 from total_connect_client.client
import TotalConnectClient
4 from total_connect_client.exceptions
import AuthenticationError
11 from .const
import AUTO_BYPASS, CONF_USERCODES, DOMAIN
12 from .coordinator
import TotalConnectDataUpdateCoordinator
14 PLATFORMS = [Platform.ALARM_CONTROL_PANEL, Platform.BINARY_SENSOR, Platform.BUTTON]
18 """Set up upon config entry in user interface."""
20 username = conf[CONF_USERNAME]
21 password = conf[CONF_PASSWORD]
22 bypass = entry.options.get(AUTO_BYPASS,
False)
24 if CONF_USERCODES
not in conf:
28 temp_codes = conf[CONF_USERCODES]
29 usercodes = {
int(code): temp_codes[code]
for code
in temp_codes}
32 client = await hass.async_add_executor_job(
33 TotalConnectClient, username, password, usercodes, bypass
35 except AuthenticationError
as exception:
37 "TotalConnect authentication failed during setup"
41 await coordinator.async_config_entry_first_refresh()
43 hass.data.setdefault(DOMAIN, {})
44 hass.data[DOMAIN][entry.entry_id] = coordinator
45 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
47 entry.async_on_unload(entry.add_update_listener(update_listener))
53 """Unload a config entry."""
54 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
56 hass.data[DOMAIN].pop(entry.entry_id)
62 """Update listener."""
63 bypass = entry.options.get(AUTO_BYPASS,
False)
64 client = hass.data[DOMAIN][entry.entry_id].client
65 for location_id
in client.locations:
66 client.locations[location_id].auto_bypass_low_battery = bypass
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
None update_listener(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)