0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Настройка
Подключитесь к устройству Bluetooth Low Energy (BLE) и изучите всё дерево GATT: сервисы, характеристики, дескрипторы и предоставляемые значения — заряд батареи или данные производителя, модели и прошивки. Всё происходит между вашим компьютером и устройством.
Показываемые устройства
Полные UUID или 16-битные идентификаторы через запятую. Стандартные сервисы запрашиваются автоматически

Как это работает

Подключает браузер к устройству 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-адаптер вашего компьютера, и ни одно считанное значение не отправляется на сервер. Разрешение вы выдаёте отдельно для каждого устройства в окне выбора браузера и можете отозвать его в любой момент.