Перейти к основному содержимому

iRidium для MQTT

набор инструментов для создания интерфейса визуализации

Драйвер предназначен для управления оборудованием, работающим по протоколу MQTT. Для ознакомления используйте пример проекта:

Описание

iRidium для MQTT - это набор инструментов, позволяющий создать интерфейс для управления домом или офисом на базе оборудования, работающего по протоколу MQTT. Реализует команды протокола MQTT.

Поддерживаются: MQTT MQisdp и MQTT 3.1.1.

Подключение

примечание

Панели управления (iOS, Android, Windows, Mac) могут управлять оборудованием только через MQTT контроллер.

mqttConnection.png

Добавить драйвер MQTT можно с помощью импорта из CSV файла или ручным заполнением данных.

Импорт из CSV файла (*.csv)

Universal import from CSV File - это возможность импорта драйверов из таблицы, представленной в формате CSV.

Подробную инструкцию по созданию CSV файла и импорта этого файла в IRidium Studio можно прочитать по ссылке.

Добавление драйвера вручную

Добавьте драйвер MQTT в проект из базы данных iRidium:

  1. Запустите приложение iRidium Studio, создайте новый проект iRidium;
  2. Откройте боковую панель Device и выберите драйвер MQTT.

MQTTAddDevice.png

Обязательно укажите адрес контроллера в проекте iRidium, иначе он не будет работать.

Настройка параметров подключения

Когда драйвер добавлен в проект, нужно указать настройки подключения.

MQTTDriverParams.png

  • Host - IP-адрес контроллера,
  • Port - порт подключения к контроллеру,
  • Login - логин пользователя(Если задан на контроллере),
  • Password - пароль пользователя(Если задан на контроллере),
  • MQTT version - версия протокола на контроллере: 3 - устаревший протокол MQ Integrator SCADA Device Protocol (MQisdp), 4 - поддержка MQTT версии 3.1.1,
  • Client ID - идентификатор панели,
  • Keep Alive - время удержание соединения в секундах,
  • Clean - флаг "чистый старт", удаление подписок при разрыве соединения: true - чистая сессия, false - устойчивые соединения,
  • SSL - включить/выключить шифрование.
примечание
  • При использовании SSL/TLS используется только CA signed server certificate, сертификаты Self signed certificates и CA certificate only не поддерживаются.
  • В старой версии студии, для корректной работы драйвера, поле Client ID должно содержать уникальный идентификатор для каждой панели. В новой версии студии (iRidium Studio 2019) поле не обязательно к заполнению.

Изменение параметров подключения

Возможность смены параметров подключения нужна, если вы отключаетесь от Wi-Fi сети объекта автоматизации и начинаете использовать 3G или другую Wi-Fi сеть. Чтобы управление продолжило работать, нужно переключиться с локального на публичный IP адрес интернет-маршрутизатора.

Переключение не происходит автоматически, вам нужно будет нажать на клавишу выбора режима соединения. Для возможности удаленного доступа необходимо сделать порты управления системой автоматизации публичными. Для этого настраивают службу Port Forwarding на интернет-маршрутизаторе. Защищенное соединение может обеспечить VPN.

  1. Скачайте шаблон (*.js) (правая кнопка: "Сохранить объект как..."), добавьте шаблон в редактор скриптов клавишей (+) Add Script from file

  2. Настройте параметры скрипта, как показано в примере:

function Internal_1() {
IR.GetDevice('MQTT').SetParameters({Host: "192.168.0.95", Port: 5001, MQTTVersion: "4", ClientID: "client1", KeepAlive: 20, Clean: true, Login: "admin", Password: "admin"});
}
function External_1() {
IR.GetDevice('MQTT').SetParameters({Host: "215.110.10.10", Port: 5001, MQTTVersion: "4", ClientID: "client1", KeepAlive: 20, Clean: true, Login: "admin", Password: "admin"});
}

Скопируйте имя драйвера из Projсet Device Panel, список параметров нужно скопировать из примера в точности.

  1. Выберите кнопку, которая будет отвечать за переключение Internal и External параметров. Откройте Macros Editor для события Press (Object Properties > Programming), выберите команду Script Call и добавьте ее двойным кликом. Выберите имя функции, которую вызовет кнопка:

Script call internal-external.png

Теперь каждое нажатие на кнопку будет применять соответствующий набор настроек подключения.

Commands & Feedbacks

Команды и каналы обратной связи нужно привязать к графическим элементам для управления оборудованием:

  • Команда привязывается к графическому элементу.
  • Канал обратной связи привязывается к графическому элементу, чтобы отобразить состояние переменной

Чтобы связать команду или канал с графическим элементом, используйте метод drag&drop - перетягивание.

Чтобы отправить команду, нужно перетянуть ее на графический элемент. Чтобы отобразить обратную связь, нужно перетянуть канал на графический элемент, и указать, куда вывести значение (Value):

SendValue.png

Настройка

Для настройки команды или фидбека необходимо установить значение следующих полей:

  • Topic - путь MQTT (максимальный объём данных, передаваемых в топик MQTT, до 268435456 байт);
  • Value Type - тип значения;
  • QoS - качество обслуживания, гарантия доставки сообщения от издателя брокеру:
    • At most once - не более одного раза, без повторений, доставка не гарантируется;
    • At least once - один раз и более, могут быть повторения, доставка гарантируется;
    • Exactly once - ровно один раз, без повторений, доставка гарантируется.
  • Retain - сохранение публикации: брокер хранит retain-топик и при новых подписках рассылает его с флагом retain.

Value Types

ТипОписание
BooleanЛогический тип значения (true, false).
Signed 8-bitЗнаковое 8-битное значение.
Unsigned 8-bitБеззнаковое 8-битное значение.
Signed 16-bitЗнаковое 16-битное значение.
Unsigned 16-bitБеззнаковое 16-битное значение.
Signed 32-bitЗнаковое 32-битное значение.
Float 32-bit32-битное значение с плавающей точкой.
Unsigned 32-bitБеззнаковое 32-битное значение.
Signed 64-bitЗнаковое 64-битное значение.
Float 64-bit64-битное значение с плавающей точкой.
Unsigned 64-bitБеззнаковое 64-битное значение.
StringСтрока.

У контроллера WB, который транслирует ZigBee в MQTT, в одном топике содержится несколько значений. Для вывода этих значений необходимо прописать логику с помощью скрипта.

Пример:

var device = IR.GetDevice("MQTT");
var topic_value = 0;
var topic_name = "Aqara001"; // название фидбэка, как указано в драйвере

IR.AddListener(IR.EVENT_TAG_CHANGE, device, function(name, value) {
if (name == topic_name) {
try {
topic_value = JSON.Parse(value); // приходит строка, поэтому преобразуем в JSON
var humidity = topic_value.humidity; // берём из JSON только влажность
var pressure = topic_value.pressure; // берём из JSON только давление
var temperature = topic_value.temperature; // берём из JSON только температуру
var voltage = topic_value.voltage; // берём из JSON только напряжение
IR.Log("humidity = " + humidity);
IR.Log("pressure = " + pressure);
IR.Log("temperature = " + temperature);
IR.Log("voltage = " + voltage);
}
catch (err) {
IR.Log('Invalid data')
}
}
});