Chciałbym stworzyć własny iBeacon z kilkoma zestawami dla programistów o niskim zużyciu energii przez Bluetooth. Apple nie wydało jeszcze specyfikacji dla iBeacons, jednak kilku programistów sprzętu dokonało inżynierii wstecznej iBeacon z kodu AirLocate Sample i zaczęło sprzedawać zestawy deweloperskie iBeacon.
Więc co to jest profil Bluetooth iBeacon?
Bluetooth Low Energy wykorzystuje GATT do wykrywania usług profilu LE. Myślę więc, że powinniśmy znać uchwyt atrybutu, typ atrybutu, wartość atrybutu i być może uprawnienia atrybutu atrybutu iBeacon. Więc dla iBeacon z UUID E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 główną wartością 1 i podrzędną wartością 1 byłaby usługa profilu Bluetooth GATT?
Oto kilka założeń, które poczyniłem na podstawie dyskusji na forach Apple oraz w dokumentacji.
Wystarczy zobaczyć usługę profilu (GATT) urządzenia peryferyjnego Bluetooth, aby wiedzieć, że jest to iBeacon.
Klucze Major i Minor są zakodowane gdzieś w tej usłudze profilu
Oto kilka firm oferujących zestawy deweloperskie iBeacon, które wydają się już mieć to na uwadze:
Miejmy nadzieję, że z czasem opublikujemy profil na Bluetooth.org, taki jak ten: https://www.bluetooth.org/en-us/specification/adopted-specifications
źródło
Odpowiedzi:
Dla iBeacon z ProximityUUID
E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
, głównym0
, pobocznym0
i skalibrowaną mocą Tx-59
RSSI, przesyłany pakiet ogłoszeniowy BLE wygląda następująco: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
Ten pakiet można podzielić w następujący sposób:
Kluczową częścią tego pakietu jest reklama Bluetooth, którą można podzielić w następujący sposób:
Każde urządzenie Bluetooth LE, które można skonfigurować do wysyłania określonej reklamy, może wygenerować powyższy pakiet. Skonfigurowałem komputer z systemem Linux przy użyciu Bluez do wysyłania tej reklamy, a urządzenia iOS7 z kodem testowym AirLocate firmy Apple odbierają go jako iBeacon z polami określonymi powyżej. Zobacz: Użyj stosu BlueZ jako urządzenia peryferyjnego (reklamodawca)
Ten blog zawiera szczegółowe informacje na temat procesu inżynierii wstecznej.
źródło
Wydaje się, że na podstawie danych reklamowych, w szczególności danych producenta:
Mam ten skrypt node.js działający w systemie Linux z przykładowym przykładem aplikacji AirLocate.
źródło
Żeby pogodzić różnicę między odpowiedzią Sandeepmistry a odpowiedzią Davidgyounga:
Jest częścią specyfikacji formatu danych reklamowych [1]
W AD brakuje definicji usługi [5]. Myślę, że sam protokół iBeacon nie ma związku z GATT i standardowym wykrywaniem usług. Jeśli pobierzesz program iBeacon firmy RedBearLab, zobaczysz, że używają oni GATT do konfigurowania parametrów reklamy, ale wydaje się, że jest to specyficzne dla ich implementacji, a nie część specyfikacji. Wydaje się, że program AirLocate nie używa GATT do konfiguracji, na przykład według LightBlue i innych podobnych programów, które próbowałem.
Bibliografia:
źródło
FF
w twoim przykładzie zastąpiłbym po prostu wartość HEX mojego ciągu? (a także zaktualizować długość struktury AD do zestawu?)Jeśli powodem, dla którego zadajesz to pytanie, jest to, że chcesz używać Core Bluetooth do reklamowania się jako iBeacon zamiast używania standardowego interfejsu API, możesz to łatwo zrobić, reklamując NSDictionary, taki jak:
Zobacz tę odpowiedź, aby uzyskać więcej informacji.
źródło
Jest to bardzo proste, po prostu reklamuje ciąg zawierający kilka znaków zgodnych ze standardem Apple iBeacon. możesz polecić link http://glimwormbeacons.com/learn/what-makes-an-ibeacon-an-ibeacon/
źródło
Profil iBeacon zawiera 31 bajtów, w tym następujące
źródło