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

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

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

#601

Сообщение texbez » 21.07.2023{, 17:26}

Kent писал(а):
21.07.2023{, 10:14}
texbez писал(а):
20.07.2023{, 17:01}
Kent писал(а):
20.07.2023{, 16:51}
Добрый день. подскажите как можно исправить ситуацию. При пропадании питания пропадает интернет. При появлении роутер загружается дольше чем ESP и Esp не подключается к брокеру, если ESP перегрузить по питанию все нормально. Что можно сделать чтоб ESP пыталась переподключиться к брокеру ? используются блоки MQTT 6.8
В системных блоках есть блок - статус WIFI . Его выход через таймер задержки (я делаю 500мс) подключить ко входу блока майн mqtt.
Теперь пока не появиться wifi,mqtt не запуститься.
не вижу у блока MQTT_ESP_main_6_8 разрешающего входа
Ссори , попутал с другим ответом . В вашем случае - отдельная плата для MQTT и плату запускать по переменной при появлении wifi.

Kent
Рядовой
Сообщения: 14
Зарегистрирован: 25.05.2023{, 21:53}
Репутация: 0
Имя: EVGENIY

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

#602

Сообщение Kent » 22.07.2023{, 07:18}

texbez писал(а):
21.07.2023{, 17:26}
Ссори , попутал с другим ответом . В вашем случае - отдельная плата для MQTT и плату запускать по переменной при появлении wifi.
Главный блок на отдельной плате ( первой ), а как плату перезапустить от вай фай статуса ?

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

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

#603

Сообщение texbez » 22.07.2023{, 08:10}

Kent писал(а):
22.07.2023{, 07:18}
texbez писал(а):
21.07.2023{, 17:26}
Ссори , попутал с другим ответом . В вашем случае - отдельная плата для MQTT и плату запускать по переменной при появлении wifi.
Главный блок на отдельной плате ( первой ), а как плату перезапустить от вай фай статуса ?
А зачем именно первую плату перезапускать? Нет связи после того как роутер запуститься? Или что?

Отправлено спустя 1 минуту 41 секунду:
Я на отдельной плате делал остальные блоки mqtt только потому что при запуске контроллера он успевал отослать на сервер кучу мусора.....

Отправлено спустя 1 минуту 54 секунды:
Если нет связи - попробуйте отослать сообщение с контроллера, должна появиться.

Kent
Рядовой
Сообщения: 14
Зарегистрирован: 25.05.2023{, 21:53}
Репутация: 0
Имя: EVGENIY

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

#604

Сообщение Kent » 23.07.2023{, 08:20}

texbez писал(а):
22.07.2023{, 08:14}
А зачем именно первую плату перезапускать? Нет связи после того как роутер запуститься? Или что?
да
после появления питания роутер дольше загружается, чем ESP, в главном блоке вроде есть реконнект , но похоже он не работает.

Отправлено спустя 1 минуту 42 секунды:
texbez писал(а):
22.07.2023{, 08:14}
Если нет связи - попробуйте отослать сообщение с контроллера, должна появиться.
там температура каждые 2-5 секунд отсылается

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

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

#605

Сообщение SerOv » 23.07.2023{, 12:54}

Kent, Пробуйте сделать задержку. После подсоединение к брокеру. А уж потом отсылать данные. Задержку надо увеличивать до тех пор. Пока начнут приходить нормальные данные.

Kent
Рядовой
Сообщения: 14
Зарегистрирован: 25.05.2023{, 21:53}
Репутация: 0
Имя: EVGENIY

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

#606

Сообщение Kent » 24.07.2023{, 09:55}

SerOv писал(а):
23.07.2023{, 12:54}
Kent, Пробуйте сделать задержку. После подсоединение к брокеру. А уж потом отсылать данные. Задержку надо увеличивать до тех пор. Пока начнут приходить нормальные данные.
Я конечно попробую сделать задержку, но сейчас даже при не форсмажорном запуске брокер подключается очень долго от 3х до 5-7 мин.
Последний раз редактировалось Kent 24.07.2023{, 15:39}, всего редактировалось 1 раз.

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

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

#607

Сообщение SerOv » 24.07.2023{, 11:27}

Kent писал(а):
24.07.2023{, 09:55}
брокер подключается очень долго от 3х до 5-7 мин.
Странно. Это очень долго.

