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 раз.

zhulen820
Сержант
Сообщения: 193
Зарегистрирован: 29.08.2016{, 22:44}
Репутация: 6
Откуда: Серпухов
Имя: Александр

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

#361

Сообщение zhulen820 » 05.02.2020{, 22:59}

Проверил у себя блоки версии 6.8 для MQTT, основной , подписка и публикация на ESP32. Версия флпрог 6.3.0 portable, никакие библиотеки не добавлял. Все компилируется.

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

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

#362

Сообщение SerOv » 05.02.2020{, 23:00}

При питании от компа у меня не подключался к Брокеру. взял телефонную зарядку и все сразу подключилось.
Flprog Портативная и там 8.1.11 тоже. Выше я ошибся с версией. Файл менял. там было три папки. Все три заменил в ручную. Сначала удалил старые такие же. Потом вставил в папку новые D:\Program Files (x86)\FLProg 630\ideV4\libraries
Через питание компьютера ESP8266 тоже работала. А ESP32 не хотела.

Отправлено спустя 12 минут 54 секунды:
zhulen820 писал(а):
05.02.2020{, 22:59}
Проверил у себя блоки версии 6.8 для MQTT, основной , подписка и публикация на ESP32. Версия флпрог 6.3.0 portable, никакие библиотеки не добавлял. Все компилируется.
У вас мой проект проверяется без ошибок?
download/file.php?id=23388
А у меня постоянно выходит ошибка

Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
Считает что не верная библиотека. А почему не пойму. Какая должна быть не знаю. Удаляю она появляется вновь и ошибка
СпойлерПоказать
Arduino: 1.8.11 (Windows 10), Плата:"ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

C:\Users\SerOv\AppData\Local\Temp\flprog\pr2\pr2.ino: In function 'void loop()':

pr2:107:106: error: too few arguments to function 'void sub(const String&, String&, const byte&, bool&, bool&, const bool&, bool&)'

sub(Topic_195481493_2, Message_195481493_2, QoS_195481493_2, Received_195481493_2, subscribed_195481493_2);

^

C:\Users\SerOv\AppData\Local\Temp\flprog\pr2\pr2.ino:160:6: note: declared here

void sub(const String &topic, String &message, const byte &qos, bool &received, bool &subscribed, const bool &unsubscribe, bool &rTrig)

^

Несколько библиотек найдено для "ArduinoOTA.h"
Используется: D:\Program
Не используется: d:\Program
Несколько библиотек найдено для "WiFi.h"
Используется: D:\Program
Не используется: d:\Program
exit status 1
too few arguments to function 'void sub(const String&, String&, const byte&, bool&, bool&, const bool&, bool&)'

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

sashamelja
Рядовой
Сообщения: 10
Зарегистрирован: 04.02.2020{, 23:37}
Репутация: 1
Имя: Александр

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

#363

Сообщение sashamelja » 05.02.2020{, 23:42}

Спасибо всем,все завилось и работает(скачал портативную,перезаменил папку библиотек в установленой, блоки мейн 6.8 для 32,подпищик и публицист работают прекрасно)
Попробуйте мой-

Отправлено спустя 6 минут 8 секунд:
А как у вас с обновлением по воздуху ?
Вложения
esp32zav.flp
(870.08 КБ) 132 скачивания

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

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

#364

Сообщение SerOv » 06.02.2020{, 07:59}

