Перейти к содержимому
Черновик: материал сгенерирован и ещё не вычитан.

Bluetooth: подключение датчиков

Прибор принимает данные от BLE-датчиков, слушая их рекламные (advertising) пакеты. Каждый интересующий параметр привязывается к своему слоту BTTAG, и дальше он живёт как обычный тег протокола: его можно отметить в пакете, прочитать командой, использовать в EasyLogic.

Работа по Bluetooth доступна на Galileosky 10, XS и 7x с прошивки 24.7.

На Galileosky 10 и на 7x с прошивки 45.0 отдельной настройки «Режим Bluetooth» больше нет — прибор переключает режимы сам. В настройках Bluetooth остаются частота опроса, таймаут датчиков, имя устройства и сканер.

На более ранних прошивках 7x режим выбирается в настройках, а из терминала — командой BLEMODE <n>. Команда работает и на актуальных прошивках:

nРежимЧто делает
0DSPS (в старом интерфейсе — «Exigner»)Прозрачный последовательный канал поверх BLE
1Sensors + EasyLogicПриём данных от датчиков и передача пакетов в алгоритмы
255ОтключёнРадиомодуль выключен

Это все значения, которые можно задавать. На младших приборах режим DSPS недоступен — минимальное значение там 1 (Sensors).

Не подставляйте в BLEMODE значения, которых нет в таблице. Команда их примет без ошибки, но Bluetooth после этого не поднимется, и никакого сообщения об этом не будет. Если так произошло, вернитесь к режиму 1 или 0.

Смена режима применяется сразу и сохраняется в конфигурации.

⚙ Открыть настройки Bluetooth

BLEPOLLINGRATE <с> — периодичность обращения к датчикам, 1…10 с
BTSENSTIMEOUT <с> — таймаут датчика, по умолчанию 60 с

Таймаут датчиков — это время, по истечении которого данные в привязанных тегах обнуляются, если датчик пропал из зоны приёма. Так отличают «датчик молчит» от «датчик отдал ноль».

Имя, под которым прибор виден в эфире, задаётся командой BTNAME (до 18 символов; если оставить пустым, после перезагрузки именем станет GS <IMEI>). Собственный MAC-адрес прибора показывает BLEMAC, состояние подсистемы — BLESTATE.

Для этих семейств разбор рекламного пакета уже встроен — достаточно выбрать датчик и нужные параметры:

  • Эскорт: ДУТ TD-BLE (прошивка датчика 1.2.0 и выше), метки ID-Tag;
  • Технотон: ДУТ DUT-E S7, расходомеры DFM 100S7 и DFM 250DS7, датчик нагрузки на оси GNOM DDE S7, датчик положения GNOM DP S7;
  • Mechatronics: ДУТ Eurosens Dominator BT;
  • ELA: датчики движения, температуры, влажности, ускорения, магнитный, цифровой вход;
  • Mielta: ДУТ Fantom;
  • Eddystone и iBeacon — стандартные форматы маяков.

Всё остальное подключается разбором произвольных байтов рекламного пакета (см. ниже) или алгоритмом EasyLogic — см. «Bluetooth: устройства и алгоритмы».

  1. На прошивках до 45.0 убедитесь, что режим Bluetooth — Sensors + EasyLogic. На Galileosky 10 и 7x с 45.0 этот шаг не нужен.
  2. В разделе настроек Bluetooth нажмите «Добавить датчик».
  3. На вкладке «Сканирование» запустите поиск и выберите устройство по MAC-адресу или имени. Если нужного устройства не видно, добавьте его на вкладке «Вручную», указав MAC и тип датчика.
  4. Отметьте параметры, которые нужно получать. RSSI (уровень сигнала) предлагается по умолчанию.
  5. Сохраните — параметры автоматически разложатся по свободным слотам.

Кнопка «Получить данные» показывает живые значения по настроенным параметрам: она использует то же сканирование, поэтому расшифровка идёт из последнего пакета соответствующего MAC-адреса.

⚙ Открыть сканер Bluetooth

Каждый параметр занимает один слот BTTAG. На Galileosky 10, XS и 7x доступно 64 слота (BTTAG0BTTAG63); на приборах младшей линейки — 10.

