From ac4674fdb0096cd2054182d67eaaabd91720c621 Mon Sep 17 00:00:00 2001 From: Ryan Davies Date: Mon, 6 Aug 2018 17:17:21 +1200 Subject: [PATCH] Add max_gps_accuracy option to Google Maps (#15833) * Google Maps - Add max_gps_accuracy option * Remove else statement and add continue --- .../components/device_tracker/google_maps.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/homeassistant/components/device_tracker/google_maps.py b/homeassistant/components/device_tracker/google_maps.py index d0669ab4967..1aeeb0e1030 100644 --- a/homeassistant/components/device_tracker/google_maps.py +++ b/homeassistant/components/device_tracker/google_maps.py @@ -21,6 +21,7 @@ REQUIREMENTS = ['locationsharinglib==2.0.7'] _LOGGER = logging.getLogger(__name__) +CONF_MAX_GPS_ACCURACY = 'max_gps_accuracy' ATTR_ADDRESS = 'address' ATTR_FULL_NAME = 'full_name' ATTR_LAST_SEEN = 'last_seen' @@ -31,6 +32,7 @@ CREDENTIALS_FILE = '.google_maps_location_sharing.cookies' MIN_TIME_BETWEEN_SCANS = timedelta(seconds=30) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_MAX_GPS_ACCURACY, default=100000): vol.Coerce(float), vol.Required(CONF_USERNAME): cv.string, vol.Required(CONF_PASSWORD): cv.string, }) @@ -53,6 +55,7 @@ class GoogleMapsScanner: self.see = see self.username = config[CONF_USERNAME] self.password = config[CONF_PASSWORD] + self.max_gps_accuracy = config[CONF_MAX_GPS_ACCURACY] try: self.service = Service(self.username, self.password, @@ -76,6 +79,14 @@ class GoogleMapsScanner: _LOGGER.warning("No location(s) shared with this account") return + if self.max_gps_accuracy is not None and \ + person.accuracy > self.max_gps_accuracy: + _LOGGER.info("Ignoring %s update because expected GPS " + "accuracy %s is not met: %s", + person.nickname, self.max_gps_accuracy, + person.accuracy) + continue + attrs = { ATTR_ADDRESS: person.address, ATTR_FULL_NAME: person.full_name,