iBeacon Scanner mit Raspberry Pi

Erstellt von Sebastian am Do, 02.03.2017 - 14:01
Bluetooth Logo

In der Vergangenheit hatte ich bereits über iBeacons für die Haussteruerung berichtet. Der Raspberry Pi 3 und der brandneue Raspberry Pi Zero W verbauen standardmäßig Bluetooth Chips. Beide Geräte sind dazu geeignet die iBeacons in ihrer Nähe zu scannen. Findet der Pi dann eine Gerät in der Nähe kann man mittels Skript auf die Präsenz reagieren.

Prüfen und scannen

Im ersten Schritt ermitteln wir den Bluetooth Status des Gerätes und scannen dann nach Bluetooth Low Energy (BLE) Geräten. Idealerweise taucht hier dann der erste iBeacon auf.

$ systemctl status bluetooth
$ sudo hcitool lescan --duplicates
20:CD:XX:XX:XX:XX (unknown)
20:CD:XX:XX:XX:XX (unknown)

Für eine weitere Analyse lassen sich die Daten mitschneiden.

$ sudo apt-get install bluez-hcidump
$ sudo hcidump --raw

Ausgabe optimieren

Die Ausgabe von hcidump ist nicht sehr leserlich. Mit einem Skript von radiusnetworks oder einem geklonten Skript auf Github.com lässt sich die Ausgabe optimieren.

$ wget http://developer.radiusnetworks.com/ibeacon/idk/ibeacon_scan
$ chmod u+x ibeacon_scan
$ sudo ./ibeacon_scan

Fehlerbehebung

Die Fehlermeldung "Set scan parameters failed: Input/output error" weißt auf ein belegtes/gesperrtes Bluetooth Gerät hin (bsp. durch den Kill eines hci* Prozesses). Die folgende Lösung schafft Abhilfe.

$ sudo killall hcitool
$ sudo killall ibeacon_scan
$ hciconfig hci0 down
$ hciconfig hci0 up

 

Einige Produktlinks sind Amazon Affiliate Links und unterstützen den Ausbau der Webseite. Vielen Dank für deinen Einkauf über einen der Links! Ich freue mich auch über eine kleine Spende mittels PayPal.Me/SPech.