Один датчик может занимать несколько слотов — по слоту на параметр. Освободить слот можно, удалив параметр или датчик целиком.

Теги, занятые одним датчиком, не должны использоваться для параметров другого: слот хранит и MAC, и смещение внутри пакета.

Чтобы значения уходили на сервер, отметьте соответствующие теги BTTAG в основном пакете.

⚙ Открыть настройки протокола

Слот настраивается и читается одной командой:

BTTAG<n> <MAC>,<PARAM_ID>,<OFFSET>,<NUMBER>,<ENDIAN>,<DATA_LEN>
ПолеЗначение
MACMAC-адрес датчика без разделителей
PARAM_IDИдентификатор параметра, 0…255
OFFSETСмещение в рекламном пакете, 0…255
NUMBERСколько байт читать, 1…4
ENDIANПорядок байтов: 0 — little-endian, 1 — big-endian
DATA_LENДлина всего пакета, из которого берутся данные

Запрос текущей настройки — BTTAG<n> без параметров; ответ вида BTTAG0:44d295e1b840,1,3,2,0,0;.

Изменение слота пересобирает белый список и сбрасывает текущее значение тега.

Разбор произвольных байтов рекламного пакета

Заголовок раздела «Разбор произвольных байтов рекламного пакета»

Если прошивка не знает устройство, в развёрнутом списке параметров, кроме самого рекламного пакета, будет виден только RSSI. Нужные значения из пакета вытаскиваются вручную:

  1. Запустите сканирование и найдите устройство по MAC или имени.
  2. Разверните список получаемых данных — появится рекламный пакет.
  3. Добавьте новую строку: именно она фиксирует полученный пакет. Работать напрямую с отображаемым пакетом нельзя, выбор байтов возможен только в добавленной строке.
  4. Выделите от 1 до 4 байт, из которых складывается значение.
  5. Задайте направление чтения (порядок байтов) и тег, в который значение будет записано.
  6. Остановите сканирование и примените настройки.
  7. Отметьте выбранный тег в основном пакете, чтобы значение уходило на сервер.

Пересчёт сырого значения в физическую величину (делители, смещения, знак) выполняет ПО мониторинга — прибор передаёт то, что прочитал.

Сканер произвольных данных доступен на 7x с прошивки 39.0 и на Galileosky 10 с прошивки 1.0.

Белый список ограничивает, чьи пакеты прибор вообще принимает:

BTWL 0 — фильтрация выключена
BTWL 1 — фильтрация включена

Отдельной команды для наполнения списка нет: он собирается из MAC-адресов, прописанных в слотах BTTAG, и пересобирается при каждом изменении слота.

Не задавайте больше 10 MAC-адресов. Это аппаратный предел BLE-модуля. На одиннадцатом адресе прибор выключает фильтрацию целиком — даже при BTWL 1, даже для первых десяти адресов. Лишний адрес не игнорируется: эфир становится полностью открытым.

Прибор не сообщает об этом ни ошибкой, ни в настройках — единственный признак виден в диагностике строкой wlRebuildFromCfg: … MACs exceed HW limit. Поэтому после наполнения слотов пересчитайте различные MAC-адреса вручную. Если их больше десяти, белый список для этой конфигурации неприменим — ограничивайте приём датчиков другим способом, например настройкой самих слотов BTTAG.

⚙ Открыть запись лога

Значение любого тега, включая BTTAG, читается командой:

GETVALUEBYTAG <тег>[,<тег>,…]

Номера перечисляются через запятую, в десятичном виде или с префиксом 0x; расширенный тег задаётся номером со смещением 0x10000 (например, 0x10041). Ответ — пары 0xNNNNN=<значение>. Типы, у которых нет текстового представления, отдаются HEX-строкой с префиксом B_ (порядок байтов — big-endian).

⚙ Открыть терминал команд

BTSCANSTART → BTSCAN STARTED
BTSCANSTOP → BTSCAN STOPPED

Сканирование из терминала полезно, когда нужно быстро проверить, видит ли прибор устройство, не открывая раздел настроек.


См. также: Bluetooth: устройства и алгоритмы · Датчики температуры и влажности · Датчики уровня топлива