Я хотел бы создать свой собственный iBeacon с некоторыми Bluetooth-комплектами для низкоэнергетических устройств. Apple еще не выпустила спецификацию для iBeacon, однако некоторые разработчики аппаратного обеспечения реверсировали проектирование iBeacon из образца кода AirLocate и начали продавать комплекты разработки iBeacon.
Итак, что такое профиль Bluetooth iBeacon?
Bluetooth Low Energy использует GATT для обнаружения службы профиля LE. Поэтому я думаю, что нам нужно знать дескриптор атрибута, тип атрибута, значение атрибута и, возможно, разрешения атрибута атрибута iBeacon. Таким образом, для iBeacon с UUID E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 основным значением 1 и второстепенным значением 1 будет служба профиля Bluetooth GATT?
Вот некоторые предположения, которые я сделал из обсуждения на форумах Apple и в документах.
Вам нужно только просмотреть службу профилей (GATT) периферийного устройства Bluetooth, чтобы узнать, что это iBeacon.
Ключи Major и Minor кодируются где-то в этой службе профиля
Вот некоторые компании с iBeacon Dev Kits, которые, кажется, уже поняли это:
Надеюсь, со временем у нас на Bluetooth.org появится профиль, подобный следующему: https://www.bluetooth.org/en-us/specification/adopted-specifications
источник
Ответы:
Для iBeacon с ProximityUUID
E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
, основной0
, вспомогательной0
и откалиброванной мощностью передачи-59
RSSI переданный рекламный пакет BLE выглядит следующим образом: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
Этот пакет может быть разбит следующим образом:
Ключевой частью этого пакета является реклама Bluetooth, которая может быть разбита следующим образом:
Любое устройство Bluetooth LE, которое можно настроить для отправки определенного объявления, может генерировать вышеуказанный пакет. Я настроил компьютер Linux с помощью Bluez для отправки этого объявления, и устройства iOS7, на которых запущен тестовый код Apple AirLocate, выбирают его как iBeacon с полями, указанными выше. См. Использование стека BlueZ в качестве периферийного устройства (рекламодатель)
Этот блог содержит полную информацию о процессе обратного инжиниринга.
источник
Похоже, на основе рекламных данных, в частности, данные производителя:
У меня есть скрипт node.js, работающий в Linux с примером приложения AirLocate.
источник
Просто чтобы согласовать разницу между ответом sandeepmistry и davidgyoung:
Является частью спецификации формата рекламных данных [1]
В AD отсутствует определение службы [5]. Я думаю, что сам протокол iBeacon не имеет отношения к GATT и обнаружению стандартных сервисов. Если вы скачаете программу iBeacon от RedBearLab, вы увидите, что они используют GATT для настройки параметров рекламы, но, похоже, это зависит от их реализации, а не от спецификации. Программа AirLocate, кажется, не использует GATT для конфигурации, например, в соответствии с LightBlue и другими подобными программами, которые я пробовал.
Ссылки:
источник
FF
в вашем примере значение HEX моей строки? (а также обновить длину структуры AD до набора?)Если причина, по которой вы задаете этот вопрос, заключается в том, что вы хотите использовать Core Bluetooth для рекламы в качестве iBeacon вместо стандартного API, вы можете легко сделать это, объявив NSDictionary, например:
Смотрите этот ответ для получения дополнительной информации.
источник
Это очень просто, он просто рекламирует строку, которая содержит несколько символов, соответствующих стандарту Apple iBeacon. Вы можете сослаться на ссылку http://glimwormbeacons.com/learn/what-makes-an-ibeacon-an-ibeacon/
источник
Профиль iBeacon содержит 31 байт, включая следующие
источник