diff --git a/homeassistant/components/asuswrt.py b/homeassistant/components/asuswrt.py index 25e7a59f47c..8dedb1f640a 100644 --- a/homeassistant/components/asuswrt.py +++ b/homeassistant/components/asuswrt.py @@ -26,6 +26,8 @@ CONF_SSH_KEY = 'ssh_key' CONF_REQUIRE_IP = 'require_ip' DEFAULT_SSH_PORT = 22 SECRET_GROUP = 'Password or SSH Key' +CONF_SENSORS = 'sensors' +SENSOR_TYPES = ['upload_speed', 'download_speed', 'download', 'upload'] CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -37,7 +39,9 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_REQUIRE_IP, default=True): cv.boolean, vol.Exclusive(CONF_PASSWORD, SECRET_GROUP): cv.string, vol.Exclusive(CONF_SSH_KEY, SECRET_GROUP): cv.isfile, - vol.Exclusive(CONF_PUB_KEY, SECRET_GROUP): cv.isfile + vol.Exclusive(CONF_PUB_KEY, SECRET_GROUP): cv.isfile, + vol.Optional(CONF_SENSORS): vol.All( + cv.ensure_list, [vol.In(SENSOR_TYPES)]), }), }, extra=vol.ALLOW_EXTRA) @@ -62,7 +66,8 @@ async def async_setup(hass, config): hass.data[DATA_ASUSWRT] = api hass.async_create_task(async_load_platform( - hass, 'sensor', DOMAIN, {}, config)) + hass, 'sensor', DOMAIN, config[DOMAIN].get(CONF_SENSORS), config)) hass.async_create_task(async_load_platform( hass, 'device_tracker', DOMAIN, {}, config)) + return True diff --git a/homeassistant/components/sensor/asuswrt.py b/homeassistant/components/sensor/asuswrt.py index 876f0dfd559..6af59ec1809 100644 --- a/homeassistant/components/sensor/asuswrt.py +++ b/homeassistant/components/sensor/asuswrt.py @@ -17,13 +17,23 @@ _LOGGER = logging.getLogger(__name__) async def async_setup_platform( hass, config, add_entities, discovery_info=None): """Set up the asuswrt sensors.""" + if discovery_info is None: + return + api = hass.data[DATA_ASUSWRT] - add_entities([ - AsuswrtRXSensor(api), - AsuswrtTXSensor(api), - AsuswrtTotalRXSensor(api), - AsuswrtTotalTXSensor(api) - ]) + + devices = [] + + if 'download' in discovery_info: + devices.append(AsuswrtTotalRXSensor(api)) + if 'upload' in discovery_info: + devices.append(AsuswrtTotalTXSensor(api)) + if 'download_speed' in discovery_info: + devices.append(AsuswrtRXSensor(api)) + if 'upload_speed' in discovery_info: + devices.append(AsuswrtTXSensor(api)) + + add_entities(devices) class AsuswrtSensor(Entity):