#bluetooth #raspberry-pi #ibeacon
Вопрос:
У меня есть ОС Raspberry Py, основанная на Debian Stretch, транслирующая iBeacon с моим UUID и основным/второстепенным. С помощью приложения, созданного нашей командой, я смог идентифицировать его по UUID и прочитать его основное/второстепенное значение.
Теперь мне придется прочитать этот же iBeacon через браузер Chrome. Однако я не могу передать с помощью iBeacon значимое имя, чтобы помочь пользователю найти устройство, оно показывает мне только «Неизвестное или неподдерживаемое устройство».
Насколько я мог понять из iBeacon и AltBeacon, невозможно отправлять дополнительные данные в дополнение к UUID и Major/Minor. Это правильно? Можно ли рекламировать эту информацию в рамках маяка?
Команда, используемая для рекламы маяка.
sudo hciconfig hci0 leadv 3 sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 06 1A FF 4C 00 02 15 lt;lt;UUIDgt;gt; lt;lt;Major/Minorgt;gt; C8 00
Сверившись со спецификацией системы Bluetooth, я попытался изменить несколько функций имени или идентификатора, но ни одна из них не сработала, например:
sudo hcitool -i hci0 cmd 0x03 0x0013 lt;lt;Local Namegt;gt; sudo hcitool -i hci0 cmd 0x03 0x0014
Я хотел бы спросить сообщество, можно ли рекламировать это имя при использовании маяков или мне следует начать использовать сервер GATT для его выполнения.
Заранее благодарю вас всех.
Ответ №1:
Да, Linux может рекламировать как локальное имя, так и рекламу производителя iBeacon. То, как вы его настраиваете, правильно, поэтому непонятно, почему вы не видите его в веб-браузере Chrome.
Следует знать, что локальное имя не рекламируется в одном пакете вместе с данными iBeacon, которые вы показываете в своем вопросе. (В основном рекламном пакете просто нет места.) Вместо этого локальное имя помещается в так называемый пакет ответа на сканирование. Это дополнительный пакет, который периферийное устройство Bluetooth-файла отправит в ответ на пакет активного запроса на сканирование из центра Bluetooth-файла (например, вашего устройства Chrome). Возможно, Chrome не отправляет пакеты с запросами на сканирование, поэтому он не будет считывать локальное имя.
Вы можете подтвердить это с помощью другого устройства (например, телефона Android или iOS с помощью тестового приложения Nordic nRF Connect Bluetooth), чтобы узнать, прочитали ли они местное название во время сканирования.
Если вы обнаружите, что эти другие устройства действительно считывают локальное имя, то вашим следующим шагом будет попытаться настроить Chrome для активного сканирования, чтобы он запрашивал пакеты ответов на сканирование. Неясно, как и возможно ли это.