BLE-маяки SAUK Beacon
SAUK · BLE Beacon · Реклама

Реклама BLE-маяков SAUK Beacon: виды, типы и структура пакета

Описание рекламного (advertising) сообщения BLE-маяков SAUK: формат iBeacon-совместимого пакета, служебный блок Service Data и линейка исполнений — от обычного маяка до маяков с датчиками температуры, наклона, протечки и вскрытия. Структура едина для всех приборов; различается только состав полей датчика в зависимости от типа маяка.

Bluetooth Low Energy iBeacon-совместимый Активное / пассивное сканирование Датчики: t° · наклон · протечка · вскрытие
Содержание
Ничего не найдено. Попробуйте другую формулировку — например, «Service Data», «температура», «UUID» или «интервал».

1Общие сведения

SAUK Beacon — это BLE-маяк, который периодически передаёт в эфир рекламное сообщение (advertising) стандарта Bluetooth Low Energy. Пакет iBeacon-совместим: маяк обнаруживается любым устройством с поддержкой BLE и стандартными сканерами (nRF Connect и др.).

Рекламное сообщение состоит из двух частей:

  • Основная реклама (Advertising Data) — идентификация: тип, UUID, версия ПО, калибровочный RSSI. Доступна всегда.
  • Scan Response — имя устройства и служебный блок Service Data: заряд батареи, режим и показания датчика. Возвращается только при активном сканировании.

Одна и та же платформа выпускается в нескольких исполнениях: обычный маяк и маяки с датчиками. Формат рекламы единый — меняется только набор полей датчика в блоке Service Data (см. разделы 2 и 6).

Настройка и тестирование

Конфигурирование и проверка всех функций маяка выполняются в бесплатном фирменном ПО SAUK BeaconManager. Данный документ описывает рекламный протокол (то, что маяк передаёт в эфир); протокол команд настройки в публичной документации не публикуется.

2Виды и типы маяков

Тип устройства определяется прошивкой и транслируется в эфир в байте режима — это байт [2] блока Service Data. По нему приёмник однозначно понимает, какой это маяк и как интерпретировать поля датчика [5..11].

Режим [2]Тип маякаДатчик / назначениеДанные датчика в Service Data
0x00BeaconБез датчиков. Минимальное энергопотребление, позиционирование и идентификация.Поля [5..9] = 0x00 (не используются).
0x01TamperДетектор обрыва тросика (антисаботаж, контроль вскрытия/съёма).[5] состояние тросика + флаг тревоги; [6..7] сырое значение АЦП.
0x03LeakДатчик протечки (кондуктометрический, по щупам).[5] статус протечки; [6..7] сырое значение АЦП.
0x04TemperatureДатчик температуры: внешний TMP117 (±0.1 °C) либо встроенный датчик nRF52 (резерв, ±5 °C).[5] валидность; [6..7] температура; [8..9] погрешность; [10..11] поправка.
0x05AngleДатчик наклона/ориентации: акселерометр LIS2DH12 (медиана по осям).[5] частота опроса + валидность; [6..7] Ax; [8..9] Ay; [10..11] Az.

Длина Service Data зависит от типа

Beacon, Tamper и Leak передают 10 байт ([0..9]); Temperature и Angle — 12 байт ([0..11]), так как используют дополнительные поля [10..11]. Разбор полей — в разделе 6.

3Способы сканирования

Получить данные маяка можно двумя способами — при активном и при пассивном сканировании. Разница в том, запрашивает ли сканер дополнительный ответ Scan Response.

Что доступноАктивное сканированиеПассивное сканирование
Manufacturer Data (тип, UUID, версия ПО, RSSI@1м)дада
Имя устройстваданет
Заряд батареи, режим, параметры радиоданет
Показания датчикаданет
MAC-адресда (из заголовка пакета)да (из заголовка пакета)

При активном сканировании сканер дополнительно запрашивает Scan Response, и маяк отдаёт имя и блок Service Data (эти данные помечены в прошивке как передаваемые только по запросу). При пассивном сканировании доступна лишь основная реклама. MAC-адрес присутствует в заголовке BLE-пакета всегда и в Service Data не дублируется.

4Структура рекламного пакета

Ниже — полный пример рекламы обычного маяка (режим Beacon) с цветовой разметкой полей. Все значения в шестнадцатеричном виде (HEX).

Флаги BLE ID производителя / тип UUID Версия ПО Калибровочный RSSI Имя устройства Режим Батарея Мощность | интервал Данные датчика
ЭФИР · Advertising Data
020106 1AFF FFFF 0215 EA0CCA2A01080100A1B18CE4BC06C19F 0001 0002 C9
ЭФИР · Scan Response
0D09 5341554B2D43343033303800 0B16 4253 00 63 43 0000000000

