Как это работает
Подключает браузер к устройству Bluetooth Low Energy и показывает всё дерево GATT: каждый первичный сервис, входящие в него характеристики, поддерживаемые каждой операции (чтение, запись, уведомление или индикация) и связанные дескрипторы — с 128-битным UUID и коротким 16-битным идентификатором, если элемент стандартный.
Доступные для чтения значения считываются автоматически и расшифровываются по спецификации Bluetooth SIG: заряд батареи выводится в процентах, сервис Device Information — как производитель, модель, серийный номер и версии прошивки, аппаратной и программной части, а PnP ID — как пара идентификаторов производителя и продукта. То, что не имеет определённого значения, показывается как текст, число или шестнадцатеричный дамп.
Можно также подписаться на характеристики с уведомлениями и наблюдать их изменения в реальном времени — пульс, температуру, счётчик — и выгрузить весь обход в JSON. Инструмент только читает и никогда не пишет в устройство. Весь обмен идёт между вашим компьютером и периферийным устройством через API Web Bluetooth; на сервер ничего не отправляется.
Примеры
0x180F → 0x2A195B → 91 %Сервис Battery отдаёт один байт с остатком заряда, поэтому 0x5B соответствует 91 %.0x180A → 0x2A50 (PnP ID)USB Implementers Forum · VID 0x046D · PID 0xC52B · v1.0.0PnP ID определяет производителя и продукт теми же кодами, что и USB, поэтому их можно найти в каталоге usb.ids.6e400001-b5a3-f393-e0a9-e50e24dcca9eNordic UART Service128-битные UUID принадлежат сервисам производителей; самые распространённые, например последовательный порт Nordic, показываются с названием.Сценарии использования
- Узнать остаток заряда датчика, весов или носимого устройства, не устанавливая приложение производителя.
- Посмотреть модель, серийный номер и версию прошивки устройства перед обновлением или обращением по гарантии.
- Во время разработки прошивки убедиться, что периферийное устройство объявляет ожидаемые сервисы и характеристики с нужными свойствами.
- Определить UUID характеристики производителя, чтобы использовать её в своём приложении.
- В реальном времени проверить, приходят ли уведомления и как часто, когда приложение не получает данные.
- Задокументировать полное дерево GATT устройства, выгрузив его в JSON для приложения к отчёту.
Часто задаваемые вопросы
Почему это не работает на моём iPhone и в Firefox?
API Web Bluetooth реализован в браузерах на основе Chromium — Chrome, Edge и Opera — для Windows, macOS, Linux, ChromeOS и Android. Firefox и Safari его не поддерживают, а в iOS все браузеры используют системный движок, поэтому там он тоже недоступен. Кроме того, нужны HTTPS и включённый Bluetooth.
Устройство включено, но не появляется в списке.
Обычно причин три: периферийное устройство уже подключено к другому приложению или компьютеру и перестало объявлять о себе; оно не в режиме обнаружения, который на многих устройствах включается долгим нажатием кнопки; либо выбранный фильтр слишком узкий. Попробуйте вариант со всеми устройствами поблизости и поднесите устройство ближе.
Почему я вижу меньше сервисов, чем в нативном приложении?
Веб-страница видит только те сервисы, которые запросила до подключения, поэтому инструмент запрашивает все стандартные и позволяет добавить известные вам UUID производителя. Кроме того, браузер ведёт список сервисов, заблокированных по соображениям безопасности, — в него входят устройства ввода (HID) и сервисы обновления прошивки, — которые не может читать ни одна страница.
Что означают свойства характеристики?
Чтение означает, что значение можно запросить в любой момент. Запись и запись без ответа говорят, что устройство принимает данные — с подтверждением или без него. Уведомление и индикация означают, что значение отправляет само устройство при изменении; разница в том, что индикация требует подтверждения от клиента, поэтому она медленнее, но надёжнее.
Почему у одних элементов короткий UUID, а у других очень длинный?
16-битные идентификаторы, такие как 0x180F или 0x2A19, зарезервированы Bluetooth SIG и имеют определённое в спецификации значение, поэтому инструмент показывает их официальное название. 128-битный UUID принадлежит производителю: что в нём, знает только его собственное приложение, хотя содержимое всё равно выводится как текст, число или шестнадцатеричный дамп.
Может ли инструмент что-то записать или изменить в устройстве?
Нет. Он только считывает значения и включает выбранные вами уведомления — это подписка, а не изменение настроек устройства. В характеристику он никогда не пишет, поэтому риска оставить периферийное устройство в неожиданном состоянии нет.
Покидают ли данные устройства мой компьютер?
Нет. Соединение выполняет браузер через Bluetooth-адаптер вашего компьютера, и ни одно считанное значение не отправляется на сервер. Разрешение вы выдаёте отдельно для каждого устройства в окне выбора браузера и можете отозвать его в любой момент.