Первое, что нужно сделать — это создать модель устройства.
Модель — это представление объекта в платформе. Удобнее всего использовать базовую модель MQTT, а потом расширять ее под свои задачи.
Затем можно переходить к созданию объекта.
При создании идентификатора объекта стоит учитывать, что по нему в дальнейшем будет происходить распознавание объекта системой, поэтому идентификатор должен соответствовать ClientId MQTT клиента устройства.
При необходимости этот идентификатор можно затем изменить в любое время.
Для передачи сообщений в протоколе MQTT используется следующие поля: topic (тема сообщения) и payload (полезная нагрузка сообщения). Платформа RIC не накладывает дополнительных ограничений на эти поля помимо ограничений спецификации протокола. Вся функциональность связанная с подписками на сообщения (например, wildcard topic) также работает.
Для получения и обработки данных нужно настроить модель устройства. Список параметров необходимо расширить в соответствии с данными, которые будут отправляться в MQTT-брокер.
Подробнее о назначении полей модели в разделе Модель объекта контроля.
Окно редактирования параметра модели
Параметры могут быть различных типов, среди которых есть простые типы(число, строка, логический), массивы, объект.
Тип Объект позволяет удобно обрабатывать полезную нагрузку, полученную в формате 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 устройства.
Интерфейс объекта связан с его моделью.
В журнале объекта можно увидеть текущее состояние параметров, указанных в модели, посмотреть историю пакетов, статистику и историю команд.
Кроме того в журнале можно посмотреть график изменения значений параметров.
Для Secure MQTT в интерфейсе объекта можно сгенерировать x.509 сертификат для подключения по TLS. Чтобы исключить возможность подмены можно указать логин и пароль для MQTT-клиента.
Отправить сообщение на конкретное устройство можно также из вкладки “Команды” (Commands). В поля “Topic” и “Payload” указываются соответствующие параметры сообщения. Кроме того, в поле “Reply_topic” можно указать topic, сообщение по которому система посчитает за успешный ответ на команду.
В модели устройства помимо параметров можно создать шаблоны MQTT-сообщений, которые будут отправлены на устройство при вызове их из интерфейса.
RIC позволяет разрабатывать и тестировать свои решения без подключения реальных устройств. Для этого можно использовать встроенный инструмент “Боты”. Он помогает быстро и удобно эмулировать работу устройства, отправлять данные в систему прямо из интерфейса объекта. Использование “Ботов” экономит время при тестировании устройств и обеспечения их взаимодействия с другими сущностями платформы.
Включить эту опцию у объекта можно с помощью переключателя в поле “Использовать как бота”. При этом у объекта появляется соответствующие инструменты в интерфейсе. Подробнее об этом можно прочитать в документации.
Чтобы определить логику поведения объекта можно использовать инструмент Логика. В интерфейсе платформы можно создавать различные сценарии, которые позволят контролировать состояние объекта и выполнять какие-либо действия, например организовать отправку команд. Все зависит от ваших идей и потребностей!
Постобработку полученных данных можно создать с помощью инструмента Обработчики. Это позволяет обработать данные, полученные от устройства, отфильтровать некорректную информацию, и многое др. Например это удобно если необходимо применить какую-нибудь формулу к нескольким полученным параметрам, чтобы получить результирующее значение или разобрать бинарные данные. Обработчик представляет собой исходный код, написанный на языке программирования JavaScript версии ES6, при помощи которого реализуется заложенный в нем алгоритм.
В платформе есть ряд встроенных инструментов позволяющих работать с географическими координатами объекта. Для этого в модели должны присутствовать параметры Широта (идентификатор параметра lat) и Долгота (идентификатор параметра lon). Наличие этих параметров позволит отслеживать положение объекта и использовать инструмент построения треков его перемещения.
Не поддерживается флаг Retain.
Не поддерживается флаг CleanSession.
Не поддерживается срок действия сообщения.
Осложнена работа с unicode. В интерфейсе нет инструментов для обработки и отображения таких данных. Будем работать над этой проблемой.
Не полностью реализована работа с идентификаторами подписок.
Не поддерживается расширенная авторизация (SCRAM-SHA-1, GS2-KRB5 и т.д.). Сейчас формируется ошибка в connack.
Помимо стандартного MQTT-брокера в RIC реализовано множество инструментов для работы с MQTT v5.0.Все зависит от ваших задач: для экономии времени при тестировании используйте «Боты», для автоматизации — «Логику», для обработки и преобразования информации — «Обработчики»