После нажатия выберите "Сохранить как PDF" в списке принтеров.

Универсальная интеграция датчиков

Введение

В данной инструкции мы хотим ознакомить пользователей с возможностью удобной интеграции любых BLE-датчиков с нашими приборами.

Для этого достаточно ознакомиться с протоколом производителя датчика, в котором рассылаются BLE-адверты.

Универсальная интеграция доступна на следующих устройствах:

Модель трекера

L3|L3R

A4

A4 WIFI

A4 MAX

B2

C4

Версия ПО
(не ниже)

0.03

0.11

0.01

0.11

0.02

0.01

Логика универсальной интеграции

Согласно установленным стандартам BLE, датчики транслируют в радио эфир открытые сообщения (адверты), представляющие из себя упорядоченный набор полей.

Структура полей состоит из трёх классов данных (LTV): длина, тип и данные по́ля.

Наиболее часто встречающиеся типы данных в адвертах, это:

Код

Значение

0х01

Flags (Флаги)

0xFF

Manufacturer Specific Data (Данные производителя)

0х09

Complete Local Name (Имя устройства)

0x06

Incomplete List of 128-bit Service Class UUIDs

0x07

Complete List of 128-bit Service Class UUIDs

Практика показывает, что полезную информацию производители датчиков размещают в поле 0хFF — «Manufacturer Specific Data», после которого мы начинаем отсчёт байтов B1, B2 и т.д.

Пример адверта

Пример адверта

Примеры записи:

Передача однобайтового параметра в виртуальном датчике
FF#V200:[B1]
Передача двухбайтового параметра в виртуальном датчике, способ big-endian
FF#V200:[B1,B2]
Передача двухбайтового параметра в виртуальном датчике, способ little-endian
FF#V200:[B2,B1]
Добавлена передача второго двухбайтового параметра в виртуальном датчике
FF#V200:[B1,B2];FF#V201:[B3,B4]
Добавлена передача четырёхбайтового параметра в тэге
FF#V200:[B1,B2];FF#V201:[B3,B4];FF#T220:[B5,B6,B7,B8]
Добавлена передача уровня сигнала в виртуальном датчике
FF#V200:[B1,B2];FF#V201:[B3,B4];FF#T220:[B5,B6,B7,B8];V202:[R]

Важно

Добавлена настройка формирования внеочередных пакетов при изменении значения параметра на указанное число

Пример:
FF#T220:[B5,B6,B7,B8]!100 - формировать события при изменении значения параметра T220 каждые 100 единиц.

Описание формата формулы в строке

Часть записи

форма

Описание

Тип поля

FF#

FF - код типа поля в шестнадцатеричном формате (обычно FF),
за которым обязательно следует разделительный символ #
Параметр
для сервера

Vxxx:

Виртуальный датчик, в котором будет передан результат работы
по формуле (до 3-х байт).
Допустимые номера xxx = [200 .. 239] включительно, согласно
нашему протоколу.
В системе мониторинга соответствуют параметрам
vs_200 .. vs_239

Txxx:

Тэг, в котором будет передан результат работы по формуле
(до 4-х байт).
Допустимые номера xxx = [ 220 .. 229 ] включительно, согласно
нашему протоколу.
В системе мониторинга соответствуют параметрам
val_10 .. val_19

Важно

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

[B1,B2]

Набор данных адверта для записи в параметр для сервера -
через запятую указываются номера байт данных адверта и их
порядок упаковки в виртуальный датчик или тэг

Важно

Производители датчиков используют разные способы
хранения данных в памяти:
Big-endian хранит старший байт числа по меньшему адресу
памяти, что интуитивно понятно при чтении слева направо.
Например, число 0x12345678 будет храниться, как 12 34 56 78

Little-endian делает обратное, помещая младший байт по
меньшему адресу, так что то же число будет храниться, как
78 56 34 12
В строке описания логики универсальной интеграции данные
требуется записывать в порядке Little-endian

[R]

Уровень сигнала датчика для записи в параметр для сервера.

Важно

Для данной записи не указывается тип поля.

Триггер по
изменению
значения

!xxx

