Catch bluetooth_tracker OSError (#60437)

Catch when bluetooth_tracker integration throws an OSError when a bluetooth device can't be found.
pull/63017/head^2
Alan Murray 2021-12-30 20:06:44 +11:00 committed by GitHub
parent bbb652304e
commit eaba29657f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 7 deletions

View File

@ -60,13 +60,18 @@ def is_bluetooth_device(device: Device) -> bool:
def discover_devices(device_id: int) -> list[tuple[str, str]]:
"""Discover Bluetooth devices."""
result = bluetooth.discover_devices(
duration=8,
lookup_names=True,
flush_cache=True,
lookup_class=False,
device_id=device_id,
)
try:
result = bluetooth.discover_devices(
duration=8,
lookup_names=True,
flush_cache=True,
lookup_class=False,
device_id=device_id,
)
except OSError as ex:
# OSError is generally thrown if a bluetooth device isn't found
_LOGGER.error("Couldn't discover bluetooth devices: %s", ex)
return []
_LOGGER.debug("Bluetooth devices discovered = %d", len(result))
return result # type: ignore[no-any-return]