Использование протокола MQTT в контроллерах ZONT

Материал из Библиотека

Микро Лайн

О документе

Уважаемые пользователи!

В настоящем документе приведена информация по использованию протокола MQTT для обмена данными контроллеров ZONT со сторонними устройствами поддерживающими этот протокол.

Обращаем Ваше внимание на то, что настоящий документ постоянно обновляется и корректируется. Это связано с разработкой и применением новых функций, которые не использовались ранее. В связи с этим тексты некоторых разделов могут изменяться и/или дополняться, а некоторые иллюстрации и скриншоты, представленные в документе, могут устареть.

Если Вы обнаружили ошибки и/или неточности — отправьте, пожалуйста, описание проблемы с указанием страницы документа на e-mail: support@microline.ru.

Актуальная версия документа также доступна на сайте zont.online в разделе "Поддержка. Техническая документация". Документ доступен для чтения и скачивания в формате *.pdf.


Общие сведения

Назначение и применение MQTT

MQTT (Message Queue Telemetry Transport) – небольшой, открытый и маловесный протокол обмена данными. Он используется для передачи информации между удаленными локациями в случае ограниченной пропускной способности канала и небольшого размера кода. Эти особенности позволяют применять его в Промышленном интернете вещей (IIoT), при Машинно-Машинном взаимодействии (М2М).

MQTT – протокол для потоковой передачи данных между устройствами с ограниченной мощностью CPU и/или временем автономной работы (смартфоны, различные датчики и прочие «умные» устройства, работающие на встроенных источниках питания), а также для сетей с платным трафиком или низкой пропускной способностью, непредсказуемой стабильностью или высокой задержкой.

Протокол ориентируется на простоту в использовании и легкую встраиваемость в любую систему, невысокую нагрузку на каналы связи и/или работу в условиях постоянной потери связи.

Область применения

Основное предназначение протокола MQTT – работа с телеметрией – получением данных от различных датчиков и устройств.

Использование протокола MQTT наиболее известный, масштабируемый и простой способ для развертывания распределенных вычислений. Это позволило расширить функциональность Интернета вещей (далее в тексте IoT), привлечь большую пользовательскую базу устройств и использовать MQTT как на бытовом уровне так и в промышленности.

Наиболее часто на практике протокол MQTT используется в:

  • Системах мониторинга инженерных систем и оборудования. На различном промышленном оборудовании, агрегатах и трубопроводах устанавливаются датчики, которые контролируют работу оборудования в режиме реального времени: снимают показания и передают значения в центр обработки данных. Все это позволяет мгновенно реагировать на проблемы, минимизировать поломки оборудования, исключить аварии и простои.
  • Системах мониторинга окружающей среды. Позволяет контролировать климатические показатели, температуру, влажность, давление, скорость ветра, наличие осадков, сейсмическую активность и устойчивость к ней зданий и сооружений. В удаленных регионах размещаются маломощные датчики, которые с заданным интервалом снимают информацию и передают ее на обработку через MQTT брокер.
  • Системы работы с важными данными. Например, учет биллинга мобильных операторов и провайдеров. Позволяют передавать информацию о текущем состоянии клиентских счетов без риска ее потери. Информация передается «точно один раз», что исключает также и ее дублирование, снижает количество аномалий.

Особенности протокола MQTT

MQTT использует для организации соединения и передачи информации протокол TCP/IP. По умолчанию применяется порт 1883. Если требуется дополнительно обеспечить защиту данных, используется SSL. В этом случае для подключения применяется порт 8883.

MQTT ориентирован на обмен сообщениями между устройствами по принципу «издатель – подписчик».

Как работает MQTT.jpg

Использование шаблона подписчика обеспечивает возможность устройствам выходить на связь и публиковать сообщения, которые не были заранее известны или предопределены, в частности, протокол не вводит ограничений на формат передаваемых данных.

