RU
+7 (499) 450-65-25

Дополнительные возможности MQTT-брокера

Дополнительные возможности MQTT-брокера

Создание объекта

Первое, что нужно сделать — это создать модель устройства.

Модель — это представление объекта в платформе. Удобнее всего использовать базовую модель MQTT, а потом расширять ее под свои задачи.

art-mqtt-1.png

Затем можно переходить к созданию объекта.

При создании идентификатора объекта стоит учитывать, что по нему в дальнейшем будет происходить распознавание объекта системой, поэтому идентификатор должен соответствовать ClientId MQTT клиента устройства.

При необходимости этот идентификатор можно затем изменить в любое время.

НАЧНИТЕ УЖЕ СЕЙЧАС

Для передачи сообщений в протоколе MQTT используется следующие поля:  topic (тема сообщения) и payload (полезная нагрузка сообщения). Платформа RIC не накладывает дополнительных ограничений на эти поля помимо ограничений спецификации протокола. Вся функциональность связанная с подписками на сообщения (например, wildcard topic) также работает.

Для получения и обработки данных нужно настроить модель устройства. Список параметров необходимо расширить в соответствии с данными, которые будут отправляться в MQTT-брокер.

Подробнее о назначении полей модели в разделе Модель объекта контроля.

art-mqtt-2.png

Окно редактирования параметра модели

Параметры могут быть различных типов, среди которых есть простые типы(число, строка, логический), массивы, объект.

Тип Объект позволяет удобно обрабатывать полезную нагрузку, полученную в формате JSON. Для этого необходимо создать параметр с этим типом данных. У этого параметра в поле Источник (Source) необходимо указать topic сообщения. Чтобы записать значения из JSON, нужно создать параметры, в которых поле Источник(Source)  формируется по следующему принципу: <id параметра объект>.<ключ значения из json>,  где

<id параметра объект> — ID параметра-объекта, с типом Объект (Object), <ключ значения из json> — ключ для получения значения из JSON-данных

Например, для разбора данных с topic room1/data” и с payload {"temperature": 27, "name": "room1"} нужно создать в модели следующие параметры.

Имя поляИдентификаторТипИсточник
ДанныеdataОбъектroom1/data
ТемператураtemperatureЧислоdata.temperature
Комнатаroom-nameСтрокаdata.name

В базовой модели MQTT есть пример такого параметра — блок Position (JSON). В этом сообщении в JSON могут передаваться координаты устройства.

Для подробной информации смотрите пример подключений MQTT устройства.

art-mqtt-3.png

Интерфейс объекта связан с его моделью.

В журнале объекта можно увидеть текущее состояние параметров, указанных в модели, посмотреть историю пакетов, статистику и историю команд.

Кроме того в журнале можно посмотреть график изменения значений параметров.

TLS

Для Secure MQTT в интерфейсе объекта можно сгенерировать x.509 сертификат для подключения по TLS. Чтобы исключить возможность подмены можно указать логин и пароль для MQTT-клиента.

art-mqtt-4.png

Команды

Отправить сообщение на конкретное устройство можно  также из вкладки “Команды” (Commands). В поля “Topic” и “Payload” указываются соответствующие параметры сообщения. Кроме того, в поле “Reply_topic” можно указать topic, сообщение по которому система посчитает за успешный ответ на команду.

art-mqtt-5.png

В модели устройства помимо параметров можно создать шаблоны MQTT-сообщений, которые будут отправлены на устройство при вызове их из интерфейса.

art-mqtt-6.png

Использование ботов

RIC позволяет разрабатывать и тестировать свои решения без подключения реальных устройств. Для этого можно использовать встроенный инструмент “Боты”. Он помогает быстро и удобно эмулировать работу устройства, отправлять данные в систему прямо из интерфейса объекта. Использование “Ботов” экономит время при тестировании устройств и обеспечения их взаимодействия с другими сущностями платформы.

art-mqtt-7.png

art-mqtt-8.png

Включить эту опцию у объекта можно с помощью переключателя в поле “Использовать как бота”. При этом у объекта появляется соответствующие инструменты в интерфейсе. Подробнее об этом можно прочитать в документации.

ПОПРОБОВАТЬ БЕСПЛАТНО

Автоматизация с помощью “Логики”

Чтобы определить логику поведения объекта можно использовать инструмент Логика. В интерфейсе платформы можно создавать различные сценарии, которые позволят контролировать состояние объекта и выполнять какие-либо действия, например организовать отправку команд. Все зависит от ваших идей и потребностей!

Инструмент “Обработчики”

Постобработку полученных данных можно создать с помощью инструмента Обработчики. Это позволяет обработать данные, полученные от устройства, отфильтровать некорректную информацию, и многое др. Например это удобно если необходимо применить какую-нибудь формулу к нескольким полученным параметрам, чтобы получить результирующее значение или разобрать бинарные данные.  Обработчик представляет собой исходный код, написанный на языке программирования JavaScript версии ES6, при помощи которого реализуется заложенный в нем алгоритм.

Мониторинг

В платформе есть ряд встроенных инструментов позволяющих работать с географическими координатами объекта. Для этого в модели должны присутствовать параметры Широта (идентификатор параметра lat) и Долгота (идентификатор параметра lon). Наличие этих параметров позволит отслеживать положение объекта и  использовать инструмент построения треков его перемещения.

Ограничения использования MQTT-Брокера

  1. Не поддерживается флаг Retain.

  2. Не поддерживается флаг CleanSession.

  3. Не поддерживается срок действия сообщения.

  4. Осложнена работа с unicode. В интерфейсе нет инструментов для обработки и отображения таких данных. Будем работать над этой проблемой.

  5. Не полностью реализована работа с идентификаторами подписок.

  6. Не поддерживается расширенная авторизация (SCRAM-SHA-1, GS2-KRB5 и т.д.). Сейчас формируется ошибка в connack.

Помимо стандартного MQTT-брокера в RIC реализовано множество инструментов для работы с MQTT v5.0.Все зависит от ваших задач: для экономии времени при тестировании используйте «Боты», для автоматизации — «Логику», для обработки и преобразования информации — «Обработчики»