es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bleak (python) no responde al conectar.

He encontrado la dirección Bluetooth correcta del dispositivo al que quiero conectarme. Cuando ejecuto el siguiente código, imprime “Conectando al dispositivo…” pero luego se cuelga y nunca imprime “Conectado” o finaliza la ejecución. No se producen errores.

import asyncio
from bleak import BleakClient

address = "24:71:89:cc:09:05" # Reemplazado con la dirección bluetooth real

async def main(address):
    print("Conectando al dispositivo...")
    async with BleakClient(address) as client:
        print("Conectado")

asyncio.run(main(address))

¿Este problema está relacionado con mi software/drivers de PC? Estoy usando una laptop Lenovo con Windows 11.

O, ¿algunos dispositivos no responden a simples “solicitudes de conexión”? El dispositivo al que me estoy conectando es un Tesla Model 3, y sé que hay un conjunto particular de datos que debo enviar para autenticar. Si este es el caso, ¿cómo puedo enviar datos sin conectarme con un BleakClient de esta manera?

Actualización: Debo mencionar que el escaneo/descubrimiento de dispositivos funciona perfectamente a través de Bleak. Y, he intentado conectarme a otros dispositivos a través de Bleak y se produjo el mismo problema. Bluetooth a través de la aplicación Configuración de Windows funciona bien.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema esté relacionado con el software/controladores de su PC. Debería intentar actualizar los controladores de Bluetooth y verificar si hay algún conflicto con otros dispositivos Bluetooth.

    Sin embargo, también es posible que el problema se deba al hecho de que algunos dispositivos requieren autenticación o datos específicos para establecer una conexión. Este podría ser el caso del Tesla Model 3, como mencionaste.

    Para enviar datos sin conectarse con un “BleakClient”, puede utilizar el “BleakScanner” para descubrir el Tesla Model 3 y obtener su dirección de Bluetooth. Luego, puede usar el “BleakClient” para conectarse al dispositivo y enviar los datos de autenticación.

    Aquí hay un código de muestra que muestra cómo usar el “BleakScanner” y el “BleakClient” para establecer una conexión con el Tesla Model 3:

    import asyncio
    from bleak import BleakScanner, BleakClient
    
    async def main():
        print("Buscando dispositivos...")
        devices = await BleakScanner.discover()
    
        for d in devices:
            if "Tesla" in d.name: # verifica si el dispositivo es un Tesla Model 3
                address = d.address
    
                async with BleakClient(address) as client:
                    # enviar los datos de autenticación
                    await client.write_gatt_char(authentication_data, 0x16)
                    print("¡Datos de autenticación enviados!")
    
    asyncio.run(main())
    

    Tenga en cuenta que deberá reemplazar “authentication_data” por los datos apropiados para su Tesla Model 3.

    También vale la pena señalar que el hecho de que la funcionalidad de Bluetooth a través de la aplicación Configuración de Windows funcione bien no significa necesariamente que no haya problemas con los controladores de Bluetooth en su PC.

Comments are closed.