4.1Основная реклама (Advertising Data)

ДлинаТипДанные
0x020x01 — BLE Flags0x06 (LE General Discoverable, BR/EDR Not Supported)
0x1A0xFF — Manufacturer Specific DataFFFF 0215 EA0CCA2A01080100A1B18CE4BC06C19F 0001 0002 C9

4.2Scan Response

ДлинаТипДанные
0x0D0x09 — Complete Local Name5341554B2D43343033303800 («SAUK-C40308»)
0x0B / 0x0D0x16 — Service Data (16-bit UUID)4253 + режим + батарея + мощн|инт + данные датчика

Длина блока Service Data — 0x0B (11 байт с типом) для Beacon/Tamper/Leak и 0x0D (13) для Temperature/Angle.

5Manufacturer Data — детальный разбор

Блок Manufacturer Specific Data (тип 0xFF) присутствует и при активном, и при пассивном сканировании.

5.1Флаги BLE — 02 01 06

Сервисные флаги Bluetooth Low Energy (длина 3 байта): LE General Discoverable, BR/EDR Not Supported.

5.2ID производителя / тип — FFFF

2 байта. Определяет тип идентификатора:

  • 0xFFFF — тип Beacon (по умолчанию).
  • 0x4C00 — режим iBeacon (на клиенте отображается как Apple 0x004C, little-endian).

Тип (Beacon / iBeacon) выбирается в SAUK BeaconManager.

5.3iBeacon-префикс — 02 15

2 байта: 0x02 — тип «iBeacon», 0x15 — длина полезной части 21 байт (UUID 16 + версия ПО 4 + калибровочный RSSI 1).

5.4UUID — 16 байт

Пример: EA0CCA2A-0108-0100-A1B1-8CE4BC06C19F. Структура:

БайтыПолеОписание
[0..3]Префикс SAUK0xEA0CCA2A — константа производителя.
[4]Hardware minorМладшая версия аппаратной реализации платы.
[5]Hardware majorСтаршая версия платы (нанесена на шелкографии).
[6]Набор опцийКодирует набор установленных опций/датчиков конкретного исполнения.
[7]ReservedЗарезервирован (0x00).
[8..15]Серийный номерУникальный идентификатор экземпляра.

5.5Версия ПО и калибровочный RSSI

ПолеДлинаОписание
Software Major2 байта, big-endianСтаршая часть версии прошивки (пример 0x0001).
Software Minor2 байта, big-endianМладшая часть версии прошивки (пример 0x0002).
Калибровочный RSSI@1м1 байтОпорный уровень сигнала на 1 метре для расчёта дальности. 0xC9 = 201; 201 − 256 = −55 dBm.

6Service Data и данные датчиков

Блок Service Data (тип 0x16) присутствует только в Scan Response. Первые 5 байт одинаковы для всех типов маяков, байты [5..11] зависят от режима.

6.1Общие поля [0..4]

БайтПолеОписание
[0..1]Маркер сервисаКонстанта 0x4253 — проприетарный сервис SAUK.
[2]Режим устройстваТип маяка: 0x00 Beacon, 0x01 Tamper, 0x03 Leak, 0x04 Temperature, 0x05 Angle.
[3]Заряд батареиОстаток в процентах 0..100. Пример: 0x63 = 99%.
[4]Мощность | интервалУпаковка: старшие 4 бита — уровень мощности, младшие 4 бита — код интервала рекламы. Пример 0x43 → мощность 4 (0 dBm), интервал 3 (1000 мс).

Коды мощности и интервала (байт [4])

Мощность: 0 = −20, 1 = −12, 2 = −8, 3 = −4, 4 = 0, 5 = +4 dBm.

Интервал: 0 = 100, 1 = 250, 2 = 750, 3 = 1000, 4 = 2000, 5 = 5000, 6 = 10000 мс.

6.2Tamper — детектор обрыва тросика режим 0x01

ЭФИР · пример
4253016343 00000A0000
БайтПолеОписание
[5]Статусбит0: состояние тросика (0 = цел, 1 = оборван); бит1: флаг тревоги (Alarm).
[6..7]АЦПСырое 12-битное значение (0..4095) для диагностики. Тросик цел (замкнут) ≈ 10; оборван ≈ 3380.

Флаг тревоги фиксируется до сброса из SAUK BeaconManager.

6.3Leak — датчик протечки режим 0x03

ЭФИР · пример
4253036343 0106D20000
БайтПолеОписание
[5]Статус протечки0x00 = сухо, 0x01 = протечка.
[6..7]АЦПСырое 12-битное значение (0..4095). Порог ≈ 3100: ниже — протечка. Сухо ≈ 3380, водопроводная вода ≈ 1750.

6.4Temperature — датчик температуры режим 0x04

