iBeacon, so Wikipedia.de, ist ein 2013 von Apple eingeführter, proprietärer Standard zur Lokalisierung in geschlossenen Räumen, basierend auf Bluetooth Low Energy (BLE).
Mit anderen Worten, iBeacon ermöglicht es eine App zu schreiben, die auch ohne GPS Empfang genau weiß, wo Du bist und es dann ermöglicht relevante Informationen zu zeigen. Stell Dir einfach vor Du gehst ins Museum, lädst die Museums-App und bekommst so eine persönliche Führung, ohne lästig eine Zahl für jeden Infopunkt eingeben zu müssen, wie das bei den meisten Audioguides meist nötig ist.
Gestern habe ich mich mit diesem Standard einmal beschäftig, um herauszufinden, ob man einen Raspberry Pi 3 (das Modell kommt mit einem eingebauten Bluetooth Modul) dazu bewegen kann, als iBeacon zu fungieren. Wie bei anderen Projekten auch, ist der Raspberry Pi 3 hier nicht die günstigste Möglichkeit einen iBeacon einzurichten, zum „experimentieren“ ist er aber gerade recht.
Was Du brauchst
- Raspberry Pi 3
- Locate Beacon (kostenlos im iOS AppStore)
Die Einrichtung
Wade Wegner hat schon 2014 einen sehr guten Artikel geschrieben, der die Einrichtung gut beschreibt. Da es damals keinen Raspberry Pi 3 gab, gibt es eine ganze Menge an Schritten, die nicht mehr notwendig sind. Ich beschränkte mich also auf das „Notwendige“.
Benötigte Bibliotheken installieren
sudo apt-get install libglib2.0-dev –fix-missing
sudo apt-get install libudev-dev
sudo apt-get install libical-dev
sudo apt-get install libreadline-dev
Ich muss zugeben, es könnte sein, dass ich noch eine Bibliothek vergessen haben könnte. Beim nächsten Schritt beschwert sich das System unter Umständen und Du musst nachinstallieren. Ich hoffe jedoch, dass ich an alles gedacht habe, ich selbst habe nämlich nach „Trial & Error“ nachinstalliert und keine so guten Notizen gemacht :(
Bluez installieren
Bluez ist eine tolle Bibliothek – die in der Zwischenzeit übrigens schon deutlich aktueller (V 5.44) daherkommt, als noch in der Doku von Wade genannt, habe ich hier entsprechend geändert.
sudo mkdir bluez
cd bluez
sudo wget www.kernel.org/pub/linux/bluetooth/bluez-5.44.tar.gz
sudo gunzip bluez-5.44.tar.gz
sudo tar xvf bluez-5.44.tar
cd bluez-5.44
sudo ./configure –disable-systemd
sudo make
sudo make install
sudo shutdown -r now
iBeacon initialisieren
Mit den folgenden Befehlen versetzt Du Bluez in den nötigen Status, dass Du tatsächlich den iBeacon dann einrichten kannst.
sudo hciconfig hci0 up
sudo hciconfig hci0 leadv 3
sudo hciconfig hci0 noscan
Mit folgenden Code kannst Du dann schauen, ob das System grundsätzlich so weit ist:
cd tools
hciconfig
Bei mir erscheint dann:
hci0: Type: BR/EDR Bus: UART
BD Address: B8:27:EB:3D:03:AF ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:857 acl:0 sco:0 events:62 errors:0
TX bytes:3582 acl:0 sco:0 commands:62 errors:0
Solltest Du einen USB Bluetooth Dongle angestöpselt haben, dann würde bei Bus USB stehen.
Bevor wir weitermachen können, brauchen wir jetzt noch eine UUID (Universally Unique IDentifier). Damit Du einen passenden Code bekommst besuche bitte https://www.guidgenerator.com/online-guid-generator.aspx und lass Dir einen einzelnen UUID generieren. Bei mir kam dabei z.B. e339d8b2-7b73-40fd-9c58-44e6b3d1c608 dabei raus. Diesen String müssen dann in folgenden Befehl einbinden:
cd tools
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 DEIN HEX UUID KOMMT HIERHIN 00 00 00 00 C8
also bei der UUID, die ich erstellt habe:
cd tools
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E3 39 D8 B2 7B 73 40 FD 9C 58 44 E6 B3 D1 C6 08 00 00 00 00 C8
Und dann sendet Dein iBeacon…
Locate Beacon einrichten
Nachdem Du Locate Beacon installiert hast, ist der erste Blick erst mal traurig, da findet man nichts! Also kurz im Menü Scan auf das Zahnrad geklickt und dann Add new UUID auswählen. Im darauffolgenden Menü musst Du die UUID (e339d8b2-7b73-40fd-9c58-44e6b3d1c608) eingeben, bei Major & Minor je eine 0 und dann speichern. Das Feld Power bleibt leer und schon kannst Du Deinen iBeacon sehen.
Und nun?
Tja, jetzt hat man einen iBeacon, aber noch keinen echten Nutzen davon – dafür müsste man eine App programmieren… Aber eine nette Spielerei ist es trotzdem.
Android & Co?
Bei iBeacon handelt es sich ja um einen reinen Apple standard, auch wenn dieser von Android unterstützt wird. Google hat mit Eddystone einen alternativen Standard auf den Markt gebracht. Ganz ähnlich, wie als iBeacon kann der Raspberry Pi 3 auch als Eddystone Beacon fungieren. Unter dieser URL findest Du eine passende Anleitung.
2 Kommentare
Philipp · 29. August 2018 um 09:44
Hi,
leider kann man deine Befehle nicht mehr erkennen. Es erscheinen nur noch solche Sachen wie diese hier: [crayon-5b862e88c5fec047409142/]
Wäre nett wenn du das ganze noch mal erneuern könntest.
Und kann man die UUID auch so konfigurieren, sodass sie nach jedem Reboot automatisch gesetzt wird?
Claus Wolf · 30. August 2018 um 05:22
Leider ist bei mir im Moment die Zeit sehr knapp, aber das ist natürlich tatsächlich super unschön. Ich werde mir das also demnächst anschauen, aber es kann ein paar Wochen dauern :( SORRY und Danke, dass Du mir diesen unschönen Fehler berichtet hast…