Процесс обработки данных
За процесс обработки данных, обмен с платформой и управление отвечают модули EDGE vmon
, vplan
.
Первый запуск
Модули vmon и vplan устанавливаются в папку /opt/inspark/
. При штатной установке все модули должны запуститься как демоны.
Протестируйте их рестрат командой service <имя модуля> restart
. Все модули работают от учетной записи inspark.
При старте модуля vmon, в зависимости от его режима взаимодействия с сервером, выполняются следующие операции:
- Режим начальной инициализации - первый пуск модуля.
vmon записывает в папку /etc/mosquitto/conf.d
файл конфигурации моста и начинает сообщать о себе по пути: /Controller/In/InitParam
. Подписавшись на топик, можно убедится , что установка прошла штатно.
- Режим ожидания конфигурации.
vmon был проинициализирован сервером, но не получил еще конфигурацию опроса. Для проверки состояния контроллера нужно подписаться на топик /Controller/Out/Event
и дождаться сообщения с номером 1000 (пакет жизни от контроллера).
- Режим штатной работы
vmon и vplan получили конфигурации с сервера и осуществляют штатно свою работу. Конфигурации должны быть в папке /etc
, файлы vmon.json, vplan.json
.
Штатная работа
Взаимодействие между контроллером и сервером осуществляется путем обмена сообщениями по протоколу MQTT. Для реализации этого взаимодействия на стороне контроллера автоматически конфигурируется мост (Bridge) для объединения отдельных топиков очередей Mosquitto. Параметры конфигурации этого моста записываются в специальный конфигурационный файл сервера очередей контроллера (bridge.conf).
Для каждого контроллера на стороне сервера сбора участвуют:
три входных топика «/Controller/<Id>/In/+»
, где <Id>
- идентификатор контроллера;
два выходных топика «/Controller/<Id>/Out/+»
.
Параметры объединяемых топиков приведены в следующей таблице (Таблица 3). В указанной таблице для каждой пары объединяемых топиков приведены:
направление передачи данных Direct («OUT» - из контроллера в сервер сбора, «IN» - из сервера сбора в контроллер);
рекомендуемый уровень качества сервиса QoS.
Таблица 3 – Схема объединения очередей контроллера и сервера сбора для штатного режима функционирования
Топик контроллера | Топик сервера сбора | Direct | QoS |
---|---|---|---|
/Controller/Out/Measure | /Controller/<Id>/In/Measure | OUT | 1 |
/Controller/Out/Signal | /Controller/<Id>/In/Signal | OUT | 2 |
/Controller/Out/Event | /Controller/<Id>/In/Event | OUT | 2 |
/Controller/In/ Command | /Controller/<Id>/Out/Command | IN | 2 |
/Controller/In/SetValue | /Controller/<Id>/Out/SetValue | IN | 2 |
Для инициализации контроллеров используется выделенный сервер сбора, который для взаимодействия использует следующие топики:
- «/Controller/In/InitRequest» - один топик на все контроллеры для получения от них запросов на инициализацию;
- «/Controller/<SN>/Out/InitParam» - уникальный топик для каждого контроллера, обеспечивающий передачу в контроллер параметров инициализации (здесь <SN> - серийный номер контроллера).
Общая схема взаимодействия ПО Edge агента с сервером показана в разделе Архитектура.
Инфо
Важно! vmon и vplan не взаимодействуют непосредственно с устройствами. Для этих целей необходимо использовать наше ПО уровня драйвера устройств. vmon должен получать данные в топики, которые удовлетворяют следующей структур:
/devices/<T>_<A>/controls/<K>
где T - тип устройства (датчика)
A - адрес устройства
K - имя канала
Если параметр является управляемым, то в соответствующем топике для него имеется подтопик с названием on
, куда записываются значения, которые должны быть переданы на конкретное устройство.
Для каждого канала /devices/<T>_<A>/controls/<K> драйверами устройств записывается статус операции чтения/записи с датчиками/устройствами в топик
/devices/<T>_<A>/controls/<K>/meta/error.
Исходящие сообщения помещаются в очередь с целью их передачи из контроллера на сервер сбора. Входящие сообщения поступают в очередь контроллера из сервера сбора. Управляющие сообщения используются для взаимодействия программных компонентов управляющей программы контроллера.
Предобработка данных
Модуль vmon
выполняет предобработку данных с учетом установленных режимов для параметра. Нже перечислены основные положения:
- Отправка значений на сервер выполняется в следующих случаях:
- наступил интервал опроса;
- параметр превысил пороги.
- На сервер отправляется скользящее среднее значение параметра для количества точек, указанных в атрибуте `AvgPoints
- Для параметров, у которых установлен атрибут
Urgent=true
, значение отправляются сразу же по приходу от драйверов. - Если для сигнального значения установлен атрибут
Inverted=true
, перед отправкой на сервер значение инвертируется. - Если у параметра атрибут
Locked=true
, значение параметров от драйверов игнорируется. - Отправка нового значения параметра драйверу выполняется только для параметров, у которых атрибут
ctrlability=true
. - Если от параметра нет значений больше, чем указан интервал в атрибуте
Recovery
- на сервер отправляется информация о сбое обмена с таким параметром. - Для параметров, у которых в атрибуте
Notify
указан номер события, по приходу данных отправляется событие. - Некоторые из указанных операций не применяются для типов String, Image, Blob, Geo.