1 """The kmtronic integration."""
4 from datetime
import timedelta
8 from pykmtronic.auth
import Auth
9 from pykmtronic.hub
import KMTronicHubAPI
17 from .const
import DATA_COORDINATOR, DATA_HUB, DOMAIN, MANUFACTURER, UPDATE_LISTENER
19 PLATFORMS = [Platform.SWITCH]
21 _LOGGER = logging.getLogger(__name__)
25 """Set up kmtronic from a config entry."""
26 session = aiohttp_client.async_get_clientsession(hass)
29 f
"http://{entry.data[CONF_HOST]}",
30 entry.data[CONF_USERNAME],
31 entry.data[CONF_PASSWORD],
33 hub = KMTronicHubAPI(auth)
35 async
def async_update_data():
37 async
with asyncio.timeout(10):
38 await hub.async_update_relays()
39 except aiohttp.client_exceptions.ClientResponseError
as err:
41 except aiohttp.client_exceptions.ClientConnectorError
as err:
42 raise UpdateFailed(f
"Error communicating with API: {err}")
from err
48 name=f
"{MANUFACTURER} {hub.name}",
49 update_method=async_update_data,
52 await coordinator.async_config_entry_first_refresh()
54 hass.data.setdefault(DOMAIN, {})
55 hass.data[DOMAIN][entry.entry_id] = {
57 DATA_COORDINATOR: coordinator,
60 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
62 update_listener = entry.add_update_listener(async_update_options)
63 hass.data[DOMAIN][entry.entry_id][UPDATE_LISTENER] = update_listener
70 await hass.config_entries.async_reload(config_entry.entry_id)
74 """Unload a config entry."""
75 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
77 update_listener = hass.data[DOMAIN][entry.entry_id][UPDATE_LISTENER]
79 hass.data[DOMAIN].pop(entry.entry_id)
None async_update_options(HomeAssistant hass, ConfigEntry config_entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
None update_listener(HomeAssistant hass, ConfigEntry entry)