Kaiten

[PMO] База знаний функциональности (интернет)

To Kaiten

MQTT

Аргументы

В случае MQTT источник данных для аргумента - это топик, по которому устройство отправляет значение этого параметра.

Например, если устройство отправляет значение влажности в пакете с топиком base/state/humidity, то именно этот топик необходимо указать в качестве источника в данном параметре.

Для того чтобы отправить несколько параметров в одном пакете, воспользуйтесь форматом JSON при построении payload. Например, отправить две координаты в одном пакете можно, указав топик как base/state/pos, a payload в виде { "lat": 55.55, "lon": 33.33 }

Как же разобрать такой сложный пакет по модели? На помощь приходит параметр с типом данных Объект:

  1. Создайте аргумент с типом данных Объект, в источнике укажите тот топик, по которому ожидаете данные - в данном случае base/state/pos. Задайте некоторый идентификатор - например, pos.

  1. Создайте еще два узла - под каждое поле из JSON. В данном случае это узлы для широты и долготы. У каждого из этих параметров укажите тип данных, соответствующий типу этих значений в JSON. В нашем пакете координаты передаются как числа, поэтому укажите тип данных Число.

  2. Источник у каждого из узлов сформируйте в виде <идентификатор_узла_с_типом_объект>.<нужное_поле_из_json>. Для координат из примера источники получаются следующие: pos.lat и pos.lon.

Если аргументы для полей из JSON вы укажете на уровень ниже аргумента-объекта, тогда аргумент-объект выступит как подсистема и отображаться в интерфейсе не будет.

Если же аргументы для полей из JSON находятся на одном уровне с аргументом-объектом, тогда в интерфейсе объекта отобразятся как аргументы для полей (в данном случае в виде чисел), так и аргумент для объекта (в виде строки JSON).

Действия

В случае MQTT при заполнении действия в поле Отправить выберите PUBLISH (Опубликовать). После этого укажите, с какими параметрами необходимо опубликовать сообщение:

  • Topic (Топик), с которым передается команда в виде сообщения на устройство;

  • Payload (Данные) - полезная нагрузка, содержащая текст передаваемого сообщения;

  • Ответить в - топик, при получении пакета с которым команда считается выполненной. Как вариант, можно создать команду для получения состояния устройства и указать в поле Ответить в топик, по которому устройство отправляет свое состояние - например, leds/state. Тогда при отправке этой команды, даже если вы получите от устройства Ack (PUBACK – Publish acknowledgement) или какие-то пакеты с другими топиками, команда не будет считаться выполненной до тех пор, пока не придет пакет именно с указанным нами топиком leds/state. Если поле Ответить в не заполнено, то команда будет считаться выполненной при получении Ack от устройства.