Платформа отправляет данные по mqtt, или AMQP в роли клиента внешнего брокера. Перед настройкой подписки необходимо уточнить параметры подключения к брокеру.
Внешней системы
выбрать подпункт меню: Подписка MQTT, Подписка AMQPПараметры
, и выбрать в модальном окне список параметров, которые требуются передать.Виды авторизации:
Если брокер не требует авторизации, следует указать тип авторизации authType = TRUST(1) (доверенная авторизация, характерна для брокеров находящихся в одной сети, управление доступов в таком случае осуществляется средствами брэндмаура или политиками безопасности на уровне портов/приложений)
Если на брокере настроен ACL плагин HTTP авторизации, по логину и паролю - следует задать тип авторизации authType = PASSWD(2) и значения brokerUser и brokerPassword.
Для TRUST(1) и PASSWD(2) коннект задается , как показано ниже
tcp://<имя хоста/адрес>:<порт>,
Например:
tcp://10.3.2.38:1883
Если на брокере установлена поддержка авторизации с открытым ключом TLS v1.2 - следует указать тип авторизации authType = TLS12(3) и загрузить сертификаты в атрибуты:
Сертификаты загружаются в виде текста их содержимого и сохраняются как есть без каких-либо преобразований.
Так же следует корректно задать brokerUrl, в данном случае он должен начинаться с протокола SSL и содержать имя машины для подключения, например «ssl://ubuntu20:8883». При этом машина брокера (в этом примере ubuntu20) должна быть доступна в сети по этому имени и имя должно соответствовать записи «Common Name» клиентского сертификата (и брокерного, соответственно, тоже).
Поддерживается два формата передачи данных:
Формат передачи данных и событий для MQTT:
Измерения:
mqtt-topic = /inspark/{ext_system_id}/measures/out/PARAMID - для измерений по параметру PARAMID, где PARAMID это (ContrDeviceParam.id для измеряемых, ContrCalcParam.id для вычисляемых)
mqtt-message = {"id":33013,"value":"7.0","time":1707393139000, "paramCode": <альтернативный код параметра>, "statusID": 0 } - json объект, где:
id - идентификатор параметра PARAMID
value - значение
time - время значения в формате юникс (миллисекунды)
paramcode - альтернативный код, может использоваться для интеграций. Например, внешней системе надо, чтобы значение по параметру содержала какой-то их код. Такой код можно в ЛК записать в поле paramcode.
statusID - системный статус параметра, может присылать значения «Норма»-1, «Отклонение»-2, «Критическое»-3, «Недостоверно»- (-1) и «Нет контроля» - 0.
События:
mqtt-topic = /inspark/{ext_system_id}/events/out/EVENTID - топик формируется составным, с участием идентификатора внешней системы и типа события, где EVENTID это идентификатор типа параметра (Event.id)
mqtt-message = {"id":29052,"eventId":5003,"time":1707393189000,"msg":"Усё пропало, шеф"} - json объект, где:
id - идентификатор записи журнала событий (EventLog.id)
eventId - идентификатор типа события, EVENTID
time - время события в формате юникс (миллисекунды)
msg - текст события (EventLog.message)
Для формата ANDROMEDA публикуются только значения параметров (события не публикуются).
mqtt-topic = PARAM-CODE - в качестве топика выступает код параметра (поле Альтернативный код в измерениях)
mqtt-message = VALUE - в качестве сообщения топика публикуется значение параметра строкой
Для RabbitMQ данные публикуются в 2 очереди:
inspark-event - в нее публикуются события, в формате JSON объекта
inspark-measure - в нее публикуются измерения, в формате JSON объекта
Формат данных точно такой же, как и для MQTT JSON пакета
Поле ID брокера заполняется автоматически
Если получателю требуется определенный формат измерений/событий, необходимо заполнить данные сервера трансформации, т.е. заполнить следующие поля:
HTTP URL СЕРВЕРА ТРАНСФОРМАЦИИ ИЗМЕРЕНИЙ/СОБЫТИЙ - адрес сервера трансформации измерений
ТОПИК ДЛЯ ОТПРАВКИ ИЗМЕРЕНИЙ/СОБЫТИЙ - имя топика, в который публикатор передает измерения на сервер трансформации
ТОПИК ДЛЯ РЕЗУЛЬТАТА ВЫПОЛНЕНИЯ КОМАНД - имя топика, в который публикатор передает измерения в нужном формате получателю
ТОПИК ДЛЯ ПРИЕМА КОМАНД - имя топика, в который получатель передает команды обратно публикатору