Ich möchte meinen eigenen iBeacon mit einigen Bluetooth-Niedrigenergie-Entwicklungskits erstellen. Apple hat noch keine Spezifikation für iBeacons veröffentlicht. Einige Hardwareentwickler haben den iBeacon jedoch aus dem AirLocate-Beispielcode rückgängig gemacht und mit dem Verkauf von iBeacon-Entwicklungskits begonnen.
Was ist das iBeacon Bluetooth-Profil?
Bluetooth Low Energy verwendet GATT für die Erkennung von LE-Profildiensten. Ich denke, wir müssen das Attributhandle, den Attributtyp, den Attributwert und möglicherweise die Attributberechtigungen des iBeacon-Attributs kennen. Für einen iBeacon mit einer UUID von E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 wäre ein Hauptwert von 1 und ein Nebenwert von 1 der Bluetooth GATT-Profildienst.
Hier sind einige Annahmen, die ich aus der Diskussion in Apples Foren und durch die Dokumente gemacht habe.
Sie müssen nur den Profildienst (GATT) eines Bluetooth-Peripheriegeräts anzeigen, um zu wissen, dass es sich um einen iBeacon handelt.
Die Haupt- und Nebenschlüssel sind irgendwo in diesem Profildienst codiert
Hier sind einige Unternehmen mit iBeacon Dev Kits, die diese Zahl anscheinend bereits herausgefunden haben:
Hoffentlich haben wir mit der Zeit ein Profil wie dieses auf Bluetooth.org: https://www.bluetooth.org/en-us/specification/adopted-specifications
quelle
Antworten:
Für einen iBeacon mit ProximityUUID
E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
, Major0
, Minor0
und kalibrierter Tx Power von-59
RSSI sieht das übertragene BLE-Werbepaket folgendermaßen aus:d6 be 89 8e 40 24 05 a2 17 6e 3d 71 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 52 ab 8d 38 a5
Dieses Paket kann wie folgt aufgeteilt werden:
Der Hauptteil dieses Pakets ist die Bluetooth-Werbung, die wie folgt unterteilt werden kann:
Jedes Bluetooth LE-Gerät, das zum Senden einer bestimmten Werbung konfiguriert werden kann, kann das oben genannte Paket generieren. Ich habe einen Linux-Computer mit Bluez konfiguriert, um diese Werbung zu senden, und iOS7-Geräte, auf denen der AirLocate-Testcode von Apple ausgeführt wird, nehmen ihn als iBeacon mit den oben angegebenen Feldern auf. Siehe: BlueZ-Stapel als Peripheriegerät verwenden (Werbetreibender)
Dieser Blog enthält alle Details zum Reverse Engineering-Prozess.
quelle
Es scheint auf Werbedaten zu beruhen, insbesondere auf den Herstellerdaten:
Ich habe dieses node.js-Skript unter Linux mit dem Beispiel einer AirLocate-App.
quelle
Nur um den Unterschied zwischen der Antwort von Sandeepmistry und der Antwort von Davidgyoung in Einklang zu bringen:
Ist Teil der Spezifikation des Werbedatenformats [1]
In der AD fehlt eine Service [5] -Definition. Ich denke, das iBeacon-Protokoll selbst hat keine Beziehung zum GATT und zur Standarddiensterkennung. Wenn Sie das iBeacon-Programm von RedBearLab herunterladen, werden Sie feststellen, dass sie zufällig das GATT zum Konfigurieren der Ankündigungsparameter verwenden. Dies scheint jedoch spezifisch für ihre Implementierung zu sein und nicht Teil der Spezifikation. Das AirLocate-Programm scheint das GATT nicht für die Konfiguration zu verwenden, beispielsweise gemäß LightBlue und anderen ähnlichen Programmen, die ich ausprobiert habe.
Verweise:
quelle
FF
in Ihrem Beispiel einfach durch den HEX-Wert meiner Zeichenfolge ersetzen ? (und aktualisieren auch die Länge der AD - Struktur Suite?)Wenn der Grund, warum Sie diese Frage stellen, darin besteht, dass Sie Core Bluetooth verwenden möchten, um als iBeacon zu werben, anstatt die Standard-API zu verwenden, können Sie dies einfach tun, indem Sie ein NSDictionary bewerben, wie z.
Weitere Informationen finden Sie in dieser Antwort .
quelle
Es ist sehr einfach, es wird nur eine Zeichenfolge angekündigt, die einige Zeichen enthält, die dem iBeacon-Standard von Apple entsprechen. Sie können auf den Link http://glimwormbeacons.com/learn/what-makes-an-ibeacon-an-ibeacon/ verweisen.
quelle
iBeacon Profile enthält 31 Bytes, einschließlich der folgenden
quelle