From 548371e94c4c47634bfb187878e438190945dc53 Mon Sep 17 00:00:00 2001 From: karlkar Date: Mon, 25 Mar 2019 01:59:12 +0100 Subject: [PATCH] Check if mac is set when more than 2 gateways (#21834) * Check if mac is set when more than 2 gateways When more than 2 gateways mac is required for each of them. Now voluptuous will require it. * fix line length * remove trailing whitespace * Make it more readable --- .../components/xiaomi_aqara/__init__.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/xiaomi_aqara/__init__.py b/homeassistant/components/xiaomi_aqara/__init__.py index 66fc1fa13dd..e98655f9d76 100644 --- a/homeassistant/components/xiaomi_aqara/__init__.py +++ b/homeassistant/components/xiaomi_aqara/__init__.py @@ -61,8 +61,7 @@ SERVICE_SCHEMA_REMOVE_DEVICE = vol.Schema({ }) -GATEWAY_CONFIG = vol.Schema({ - vol.Optional(CONF_MAC, default=None): vol.Any(GW_MAC, None), +GATEWAY_CONFIG_MAC_OPT = vol.Schema({ vol.Optional(CONF_KEY): vol.All(cv.string, vol.Length(min=16, max=16)), vol.Optional(CONF_HOST): cv.string, @@ -70,6 +69,14 @@ GATEWAY_CONFIG = vol.Schema({ vol.Optional(CONF_DISABLE, default=False): cv.boolean, }) +GATEWAY_CONFIG_MAC_REQ = vol.Schema({ + vol.Required(CONF_KEY): + vol.All(cv.string, vol.Length(min=16, max=16)), + vol.Optional(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=9898): cv.port, + vol.Optional(CONF_DISABLE, default=False): cv.boolean, +}) + def _fix_conf_defaults(config): """Update some configuration defaults.""" @@ -89,7 +96,10 @@ def _fix_conf_defaults(config): CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Optional(CONF_GATEWAYS, default={}): - vol.All(cv.ensure_list, [GATEWAY_CONFIG], [_fix_conf_defaults]), + vol.All(cv.ensure_list, vol.Any( + vol.All([GATEWAY_CONFIG_MAC_OPT], vol.Length(max=1)), + vol.All([GATEWAY_CONFIG_MAC_REQ], vol.Length(min=2)) + ), [_fix_conf_defaults]), vol.Optional(CONF_INTERFACE, default='any'): cv.string, vol.Optional(CONF_DISCOVERY_RETRY, default=3): cv.positive_int })