deCONZ - manual input fallback in config flow (#18116)
* Add config flow step for manual input Remove support for loading discovery config from json file * Small cleanup Fix all translations to step user instead of step init * Revert to using step_init * Small cleanup Add test_gateway that was forgotten in a previous PR * Fix hound comment * Fix empty pydocstring
This commit is contained in:
parent
24c110ad3c
commit
c5d0440041
9 changed files with 274 additions and 100 deletions
|
@ -6,11 +6,9 @@ from homeassistant import config_entries
|
|||
from homeassistant.core import callback
|
||||
from homeassistant.const import CONF_API_KEY, CONF_HOST, CONF_PORT
|
||||
from homeassistant.helpers import aiohttp_client
|
||||
from homeassistant.util.json import load_json
|
||||
|
||||
from .const import (
|
||||
CONF_ALLOW_DECONZ_GROUPS, CONF_ALLOW_CLIP_SENSOR, CONFIG_FILE, DOMAIN)
|
||||
|
||||
CONF_ALLOW_DECONZ_GROUPS, CONF_ALLOW_CLIP_SENSOR, DEFAULT_PORT, DOMAIN)
|
||||
|
||||
CONF_BRIDGEID = 'bridgeid'
|
||||
|
||||
|
@ -35,6 +33,10 @@ class DeconzFlowHandler(config_entries.ConfigFlow):
|
|||
self.deconz_config = {}
|
||||
|
||||
async def async_step_user(self, user_input=None):
|
||||
"""Handle a flow initialized by the user."""
|
||||
return await self.async_step_init(user_input)
|
||||
|
||||
async def async_step_init(self, user_input=None):
|
||||
"""Handle a deCONZ config flow start.
|
||||
|
||||
Only allows one instance to be set up.
|
||||
|
@ -51,6 +53,8 @@ class DeconzFlowHandler(config_entries.ConfigFlow):
|
|||
if bridge[CONF_HOST] == user_input[CONF_HOST]:
|
||||
self.deconz_config = bridge
|
||||
return await self.async_step_link()
|
||||
self.deconz_config = user_input
|
||||
return await self.async_step_link()
|
||||
|
||||
session = aiohttp_client.async_get_clientsession(self.hass)
|
||||
self.bridges = await async_discovery(session)
|
||||
|
@ -58,19 +62,24 @@ class DeconzFlowHandler(config_entries.ConfigFlow):
|
|||
if len(self.bridges) == 1:
|
||||
self.deconz_config = self.bridges[0]
|
||||
return await self.async_step_link()
|
||||
|
||||
if len(self.bridges) > 1:
|
||||
hosts = []
|
||||
for bridge in self.bridges:
|
||||
hosts.append(bridge[CONF_HOST])
|
||||
return self.async_show_form(
|
||||
step_id='user',
|
||||
step_id='init',
|
||||
data_schema=vol.Schema({
|
||||
vol.Required(CONF_HOST): vol.In(hosts)
|
||||
})
|
||||
)
|
||||
|
||||
return self.async_abort(
|
||||
reason='no_bridges'
|
||||
return self.async_show_form(
|
||||
step_id='user',
|
||||
data_schema=vol.Schema({
|
||||
vol.Required(CONF_HOST): str,
|
||||
vol.Required(CONF_PORT, default=DEFAULT_PORT): int,
|
||||
}),
|
||||
)
|
||||
|
||||
async def async_step_link(self, user_input=None):
|
||||
|
@ -135,13 +144,6 @@ class DeconzFlowHandler(config_entries.ConfigFlow):
|
|||
deconz_config[CONF_PORT] = discovery_info.get(CONF_PORT)
|
||||
deconz_config[CONF_BRIDGEID] = discovery_info.get('serial')
|
||||
|
||||
config_file = await self.hass.async_add_job(
|
||||
load_json, self.hass.config.path(CONFIG_FILE))
|
||||
if config_file and \
|
||||
config_file[CONF_HOST] == deconz_config[CONF_HOST] and \
|
||||
CONF_API_KEY in config_file:
|
||||
deconz_config[CONF_API_KEY] = config_file[CONF_API_KEY]
|
||||
|
||||
return await self.async_step_import(deconz_config)
|
||||
|
||||
async def async_step_import(self, import_config):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue