iBeacon Scanner mit Raspberry Pi

iBeacon Scanner mit Raspberry Pi

 02.03.2017,  02.01.2020 -  Sebastian Pech -  ~1 Minute

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 einen iBeacon in der 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