From 32844bb318d685cf32e9500780d1b6ab71016a90 Mon Sep 17 00:00:00 2001 From: Daniel Kucera Date: Thu, 6 Jun 2019 23:59:57 +0200 Subject: [PATCH] ebusd: added check for monitored conditions validity within correct circuit (#22461) --- homeassistant/components/ebusd/__init__.py | 30 ++++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/ebusd/__init__.py b/homeassistant/components/ebusd/__init__.py index 15ff523f4fb..e662e661afb 100644 --- a/homeassistant/components/ebusd/__init__.py +++ b/homeassistant/components/ebusd/__init__.py @@ -23,15 +23,29 @@ SERVICE_EBUSD_WRITE = 'ebusd_write' MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=15) + +def verify_ebusd_config(config): + """Verify eBusd config.""" + circuit = config[CONF_CIRCUIT] + for condition in config[CONF_MONITORED_CONDITIONS]: + if condition not in SENSOR_TYPES[circuit]: + raise vol.Invalid( + "Condition '" + condition + "' not in '" + circuit + "'.") + return config + + CONFIG_SCHEMA = vol.Schema({ - DOMAIN: vol.Schema({ - vol.Required(CONF_CIRCUIT): cv.string, - vol.Required(CONF_HOST): cv.string, - vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, - vol.Optional(CONF_MONITORED_CONDITIONS, default=[]): vol.All( - cv.ensure_list, [vol.In(SENSOR_TYPES['700'])]) - }) + DOMAIN: vol.Schema( + vol.All({ + vol.Required(CONF_CIRCUIT): cv.string, + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_MONITORED_CONDITIONS, default=[]): + cv.ensure_list, + }, + verify_ebusd_config) + ) }, extra=vol.ALLOW_EXTRA)