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

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

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

#581

Сообщение costy1957 » 01.02.2023{, 20:08}

slsl писал(а):
01.02.2023{, 19:13}
А такой вопрос:
если майн блок и другие установить на отдельную плату, а плату активировать по условию, то не запускается блок (при активации платы) пока не ребутнешь контроллер.
Это так задумано или есть варианты? (без ребута).
проект бы посмотреть

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

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

#582

Сообщение slsl » 01.02.2023{, 21:44}

costy1957 писал(а):
01.02.2023{, 20:08}
проект бы посмотреть
Да там всё стандартно (в области MQTT).
Причем в разных проектах и разных контроллерах (ESP32,ЕSP8266) - поведение одинаковое.
Не так чтоб сильно напрягает, но всё же.
Изображение
Вложения
изображение_2023-02-01_214412070.png

costy1957
Сержант
Сообщения: 252
Зарегистрирован: 05.08.2018{, 08:37}
Репутация: 44
Имя: Константин

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

#583

Сообщение costy1957 » 03.02.2023{, 23:43}

slsl писал(а):
01.02.2023{, 19:13}
А такой вопрос:
если майн блок и другие установить на отдельную плату, а плату активировать по условию, то не запускается блок (при активации платы) пока не ребутнешь контроллер.
Это так задумано или есть варианты? (без ребута).
проверил работу блока по условию, все работает. Не знаю какой брокер у вас, я отрабатывал в wqtt.ru, который и вам рекомендую. Причина, предполагаю в брокере, в проекте большие паузы между отправками и если за это время брокер разорвет соединение, востановить его можно только перезагрузкой контролера( проекта).

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

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

#584

Сообщение slsl » 04.02.2023{, 08:25}

costy1957 писал(а):
03.02.2023{, 23:43}
проверил работу блока по условию, все работает. Не знаю какой брокер у вас, я отрабатывал в wqtt.ru,
Брокеры тоже "стандартные" - использовал москит и аедес.
Загвоздка именно в том что если плата не активирована до старта контроллера, где находится майн и др блоки, то в процессе работы алгоритма активация данной платы не приводит к соединению с брокером. (при ребуте же, уже с активной платой - происходит коннект с брокером).

В принципе можно "забить", неудобство только в том, что не всегда нужен mqtt, но когда он понадобится, установив чек-бокс переменой активации платы mqtt, приходиться перегружать контроллер).

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

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

#585

Сообщение SerOv » 04.02.2023{, 10:34}

slsl, Не знаю принципиально или нет. У вас Main расположен на 5 плате. Попробуйте его установить на 1 плату с верху.

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

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

#586

Сообщение slsl » 04.02.2023{, 17:01}

SerOv писал(а):
04.02.2023{, 10:34}
вас Main расположен на 5 плате. Попробуйте его установить на 1 плату с верху.
Да так заработало. :smile9:
Единственное, что в момент загрузки, контроллер успевает зарегистрироваться на брокере и отключиться (при переменной активации платы = выкл)

ser4ep
Рядовой
Сообщения: 2
Зарегистрирован: 20.02.2022{, 21:09}
Репутация: 0
Имя: Сергей

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

#587

Сообщение ser4ep » 07.02.2023{, 02:01}

Добрый день, подскажите пожалуйста, как подключать ethernet shield к контроллеру если использовать блоки для Ethernet Arduino?

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

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

#588

Сообщение starshoy81 » 08.02.2023{, 15:39}

ser4ep, шилд просто ставится на уно или мегу. Работает через ICSP (отдельная группа из 6 контактов на плате).

bordlord
Рядовой
Сообщения: 1
Зарегистрирован: 12.02.2023{, 05:56}
Репутация: 0
Имя: Иван

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

#589

Сообщение bordlord » 12.02.2023{, 06:04}

User8, подскажите пожалуйста. При первой заливке прошивки на ESP32 клиент подключается к брокеру dealgate.ru, затем при отключение питания, выпадает KeepAliveerror и при повторном включении обратно к брокеру не подключается. Подключается только при перезагрузке роутера (Xiaomi Mi-3 с родной прошивкой если это важно) и после этого включении устройства. использую блоки 6.8.

