blatted/blatted/tools/ble/scanner.py

32 lines
821 B
Python

import asyncio
import bleak.exc
from bleak import BleakScanner
from bleak.backends.device import BLEDevice
from bleak.backends.scanner import AdvertisementData
from .models import DiscoveredDevice
def discover_callback(device: BLEDevice, advertising_data: AdvertisementData):
if len(advertising_data.service_uuids) > 0:
discovered = DiscoveredDevice(device, advertising_data)
print(
f"[{advertising_data.rssi:-4d}] {device.address} - {device.name} [{discovered}]"
)
async def discover_devices():
stop_event = asyncio.Event()
async with BleakScanner(discover_callback):
await stop_event.wait()
def run():
print("scanner called")
try:
asyncio.run(discover_devices())
except bleak.exc.BleakDBusError as exc:
print(f"ERROR: {exc}")