Executando o Pi como um dispositivo host bluetooth em vez de um cliente em python

Aug 20 2020

Estou tentando encontrar algum código de exemplo para usar o pi como um dispositivo bluetooth para que outros dispositivos possam procurá-lo e emparelhá-lo. Especificamente, quero fazer com que ele se comporte como um medidor de energia de bicicleta para o projeto que tenho em mente.

Não consigo encontrar as palavras-chave corretas para pesquisar no Google, mas olhando este site, parece que é possível (eu vi que alguém o usou como uma impressora bluetooth ..)

Apenas alguma direção realmente necessária - talvez uma biblioteca ou até mesmo o que pesquisar.

Respostas

2 ukBaz Aug 20 2020 at 15:59

Minha suposição é que você está olhando para um dos perfis / serviços de ciclismo padrão, conforme definido pelo Bluetooth SIG.

Eles são Bluetooth Low Energy (BLE) e usam a especificação GATT.

No Linux, a pilha Bluetooth é BlueZ, que usa D-Bus para expor sua API. Por exemplo, a API GATT está documentada em:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/gatt-api.txt

Seu dispositivo assumirá a função de periférico, o que significa criar um servidor GATT. Há um exemplo disso no código-fonte do BlueZ:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server

O periférico também precisará anunciar o serviço GATT: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-advertisement

Por padrão, o RPi é BR / EDR (clássico) e LE Bluetooth. Ao atuar como um periférico BLE, é bom configurar o controlador apenas para Bluetooth Low Energy. Foi descoberto que isso é necessário para obter uma conexão confiável com telefones Android. Esta mudança de configuração é feita no /etc/bluetooth/main.confarquivo. Certifique-se de que contém o seguinte:

ControllerMode = le