From 337b2e3f7746c28bc7b96464618d149474e29cd1 Mon Sep 17 00:00:00 2001 From: pavoni Date: Fri, 19 Aug 2016 20:07:09 +0100 Subject: [PATCH 1/2] Add voluptuous .# Please enter the commit message for your changes. Lines starting --- homeassistant/components/sensor/loopenergy.py | 83 +++++++++++-------- 1 file changed, 47 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/sensor/loopenergy.py b/homeassistant/components/sensor/loopenergy.py index 3394e69da8d..d186642e889 100644 --- a/homeassistant/components/sensor/loopenergy.py +++ b/homeassistant/components/sensor/loopenergy.py @@ -6,56 +6,67 @@ https://home-assistant.io/components/sensor.loop_energy/ """ import logging +import voluptuous as vol +import homeassistant.helpers.config_validation as cv + from homeassistant.helpers.entity import Entity +from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import EVENT_HOMEASSISTANT_STOP -from homeassistant.util import convert _LOGGER = logging.getLogger(__name__) -DOMAIN = "loopenergy" - REQUIREMENTS = ['pyloopenergy==0.0.14'] +CONFIG_ELEC = 'electricity' +CONFIG_GAS = 'gas' + +CONFIG_ELEC_SERIAL = 'electricity_serial' +CONFIG_ELEC_SECRET = 'electricity_secret' + +CONFIG_GAS_SERIAL = 'gas_serial' +CONFIG_GAS_SECRET = 'gas_secret' +CONFIG_GAS_CALORIFIC = 'gas_calorific' + +CONFIG_GAS_TYPE = 'gas_type' + +ELEC_SCHEMA = vol.Schema({ + vol.Required(CONFIG_ELEC_SERIAL): cv.string, + vol.Required(CONFIG_ELEC_SECRET): cv.string, +}) + +GAS_TYPE_SCHEMA = vol.In(['imperial', 'metric']) + +GAS_SCHEMA = vol.Schema({ + vol.Required(CONFIG_GAS_SERIAL): cv.string, + vol.Required(CONFIG_GAS_SECRET): cv.string, + vol.Optional(CONFIG_GAS_TYPE, default='metric'): + GAS_TYPE_SCHEMA, + vol.Optional(CONFIG_GAS_CALORIFIC, default=39.11): vol.Coerce(float) +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONFIG_ELEC): vol.All( + dict, ELEC_SCHEMA), + vol.Optional(CONFIG_GAS, default={}): vol.All( + dict, GAS_SCHEMA) +}) + def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Loop Energy sensors.""" import pyloopenergy - elec_serial = config.get('electricity_serial') - elec_secret = config.get('electricity_secret') - gas_serial = config.get('gas_serial') - gas_secret = config.get('gas_secret') - gas_type = config.get('gas_type', 'metric') - gas_calorific = convert(config.get('gas_calorific'), float, 39.11) - - if not (elec_serial and elec_secret): - _LOGGER.error( - "Configuration Error, " - "please make sure you have configured electricity " - "serial and secret tokens") - return None - - if (gas_serial or gas_secret) and not (gas_serial and gas_secret): - _LOGGER.error( - "Configuration Error, " - "please make sure you have configured gas " - "serial and secret tokens") - return None - - if gas_type not in ['imperial', 'metric']: - _LOGGER.error( - "Configuration Error, 'gas_type' " - "can only be 'imperial' or 'metric' ") - return None + elec_config = config.get(CONFIG_ELEC) + gas_config = config.get(CONFIG_GAS) # pylint: disable=too-many-function-args controller = pyloopenergy.LoopEnergy( - elec_serial, - elec_secret, - gas_serial, - gas_secret, - gas_type, - gas_calorific + elec_config.get(CONFIG_ELEC_SERIAL), + elec_config.get(CONFIG_ELEC_SECRET), + gas_config.get(CONFIG_GAS_SERIAL), + gas_config.get(CONFIG_GAS_SECRET), + gas_config.get(CONFIG_GAS_TYPE), + gas_config.get(CONFIG_GAS_CALORIFIC) ) def stop_loopenergy(event): @@ -67,7 +78,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensors = [LoopEnergyElec(controller)] - if gas_serial: + if gas_config.get(CONFIG_GAS_SERIAL): sensors.append(LoopEnergyGas(controller)) add_devices(sensors) From d1a31b3e0c51cb885c84c8779a1f55d5f732ddeb Mon Sep 17 00:00:00 2001 From: pavoni Date: Fri, 19 Aug 2016 21:47:07 +0100 Subject: [PATCH 2/2] Change CONFIG to CONF for consistency. --- homeassistant/components/sensor/loopenergy.py | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/sensor/loopenergy.py b/homeassistant/components/sensor/loopenergy.py index d186642e889..04a1d946d45 100644 --- a/homeassistant/components/sensor/loopenergy.py +++ b/homeassistant/components/sensor/loopenergy.py @@ -17,37 +17,37 @@ _LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['pyloopenergy==0.0.14'] -CONFIG_ELEC = 'electricity' -CONFIG_GAS = 'gas' +CONF_ELEC = 'electricity' +CONF_GAS = 'gas' -CONFIG_ELEC_SERIAL = 'electricity_serial' -CONFIG_ELEC_SECRET = 'electricity_secret' +CONF_ELEC_SERIAL = 'electricity_serial' +CONF_ELEC_SECRET = 'electricity_secret' -CONFIG_GAS_SERIAL = 'gas_serial' -CONFIG_GAS_SECRET = 'gas_secret' -CONFIG_GAS_CALORIFIC = 'gas_calorific' +CONF_GAS_SERIAL = 'gas_serial' +CONF_GAS_SECRET = 'gas_secret' +CONF_GAS_CALORIFIC = 'gas_calorific' -CONFIG_GAS_TYPE = 'gas_type' +CONF_GAS_TYPE = 'gas_type' ELEC_SCHEMA = vol.Schema({ - vol.Required(CONFIG_ELEC_SERIAL): cv.string, - vol.Required(CONFIG_ELEC_SECRET): cv.string, + vol.Required(CONF_ELEC_SERIAL): cv.string, + vol.Required(CONF_ELEC_SECRET): cv.string, }) GAS_TYPE_SCHEMA = vol.In(['imperial', 'metric']) GAS_SCHEMA = vol.Schema({ - vol.Required(CONFIG_GAS_SERIAL): cv.string, - vol.Required(CONFIG_GAS_SECRET): cv.string, - vol.Optional(CONFIG_GAS_TYPE, default='metric'): + vol.Required(CONF_GAS_SERIAL): cv.string, + vol.Required(CONF_GAS_SECRET): cv.string, + vol.Optional(CONF_GAS_TYPE, default='metric'): GAS_TYPE_SCHEMA, - vol.Optional(CONFIG_GAS_CALORIFIC, default=39.11): vol.Coerce(float) + vol.Optional(CONF_GAS_CALORIFIC, default=39.11): vol.Coerce(float) }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONFIG_ELEC): vol.All( + vol.Required(CONF_ELEC): vol.All( dict, ELEC_SCHEMA), - vol.Optional(CONFIG_GAS, default={}): vol.All( + vol.Optional(CONF_GAS, default={}): vol.All( dict, GAS_SCHEMA) }) @@ -56,17 +56,17 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Loop Energy sensors.""" import pyloopenergy - elec_config = config.get(CONFIG_ELEC) - gas_config = config.get(CONFIG_GAS) + elec_config = config.get(CONF_ELEC) + gas_config = config.get(CONF_GAS) # pylint: disable=too-many-function-args controller = pyloopenergy.LoopEnergy( - elec_config.get(CONFIG_ELEC_SERIAL), - elec_config.get(CONFIG_ELEC_SECRET), - gas_config.get(CONFIG_GAS_SERIAL), - gas_config.get(CONFIG_GAS_SECRET), - gas_config.get(CONFIG_GAS_TYPE), - gas_config.get(CONFIG_GAS_CALORIFIC) + elec_config.get(CONF_ELEC_SERIAL), + elec_config.get(CONF_ELEC_SECRET), + gas_config.get(CONF_GAS_SERIAL), + gas_config.get(CONF_GAS_SECRET), + gas_config.get(CONF_GAS_TYPE), + gas_config.get(CONF_GAS_CALORIFIC) ) def stop_loopenergy(event): @@ -78,7 +78,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensors = [LoopEnergyElec(controller)] - if gas_config.get(CONFIG_GAS_SERIAL): + if gas_config.get(CONF_GAS_SERIAL): sensors.append(LoopEnergyGas(controller)) add_devices(sensors)