Allow user to configure server id to perform speed test against (#3008)

* Allow user to configure server id to perform speed test against

* Don't overwrite list

* Type-o

* Convert to string

* Append lists

* str(None) => 'None' did not realize that.
This commit is contained in:
Teagan Glenn 2016-08-28 19:09:34 -06:00 committed by GitHub
parent 821b3d7fac
commit b6ad0bfbea

View File

@ -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