В процессе взаимодействия принимает участие три категории пользователей:

  • Издатели: Это те, кто отправляют сообщения. Они указывают topic – тему. Как пример – датчики, снимающие показания с термометров или других устройств, подключенных к Интернету вещей.
  • Подписчики: Конечные получатели информации. Они могут работать с разными издателями, в зависимости от того, на какие топики они подписаны. Как пример – аналитическая облачная система.
  • Брокер: Это основной узел MQTT, обеспечивающий стабильную передачу информации между клиентами: издателями и подписчиками. Он получает информацию от издателя, обрабатывает ее, передает подписчикам, контролирует доставку. Роль брокера зачастую возлагается на сервер или контроллер.

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

  • Connect: установка доступа/соединения;
  • Disconnect: разрыв соединения;
  • Publish: публикация информации в topic;
  • Subscribe: подписка на topic;
  • Unsubscribe: отписка от topic.

Все эти действия выполняются с брокером.

Подключение

Протокол MQTT поддерживается контроллерами H1000+PRO.V2, H2000+PRO.V2, C2000+ PRO (версии прошивки не ниже 420).

MQTT на контроллерах ZONT работает по каналам связи Wi-Fi и Ethernet.

Примечание: По каналу GSM (мобильная сеть) MQTT не работает.

Настройка сервера

Пример настройки адреса MQTT сервера:

mqtt://username:password@mqtt.eclipseprojects.io:1883

Адрес : mqtt.eclipseprojects.io

Порт: 1883

Имя пользователя: username

Пароль: password

Пример настройки MQTT.jpg

Примечание: Если имя пользователя и пароль не используются, то их можно не указывать:

mqtt://mqtt.eclipseprojects.io:1883

Публикация данных

Датчик

{

“v”:12.3,

“a”:1

}

v - напряжение Вольты (значение float)

a - доступность датчика (0-не доступен, 1-доступен)

Термодатчик

{

“t”:23.5,

“a”:1

}

t - температура по цельсию (значение float)

a - доступность датчика (0-не доступен, 1-доступен)

Радио термодатчик

{

“t”:23.5,

“a”:1,

“h”:85,

“b” - 100,

“r” - 78

}

t - температура по цельсию (значение float)

a - доступность датчика (0-не доступен, 1-доступен)

h - влажность

b - уровень заряда батареи

r - rssi уровень сигнала

Отопительный контур

{

“s”:23.5,

“c”:1

}

s - целевая температура

с - текущая температура

Реле

{

“s”:1

}

s - текущее состояние (0 - выкл, 1 - вкл)

Насос

{

“s”:1

}

s - текущее состояние (0 - выкл, 1 - вкл)

Смеситель

{

“s”:1

}

s - текущее состояние (0 - не активен, 1 - открытие, 2 - закрытие)

Пользовательские элементы управления

{

“s”:1,

“t”:”Включено”

}

s - текущее состояние (0 - не активен, 1 - активен, > 0 - значения для аналогового регулятора)

t - текстовое представление статуса (название из настроек для активного или неактивного состояния)

Адаптер цифровой шины котла

{

“water”:45.6,

“dhw”:34.5,

“return”:30.4,

“modul”:99,

press:2.4,

state:1,

err:0

}

water - температура теплоносителя

dhw - температура ГВС

return - температура обратки

modul - уровень модуляции %

press - давление теплоносителя

state - состояние котла (0-выкл 1-работает 2-ошибка)

Подписка

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

Выбрать объект можно одним из трех способов:

  • Заданием id объекта в поле данных сообщения.
{

“Id”:12345,

“cmd”: command

}

  • Заданием имени объекта в поле данных сообщения.
{

“name”: “Кнопка”,

“cmd”: command

}

  • Заданием имени объекта в поле имени topic.

Пример имени топика:

ZONT/Дом/Управление/Кнопка

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

ZONT/Дом/Управление/#

Формат поля cmd для разных типов объектов