MQTT клиент для Arduino, ESP8266, ESP32

Обмен сообщениями между устройствами

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 103
Имя: Евгений

MQTT клиент для Arduino, ESP8266, ESP32

#1

Сообщение User8 » 08.09.2018{, 14:04}

Подробнее про MQTT:
https://ipc2u.ru/articles/prostye-reshe ... akoe-mqtt/

Установка брокера:
Windows: https://youtu.be/jFUPy1q3ze8
Linux: https://youtu.be/sNSWxyO6XSk
Raspberry Pi / Orange Pi: https://youtu.be/b7NRT-RNPOU
https://robot-on.ru/articles/ystanovka- ... -orange-pi
OpenWrt: https://youtu.be/ADBct61FLsU
Брокер на ESP8266: viewtopic.php?f=133&t=4117
https://youtu.be/QFdx8bnVRHc

Быстрый старт без установки брокера используя сайт beebotte.com:
https://youtu.be/XVnY4za6-uU
viewtopic.php?f=71&t=6293
Брокер от пользователя форума:
viewtopic.php?f=151&t=6474&sid=dc2ead44 ... =20#p91410

Настройка и использование MQTT в FLProg:
https://www.youtube.com/watch?v=QGQpr_Rc8mo
https://www.youtube.com/watch?v=KVksHJS-y-A
https://www.youtube.com/playlist?list=P ... oBGySyEDaU

Управление с помощью Яндекс Алисы и mqtt:
viewtopic.php?f=187&t=7602

Группы в Telegram:
https://t.me/joinchat/6CFnBYY5BUM0ZmZi
https://t.me/joinchat/BRr4VVHiIr1B3pMJNvlzEg

