From 9f9b87692a3176719990a8d12e01334c9efba4f4 Mon Sep 17 00:00:00 2001
From: Nolan Gilley <nkgilley@gmail.com>
Date: Fri, 16 Dec 2016 01:55:51 -0500
Subject: [PATCH] add manual option to prevent scheduled tests. (#4906)

---
 homeassistant/components/sensor/fastdotcom.py | 13 ++++++++-----
 homeassistant/components/sensor/speedtest.py  | 13 ++++++++-----
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/homeassistant/components/sensor/fastdotcom.py b/homeassistant/components/sensor/fastdotcom.py
index 0390ea0e9d6..a055d1795e1 100644
--- a/homeassistant/components/sensor/fastdotcom.py
+++ b/homeassistant/components/sensor/fastdotcom.py
@@ -22,6 +22,7 @@ CONF_SECOND = 'second'
 CONF_MINUTE = 'minute'
 CONF_HOUR = 'hour'
 CONF_DAY = 'day'
+CONF_MANUAL = 'manual'
 
 PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
     vol.Optional(CONF_SECOND, default=[0]):
@@ -32,6 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
         vol.All(cv.ensure_list, [vol.All(vol.Coerce(int), vol.Range(0, 23))]),
     vol.Optional(CONF_DAY):
         vol.All(cv.ensure_list, [vol.All(vol.Coerce(int), vol.Range(1, 31))]),
+    vol.Optional(CONF_MANUAL, default=False): cv.boolean,
 })
 
 
@@ -104,11 +106,12 @@ class SpeedtestData(object):
     def __init__(self, hass, config):
         """Initialize the data object."""
         self.data = None
-        track_time_change(hass, self.update,
-                          second=config.get(CONF_SECOND),
-                          minute=config.get(CONF_MINUTE),
-                          hour=config.get(CONF_HOUR),
-                          day=config.get(CONF_DAY))
+        if not config.get(CONF_MANUAL):
+            track_time_change(hass, self.update,
+                              second=config.get(CONF_SECOND),
+                              minute=config.get(CONF_MINUTE),
+                              hour=config.get(CONF_HOUR),
+                              day=config.get(CONF_DAY))
 
     def update(self, now):
         """Get the latest data from fast.com."""
diff --git a/homeassistant/components/sensor/speedtest.py b/homeassistant/components/sensor/speedtest.py
index 3087c74d474..dff6f1c9dde 100644
--- a/homeassistant/components/sensor/speedtest.py
+++ b/homeassistant/components/sensor/speedtest.py
@@ -31,6 +31,7 @@ CONF_MINUTE = 'minute'
 CONF_HOUR = 'hour'
 CONF_DAY = 'day'
 CONF_SERVER_ID = 'server_id'
+CONF_MANUAL = 'manual'
 
 SENSOR_TYPES = {
     'ping': ['Ping', 'ms'],
@@ -50,6 +51,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
         vol.All(cv.ensure_list, [vol.All(vol.Coerce(int), vol.Range(0, 23))]),
     vol.Optional(CONF_DAY):
         vol.All(cv.ensure_list, [vol.All(vol.Coerce(int), vol.Range(1, 31))]),
+    vol.Optional(CONF_MANUAL, default=False): cv.boolean,
 })
 
 
@@ -135,11 +137,12 @@ class SpeedtestData(object):
         """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),
-                          hour=config.get(CONF_HOUR),
-                          day=config.get(CONF_DAY))
+        if not config.get(CONF_MANUAL):
+            track_time_change(hass, self.update,
+                              second=config.get(CONF_SECOND),
+                              minute=config.get(CONF_MINUTE),
+                              hour=config.get(CONF_HOUR),
+                              day=config.get(CONF_DAY))
 
     def update(self, now):
         """Get the latest data from speedtest.net."""