Ausführen des Pi als Bluetooth-Hostgerät und nicht als Client in Python
Ich versuche, einen Beispielcode für die Verwendung des pi als Bluetooth-Gerät zu finden, damit andere Geräte danach suchen und mit ihm koppeln können. Insbesondere möchte ich, dass es sich für das Projekt, an das ich denke, wie ein Fahrradleistungsmesser verhält.
Ich kann anscheinend nicht die richtigen Keywords finden, nach denen ich in Google suchen kann, aber wenn ich mich auf dieser Website umsehe, scheint es möglich zu sein (ich habe gesehen, dass jemand sie als Bluetooth-Drucker verwendet hat.)
Nur eine Richtung, die wirklich benötigt wird - vielleicht eine Bibliothek oder sogar was zu suchen ist.
Antworten
Ich gehe davon aus, dass Sie eines der Standard-Fahrradprofile / -dienste sind, wie sie von der Bluetooth SIG definiert werden.
Dies sind Bluetooth Low Energy (BLE) und verwenden die GATT-Spezifikation.
Unter Linux ist der Bluetooth-Stack BlueZ, der D-Bus verwendet, um seine API verfügbar zu machen. Zum Beispiel ist die GATT-API dokumentiert unter:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/gatt-api.txt
Ihr Gerät übernimmt die Rolle "Peripherie", dh es wird ein GATT-Server erstellt. Im BlueZ-Quellcode gibt es ein Beispiel dafür:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server
Das Peripheriegerät muss außerdem für den GATT-Dienst werben: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-advertisement
Standardmäßig ist das RPi sowohl BR / EDR (klassisch) als auch LE Bluetooth. Wenn Sie als BLE-Peripheriegerät fungieren, sollten Sie den Controller nur für Bluetooth Low Energy konfigurieren. Es wurde festgestellt, dass dies erforderlich ist, um eine zuverlässige Verbindung zu Android-Telefonen herzustellen. Diese Konfigurationsänderung wird in der /etc/bluetooth/main.confDatei vorgenommen. Stellen Sie sicher, dass es Folgendes enthält:
ControllerMode = le