Obtener un listado en Python de los dispositivos Bluetooth cercanos

[crayon-6a616f340ceb7721234354/]
Explicación línea a línea:
import asyncio
from bleak import BleakScanner
import asyncio: Importa el móduloasyncio, que es una biblioteca estándar de Python para escribir código asincrónico utilizando corutinas y eventos.from bleak import BleakScanner: Importa la claseBleakScannerdel paquetebleak.BleakScanneres una clase que permite escanear dispositivos Bluetooth Low Energy (BLE) cercanos.
async def scan_for_devices():
print("Escaneando dispositivos BLE...")
devices = await BleakScanner.discover()
return devices
async def scan_for_devices(): Define una corutina asincrónica llamadascan_for_devices. La palabra claveasyncindica que la función es asincrónica y puede usarawaitpara llamar a otras corutinas.print("Escaneando dispositivos BLE..."): Imprime un mensaje para indicar que el escaneo de dispositivos BLE está en progreso.devices = await BleakScanner.discover(): Utilizaawaitpara esperar a queBleakScanner.discover()termine de ejecutar.BleakScanner.discover()es una función asincrónica que realiza el escaneo y devuelve una lista de dispositivos BLE encontrados.return devices: Devuelve la lista de dispositivos BLE encontrados.
async def main():
devices = await scan_for_devices()
if not devices:
print("No se encontraron dispositivos BLE.")
return
for device in devices:
print(f"Dispositivo encontrado: {device.name} - {device.address}")
async def main(): Define la corutina asincrónicamain, que es la función principal del programa. Aquí es donde se ejecuta el flujo principal del programa.devices = await scan_for_devices(): Llama a la corutinascan_for_devicesy espera a que termine. La lista de dispositivos encontrados se guarda en la variabledevices.if not devices:: Verifica si la lista de dispositivos está vacía.for device in devices:: Itera sobre la lista de dispositivos encontrados.
# Ejecutar el escaneo
asyncio.run(main())
asyncio.run(main()): Ejecuta la corutinamainutilizandoasyncio.run, que maneja el bucle de eventos necesario para ejecutar corutinas asincrónicas.asyncio.runcrea un nuevo bucle de eventos, ejecuta la corutinamainy cierra el bucle al finalizar.