Документация по протоколу SAUK Beacon
Содержание
1. Демонстрация в nRF Connect
Ниже представлены скриншоты из демонстрационного программного обеспечения nRF Connect, показывающие обнаружение и анализ SAUK Beacon:

BLE-маяки SAUK Beacon можно сконфигурировать и протестировать все их функции в бесплатном программном обеспечении SAUK BeaconManager
Ключевая информация из nRF Connect:
| Параметр | Значение |
|---|---|
| Device name | SAUK-C40308 (Beacon) |
| MAC address | DE:34:9F:63:72:CB |
| RSSI | -68 dBm |
| Device type | LE only |
| Advertising type | Legacy |
| Flags | LE General Discoverable, BREDR Not Supported |
| Company | Reserved ID <0xFFFFFFFF> |
| UUID | ea0cca2a-0101-0100-a1b1-8ce4bc06c19f |
| Major | 1 |
| Minor | 2 |
| RSSI at 1m | -55 dBm |
Ключевая информация по идентификации BLE-маячка и получению дополнительных данных из его памяти:
Есть два способа идентификации BLE-маячков:- при активном сканировании,
- при пассивном сканировании.
Ключевые различия в способах идентификации:
- При активном сканировании структура рекламы BLE-маячка SAUK возвращает данные производителя (UUID, версию, калибровочное значение RSSI на дистанции 1 метр), а также полное имя устройства в формате по умолчанию "SAUK-серийный номер маячка", а также остаточный уровень заряда батареи и сопроводительную информацию от встроенных сенсоров. Это обусловлено тем, что при активном сканировании маячок BLE возвращает данные, помеченные во внутренней прошивке как передающиеся только по запросу "Scan Response".
- При пассивном сканировании структура рекламы возвращает только данные производителя.
2. Пример рекламного сообщения SAUK Beacon
Описание: Полный пример рекламного сообщения SAUK Beacon в формате RAW DATA с цветовой кодировкой полей.
Комментарий 1: Тип маяка 0x02 - Beacon type (iBeacon-compatible type), 0x15 - длина последовательности, с данными производителя UUID + версия + калибровочный RSSI, всего 21 байт.
Комментарий 2: 0x0D - длина имени маяка 13 байт, 0x09 - секция Complete Local Name, в которой транслируется имя маяка.
Комментарий 3: 0x4252 - UUID (16 bit) кастомный проприетарный идентификатор сервиса SAUK, содержащий специфические данные.
3. Структура рекламного сообщения SAUK Beacon
Обобщенный разбор структуры стандартного рекламного сообщения SAUK Beacon:
| Длина | Тип | Данные |
|---|---|---|
| 0x02 | 0x01 (BLE Flags) | 0x06 |
| 0x1A | 0xFF (Manufacturer Specific Data) | 0xFFFF0215EA0CCA2A01010100A1B18CE4BC06C19F00010002C9 |
| 0x0D | 0x09 (Complete Local Name) | 0x5341554B2D43343033303800 |
| 0x10 | 0x16 (Custom Service Data) | 0x42520063DE349F6372CB0101000000 |
4. Детальный разбор структуры рекламного сообщения
Длина: 3 байта
Описание: Сервисные флаги Bluetooth low energy
Длина: 2 байта
Описание: ID производителя
Возможные значения:
- По умолчанию установлен 0xFFFF (Beacon)
- Опционально 0x004C little-endian (Apple Company ID iBeacon)
Длина: 16 байт
Описание: UUID: EA0CCA2A-0101-0100-A1B1-8CE4BC06C19F
Структура UUID:
- Префикс SAUK: 0xEA0CCA2A
- Версия схемотехнической реализации Hardware: 0x0101
Длина: 2 байта
Описание: Версия программного обеспечения Software Major
Длина: 2 байта
Описание: Версия программного обеспечения Software Minor
Длина: 1 байт
Описание: Калибровочное значение RSSI на дистанции 1 метр: минус 55 dB (HEX = 0xC9 переводим в DEC = 201, вычитаем 256 => 201 - 256 = -55 dB)
Длина: 12 байт
Описание: Название маячка, рассылающего рекламу: SAUK-C40308
Примечания:
- По умолчанию серийный номер уникален для каждого маячка
- Название маячка может быть изменено
Комментарий: Для версий встроенного ПО 1.4 и выше
Длина: 1 байт
Описание набора опций:
- 0x00 маяк без дополнительных опций,
- 0x01 маяк с опцией "Сигнализация о вскрытии"
Длина: 1 байт
Описание: Процент заряда батареи: 99% (0x63 в шестнадцатиричном представлении соответствует 99 в десятичном)
Длина: 6 байт
Описание: MAC адрес, в ходе эксплуатации изменен быть не может
Длина: 1 байт
Описание: Интервал выхода рекламы в эфир: 1 (250 мс)
Возможные значения:
| Значение | Интервал |
|---|---|
| 06 | 10000 мс |
| 05 | 5000 мс |
| 04 | 2000 мс |
| 03 | 1000 мс |
| 02 | 750 мс |
| 01 | 250 мс |
| 00 | 100 мс |
Длина: 1 байт
Описание: Коэффициент, характеризующий излучаемую мощность: 0 (для текущей версии константа, не настраивается)
Длина: 3 байта
Описание: Резервный параметр - данные от встроенных сенсоров
5. Конфигурирование маячка через BLE-подключение
После выполнения подключения Connect между клиентом и маячком стартует таймаут 60 секунд. После окончания таймаута соединение будет автоматически разорвано с целью экономии энергии встроенной батарейки и с целью сброса соединений неактуальных клиентов.
Поведение светодиодной индикации
- Короткая вспышка LED BLUE — при подключении клиента к маячку (connected).
- Короткая вспышка LED GREEN — успешное обновление данных в памяти. Происходит при изменении:
- смена пароля
- Короткая вспышка LED GREEN и сразу LED BLUE — успешное обновление данных с перезапуском рекламы. Происходит при изменении:
- изменение названия маячка,
- изменение интервала рекламных сообщений,
- изменение опорного значения RSSI для расчёта дальности,
- изменение мощности излучения,
- изменение версий Software major/minor,
- GUID (UUID),
- Изменение типа маячка Beacon | iBeacon.
Протокол настройки параметров
Реализован байтовый вариант посылок от клиента к маячку — отправляется массив в виде байт. Например, проверка пароля: F300F306112233445566.
Общий формат команды:
Где XX - байт с номером команды, LL - длина информативной части (данных), DDDD... информативная часть (данные)
0x00 — Проверка пароля
F300F306XXXXXXXXXXXX, где X — HEX-символы (например, 000000000000 или 112233445566).
Длина команды: 10 байт. Длина пароля — 6 байт.
0x01 — Установка нового пароля
F301F306XXXXXXXXXXXX
Новый пароль должен быть задан только после авторизации командой 0x00 не позднее чем через 60 секунд. После таймаута флаг авторизации сбрасывается.
0x02 — Изменение UUID
F302F310XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Длина команды: 20 байт. Новый UUID — 16 байт.
0x03 — Изменение Software major
F303F302XXXX, например, версия 4278 → 10B6 (HEX).
Длина команды: 6 байт.
0x04 — Изменение Software minor
F304F302XXXX, например, 5527 → 1597.
Длина команды: 6 байт.
0x05 — Изменение названия маяка
F305F30CXXXXXXXXXXXXXXXXXXXXXXXX, например, 5341554B2D626C6500000000 → SAUK-ble.
Если все 12 байт = 000000000000000000000000, то выполняется фабричный сброс:
- название → дефолтное (например,
SAUK-6ADB4F), - пароль →
000000000000, - Software major/minor → заводские,
- UUID → заводской.
0x06 — Мощность TX трансляции рекламы
F306F301XX, где:
| XX | Мощность излучения |
|---|---|
| 00 | -20 dBm |
| 01 | -12 dBm |
| 02 | -8 dBm |
| 03 | -4 dBm |
| 04 | 0 dBm |
| 05 | +4 dBm |
Длина команды: 5 байт.
0x07 — Изменение интервала рекламы
F307F301XX, где:
| XX | Интервал |
|---|---|
| 00 | 100 мс |
| 01 | 250 мс |
| 02 | 750 мс |
| 03 | 1000 мс |
| 04 | 2000 мс |
| 05 | 5000 мс |
| 06 | 10000 мс |
Длина команды: 5 байт.
0x08 — Калибровочное значение RSSI на 1 м
Для вычисления удалённости маяка от шлюза.
0x17 — Управление периферией
F317F3XXXX:
0100— LED GREEN на 1 сек,0101— LED RED на 1 сек,0102— LED BLUE на 1 сек.
0x2F — Переключение типа маячка Beacon | iBeacon | Eddystone
F32FF301XX:
00— Beacon 0xFFFF,01— iBeacon 0x4C00 или 0x004C в зависимости от порядка следования байт на клиенте,02— Eddystone (в разработке).
Команды в разработке: 0x09 (изменение MAC).
Примечания
Формат данных: Все данные представлены в шестнадцатеричном формате (HEX).
Порядок байт: Для ID производителя Apple используется формат little-endian (0x004C).
Уникальность: MAC-адрес устройства не может быть изменен в ходе эксплуатации.
Изменяемые параметры: Название маячка может быть изменено, в отличие от MAC-адреса.
Совместимость: SAUK Beacon совместим со стандартными BLE сканерами, такими как nRF Connect, и может быть обнаружен любым устройством с поддержкой Bluetooth Low Energy.