Связь ESP — KaScada через MQTT
В этой статье мы попробуем связать приложение HMI KaScada с контроллером ESP 8266 c помощью протокола MQTT.
Что такое MQTT?
MQTT или Message Queue Telemetry Transport — это легкий, компактный и открытый протокол обмена данными созданный для передачи данных на удалённых локациях, где требуется небольшой размер кода и есть ограничения по пропускной способности канала. Вышеперечисленные достоинства позволяют применять его в системах M2M (Машинно-Машинное взаимодействие) и IIoT (Промышленный Интернет вещей).
Для того, чтобы нам пользоваться данным протоколом, нам нужен сервер в сети интернет. Для работы с протоколом MQTT нам нужен специальный сервис — Брокер.
В интернете существует большое разнообразие различных брокеров. Но мы работали пока лишь с двумя — это CloudMQTT и Beebotte.
В этой статье мы рассмотрим сервис Beebotte. Вот его официальный сайт.
Регистрация на брокере и установка настроек
Регистрируемся и заходим в свой личный кабинет. По сути нам нужны всего четыре параметра:
- IP сервера или хост
- Порт
- Логин
- Пароль
Эту всю информацию можно найти на сервисе.
Итак, настройки:
Server: mqtt.beebotte.com
Port: 1883
Логин для авторизации берем здесь:
Пароль нам в данном случае не требуется.
Антиквариат Скупка спб. Стенд для красок смотрите на http://amd-expo.ru. кровельные материалы симферополь, акция.
В настоящее время Beebotte поддерживает только MQTT QoS level 0 и QoS level 1. Это уровень сообщений. 0 — это послал и забыл, 1 — это посылка сообщения с получением подтверждения.
Пишем программу для ESP8266
В нашей статье будет использоваться контроллер Node MCU v3.
Для написания ПО требуется программа FLprog версии 6.3.1.
После этого необходимо скачать пользовательские блоки для работы с протоколом MQTT. Библиотеки будут храниться в архиве с проектом.
Создаём новый проект, выбираем контроллер.добавляем пользовательские блоки:
Настраиваем контроллер в режиме клиента:
Вводим настройки вашего роутера — логин и пароль Wi-Fi.
Далее добавляем наши с вами библиотеки — основные настройки, подписчик и издатель.
MQTT ESP Main — вписываем настройки нашего сервера (IP, порт, и регистрационный ключ(это для beebotte)), вводим имя клиента.
MQTT ESP Pub — издатель, это когда нужно отправить данные из контроллера в KaScada. В нашем примере это реализовано с помощью кнопки. Отправляем 1 или 0. Send — это команда отправки сообщения, topic — это набор символов-идентификатора по которому будем отправлять сообщения, QoS — уровень сообщения, Retain — это сохранение в энергонезависимую память.
MQTT ESP Sub — подписчик, это то, что мы принимаем из KaScada в контроллер. в данном случае лампочка. Принимаем 0 или 1.
Важно!!! Топики должны соответствовать, то что вы указали в контроллере, так же должно быть и в приложении.
Пишем ПО для HMI KaScada
В приложении нужно добавить два функциональных блока MQTT_S — это подписчик, MQTT_P — это издатель.
С помощью переключателя мы даём 1 в сообщение, с помощью кнопки даём разрешение блоку работать.
Публикуем сообщения с помощью блока издателя MQTT_P.
Настройки блока MQTT_P:
В поле Login вводим свой секретный ключ.
MQTT_S — подписчик этот блок принимает сообщения с контроллера и включает лампочку.
Настройки все те же самые, только вводим нужный топик test0.
Основной источник https://hmi-kascada.ru/
С уважением, Гридин Семен