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ódulo asyncio, que es una biblioteca estándar de Python para escribir código asincrónico utilizando corutinas y eventos.
  • from bleak import BleakScanner: Importa la clase BleakScanner del paquete bleak. BleakScanner es 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 llamada scan_for_devices. La palabra clave async indica que la función es asincrónica y puede usar await para 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(): Utiliza await para esperar a que BleakScanner.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ónica main, 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 corutina scan_for_devices y espera a que termine. La lista de dispositivos encontrados se guarda en la variable devices.
  • 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 corutina main utilizando asyncio.run, que maneja el bucle de eventos necesario para ejecutar corutinas asincrónicas. asyncio.run crea un nuevo bucle de eventos, ejecuta la corutina main y cierra el bucle al finalizar.