async def async_setup_entry(hass: HomeAssistant, entry: config_entries.ConfigEntry): """Set up an access point from a config entry.""" _LOGGER.debug("Setup nibe entry") scope = None if entry.data.get(CONF_WRITEACCESS): scope = ["READSYSTEM", "WRITESYSTEM"] else: scope = ["READSYSTEM"] def access_data_write(data): hass.config_entries.async_update_entry( entry, data={**entry.data, CONF_ACCESS_DATA: data} ) session = UplinkSession( client_id=entry.data.get(CONF_CLIENT_ID), client_secret=entry.data.get(CONF_CLIENT_SECRET), redirect_uri=entry.data.get(CONF_REDIRECT_URI), access_data=entry.data.get(CONF_ACCESS_DATA), access_data_write=access_data_write, scope=scope, ) await session.open() uplink = Uplink(session) coordinator = NibeSystemsCoordinator(hass, uplink) data = NibeData(session, uplink, {}, coordinator) hass.data[DATA_NIBE_ENTRIES][entry.entry_id] = data await coordinator.async_config_entry_first_refresh() if systems_conf := entry.options.get(CONF_SYSTEMS): systems_enabled = {system_id for system_id in systems_conf}
async def async_setup_entry(hass, entry: config_entries.ConfigEntry): """Set up an access point from a config entry.""" _LOGGER.debug("Setup nibe entry") scope = None if entry.data.get(CONF_WRITEACCESS): scope = ["READSYSTEM", "WRITESYSTEM"] else: scope = ["READSYSTEM"] def access_data_write(data): hass.config_entries.async_update_entry( entry, data={ **entry.data, CONF_ACCESS_DATA: data }) session = UplinkSession( client_id=entry.data.get(CONF_CLIENT_ID), client_secret=entry.data.get(CONF_CLIENT_SECRET), redirect_uri=entry.data.get(CONF_REDIRECT_URI), access_data=entry.data.get(CONF_ACCESS_DATA), access_data_write=access_data_write, scope=scope, ) await session.open() uplink = Uplink(session) data = hass.data[DATA_NIBE] data.session = session data.uplink = uplink await async_setup_systems(hass, data, entry) return True
async def async_step_user(self, user_input=None): """Handle a flow initialized by the user.""" if user_input: scope = None if user_input[CONF_WRITEACCESS]: scope = ["READSYSTEM", "WRITESYSTEM"] else: scope = ["READSYSTEM"] session = UplinkSession( client_id=user_input[CONF_CLIENT_ID], client_secret=user_input[CONF_CLIENT_SECRET], redirect_uri=user_input[CONF_REDIRECT_URI], scope=scope, ) await session.open() self.uplink = Uplink(session, throttle=0.0) self.session = session self.user_data = user_input return await self.async_step_auth() url = "{}{}".format( self.hass.helpers.network.get_url(prefer_external=True), AUTH_CALLBACK_URL ) if DATA_NIBE_CONFIG in self.hass.data: config = self.hass.data[DATA_NIBE_CONFIG] else: config = {} return self.async_show_form( step_id="user", description_placeholders={ "application": CONF_UPLINK_APPLICATION_URL, "suffix": AUTH_CALLBACK_URL, }, data_schema=vol.Schema( { vol.Required( CONF_REDIRECT_URI, default=config.get(CONF_REDIRECT_URI, url) ): str, vol.Required( CONF_CLIENT_ID, default=config.get(CONF_CLIENT_ID, None) ): str, vol.Required( CONF_CLIENT_SECRET, default=config.get(CONF_CLIENT_SECRET, None) ): str, vol.Required( CONF_WRITEACCESS, default=config.get(CONF_WRITEACCESS, False) ): bool, } ), )