Символ ! после квадратных скобок применяется для
формирования внеочередного пакета при изменении значения
параметра внутри этих скобок.
Число xxx указывает, на сколько должно измениться значение
(дельта) для формирования внеочередного пакета.
Например: !50 - изменение более, чем на 50 единиц.

Примечание

Данная форма не является обязательной.

Разделитель
между
записями

;

Разделитель между формулами расчётов. В одном описании
может быть до 5-ти формул.

Внимание

Максимальная длина строки для поля ввода описания 128 символов.
Если необходимо внести более 5-ти формул или превышен лимит по символам в поле Универсальная интеграция датчиков, то можно продолжить описание в тех же полях следующего датчика, используя тотже MAC-адрес.

Примеры формирования строки

Пример 1

Рассмотрим беспроводной датчик BASv6, работающем в протоколе BAS mini

Описание Manufacturer Specific Data протокола BAS mini

Описание Manufacturer Specific Data протокола BAS mini

Разберём на примере адверта этого датчика:
0x0201060EFF160F650601500085B001006012
Зная, где содержится нужная информация в адверте, с помощью логики универсальной интеграции мы можем передавать её на телематический сервер.
Например, нам нужны только Моточасы, Температура и Угол.

Запись

Поле адверта

Параметр для записи

Значение из адверта

Запись 1

FF#

Выбираем
данные
производителя

T221:

Записываем
в параметр val_11

[B8,B9,B10,B11]

Моточасы

Запись 2

FF#

V201:

Записываем
в параметр vs_201

[B13]

Температура

Запись 3

FF#

V202:

Записываем
в параметр vs_202

[B6,B7]

Угол

Значит, строка для записи в трекер будет иметь следующий вид:
FF#T221:[B8,B9,B10,B11];FF#V201:[B13];FF#V202:[B6,B7]

Также необходимо указать MAC-адрес интегрируемого датчика

Пример настройки устройства

Пример настройки устройства

В системе мониторинга мы видим переданные параметры:

Переданные данные в систему мониторинга

Переданные данные в систему мониторинга

Где:
val_11: 110725 — моточасы в секундах ( 1 день, 6 часов, 45 минут 25 секунд )
vs_201: 18 — температура, °C
vs_202: 80 — угол в градусах

Пример 2

Рассмотрим беспроводной датчик TESLiOT One, работающем в протоколе TESLiOT protocol v1.0

Описание Manufacturer Specific Data протокола TESLiOT protocol v.1.0

Описание Manufacturer Specific Data протокола TESLiOT protocol v.1.0

Разберём на примере адверта этого датчика:
0x02010618FFFFFF5453310F0A6839BCDA1E0A8080800000000A3F0988

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

Запись

Поле адверта

Параметр для записи

Значение из адверта

Запись 1

FF#

Выбираем
данные
производителя

V205:

Записываем
в параметр vs_205

[B6]

Версия аппаратного
обеспечения

Запись 2

FF#

V206:

Записываем
в параметр vs_206

[B12]

Напряжение
Батарейки

Запись 3

FF#

V227:

Записываем
в параметр vs_227

[B23,B22]

Температура

Запись 4

FF#

V226:

Записываем
в параметр vs_226

[B21,B20]

Влажность

Внимание

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

Строка для записи в трекер будет выглядеть так:
FF#V205:[B6];FF#V206:[B12];FF#V227:[B23,B22];FF#V226:[B21,B20]

Также необходимо указать MAC-адрес интегрируемого датчика

Пример настройки устройства

Пример настройки устройства

На сервере мониторинга Wialon мы видим пришедшие параметры:

Переданные данные в систему мониторинга

Переданные данные в систему мониторинга

Где:
vs_205: 15 — версия платы датчика
vs_206: 30 = 3,0 В — напряжение батарейки (значение необходимо разделить на 10 согласно протоколу производителя)
vs_226: 2623 = 26,23 % — влажность, % (значение необходимо разделить на 100 согласно протоколу производителя)
vs_227: 2440 = 24,4 °C — температура, °C (значение необходимо разделить на 100 согласно протоколу производителя)