diff --git a/homeassistant/components/sensor/speedtest.py b/homeassistant/components/sensor/speedtest.py index 86fd48e4d03..9cf7bfdd208 100644 --- a/homeassistant/components/sensor/speedtest.py +++ b/homeassistant/components/sensor/speedtest.py @@ -29,6 +29,7 @@ CONF_SECOND = 'second' CONF_MINUTE = 'minute' CONF_HOUR = 'hour' CONF_DAY = 'day' +CONF_SERVER_ID = 'server_id' SENSOR_TYPES = { 'ping': ['Ping', 'ms'], 'download': ['Download', 'Mbit/s'], @@ -38,6 +39,7 @@ SENSOR_TYPES = { PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_MONITORED_CONDITIONS): vol.All(cv.ensure_list, [vol.In(list(SENSOR_TYPES.keys()))]), + vol.Optional(CONF_SERVER_ID): cv.positive_int, vol.Optional(CONF_SECOND, default=[0]): vol.All(cv.ensure_list, [vol.All(vol.Coerce(int), vol.Range(0, 59))]), vol.Optional(CONF_MINUTE, default=[0]): @@ -131,6 +133,7 @@ class SpeedtestData(object): def __init__(self, hass, config): """Initialize the data object.""" self.data = None + self._server_id = config.get(CONF_SERVER_ID) track_time_change(hass, self.update, second=config.get(CONF_SECOND), minute=config.get(CONF_MINUTE), @@ -143,9 +146,12 @@ class SpeedtestData(object): _LOGGER.info('Executing speedtest') try: + args = [sys.executable, speedtest_cli.__file__, '--simple'] + if self._server_id: + args = args + ['--server', str(self._server_id)] + re_output = _SPEEDTEST_REGEX.split( - check_output([sys.executable, speedtest_cli.__file__, - '--simple']).decode("utf-8")) + check_output(args).decode("utf-8")) except CalledProcessError as process_error: _LOGGER.error('Error executing speedtest: %s', process_error) return