From 97a6d9885a84e0a8288c9f423b65ea6e95983f41 Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Sun, 1 Jul 2018 14:18:17 -0400 Subject: [PATCH 1/7] Add device_tracker.bluetooth_update service Will immediately scan for Bluetooth devices outside of the interval timer. Allows for less frequent scanning, with scanning on demand via automation. --- .../device_tracker/bluetooth_tracker.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index 2ca519d225c4a8..aa00819a7c2631 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -12,7 +12,8 @@ from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.components.device_tracker import ( YAML_DEVICES, CONF_TRACK_NEW, CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL, - load_config, PLATFORM_SCHEMA, DEFAULT_TRACK_NEW, SOURCE_TYPE_BLUETOOTH) + load_config, PLATFORM_SCHEMA, DEFAULT_TRACK_NEW, SOURCE_TYPE_BLUETOOTH, + DOMAIN) import homeassistant.util.dt as dt_util _LOGGER = logging.getLogger(__name__) @@ -79,7 +80,7 @@ def discover_devices(): request_rssi = config.get(CONF_REQUEST_RSSI, False) - def update_bluetooth(now): + def update_bluetooth(now, once = False): """Lookup Bluetooth device and update status.""" try: if track_new: @@ -99,9 +100,17 @@ def update_bluetooth(now): see_device(mac, result, rssi) except bluetooth.BluetoothError: _LOGGER.exception("Error looking up Bluetooth device") - track_point_in_utc_time( - hass, update_bluetooth, dt_util.utcnow() + interval) + if not once: + track_point_in_utc_time( + hass, update_bluetooth, dt_util.utcnow() + interval) + + def handle_update_bluetooth(call): + """Update bluetooth devices on demand.""" + now = dt_util.utcnow() + update_bluetooth(now, True) update_bluetooth(dt_util.utcnow()) + + hass.services.register(DOMAIN, "bluetooth_update", handle_update_bluetooth) return True From a4299d46037fb935d712f35b08ff92fbfb16d8c8 Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Sun, 1 Jul 2018 14:31:22 -0400 Subject: [PATCH 2/7] remove excess whitespace per bot comments --- homeassistant/components/device_tracker/bluetooth_tracker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index aa00819a7c2631..fa504907ad0713 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -80,7 +80,7 @@ def discover_devices(): request_rssi = config.get(CONF_REQUEST_RSSI, False) - def update_bluetooth(now, once = False): + def update_bluetooth(now, once=False): """Lookup Bluetooth device and update status.""" try: if track_new: @@ -110,7 +110,7 @@ def handle_update_bluetooth(call): update_bluetooth(now, True) update_bluetooth(dt_util.utcnow()) - + hass.services.register(DOMAIN, "bluetooth_update", handle_update_bluetooth) return True From 5b4bfa4a56f5e2679808d1ee67e4653ecebca37a Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Wed, 11 Jul 2018 19:00:01 -0400 Subject: [PATCH 3/7] Refactored update_bluetooth to call new function update_bluetooth_once --- .../components/device_tracker/bluetooth_tracker.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index fa504907ad0713..fead84194a32f8 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -80,7 +80,13 @@ def discover_devices(): request_rssi = config.get(CONF_REQUEST_RSSI, False) - def update_bluetooth(now, once=False): + def update_bluetooth(now): + """Update Bluetooth and set timer for the next update""" + update_bluetooth_once() + track_point_in_utc_time( + hass, update_bluetooth, dt_util.utcnow() + interval) + + def update_bluetooth_once(): """Lookup Bluetooth device and update status.""" try: if track_new: @@ -100,9 +106,6 @@ def update_bluetooth(now, once=False): see_device(mac, result, rssi) except bluetooth.BluetoothError: _LOGGER.exception("Error looking up Bluetooth device") - if not once: - track_point_in_utc_time( - hass, update_bluetooth, dt_util.utcnow() + interval) def handle_update_bluetooth(call): """Update bluetooth devices on demand.""" From a6d6f76470d2afdad7a87f06cce007ef7d74eee8 Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Wed, 11 Jul 2018 19:01:38 -0400 Subject: [PATCH 4/7] Change service name to bluetooth_tracker_update to reflect platform name --- homeassistant/components/device_tracker/bluetooth_tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index fead84194a32f8..51a7ea78d8f807 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -114,6 +114,6 @@ def handle_update_bluetooth(call): update_bluetooth(dt_util.utcnow()) - hass.services.register(DOMAIN, "bluetooth_update", handle_update_bluetooth) + hass.services.register(DOMAIN, "bluetooth_tracker_update", handle_update_bluetooth) return True From 867c913895bf8d0a6293c1eef36e86313d48df95 Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Wed, 11 Jul 2018 19:05:46 -0400 Subject: [PATCH 5/7] Reformat for line length --- homeassistant/components/device_tracker/bluetooth_tracker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index 51a7ea78d8f807..576008c82a4c26 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -114,6 +114,7 @@ def handle_update_bluetooth(call): update_bluetooth(dt_util.utcnow()) - hass.services.register(DOMAIN, "bluetooth_tracker_update", handle_update_bluetooth) + hass.services.register( + DOMAIN, "bluetooth_tracker_update", handle_update_bluetooth) return True From 4d1c0e307fd33a7dacdb2900d7a9f6b2fc4746b8 Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Wed, 11 Jul 2018 19:15:23 -0400 Subject: [PATCH 6/7] Linting fix, pydoc, first line should end with a period --- homeassistant/components/device_tracker/bluetooth_tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index 576008c82a4c26..3771551069d4f5 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -81,7 +81,7 @@ def discover_devices(): request_rssi = config.get(CONF_REQUEST_RSSI, False) def update_bluetooth(now): - """Update Bluetooth and set timer for the next update""" + """Update Bluetooth and set timer for the next update.""" update_bluetooth_once() track_point_in_utc_time( hass, update_bluetooth, dt_util.utcnow() + interval) From b7144e408176615537793c663655152f4cabaaa7 Mon Sep 17 00:00:00 2001 From: Hunter Horsman Date: Wed, 11 Jul 2018 19:53:12 -0400 Subject: [PATCH 7/7] Fixed a method call, and removed some more unsused parameters --- .../components/device_tracker/bluetooth_tracker.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index 3771551069d4f5..217df0aacd47b0 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -80,7 +80,7 @@ def discover_devices(): request_rssi = config.get(CONF_REQUEST_RSSI, False) - def update_bluetooth(now): + def update_bluetooth(): """Update Bluetooth and set timer for the next update.""" update_bluetooth_once() track_point_in_utc_time( @@ -109,10 +109,9 @@ def update_bluetooth_once(): def handle_update_bluetooth(call): """Update bluetooth devices on demand.""" - now = dt_util.utcnow() - update_bluetooth(now, True) + update_bluetooth_once() - update_bluetooth(dt_util.utcnow()) + update_bluetooth() hass.services.register( DOMAIN, "bluetooth_tracker_update", handle_update_bluetooth)