Catch bluetooth_tracker OSError (#60437)

Catch when bluetooth_tracker integration throws an OSError when a bluetooth device can't be found.
This commit is contained in:
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

View file

@ -60,6 +60,7 @@ def is_bluetooth_device(device: Device) -> bool:
def discover_devices(device_id: int) -> list[tuple[str, str]]: def discover_devices(device_id: int) -> list[tuple[str, str]]:
"""Discover Bluetooth devices.""" """Discover Bluetooth devices."""
try:
result = bluetooth.discover_devices( result = bluetooth.discover_devices(
duration=8, duration=8,
lookup_names=True, lookup_names=True,
@ -67,6 +68,10 @@ def discover_devices(device_id: int) -> list[tuple[str, str]]:
lookup_class=False, lookup_class=False,
device_id=device_id, 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)) _LOGGER.debug("Bluetooth devices discovered = %d", len(result))
return result # type: ignore[no-any-return] return result # type: ignore[no-any-return]