mirror of
https://github.com/home-assistant/core.git
synced 2025-07-15 17:27:10 +00:00
Kill bluetooth LE scanning gracefully when asked to shut down. (#22586)
* Kill bluetooth LE scanning gracefully when asked to shut down. * Add missing argument. * Refactor to use data instead of passing nonlocal variables about. * Fix typo.
This commit is contained in:
parent
fa73b8e37a
commit
f6349a6cf4
@ -6,10 +6,13 @@ from homeassistant.components.device_tracker import (
|
||||
YAML_DEVICES, CONF_TRACK_NEW, CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL,
|
||||
load_config, SOURCE_TYPE_BLUETOOTH_LE
|
||||
)
|
||||
from homeassistant.const import EVENT_HOMEASSISTANT_STOP
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DATA_BLE = 'BLE'
|
||||
DATA_BLE_ADAPTER = 'ADAPTER'
|
||||
BLE_PREFIX = 'BLE_'
|
||||
MIN_SEEN_NEW = 5
|
||||
|
||||
@ -19,6 +22,17 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
# pylint: disable=import-error
|
||||
import pygatt
|
||||
new_devices = {}
|
||||
hass.data.setdefault(DATA_BLE, {DATA_BLE_ADAPTER: None})
|
||||
|
||||
async def async_stop(event):
|
||||
"""Try to shut down the bluetooth child process nicely."""
|
||||
# These should never be unset at the point this runs, but just for
|
||||
# safety's sake, use `get`.
|
||||
adapter = hass.data.get(DATA_BLE, {}).get(DATA_BLE_ADAPTER)
|
||||
if adapter is not None:
|
||||
adapter.kill()
|
||||
|
||||
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, async_stop)
|
||||
|
||||
def see_device(address, name, new_device=False):
|
||||
"""Mark a device as seen."""
|
||||
@ -48,6 +62,7 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
_LOGGER.debug("Discovering Bluetooth LE devices")
|
||||
try:
|
||||
adapter = pygatt.GATTToolBackend()
|
||||
hass.data[DATA_BLE][DATA_BLE_ADAPTER] = adapter
|
||||
devs = adapter.scan()
|
||||
|
||||
devices = {x['address']: x['name'] for x in devs}
|
||||
|
@ -3,7 +3,7 @@
|
||||
"name": "Bluetooth le tracker",
|
||||
"documentation": "https://www.home-assistant.io/components/bluetooth_le_tracker",
|
||||
"requirements": [
|
||||
"pygatt[GATTTOOL]==3.2.0"
|
||||
"pygatt[GATTTOOL]==4.0.1"
|
||||
],
|
||||
"dependencies": [],
|
||||
"codeowners": []
|
||||
|
@ -3,7 +3,7 @@
|
||||
"name": "Skybeacon",
|
||||
"documentation": "https://www.home-assistant.io/components/skybeacon",
|
||||
"requirements": [
|
||||
"pygatt[GATTTOOL]==3.2.0"
|
||||
"pygatt[GATTTOOL]==4.0.1"
|
||||
],
|
||||
"dependencies": [],
|
||||
"codeowners": []
|
||||
|
@ -1061,7 +1061,7 @@ pyfttt==0.3
|
||||
|
||||
# homeassistant.components.bluetooth_le_tracker
|
||||
# homeassistant.components.skybeacon
|
||||
pygatt[GATTTOOL]==3.2.0
|
||||
pygatt[GATTTOOL]==4.0.1
|
||||
|
||||
# homeassistant.components.gogogate2
|
||||
pygogogate2==0.1.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user