Эта страница является
переводом страницы
CloudMQTT. Перевод выполнен на 100%.
Подключение устройств Modbus TCP к облачным сервисам MQTT
MQTT предоставляет преимущества как телеметрический протокол: он обеспечивает обмен данными между устройствами (клиентами) в условиях ненадёжной или непостоянной связи. Устройства могут отключаться от сети, но при повторном подключении MQTT-брокер гарантированно передаст сообщение.
В последнее время набирают популярность различные облачные сервисы с MQTT-брокерами, например, Центр Интернета вещей Azure от Microsoft или AWS IoT от Amazon.
Вы можете подключить к облачным сервисам MQTT устройства, не поддерживающие MQTT, например, Modbus-устройства, используя для этого iRidium server как шлюз.
Описание примера
iRidium server используется для подключения устройств Modbus TCP к облачному сервису CloudMQTT. Также к сервису подключается панель, для которой разрабатывается отдельный проект с графическим интерфейсом. Таким образом появляется возможность удалённо управлять устройствами в сети Modbus TCP по телеметрическому протоколу MQTT.
Настройка CloudMQTT
CloudMQTT предлагает различные планы использования.
Вы можете выбрать бесплатный план Cute Cat, который предоставляет виртуальный сервер (не выделенный), максимум 5 пользователей, 5 правил доступа и 5 соединений, трафик 10 кБит/с. Этот план не рекомендуется для коммерческого использования, но отлично подойдёт для тестирования и домашнего хобби.
1 Зарегистрируйтесь на сайте CloudMQTT и войдите под учётной записью.
2 Нажмите кнопку "Create New Instance".
3 Задайте имя инстанса, план использования и географическое расположение сервера (Data Center).
Нажмите кнопку "Create New Instance".
4 Кликните на имя созданного инстанса, чтобы перейти к его настройкам.
5 На вкладке DETAILS отобразятся все данные, необходимые для подключения к облачному сервису.
Настройка iRidium server
Настройка драйвера MQTT
1 Создайте проект сервера.
2 Добавьте драйвер MQTT в проект.
3 Настройте драйвер в соответствии со вкладкой DETAILS инстанса сервиса CloudMQTT:
- Host - адрес инстанса сервиса (Server)
- Port - порт инстанса:
- 13816 (незащищённое соединение),
- 23816 (защищённое соединение SSL),
- 33816 (защищённое содинение WebSocket; не поддерживается iRidium pro)
- Login - логин для доступа к инстансу (User)
- Password - пароль для доступа к инстансу (Password)
- Client ID - идентификатор MQTT-клиента, уникальное имя для каждого устройства MQTT
- SSL - метод шифрования:
- Disable
- TLS 1.2 (рекомендуется)
- SSL 2.3
- SSL 3.0 (не поддерживается CloudMQTT)
Подробнее: Настройка параметров подключения MQTT.
4 Создайте необходимое количество каналов и тэгов. Настройте каждый канал и тэг.
CloudMQTT позволяет задавать параметру Topic произвольную строку. Рекомендуется задавать Topic в стандартной иерархической форме, напоминающей адресную строку файловой системы, например:
/place/device_name/group_name/parameter_name
Подробнее: Настройка параметров каналов и фидбеков MQTT.
Настройка драйвера Modbus TCP
1 Добавьте драйвер Modbus TCP.
2 Настройте параметры подключения.
3 Создайте необходимое количество команд и тэгов в драйвере.
4 Настройте каждую команду и тэг в соответствии с задачей.
Шлюз между драйверами MQTT и Modbus TCP
1 Добавьте скрипт в проект:
var driver1 = IR.GetDevice("MQTT"); // name of a driver 1
var driver2 = IR.GetDevice("Modbus TCP"); // name of a driver 2
var gatemap = {
// Tag name Channel name
"Door_switch" : "MQTT_Door_switch",
"Ring_button" : "MQTT_Ring_button",
"Outdoor_temperature" : "MQTT_Outdoor_temperature",
"Indoor_temperature" : "MQTT_Indoor_temperature",
"MQTT_Lock" : "Lock",
"MQTT_Siren" : "Siren",
"MQTT_Dimmer_R" : "Dimmer_R",
"MQTT_Dimmer_G" : "Dimmer_G",
"MQTT_Dimmer_B" : "Dimmer_B",
"MQTT_Dimmer_ON" : "Dimmer_ON"
};
IR.AddListener(IR.EVENT_TAG_CHANGE, driver1, function(name, value) {
if (gatemap[name]) {
driver2.Set(gatemap[name], value);
}
});
IR.AddListener(IR.EVENT_TAG_CHANGE, driver2, function(name, value) {
if (gatemap[name]) {
driver1.Set(gatemap[name], value);
}
});
2 Не забудьте в скрипте задать правильные имена драйверов, между которыми организуется шлюз, а также карту шлюза.
Карта шлюза (переменная gatemap) представляет с собой список соответствующих пар имён тэгов и каналов двух разных драйверов. Между парами этих тэгов и каналов и будет происходить обмен данными. Вы можете дополнять этот список.
Неуправляемый шлюз
Выше был приведён метод управляемого шлюза между драйверами, который требовал указания карты шлюза тэгов и каналов. В случае управляемого шлюза вы можете указать, какие данные нужно пересылать с тэга одного драйвера на канал другого драйвера, а какие - нет.
Может быть применён более простой скрипт, в котором не нужно будет задавать карту шлюза. В этом случае шлюз будет называться неуправляемым и все данные будут пересылаться с тэгов на каналы. При этом необходимо, чтобы имена тэги одного драйвера совпадали с именами каналов другого драйвера, и наоборот.
1 Задайте одинаковые имена тэгам драйвера MQTT и каналам драйвера Modbus TCP, и соответственно - тэгам драйвера Modbus TCP и каналам драйвера MQTT.
2 Удалите предыдущий скрипт. Вместо него добавьте скрипт:
// Assign the same names to tags of first driver and to channels of second driver,
// and accordingly - to tags of second drivers and to channels of first driver.
var driver1 = IR.GetDevice("MQTT"); // name of a driver 1
var driver2 = IR.GetDevice("Modbus TCP"); // name of a driver 2
IR.AddListener(IR.EVENT_TAG_CHANGE, driver1, function(name,value) {
driver2.Set(name, value);
});
IR.AddListener(IR.EVENT_TAG_CHANGE, driver2, function(name,value) {
driver1.Set(name, value);
});
3 В этом скрипте достаточно лишь указать имена драйверов.
Настройка проекта i3 pro
1 Создайте проект панели.
2 Добавьте драйвер MQTT.
3 Настройте подключение к сервису CloudMQTT аналогично тому, как это было сделано в проекте сервера, а именно: введите те же параметры подключения драйвера MQTT (Host, Port, Login, Password). Назначьте другой идентификатор клиента (Client ID), чтобы сервис CloudMQTT мог отличать подключающихся клиентов друг от друга.
4 Создайте необходимое количество команд и тэгов. Те переменные, которые были командами в сервере, в панели должны сопоставлены тэгам, и наоборот, тэги в сервере должны соответствовать командам в панели.
5 У команд и тэгов следует задать параметры Topic и Value Type так же, как у соответствующих каналов сервера.
6 Создайте графический интерфейс. Свяжите графические элементы с командами и тэгами драйвера MQTT по событиям или связями.
Тестирование проектов
1 Запустите проект сервера и проект панели в любом порядке. Вы можете использовать для этого эмулятор i3 pro и iRidium server для Windows.
2 Перейдите на вкладку CONNECTIONS инстанса CloudMQTT. На этой вкладке отображается состояние MQTT-соединений.
3 Перейдите на вкладку WEBSOCKET UI, используемую разработчиками для тестирования. Здесь вы можете просматривать все получаемые MQTT-сообщения и отправлять их.
4 Вы может использовать любой эмулятор сервера Modbus TCP, например, бесплатный Modbus PLC Simulator для тестирования проекта.
В рассматриваемом примере все издатели и подписчики имеют полные права доступа на MQTT-топики, но Вы можете задать правила и ограничения на вкладке USERS & ACL инстанса CloudMQTT.