ЭФИР · пример (+23.5 °C, TMP117)
4253046343 0100EB000A0000
БайтПолеОписание
[5]Валидность0x00 = ошибка измерения, 0x01 = данные корректны.
[6..7]Температураint16, big-endian, в десятых долях °C, со знаком, уже с учётом поправки. Пример: 0x00EB = 235 → +23.5 °C; 0xFF9C = −100 → −10.0 °C.
[8..9]Погрешностьuint16, big-endian, в сотых долях °C. По значению виден источник: 500 = ±5.00 °C — встроенный датчик nRF52; 10/20/30 = ±0.10/0.20/0.30 °C — TMP117.
[10..11]Поправкаint16, big-endian, в сотых долях °C, со знаком. Текущая калибровочная поправка. Пример: 0xFE34 = −4.60 °C; 0x0000 = без поправки.

6.5Angle — датчик наклона (акселерометр) режим 0x05

ЭФИР · пример (лежит горизонтально)
4253056343 1100000000FC18
БайтПолеОписание
[5]Частота + валидностьбиты 7..4 — код ODR (0 = 1 Гц, 1 = 10 Гц, 2 = 25 Гц, 3 = 50 Гц); бит0 — valid (1 = данные актуальны). Пример 0x11 = 10 Гц, valid.
[6..7]AxМедиана по осям в mg (1g ≈ 1000 mg), int16 big-endian, со знаком. Полная шкала ±2g, разрешение 16 mg. Медиана — по окну FIFO из 32 семплов (на 10 Гц окно ≈ 3.2 сек), что фильтрует кратковременные взмахи и шум.
[8..9]Ay
[10..11]Az

Ориентация (в покое): лёжа горизонтально Az ≈ −1000 mg; перевёрнут — Az ≈ +1000 mg; вертикально — Ax или Ay ≈ ±1000 mg. Из проекций вектора силы тяжести приёмник вычисляет угол наклона в диапазоне 0…±90° по оси (до 360° по ориентации через atan2), с разрешением около 0.9° у горизонтали. Применение — контроль медленного наклона/ориентации.

7Демонстрация в nRF Connect

Маяк обнаруживается и разбирается стандартным сканером nRF Connect. Ниже — обнаружение устройства и «сырые» данные рекламного пакета.

nRF Connect — детали SAUK Beacon
Детали устройства SAUK Beacon в nRF Connect
nRF Connect — raw-данные SAUK Beacon
Raw-данные рекламного пакета

7.1Пример захвата (обычный Beacon)

ПараметрЗначение
Device nameSAUK-C40308 (Beacon)
MAC addressDE:34:9F:63:72:CB
RSSI−68 dBm
Advertising typeLegacy, LE only
FlagsLE General Discoverable, BR/EDR Not Supported
CompanyReserved ID <0xFFFFFFFF> (режим Beacon)
UUIDea0cca2a-0101-0100-a1b1-8ce4bc06c19f
Software Major / Minor1 / 2
RSSI at 1m (калибровка)−55 dBm

Набор полей и содержимое Service Data зависят от типа маяка (раздел 2). Приведённый пример соответствует обычному Beacon без датчиков.

О снимках

Скриншоты сделаны на приборе ранней аппаратной ревизии: в UUID версия платы — 0101, а служебный блок Service Data имеет раннюю раскладку (в сканере отображается как 0x5242). В текущей прошивке маркер сервиса — 0x4253, а состав Service Data соответствует разделам 4 и 6.

8Примечания и совместимость

Формат и порядок байт

Все данные — в шестнадцатеричном виде (HEX). Числовые поля датчиков (температура, погрешность, поправка, оси акселерометра) — big-endian. Company ID Apple в режиме iBeacon на клиенте отображается в little-endian (0x004C).

MAC-адрес

Берётся из заголовка BLE-пакета, доступен при любом сканировании и не изменяется в ходе эксплуатации.

Данные датчиков и имя

Передаются только в Scan Response — то есть доступны лишь при активном сканировании.

Совместимость

SAUK Beacon совместим со стандартными BLE-сканерами (nRF Connect и др.) и обнаруживается любым устройством с поддержкой Bluetooth Low Energy. Настройка — в SAUK BeaconManager.

SAUK · Реклама BLE-маяков Beacon sauk.ru
Россия, г. Москва, 
г. Зеленоград, проезд 4922, дом 4, строение 2. Технопарк "ЭЛМА". 
Подробнее...
SAUK© 2020 – 2026. Все тексты и изображения, представленные на сайте, являются интеллектуальной собственностью SAUK. Могут быть использованы только по письменному согласию SAUK. SAUK® является зарегистрированным торговым знаком. Заказы принимаются только от юридических лиц.

Товары

Корзина пуста

Итого

Заказ

Заказы принимаются только от юридических лиц