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 КБ) 2750 скачиваний
MQTT_ESP_Sub_6_8_(CODE).ubi
(38.95 КБ) 2570 скачиваний
MQTT_ESP_Pub_6_8_(CODE).ubi
(44.63 КБ) 2665 скачиваний
Последний раз редактировалось User8 28.01.2023{, 01:57}, всего редактировалось 175 раз.

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

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

#461

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

Там просто галочку поставить нужно

Отправлено спустя 3 минуты 38 секунд:
Там как раз в этом топике кто то заикнулся про то, что нет реконнекта по WiFi

Отправлено спустя 8 минут 50 секунд:
Судя по вашему описанию проблемы, у вас статус коннекта в единице, а в топик публикуется ноль вместо единицы, но генерит то то единицу счетчик
А если блок счетчика виноват?
Хотя там есть генератор для этой цели, чтобы генерировать что то а не счетчик
Сделайте еще посылку с вашего счетчика не только в блок публикатора но и в UART и запустите монитор порта для отладки, посмотрите что на самом деле ваш счетчик посылает
Или на веб выведите этот сигнал

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

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

#462

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

zakhar81 писал(а):
10.12.2021{, 08:38}
Там просто галочку поставить нужно
Какую галочку?

Отправлено спустя 7 минут 23 секунды:
Повторюсь ещё раз. В версии 7.3.5 эта схема работает без проблем. И единица держится.Вернее если прошивать через чере Arduino
IDE входит от 7.3.5. Если прошить из 7.4.1 но версию от 7.3.5 тоже всё работает. Я думаю связано с обновлением версиий через которую мы прошиваем.

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

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

#463

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

Ну понятное дело что с версией связано, но нужно локализовать проблему
Сделайте посылку вашей единицы с входного пина напрямую в блок публикатора
Раз статус коннекта есть то связь с брокером не пропадает, а вот кто туда ноль посылает непонятно
Поэтому отправьте ваш сигнал 0/1 еще и в ком порт и промониторьте что все таки посылает ваш счетчик ноль или единицу, а так же попробуйте ноль или единицу послать с внешнего пина ESP исключив счетчик

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

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

#464

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

zakhar81 писал(а):
10.12.2021{, 08:57}
Ну понятное дело что с версией связано, но нужно локализовать проблему
Сделайте посылку вашей единицы с входного пина напрямую в блок публикатора
Раз статус коннекта есть то связь с брокером не пропадает, а вот кто туда ноль посылает непонятно
Поэтому отправьте ваш сигнал 0/1 еще и в ком порт и промониторьте что все таки посылает ваш счетчик ноль или единицу, а так же попробуйте ноль или единицу послать с внешнего пина ESP исключив счетчик
А вы тоже это проверить можете? Интересно. Это только у меня такая проблема?

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

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

#465

Сообщение zakhar81 » 10.12.2021{, 09:17}

Я проверю, но не сегодня, возможно на выходных

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

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

#466

Сообщение SerOv » 10.12.2021{, 17:23}

zakhar81 писал(а):
10.12.2021{, 09:17}
Я проверю, но не сегодня, возможно на выходных
Вывел на WEB сраницу и в UART состояние MQTT брокер. После подключения к броке, 1 не пропадает. А вот на сервере в это самое время. Единица пропадает и появляется ноль.

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

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

#467

Сообщение zakhar81 » 13.12.2021{, 10:45}

Я не успел на выходных к сожалению
Вы пишите что состояние вывели, а ноль то у вас в топике же появляется вместо единицы, т.е. вам нужно было на вэб вывести именно то что в на вход блока публикатора подаете, чтобы удостовериться что там единица или ноль, а не бит состояния

Vict
Рядовой
Сообщения: 11
Зарегистрирован: 24.01.2021{, 00:34}
Репутация: 0
Откуда: СПб
Имя: Виктор

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

#468

Сообщение Vict » 15.12.2021{, 14:45}

Уважаемые, Помогите решить задачу передачи, приёма по MQTT ESP8266 NODE MCU. Блоки не работют совместно с часами реального времени, по отдельности всё работает. Платаы часов и приёма-передачи разнесены во времени , сделана задержка включения часов после подключения к брокеру. Пробовал различные комбинации - не работает. Так-же не работает приём-передача при подключение хотя-бы одного дисплея.
Вложения
00_mqtt_ESP_SITE.flp
(859.69 КБ) 45 скачиваний

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

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

#469

Сообщение SerOv » 15.12.2021{, 21:45}

Vict писал(а):
15.12.2021{, 14:45}
Уважаемые, Помогите решить задачу передачи, приёма по MQTT ESP8266 NODE MCU. Блоки не работют совместно с часами реального времени, по отдельности всё работает. Платаы часов и приёма-передачи разнесены во времени , сделана задержка включения часов после подключения к брокеру. Пробовал различные комбинации - не работает. Так-же не работает приём-передача при подключение хотя-бы одного дисплея.
Вы в какой версии работали? Если в 741, то поробуйте перепрошить в версии 735.

Vict
Рядовой
Сообщения: 11
Зарегистрирован: 24.01.2021{, 00:34}
Репутация: 0
Откуда: СПб
Имя: Виктор

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

#470

Сообщение Vict » 16.12.2021{, 19:46}

Пробовал в 7.1.1, они совместимы?

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

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