Питание так же от ноутбука?
По воздуху у меня не обновляется, пока этим занимался.
Проверить ваш файл смогу только вечером.:(

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

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

#365

Сообщение SerOv » 07.02.2020{, 15:40}

Банально все просто. Блок MQTT_ESP_Sub_6_8_(CODE).ubi оказывается редактировался. и остался с прежнем обозначением. Поменял блок и все заработало. Пока не посмотрел проект sashamelja. так и не понял бы. Печалька ;(

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

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

#366

Сообщение ivanpost » 29.02.2020{, 22:31}

Коллеги, в связи с введением всеобщей платности на cloudmqtt.com, поделитесь, каким сервисом пользуетесь, к которому подходят наши блоки? Яндекс-облако никто не рассматривал? Не могу понять тамошней мути с сертификатами...

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

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

#367

Сообщение Phazz » 01.03.2020{, 08:14}

ivanpost, Попробуйте ресурс из этой темы. viewtopic.php?f=63&t=6203

Аватара пользователя
ussrtk
Рядовой
Сообщения: 36
Зарегистрирован: 06.01.2017{, 12:25}
Репутация: 17

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

#368

Сообщение ussrtk » 15.03.2020{, 13:56}

SerOv писал(а):
07.02.2020{, 15:40}
Банально все просто. Блок MQTT_ESP_Sub_6_8_(CODE).ubi оказывается редактировался. и остался с прежнем обозначением. Поменял блок и все заработало. Пока не посмотрел проект sashamelja. так и не понял бы. Печалька ;(
Присоединяюсь. Я увидел, что компилятор кричит о том, что в вызове не хватает параметров. И только тогда догадался пере залить блок подписчика. Какой нибудь минорный индекс в имя файла вставить не мешало бы.

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

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

#369

Сообщение SerOv » 30.03.2020{, 15:05}

Усть два ESP одно ESP32 Другое ESP8266. но фото отображается разное время работы. Это разные настройки счетчика. Они было включены в одно время и проработали одинаковое количество дней. А именно 24 дня. За это время ESP32 потелял брокера 20 раз. а ESP8266 всего три раза. Каждая ESP (всегда, после потери брокера) подключалась заново. Они находятся в радиусе трех метров друг от друга и от модема, к кторому подключены. Модем один и тот же. Интересно почему так? и Есть ли возможность исправить ситуацию?
СпойлерПоказать
ESp.jpg
ESp.jpg (11.27 КБ) 2196 просмотров
Последний раз редактировалось SerOv 01.04.2020{, 14:53}, всего редактировалось 1 раз.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#370

Сообщение edyapd » 30.03.2020{, 15:50}

SerOv, очень много зависит от питания схемы. Но очень часто про это забывают.

smol
Рядовой
Сообщения: 62
Зарегистрирован: 16.11.2017{, 18:25}
Репутация: 0

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

#371

Сообщение smol » 31.03.2020{, 21:32}

Вопрос, может кто поборол.
MQTT - Aduino UNO, блоки подписки viewtopic.php?p=61490#p61486 16 штук выход на две микросхемы расширения PCF8574 скетч простейший каждый блок подписки на соответствующий выход, память контроллера не забита.
Но но вот москито в своей консоли пишет "Socket error on client test, disconnecting."

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

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

#372

Сообщение User8 » 31.03.2020{, 21:43}

smol, 16 штук на уно и памяти хватает? Может и пишет при компиляции что хватает, но там не учитывается динамическая память, после старта вся динамическая память забивается и контроллер ничего не может сделать кроме как тупить. Нужно ждать новую версию флпрог, где переделают пользовательские блоки и не будут создаваться глобальные переменные для каждого входа в блоках, тогда памяти может и хватит, пока могу предложить только использовать контроллер с большим количеством памяти.

smol
Рядовой
Сообщения: 62
Зарегистрирован: 16.11.2017{, 18:25}
Репутация: 0

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

#373

Сообщение smol » 31.03.2020{, 22:06}

будем ждать, может попробую перейти на код

Отправлено спустя 16 минут 17 секунд:
smol писал(а):
31.03.2020{, 21:32}
Вопрос, может кто поборол.
MQTT - Aduino UNO, блоки подписки viewtopic.php?p=61490#p61486 16 штук выход на две микросхемы расширения PCF8574 скетч простейший каждый блок подписки на соответствующий выход, память контроллера не забита.
Но но вот москито в своей консоли пишет "Socket error on client test, disconnecting."
интересно, постояла 10 минут пописало "Socket error on client..." и поехало ошибка ушла

Аватара пользователя
Vitez
Сержант
Сообщения: 211
Зарегистрирован: 08.11.2015{, 14:32}
Репутация: 4

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

#374

Сообщение Vitez » 08.04.2020{, 10:51}

Всем доброго дня. Плиз, подскажите, как сделать рестарт клиента MQTT на ESP . А то получается следующая ситуация: Если перегрузить брокер MQTT (на raspbrry), то клиенты на ESP отваливаются 50/50. Помогает перезагрузка ESP. Надо как то реализовать переключение программно. Да, клиент на ESP показывает подключение к брокеру коррректно, (Брокер включен, статус mqttConnected 1, брокер отключен, статус mqttConnected 0). Можно попробовать конечно перезапускать плату с главным блоком, но как то грубо.

texbez
Лейтенант
Сообщения: 355
Зарегистрирован: 20.11.2016{, 19:57}
Репутация: 9
Откуда: Ростов на дону

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

#375

Сообщение texbez » 08.04.2020{, 14:06}

Vitez писал(а):
08.04.2020{, 10:51}
Всем доброго дня. Плиз, подскажите, как сделать рестарт клиента MQTT на ESP . А то получается следующая ситуация: Если перегрузить брокер MQTT (на raspbrry), то клиенты на ESP отваливаются 50/50. Помогает перезагрузка ESP. Надо как то реализовать переключение программно. Да, клиент на ESP показывает подключение к брокеру коррректно, (Брокер включен, статус mqttConnected 1, брокер отключен, статус mqttConnected 0). Можно попробовать конечно перезапускать плату с главным блоком, но как то грубо.
У меня так было когда роутер был рядом с esp.Перенёс роутер в центр дома,на равное примерно от устройств и всё поехало, ещё проигрался с каналами WiFi и вообще хорошо стало. Сейчас кстати при запуске брокера esp быстрее планшетов запускаться.

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

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

#376

Сообщение JonyBest » 26.04.2020{, 20:55}

удалил, сам разобрался
Последний раз редактировалось JonyBest 27.05.2020{, 11:37}, всего редактировалось 1 раз.

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

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

#377

Сообщение JonyBest » 27.05.2020{, 11:17}

Доброго дня! Чуть не пойму основную суть.
Сделал MQTT клиент на ESP32
Вывел данные на Beebotte.com сервис для IoT устройств
В Dashboard создал управление и вывод информации. Всё бы хорошо, но хочется вывести данные на комп под виндой с красивым интерфейсом и гибкостью настройки как на скаде.
Поделитесь опытом, кто как делает...

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#378

Сообщение AlexCrane » 01.06.2020{, 19:40}

Кто-нибудь пробовал на esp подключиться к брокеру mqtt.by ? Ни в какую у меня не хочет коннектиться... Почему никак не пойму.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Taser
Рядовой
Сообщения: 10
Зарегистрирован: 05.06.2020{, 00:21}
Репутация: 0
Имя: Sergey

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

#379

Сообщение Taser » 13.06.2020{, 03:29}

JonyBest писал(а):
27.05.2020{, 11:17}
Доброго дня! Чуть не пойму основную суть.
Сделал MQTT клиент на ESP32
Вывел данные на Beebotte.com сервис для IoT устройств
В Dashboard создал управление и вывод информации. Всё бы хорошо, но хочется вывести данные на комп под виндой с красивым интерфейсом и гибкостью настройки как на скаде.
Поделитесь опытом, кто как делает...
Здравствуйте а у вас esp32 не перезагружается?
Просто у меня раз в 60-90 секунд уходит в перезагрузку.
все по вине блока main

JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18.11.2015{, 22:42}
Репутация: 89
Откуда: Близко к Ставрополю
Имя: Евгений

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

#380

Сообщение JonyBest » 13.06.2020{, 10:56}

Taser писал(а):
13.06.2020{, 03:29}
Здравствуйте а у вас esp32 не перезагружается?
Просто у меня раз в 60-90 секунд уходит в перезагрузку.
все по вине блока main
У меня такое было, пока не настроил правильно топик esp32 - топик на Beebotte.com

Отправлено спустя 9 минут 13 секунд:
Подскажите, при использовании блоков MQTT_ESP32_Main_6_8 и MQTT_ESP32_Main_6_8_copy_(CODE), при удачном подключении, единица появляется только на выходе mqttConnected блока MQTT_ESP32_Main_6_8, не зависимо какой блок подключился к серверу MQTT, на выходе mqttConnected блока MQTT_ESP32_Main_6_8_copy единица не появляется. В остальном оба блока работают корректно. Как это можно исправить?

Ответить

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