forked from platypush/platypush
Exclude more noisy Bluetooth beacons.
Exclude any beacons from devices with no name, no children other than services, and with none of those services being public/known.
This commit is contained in:
parent
f764d1b4fb
commit
6b28d16ccf
1 changed files with 10 additions and 2 deletions
|
@ -89,7 +89,7 @@ event_matchers: Dict[
|
||||||
and _has_been_set(old, new, 'connected', False),
|
and _has_been_set(old, new, 'connected', False),
|
||||||
BluetoothDeviceFoundEvent: lambda old, new: old is None
|
BluetoothDeviceFoundEvent: lambda old, new: old is None
|
||||||
or (old.reachable is False and new.reachable is True),
|
or (old.reachable is False and new.reachable is True),
|
||||||
BluetoothDeviceSignalUpdateEvent: lambda old, new: (
|
BluetoothDeviceSignalUpdateEvent: lambda old, new: ( # type: ignore
|
||||||
(new.rssi is not None or new.tx_power is not None)
|
(new.rssi is not None or new.tx_power is not None)
|
||||||
and bool(old and old.rssi)
|
and bool(old and old.rssi)
|
||||||
and (
|
and (
|
||||||
|
@ -183,7 +183,7 @@ class EventHandler:
|
||||||
get_bus().post(event)
|
get_bus().post(event)
|
||||||
|
|
||||||
if events:
|
if events:
|
||||||
new_entity.reachable = True
|
new_entity.reachable = True # type: ignore
|
||||||
self._device_queue.put_nowait(new_entity)
|
self._device_queue.put_nowait(new_entity)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -218,6 +218,14 @@ class EventHandler:
|
||||||
if any(not isinstance(child, BluetoothService) for child in device.children):
|
if any(not isinstance(child, BluetoothService) for child in device.children):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# If the device's only children are unknown services, skip it
|
||||||
|
if not any(
|
||||||
|
isinstance(child, BluetoothService)
|
||||||
|
and child.service_class != ServiceClass.UNKNOWN
|
||||||
|
for child in device.children
|
||||||
|
):
|
||||||
|
return True
|
||||||
|
|
||||||
mapped_uuids = [
|
mapped_uuids = [
|
||||||
int(str(srv.uuid).split('-', maxsplit=1)[0], 16) & 0xFFFF
|
int(str(srv.uuid).split('-', maxsplit=1)[0], 16) & 0xFFFF
|
||||||
if isinstance(srv.uuid, UUID)
|
if isinstance(srv.uuid, UUID)
|
||||||
|
|
Loading…
Reference in a new issue