#471

Сообщение SerOv » 16.12.2021{, 20:19}

Vict писал(а):
16.12.2021{, 19:46}
Пробовал в 7.1.1, они совместимы?
Я предполагаю, что здесь дело не в совместимости. А в Arduino IDE через которую вы прошиваете. В версии 7.3.5 Arduino IDE версия 1.8.13. В верси 7.4.1 Arduino IDE версиия 1.8.16. В верси 7.1.1 Arduino IDE версия 1.8.11. У меня в В Arduino IDE версия 1.8.13 все хорошо работает. А в Arduino IDE версиия 1.8.16 были проблемы работы основного блока. Происходит обновление библиотек в новых версиях и они не всегда коректно работают с блоками. Правда у меня все блоки MQTT новее версий 6.8. Но возможно дело не в этом.
Последний раз редактировалось SerOv 16.12.2021{, 22:55}, всего редактировалось 2 раза.

Vict
Рядовой
Сообщения: 11
Зарегистрирован: 24.01.2021{, 00:34}
Репутация: 0
Откуда: СПб
Имя: Виктор

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

#472

Сообщение Vict » 16.12.2021{, 22:34}

СпасиБо.

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

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

#473

Сообщение zakhar81 » 29.12.2021{, 07:23}

Протокол MQTT который поддерживает библиотека для MQTT клиента имеет версию 3.1.1 в тех версиях IDE которые все нормально компилируют, а в последней версии 1.8.16 нужно посмотреть кая библиотека используется и что там в ней добавилось, скорее всего проблема в этом.
А чтоб работало в 7.4.1 замените библиотеку на старую что была в версии 1.8.13 и старше
Вот библиотека которая используется в рабочих блоках:
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

Может быть её обновили в 1.8.16 или заменили, и там уже появилась поддержка протокола V5 или еще что то изменилось, поэтому нужно сравнить именно библиотеки для MQTT клиента

ARTEMM
Рядовой
Сообщения: 37
Зарегистрирован: 05.05.2021{, 21:31}
Репутация: 0
Имя: Артём

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

#474

Сообщение ARTEMM » 30.12.2021{, 22:32}

Подскажите как с помощью этих блоков вывести цифровые значения в virtuino палучилось вывести только текстовые значения на virtuino

Dmabst
Сержант
Сообщения: 149
Зарегистрирован: 08.12.2018{, 16:49}
Репутация: 10
Имя: Дмитрий

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

#475

Сообщение Dmabst » 31.12.2021{, 12:26}

ARTEMM писал(а):
30.12.2021{, 22:32}
Подскажите как с помощью этих блоков вывести цифровые значения в virtuino палучилось вывести только текстовые значения на virtuino
Внимательно посмотрите видео:

MQTT работает только со строковыми величинами, поэтому любую величину нужно конвертировать в строковую посредством штатного блока SConv.

Maxim1983
Рядовой
Сообщения: 1
Зарегистрирован: 18.11.2021{, 23:34}
Репутация: 0
Откуда: Новороссийск
Имя: Максим

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

#476

Сообщение Maxim1983 » 07.01.2022{, 15:33}

Добрый день. Подскажите как можно подключиться к брокеру на ESP8266 не через WIFI, а через GSM, например SIM800. может у кого есть такой блок для FLProg.

Dmabst
Сержант
Сообщения: 149
Зарегистрирован: 08.12.2018{, 16:49}
Репутация: 10
Имя: Дмитрий

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

#477

Сообщение Dmabst » 07.01.2022{, 20:42}

Maxim1983 писал(а):
07.01.2022{, 15:33}
Добрый день. Подскажите как можно подключиться к брокеру на ESP8266 не через WIFI, а через GSM, например SIM800. может у кого есть такой блок для FLProg.
viewtopic.php?t=4141&start=80#p109887

ARTUR
Рядовой
Сообщения: 1
Зарегистрирован: 02.01.2022{, 12:27}
Репутация: 0
Имя: Артур

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

#478

Сообщение ARTUR » 14.01.2022{, 13:12}

Здравствуйте . Сделал проект по примеру видео Грачика "MQTT и Beebotte" на плате ESP 8266. Всё заработало с первого раза.
Дальше посмотрел видео на ютубе про Virtuino с регистрарацией на MQTT брокере.Там используются блоки : Ethernet Main v4.2. для работы с шилдом W5100
Предоставленная ссылка для скачивания "битая". На ветке форума всё просмотрел ....Для скачивания нашел только блоки версии 3.6 (Main , Pub , Sub ) , а они уже считаются устаревшими. Помогите пожалуйста - где можно скачать блоки Ethernet Main, Pub и Sub версии 4.2

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

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

#479

Сообщение User8 » 14.01.2022{, 19:02}

ARTUR, той версии тут нет, т.к. она плохо работала, лучше чем 3.6 нет.

Dmabst
Сержант
Сообщения: 149
Зарегистрирован: 08.12.2018{, 16:49}
Репутация: 10
Имя: Дмитрий

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

#480

Сообщение Dmabst » 19.01.2022{, 12:31}

Для "блокоделов":

Подключение ESP32 к облачному брокеру MQTT (TTGO T-Call ESP32 SIM800L)


https://voltiq.ru/esp32-cloud-mqtt-broker-sim800l/

Ответить

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