vlad
Лейтенант
Сообщения: 396
Зарегистрирован: 11.09.2015{, 11:50}
Репутация: 0
Откуда: Казань

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

#590

Сообщение vlad » 14.02.2023{, 03:37}

изменение адреса брокера вступают только после перегрузки контролера. Так задумано? остальные все данные вроде изменяются на лету. не сразу это понял.
подскажите плиз как принять данные что контролер доступен или нет. блок main эти данные отсылает, на брокере вижу что они приходят, но другим клиентом у меня не получается их считать. брокер москитто, клиент mqtt dash. пока изучаю
,

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

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

#591

Сообщение SerOv » 14.02.2023{, 10:49}

vlad писал(а):
14.02.2023{, 03:37}
у меня не получается их считать.
А как вы их считывание? Показать можете

vlad
Лейтенант
Сообщения: 396
Зарегистрирован: 11.09.2015{, 11:50}
Репутация: 0
Откуда: Казань

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

#592

Сообщение vlad » 14.02.2023{, 11:20}

др клиента подписываю на топик под названием что указанно на входе id клиента этого блока
Вложения
Screenshot_87.png

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

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

#593

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

vlad писал(а):
14.02.2023{, 11:20}
др клиента подписываю на топик под названием что указанно на входе id клиента этого блока
Проект в Flprog. Где вы считываете показания. Покажите

vlad
Лейтенант
Сообщения: 396
Зарегистрирован: 11.09.2015{, 11:50}
Репутация: 0
Откуда: Казань

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

#594

Сообщение vlad » 15.02.2023{, 00:57}

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

Аватара пользователя
НиколаМастер
Рядовой
Сообщения: 99
Зарегистрирован: 10.01.2018{, 12:36}
Репутация: 8
Контактная информация:

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

#595

Сообщение НиколаМастер » 26.02.2023{, 13:05}

Пришлите пожалуйста ссылку на ПБ 5100 и MQTT
Brevis esse laboro, obscurus fiо - если я стараюсь быть кратким, я становлюсь непонятным

svv
Рядовой
Сообщения: 12
Зарегистрирован: 06.02.2022{, 21:33}
Репутация: 1
Имя: vxxx1980

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

#596

Сообщение svv » 20.05.2023{, 22:29}

Народ привет. Подскажите пожалуйста можно-ли данные блоки использовать для связки модулей Ethernet W5100 + ESP8266?
Конечная задача - мне нужен шлюз с Ethernet (MQTT в RS485 rtu modbus) + (MQTT в tcp modbus)

Пробовал такие комбинации.
Ethernet W5100 + rs485 shield + UNO atmega328p - Все работает (но не хватает памяти для полного проекта)
Ethernet W5100 + rs485 shield + arduino mega - Все работает и памяти хватает (но слишком жирно mega для этого проекта)
WiFi + rs485 shield + Wemos d1 esp8266 - Работает! (блоки 6.8)
Ethernet W5100 + rs485 shield + Wemos d1 esp8266 - Не работает! (блоки 3.6)

Я так понимаю что нужен блок для подключения ESP к сети через Ethernet W5100 (и в этом случае использовать блок 6.8) ?
Или другие варианты?
Есть мысли как это проще реализовать?

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

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

#597

Сообщение Kent » 20.07.2023{, 16:51}

Добрый день. подскажите как можно исправить ситуацию. При пропадании питания пропадает интернет. При появлении роутер загружается дольше чем ESP и Esp не подключается к брокеру, если ESP перегрузить по питанию все нормально. Что можно сделать чтоб ESP пыталась переподключиться к брокеру ? используются блоки MQTT 6.8

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

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

#598

Сообщение texbez » 20.07.2023{, 17:01}

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

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

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

#599

Сообщение Kent » 20.07.2023{, 19:20}

Спасибо

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

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

#600

Сообщение 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 разрешающего входа

Ответить

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