Описание блока Main: (Настройки клиента)
mqttServer - ip или домен mqtt брокера (нужно указывать без https://).
mqttPort - порт mqtt брокера (по умолчанию: 1883).
mqttUser - имя пользователя на брокере, можно использовать один логин и пароль на всех mqtt клиентах.
mqttPassword - пароль.
mqttClientId - любое уникальное название на английском, нужно для идентификации на брокере. Для всех клиентов должно быть разное.
Выход mqttConnected - на данном выходе будет единица, если есть подключение к брокеру.
Last Will сообщение - сообщение, которое будет отправлено в указанный топик, после отключения клиента от брокера.
По умолчанию Will топик равен установленному значению на входе mqttClientId.
Пример: мы указали в настройках: willMessageOnline: 1; willMessageOffline: 0; willTopic: client1;
После старта esp и подключению к брокеру, в топик client1 будет отправлено сообщение 1, а при отключении esp от брокера в топик client1 будет отправлено сообщение 0. Параметром keepAlive можно отрегулировать, через сколько секунд брокер отправит сообщение willMessageOffline после отключения esp от брокера. Не рекомендуется ставить меньше 5 секунд.

Описание блока Sub: (Прием сообщения)
Unsubscribe - при удержании единицы происходит отписка от топика, сообщения в топик перестают приходить. При пропадании единицы происходит подписка на топик снова. Данный вход может быть полезен для получения периодических сообщений, когда только нужно или один раз при старте контроллера, можно использовать для оптимизации программы.
Topic - топик для получения сообщения.
QoS - можно указать 0, 1 или 2. Если не указывать ничего, то сообщение принимается с QoS 0.
- Если вы поставили на блоке pub QoS 2, то на блоке sub вы также должны выставить QoS 2 для приема недоставленных сообщений.
- Для корректной работы QoS 1 и 2, на брокере и всех esp должен быть выставлен Clean Session = false.
Выход Received - на данном выходе будет единица в один цикл при получении любого сообщения в топик.
Выход Message - получение сообщения из указанного на входе топика.

Описание блока Pub: (Отправка сообщения)
Send - при поступлении на данный вход единицы, будет отправлено сообщение один раз. Данный вход имеет встроенный Rtrig, не используйте внешний.
Topic - топик, куда будет отправлено сообщение. (Пример: house/room1/lamp1/status)
Message - сообщение, которое будет отправлено на брокер.
QoS - можно указать 0, 1 или 2. Если не указывать ничего, то сообщение отправляется с QoS 0.
- Esp не сохраняет у себя неотправленные сообщения, вы должны сами проконтролировать, чтобы сообщение дошло до брокера с QoS 1 и 2, после чего брокер возьмет на себя ответственность по доставке сообщений с QoS 1 и 2.
- Используйте qos 1 и 2 только для очень важных сообщений, не нужно использовать qos для отправки например показаний температуры или других показаний с датчиков.
Retain - если true, последнее отправленное сообщение сохраняется на mqtt брокере. Это сообщение будет получать подписчик при подключении к брокеру.
Выход qosDelivered - нужен для контроля доставки сообщений с QoS 1 и 2 до брокера. При подаче и удерживании единицы на входе Send, на выходе qosDelivered будет единица, если сообщение доставлено на брокер. Единица будет держаться на данном выходе пока на входе Send не пропадет единица.

Не забудьте включить wifi клиент в настройках контроллера и указать данные вашей wifi сети.

Библиотека: viewtopic.php?p=61491#p61491
Последняя версия библиотеки: https://github.com/marvinroger/async-mqtt-client

Новая версия блоков:
viewtopic.php?p=113908#p113908

Блоки для Ethernet Arduino: viewtopic.php?p=61490#p61486
Main блок для ESP32: viewtopic.php?p=61490#p61490
Копии блоков для ESP8266 и ESP32, для подключения к двум брокерам одновременно: viewtopic.php?p=61489#p61489
Блоки для ESP8266:
Вложения
MQTT_ESP_Main_6_8_(CODE).ubi
(521.53 КБ) 2749 скачиваний
MQTT_ESP_Sub_6_8_(CODE).ubi
(38.95 КБ) 2569 скачиваний
MQTT_ESP_Pub_6_8_(CODE).ubi
(44.63 КБ) 2664 скачивания
Последний раз редактировалось User8 28.01.2023{, 01:57}, всего редактировалось 175 раз.

zik12
Рядовой
Сообщения: 31
Зарегистрирован: 19.02.2020{, 16:50}
Репутация: 0
Имя: Алексей

MQTT клиент для Arduino, ESP8266, ESP32

#441

Сообщение zik12 » 06.10.2021{, 21:21}

Sancho писал(а):
06.10.2021{, 16:16}
Нажмите и удерживайте boot и кратко нажмите сброс, затем отпустите boot и вгружайте.

Всё это проделывать когда в IDE закончится компиляция и появится Connecting?

starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

MQTT клиент для Arduino, ESP8266, ESP32

#442

Сообщение starshoy81 » 06.10.2021{, 22:40}

zik12, таки посмотрите уже какое-нибудь видео, где показано - как и что делать.

zik12
Рядовой
Сообщения: 31
Зарегистрирован: 19.02.2020{, 16:50}
Репутация: 0
Имя: Алексей

MQTT клиент для Arduino, ESP8266, ESP32

#443

Сообщение zik12 » 07.10.2021{, 09:12}

starshoy81, смотрел и видео и делал как вчера говорили - не помогает. Может с настройками IDE что-то не так?
настр.jpg

cristianu
Рядовой
Сообщения: 1
Зарегистрирован: 09.11.2021{, 23:35}
Репутация: 0
Имя: Cristian

MQTT клиент для Arduino, ESP8266, ESP32

#444

Сообщение cristianu » 11.11.2021{, 00:14}

Can you help me with this issue?
I have used MqTT_ESP_Main_6_8



sketch_nov10a:17:1: error: 'WiFiEventHandler' does not name a type
WiFiEventHandler wifiConnectHandler;
^
sketch_nov10a:18:1: error: 'WiFiEventHandler' does not name a type
WiFiEventHandler wifiDisconnectHandler;
^
sketch_nov10a:115:26: error: 'WiFiEventStationModeGotIP' does not name a type
void onWifiConnect(const WiFiEventStationModeGotIP& event)
^
sketch_nov10a:119:29: error: 'WiFiEventStationModeDisconnected' does not name a type
void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)
^
C:\Users\IT\Documents\Arduino\sketch_nov10a\sketch_nov10a.ino: In function 'void setup()':
sketch_nov10a:38:5: error: 'wifiConnectHandler' was not declared in this scope
wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);
^
sketch_nov10a:38:31: error: 'class WiFiClass' has no member named 'onStationModeGotIP'
wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);
^
sketch_nov10a:39:5: error: 'wifiDisconnectHandler' was not declared in this scope
wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
^
sketch_nov10a:39:34: error: 'class WiFiClass' has no member named 'onStationModeDisconnected'
wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
^
C:\Users\IT\Documents\Arduino\sketch_nov10a\sketch_nov10a.ino: At global scope:
sketch_nov10a:115:26: error: 'WiFiEventStationModeGotIP' does not name a type
void onWifiConnect(const WiFiEventStationModeGotIP& event)
^
sketch_nov10a:119:29: error: 'WiFiEventStationModeDisconnected' does not name a type
void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)
^
Multiple libraries were found for "WiFi.h"
Used: C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
'WiFiEventHandler' does not name a type
Вложения
Untitled.png
issue.ino
(10.51 КБ) 37 скачиваний
mqtt esp.flp
(1.1 МБ) 32 скачивания

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

