Skip to content

ag00se/rpi_ble_python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

BLE Setup:

Auf dem Raspberry per Remote VS-Code

sudo pip3 install bluepy

Bluepy Dokumentation

Damit der Zugriff auf die BLE Hardware möglich ist muss der Python-Code als superuser ausgeführt werden. Dafür muss eine 'launch.json' Datei erstellt werden und in dieser Datei die Konfiguration "sudo" auf "true" gestellt werden.

    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,
            "sudo": true
        }
    ]

BLE Debugging bei Problemen

Wenn die BLE-Kommunikation nicht korrekt funktioniert, kann die Kommunikation mitgeschnitten werden. Dafür kann das Tool "hcidump" verwendet werden.

sudo hcidump -t

Sollte der Befehl nicht gefunden werde, kann das Tool mit folgendem Befehl installiert werden:

sudo apt-get install bluez-hcidump

Beispiel

Die grundlegende Verwendung des bluepy Modules wird in der Datei startup.py veranschaulicht. Die oben verlinkte Dokumentation beschreibt die weitere Verwendung des Moduls.

Im Allgemeinen kann mit einem Scanner-Objekt die Suche nach BLE-Geräten gestartet werden. (Zeile 21) Durch die Verwendung einer eigene Klasse, welche von der Klasse DefaultDelegate erbt, kann durch Überschreiben der Methode def handleDiscovery(self, scanEntry, isNewDev, isNewData): benutzerdefiniertes Verhalten beim Auffinden eines neuen Geräts ausgeführt werden. (Zeilen 3-9) Ein Objekt dieser benutzerdefinierten Klasse kann einem Scanner übergeben werden (Zeile 21) Beim Aufruf der scan Methode des Scanners werden die gefundenen Geräte direkt zurückgegeben. (Zeile 22)

Die Code-Zeilen 37-48 zeigen wie auf einen HeartRate-Service zugegriffen werden kann und wie die Notifications für die HeartRateMeasurements aktiviert werden. Für die Verarbeitung der Notification wird dem Device ein Objekt einer benutzerdefinierte Klasse, welche von der Klasse DefaultDelegate erbt, übergeben. (Zeile 37) In dieser benutzerdefinierte Klasse kann durch Überschreiben der Methode def handleNotification(self, cHandle, data): benutzerdefiniertes Verhalten beim Empfang einer Notification ausgeführt werden. (Zeilen 12-19)

About

Basic BLE example on Raspberry Pi using bluepy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages