Saya ingin membuat iBeacon sendiri dengan beberapa perangkat pengembang energi rendah bluetooth. Apple belum merilis spesifikasi untuk iBeacons, namun beberapa pengembang perangkat keras telah merekayasa balik iBeacon dari kode Sampel AirLocate dan mulai menjual kit dev iBeacon.
Jadi apa Profil Bluetooth iBeacon?
Bluetooth Low Energy menggunakan GATT untuk penemuan layanan profil LE. Jadi saya pikir kita perlu mengetahui Handle Atribut, Jenis Atribut, Nilai Atribut, dan mungkin Izin Atribut dari atribut iBeacon. Jadi untuk iBeacon dengan UUID E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 nilai utama 1 dan nilai minor 1 seperti apa layanan profil Bluetooth GATT?
Inilah beberapa asumsi yang saya buat dari diskusi di forum Apple dan melalui dokumen.
Anda hanya perlu melihat layanan profil (GATT) perangkat Bluetooth untuk mengetahui itu adalah iBeacon.
Kunci Mayor dan Kecil dikodekan di suatu tempat di layanan profil ini
Inilah beberapa perusahaan dengan iBeacon Dev Kits yang tampaknya sudah mengetahui hal ini:
Semoga pada waktunya nanti kita akan memiliki profil yang diposting di Bluetooth.org seperti ini: https://www.bluetooth.org/en-us/specification/adopted-specifications
sumber
Jawaban:
Untuk iBeacon dengan ProximityUUID
E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
, mayor0
, minor0
, dan Tx Power-59
RSSI, paket iklan BLE yang ditransmisikan terlihat seperti ini: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
Paket ini dapat dirinci sebagai berikut:
Bagian penting dari paket itu adalah Iklan Bluetooth, yang dapat dipecah seperti ini:
Perangkat Bluetooth LE yang dapat dikonfigurasi untuk mengirim iklan tertentu dapat menghasilkan paket di atas. Saya telah mengonfigurasi komputer Linux menggunakan Bluez untuk mengirim iklan ini, dan perangkat iOS7 yang menjalankan kode uji AirLocate Apple mengambilnya sebagai iBeacon dengan bidang yang ditentukan di atas. Lihat: Gunakan BlueZ Stack Sebagai Periferal (Pengiklan)
Blog ini memiliki detail lengkap tentang proses rekayasa terbalik.
sumber
Tampaknya didasarkan pada data iklan, khususnya data pabrikan:
Saya memiliki skrip node.js ini bekerja di Linux dengan contoh aplikasi AirLocate contoh.
sumber
Hanya untuk mendamaikan perbedaan antara jawaban sandeepmistry dan jawaban davidgyoung:
Merupakan bagian dari spesifikasi format data periklanan [1]
Hilang dari AD adalah definisi Layanan [5]. Saya pikir protokol iBeacon itu sendiri tidak memiliki hubungan dengan GATT dan penemuan layanan standar. Jika Anda mengunduh program iBeacon RedBearLab, Anda akan melihat bahwa mereka menggunakan GATT untuk mengonfigurasi parameter iklan, tetapi ini tampaknya khusus untuk implementasinya, dan bukan bagian dari spesifikasi. Program AirLocate tampaknya tidak menggunakan GATT untuk konfigurasi, misalnya, menurut LightBlue dan atau program serupa lainnya yang saya coba.
Referensi:
sumber
FF
dalam contoh Anda dengan nilai HEX dari string saya? (dan juga memperbarui panjang struktur AD ke suite?)Jika alasan Anda mengajukan pertanyaan ini adalah karena Anda ingin menggunakan Core Bluetooth untuk beriklan sebagai iBeacon daripada menggunakan API standar, Anda dapat dengan mudah melakukannya dengan mengiklankan NSDictionary seperti:
Lihat jawaban ini untuk informasi lebih lanjut.
sumber
Ini sangat sederhana, itu hanya mengiklankan string yang berisi beberapa karakter sesuai dengan standar iBeacon Apple. Anda dapat merujuk Tautan http://glimwormbeacons.com/learn/what-makes-an-ibeacon-an-ibeacon/
sumber
Profil iBeacon berisi 31 Bytes yang mencakup yang berikut
sumber