MQTT клиент для Arduino, ESP8266, ESP32

#445

Сообщение Phazz » 11.11.2021{, 05:56}


Аватара пользователя
dimaspec
Рядовой
Сообщения: 20
Зарегистрирован: 24.09.2015{, 19:16}
Репутация: 0

MQTT клиент для Arduino, ESP8266, ESP32

#446

Сообщение dimaspec » 13.11.2021{, 23:17}

Пробую разобраться с работой MQTT на ESP8266, подписка работает хорошо, публикация работает только если значение константа, если значение задается блоком рандом (имитация температуры) то ESP8266 перестает подключатся к точке доступа. Возможно кто-то с проблемой публикации сталкивался, использую FLProg7.3.8, MQTT_ESP_Pub_6_8_(CODE).
Вложения
MQTT_Beebotte_Work_pub_sub_1.flp
(1.63 МБ) 49 скачиваний

Аватара пользователя
dimaspec
Рядовой
Сообщения: 20
Зарегистрирован: 24.09.2015{, 19:16}
Репутация: 0

MQTT клиент для Arduino, ESP8266, ESP32

#447

Сообщение dimaspec » 14.11.2021{, 12:19}

dimaspec писал(а):
13.11.2021{, 23:17}
Пробую разобраться с работой MQTT на ESP8266, подписка работает хорошо, публикация работает только если значение константа, если значение задается блоком рандом (имитация температуры) то ESP8266 перестает подключатся к точке доступа. Возможно кто-то с проблемой публикации сталкивался, использую FLProg7.3.8, MQTT_ESP_Pub_6_8_(CODE).
Публикация в топик заработала когда поменял настройки блока SConv, конвертацию строки в место DEC поставил на HEX или BIN, а с DEC не работает.
Вложения
7.4.0_32x_MQTT_6_8.flp.flp
(1.45 МБ) 56 скачиваний

vitaly1974
Рядовой
Сообщения: 2
Зарегистрирован: 04.11.2021{, 21:55}
Репутация: 0
Имя: Виталий

MQTT клиент для Arduino, ESP8266, ESP32

#448

Сообщение vitaly1974 » 14.11.2021{, 20:38}

добавьте пожалуйста в блоки, вход-"перезагрузить блок" , когда работает на входе три кнопки, 1 сенсорная, другая двойная, третьей алиса управлять должна, очень трудно строить логику чтобы все в куче работали . а то вот такой геморой на 2 кнопки и 1 лампочку получается :shok:
Вложения
2021-11-14_21-08-44.png

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

MQTT клиент для Arduino, ESP8266, ESP32

#449

Сообщение Phazz » 15.11.2021{, 12:44}

vitaly1974, а что за двойная кнопка?

Отправлено спустя 5 минут 14 секунд:
ну в любом случае вы сильно перемудрили )

zakhar81
Рядовой
Сообщения: 35
Зарегистрирован: 25.05.2021{, 08:47}
Репутация: 3
Имя: Захар

MQTT клиент для Arduino, ESP8266, ESP32

#450

Сообщение zakhar81 » 19.11.2021{, 05:28}

Уважаемые форумчане кто может помочь, при необходимости не за бесплатно!
Блоки, те что в этой ветке доступны для скачивания (MQTT_ESP_Main) используют библиотеку с протоколом V3.1.1 для работы c брокером
Но у моего брокера к сожалению версия протокола V3.1, другого рабочего с нормальным автозапуском просто нет под андроид.
Virtuino с ним работает нормально, так как поддерживает все протоколы

Отправлено спустя 1 минуту 34 секунды:
Вот эта библиотека используется
https://github.com/marvinroger/async-mqtt-client#readme
Features
Compliant with the 3.1.1 version of the protocol
Fully asynchronous
Subscribe at QoS 0, 1 and 2
Publish at QoS 0, 1 and 2
SSL/TLS support
Available in the PlatformIO registry

Так вот, может ли кто нибудь доработать блоки используя другую библиотеку которая поддерживает оба протокола или именно V3.1?

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

MQTT клиент для Arduino, ESP8266, ESP32

#451

Сообщение slon-genia » 23.11.2021{, 00:55}

Спасибо разработчику за блоки. Работают на кухне - управляют вентилятором и освещением. Вентилятор включается по влажности. По MQTT протоколу передаются данные на сервер IObroker, от туда же могу управлять в локальном режиме, и менять уставки с записью в EEPROM. Блоки стабильно работают уже год. Сейчас тестю на ARDUINO NANO, пока всё нормально.

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT клиент для Arduino, ESP8266, ESP32