Отправлено спустя 3 минуты 46 секунд:
Попробуйте на телефон брокер установить и к нему подключиться. Будет ли такое же долгим подключение. Максимум несколько секунд должно быть а то и меньше. В новом проекте оставте один основной блок и посмотрите. На подключение.

Отправлено спустя 29 минут 36 секунд:
Подключите светодиод на плате к выходу основного блока статус. И когда будет соединение. Светодиод загорится. Будет видно произошло соединение или нет

Kent
Рядовой
Сообщения: 14
Зарегистрирован: 25.05.2023{, 21:53}
Репутация: 0
Имя: EVGENIY

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

#608

Сообщение Kent » 24.07.2023{, 15:40}

SerOv писал(а):
24.07.2023{, 12:01}
Kent писал(а):
24.07.2023{, 09:55}
брокер подключается очень долго от 3х до 5-7 мин.
Странно. Это очень долго.

Отправлено спустя 3 минуты 46 секунд:
Попробуйте на телефон брокер установить и к нему подключиться. Будет ли такое же долгим подключение. Максимум несколько секунд должно быть а то и меньше. В новом проекте оставте один основной блок и посмотрите. На подключение.

Отправлено спустя 29 минут 36 секунд:
Подключите светодиод на плате к выходу основного блока статус. И когда будет соединение. Светодиод загорится. Будет видно произошло соединение или нет
телефон подключается сразу, светодиод есть.

Отправлено спустя 2 минуты 11 секунд:
Будет возможность, попробую один главный блок включить.

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

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

#609

Сообщение SerOv » 24.07.2023{, 17:16}

User8 писал(а):
08.09.2018{, 14:04}
телефон подключается сразу, светодиод
возможно ваш брокер шалит. Или ищите проблему а проекте. Подключайте по очереди разные блоки и проверяйте подключение. Светодиод пока оставьте в проекте. Хотя он у меня во свех проектах задействован. Визуально видно в каком состоянии брокер.

Kent
Рядовой
Сообщения: 14
Зарегистрирован: 25.05.2023{, 21:53}
Репутация: 0
Имя: EVGENIY

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

#610

Сообщение Kent » 24.07.2023{, 17:42}

SerOv писал(а):
24.07.2023{, 17:16}
User8 писал(а):
08.09.2018{, 14:04}
телефон подключается сразу, светодиод
возможно ваш брокер шалит. Или ищите проблему а проекте. Подключайте по очереди разные блоки и проверяйте подключение. Светодиод пока оставьте в проекте. Хотя он у меня во свех проектах задействован. Визуально видно в каком состоянии брокер.
Спасибо. Проверю. Появились мысли. :smile198: Мы же привыкли сначала сделать, а потом уже прочитать. Увидел у брокера пример настройки для FLProg.

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

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

#611

Сообщение texbez » 24.07.2023{, 22:38}

Вообще по хорошему для роутера и брокера надо бесперебойник ставить.
Я пока не сделал тоже проблемы время от времени всплывали.

Kent
Рядовой
Сообщения: 14
Зарегистрирован: 25.05.2023{, 21:53}
Репутация: 0
Имя: EVGENIY

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

#612

Сообщение Kent » 25.07.2023{, 07:48}

Всем спасибо. Все заработало корректно. Есть переподключение после обрыва связи, подключается в течение 50 сек. В главном блоке исправил константу willTopik и начал отправлять сообщения только после подключения к брокеру.

slsl
Рядовой
Сообщения: 70
Зарегистрирован: 08.12.2021{, 22:41}
Репутация: 8
Имя: Вячеслав

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

#613

Сообщение slsl » 31.07.2023{, 12:35}

Хм, заметил такую штуку:
при статическом IP адресе на ЕСР32, к брокеру подключаться не хочет.
При этом сам брокер пингуется. Проверял на Флп 7.52, 8.21, 8.23 на ядрах 2.03, 2.06, 2.09.
Что интересно, если при этом активировать ДХЦП и вернуться опять к статике (без перезагрузки ЕСР) - то соединение с брокером сохраняется, при ребуте -теряется.
При чем вэб морда на еср видится и при статике и при дхцп и еср в обоих случаях видит внешние и локальные адреса.
Брокеры пробовал разные (Аедес, Москит) и на разных IP адресах.

(блоки пробовал 6.8 и 6.8.22)

ivansidor012
Сержант
Сообщения: 279
Зарегистрирован: 10.09.2020{, 14:37}
Репутация: 43
Имя: Иван

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

#614

Сообщение ivansidor012 » 02.08.2023{, 17:22}

slsl писал(а):
31.07.2023{, 12:35}
Хм, заметил такую штуку:
при статическом IP адресе на ЕСР32, к брокеру подключаться не хочет.
проверил на clusterfly - все работает без нареканий, даже если указать статику для 32

Отправлено спустя 9 минут 13 секунд:
slsl, проект обычно выкладывают еще)))

slsl
Рядовой
Сообщения: 70
Зарегистрирован: 08.12.2021{, 22:41}
Репутация: 8
Имя: Вячеслав

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

#615

Сообщение slsl » 03.08.2023{, 09:04}

Убрал блок LCD+Start-V2.18 на плате дисплея - клиент MQTT стал подключаться к брокеру при статическом ИП адресе.

tornado
Рядовой
Сообщения: 30
Зарегистрирован: 14.04.2020{, 21:17}
Репутация: 1
Имя: Ivan

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

#616

Сообщение tornado » 05.08.2023{, 11:53}

Привет! Проект создан для работы с Virtuino MQTT - для управления 2-мя реле в автоматическом и ручном режиме на каждый день недели.При первоначальном запуске и входе в сеть Wi-Fi и пароль - все работает нормально до первого перезапуска контроллера, после чего контроллер не подключается к роутеру и надо заново вводить сеть WiFi и пароль.При отключении компиляции на плате 5 - все ОК,но только одно реле.Что не так? Спасибо !
p.s. Ссылка на проект, так как он большой и не прикрепляется

https://u.pcloud.link/publink/show?code ... BwSbeu2Wby

Pavel45
Рядовой
Сообщения: 1
Зарегистрирован: 08.01.2022{, 18:21}
Репутация: 0
Имя: Павел

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

#617

Сообщение Pavel45 » 12.08.2023{, 21:23}

А почему айпишник и шлюз один и тот же? И если не секрет, что делает проект, уж больно мудрёно выполнен.

tornado
Рядовой
Сообщения: 30
Зарегистрирован: 14.04.2020{, 21:17}
Репутация: 1
Имя: Ivan

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

#618

Сообщение tornado » 13.08.2023{, 07:22}

Pavel45 писал(а):
12.08.2023{, 21:23}
А почему айпишник и шлюз один и тот же? И если не секрет, что делает проект, уж больно мудрёно выполнен.
Айпишник и шлюз один-только для для первоначального входа в WEB-интерфейс контроллера и его подключения к маршрутизатору,затем он принимает сетевые настройки от него.
2 отдельных реле управляются независимо - в ручном и автоматическом режиме.Автоматический или ручной режим выбирается на каждый день недели.Для автоматического задается время включения и выключения, а для ручного в любое время.

Tyma
Рядовой
Сообщения: 43
Зарегистрирован: 02.03.2023{, 02:46}
Репутация: 0
Имя: Tomas

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

#619

Сообщение Tyma » 21.11.2023{, 02:02}

Для esp8266 совсем не дружат с TLS/SSL портами?

DmitryiK
Рядовой
Сообщения: 4
Зарегистрирован: 01.04.2023{, 13:53}
Репутация: 0
Имя: Дмитрий

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

#620

Сообщение DmitryiK » 06.12.2023{, 10:00}

Доброго времени суток уважаемые форумчане!
Прошу Вашей помощи: пытаюсь сделать управления котлом, удаленное управление через mqtt (алису) нет возможности подключить белый ip так бы web хватило и не заморачивался б, все бы хорошо только вот на брокер с загадочной периодичностью -хаотично в топики отправляются сообщение 0 (точнее отправляется то что указано в топике willMessageOffline блока Main- блоки Main пробовал разные, )
на которые подписаны модули SUB (Получается контроллер с какой то периодичностью сам выбирает в какой топик отправить сообщение на брокер, модули SUB подписанный на этот топик читает его и изменяет установки контроллера)
Вложения
test_1_0_Лидер.flp
(4.57 МБ) 13 скачиваний

Ответить

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