#452

Сообщение SerOv » 05.12.2021{, 12:56}

Всем привет. Подскажите, что случилось с автором Блоков? На форум он давно не заглядовал. И нет ответа на личные сообщеения. Появились проблемы с блоками после обновление arduino 1.8.16. хотел поинтересоваться в чем может быть проблема?

User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 103
Имя: Евгений

MQTT клиент для Arduino, ESP8266, ESP32

#453

Сообщение User8 » 05.12.2021{, 12:58}

SerOv, никуда не делся, но микроконтроллерами щас пока не занимаюсь :smile44:
В первом посте есть ссылка на гитхаб на последнюю версию библиотеки, может поможет.

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT клиент для Arduino, ESP8266, ESP32

#454

Сообщение SerOv » 05.12.2021{, 13:57}

Из папки Flprog 741\ideV8\portable\sketchbook\libraries удалит старую версиию. Установил новую async-mqtt-client-develop.zip
Но не помогло. Единица (когда устанавливается связь с MQTT) так и пропадает. Сначала появляется, а затем через 15 сек примерно устанавливается ноль. И он держится.

zakhar81
Рядовой
Сообщения: 35
Зарегистрирован: 25.05.2021{, 08:47}
Репутация: 3
Имя: Захар

MQTT клиент для Arduino, ESP8266, ESP32

#455

Сообщение zakhar81 » 05.12.2021{, 19:22}

У вас с брокером проблема походу
Он свой или внешний?

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT клиент для Arduino, ESP8266, ESP32

#456

Сообщение SerOv » 05.12.2021{, 20:18}

zakhar81 писал(а):
05.12.2021{, 19:22}
У вас с брокером проблема походу
Он свой или внешний?
свой. если прошить этот проект в 7.3.5 то работает хорошо.
Проба4S.flp
(1.68 МБ) 62 скачивания

zakhar81
Рядовой
Сообщения: 35
Зарегистрирован: 25.05.2021{, 08:47}
Репутация: 3
Имя: Захар

MQTT клиент для Arduino, ESP8266, ESP32

#457

Сообщение zakhar81 » 10.12.2021{, 07:27}

Тогда видимо проблема в другом
Если первые несколько секунд работает потом отваливается, может быть там проблема не с обменом MQTT а со связью что нибудь, может WiFi отваливается
После потери связи с брокером веб морда доступна у самого ESP?
Короче проверю в ближайшие дни свои проекты на бетта версии, отпишусь

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT клиент для Arduino, ESP8266, ESP32

#458

Сообщение SerOv » 10.12.2021{, 07:52}

zakhar81 писал(а):
10.12.2021{, 07:27}
Тогда видимо проблема в другом
Если первые несколько секунд работает потом отваливается, может быть там проблема не с обменом MQTT а со связью что нибудь, может WiFi отваливается
После потери связи с брокером веб морда доступна у самого ESP?
Короче проверю в ближайшие дни свои проекты на бетта версии, отпишусь
На ESP Web страницы нет. Данные передаются на IoBroker. Поставил счётчик и залил в ESP. Ну так вот. Единица пропадает после примерно 15-20 сек. Сданные со счётчика приходят и он продолжает считать. И это хорошо видно в IoBrokere.
Вот здесь подробнее.
viewtopic.php?f=39&t=7668&start=80#p109074
Последний раз редактировалось SerOv 10.12.2021{, 08:20}, всего редактировалось 1 раз.

zakhar81
Рядовой
Сообщения: 35
Зарегистрирован: 25.05.2021{, 08:47}
Репутация: 3
Имя: Захар

MQTT клиент для Arduino, ESP8266, ESP32

#459

Сообщение zakhar81 » 10.12.2021{, 08:13}

Так получается что данные продолжают идти на брокер (публикуются) не смотря на то, что статус соединения уходит в ноль?

Отправлено спустя 1 минуту 6 секунд:
Включите WEB для контроля, хоть какую, там есть та что по умолчанию идет при активировании WEB

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT клиент для Arduino, ESP8266, ESP32

#460

Сообщение SerOv » 10.12.2021{, 08:22}

zakhar81 писал(а):
10.12.2021{, 08:14}
Так получается что данные продолжают идти на брокер (публикуются) не смотря на то, что статус соединения уходит в ноль?

Отправлено спустя 1 минуту 6 секунд:
Включите WEB для контроля, хоть какую, там есть та что по умолчанию идет при активировании WEB
Вот здесь подробнее
viewtopic.php?f=39&t=7668&start=80#p109074

Ответить

Вернуться в «Коммуникация и связь»