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

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

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

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

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

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

#481

Сообщение zakhar81 » 24.01.2022{, 15:57}

SerOv, У вас так и не работает клиент на 8266?

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

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

#482

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

zakhar81 писал(а):
24.01.2022{, 15:57}
SerOv, У вас так и не работает клиент на 8266?
Я прошиваюсь через Ide версии из 738 и всё работает.

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

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

#483

Сообщение zakhar81 » 24.01.2022{, 18:23}

Ммм

Отправлено спустя 1 минуту 23 секунды:
Я наконец то скачал бетту, буду смотреть в ближайшее время

aleksey21047777
Рядовой
Сообщения: 3
Зарегистрирован: 10.12.2021{, 13:44}
Репутация: 0
Имя: Алексей

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

#484

Сообщение aleksey21047777 » 26.01.2022{, 10:40}

вопрос такой. а можно цыфровые значения отсылать? или только текст

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

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

#485

Сообщение Phazz » 26.01.2022{, 10:47}

aleksey21047777, Посылайте цифры текстом

aleksey21047777
Рядовой
Сообщения: 3
Зарегистрирован: 10.12.2021{, 13:44}
Репутация: 0
Имя: Алексей

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

#486

Сообщение aleksey21047777 » 26.01.2022{, 10:52}

хотелось бы имеено цыфровые значения.для графика и индикации

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

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

#487

Сообщение Phazz » 26.01.2022{, 12:43}

В mqtt в принципе все текстом передается. Нет там типов данных. А куда нужно такое?

aleksey21047777
Рядовой
Сообщения: 3
Зарегистрирован: 10.12.2021{, 13:44}
Репутация: 0
Имя: Алексей

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

#488

Сообщение aleksey21047777 » 26.01.2022{, 12:55}

virtuino

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

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

#489

Сообщение Dmabst » 26.01.2022{, 16:24}

aleksey21047777 писал(а):
26.01.2022{, 12:55}
virtuino
viewtopic.php?t=4276&start=460#p110628

leaner
Сержант
Сообщения: 103
Зарегистрирован: 08.11.2017{, 13:13}
Репутация: 4

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

#490

Сообщение leaner » 01.02.2022{, 17:19}

Пытаюсь запустить mqtt client на ардуино mega 2560 связь c mqtt брокером через ethernet shield w5100 но ничего не получается. В главном модуле прописал все требуемые параметры. При запуске,через некоторое время, появляется значок подключения к брокеру, и на этом все, больше ничего не делает. Хотя по логике программы должен высылать значение температуры.
2 года назад делал проект управления дисплеем на ардуино uno и ethernet shield w5100 и никаких проблем не возникло. Версия flprog была 4 или 5 не помню . Пробовал менять платы ничего не меняется. Где работала программа все продолжает работать где не работает программа так нет отклика от mqtt Может какие то библиотеки нужно поменять? или откатиться на старую версию? только придется весть проект переписывать.
Брокер mosquitto.

Аватара пользователя
prmres
Рядовой
Сообщения: 7
Зарегистрирован: 30.01.2018{, 20:19}
Репутация: 0
Откуда: Курская обл.
Имя: Prmres

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

#491

Сообщение prmres » 03.02.2022{, 03:00}

leaner писал(а):
01.02.2022{, 17:19}
Пытаюсь запустить mqtt client на ардуино mega 2560 связь c mqtt брокером через ethernet shield w5100 но ничего не получается. В главном модуле прописал все требуемые параметры. При запуске,через некоторое время, появляется значок подключения к брокеру, и на этом все, больше ничего не делает. Хотя по логике программы должен высылать значение температуры.
2 года назад делал проект управления дисплеем на ардуино uno и ethernet shield w5100 и никаких проблем не возникло. Версия flprog была 4 или 5 не помню . Пробовал менять платы ничего не меняется. Где работала программа все продолжает работать где не работает программа так нет отклика от mqtt Может какие то библиотеки нужно поменять? или откатиться на старую версию? только придется весть проект переписывать.
Брокер mosquitto.
вот прямо сейчас у меня мега 2560 с шилдом w5100 работает вот на этих блоках: viewtopic.php?p=61490#p61486
(в шапке на них ссылка "Блоки для Ethernet Arduino:......")
проект был создан в FLProg 7.3.8
не только лишь все!

leaner
Сержант
Сообщения: 103
Зарегистрирован: 08.11.2017{, 13:13}
Репутация: 4

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

#492

Сообщение leaner » 03.02.2022{, 07:53}

vj;tn gjcv
prmres писал(а):
03.02.2022{, 03:00}
leaner писал(а):
01.02.2022{, 17:19}
Пытаюсь запустить mqtt client на ардуино mega 2560 связь c mqtt брокером через ethernet shield w5100 но ничего не получается. В главном модуле прописал все требуемые параметры. При запуске,через некоторое время, появляется значок подключения к брокеру, и на этом все, больше ничего не делает. Хотя по логике программы должен высылать значение температуры.
2 года назад делал проект управления дисплеем на ардуино uno и ethernet shield w5100 и никаких проблем не возникло. Версия flprog была 4 или 5 не помню . Пробовал менять платы ничего не меняется. Где работала программа все продолжает работать где не работает программа так нет отклика от mqtt Может какие то библиотеки нужно поменять? или откатиться на старую версию? только придется весть проект переписывать.
Брокер mosquitto.
вот прямо сейчас у меня мега 2560 с шилдом w5100 работает вот на этих блоках: viewtopic.php?p=61490#p61486
(в шапке на них ссылка "Блоки для Ethernet Arduino:......")
проект был создан в FLProg 7.3.8
Я те же самые блоки скачивал. Может, посмотрите мой проект ? что я делаю не так?
Вложения
water_mqtt.flp
(5.77 МБ) 44 скачивания

Аватара пользователя
prmres
Рядовой
Сообщения: 7
Зарегистрирован: 30.01.2018{, 20:19}
Репутация: 0
Откуда: Курская обл.
Имя: Prmres

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

#493

Сообщение prmres » 03.02.2022{, 12:11}

leaner писал(а):
03.02.2022{, 07:53}
Может, посмотрите мой проект ? что я делаю не так?
посмотрел
могу быть не прав, но по-моему, в 7-й плате ваши переменные не работают, они просто заново переопреляются и их значение пустое, оно ничем не задаётся, то что было в предыдущих платах не считается
а вот почему не работает температура по клемме "температура" - не понятно, либо очень стабильное показание и детектор изменения числа не срабатывает и не даёт команду на публикацию, либо .....

лог брокера mqtt ещё было бы неплохо посмотреть, происходит ли подписка, вообще что там происходит

а ещё можно попробовать предыдущую версию FLProg
где-то натыкался на обсуждение что в новой версии что-то не работает из-за более новой arduino ide, то ли что-о с библиотеками то ли ещё что-то не помню конкретно
не только лишь все!

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

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

#494

Сообщение SerOv » 03.02.2022{, 17:14}

leaner писал(а):
03.02.2022{, 07:53}
Я те же самые блоки скачивал. Может, посмотрите мой проект ? что я делаю не так?
Не знаю поможет или нет. Но говорили. В блоке Main. Пароль должен не менее восьми символов

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

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

#495

Сообщение SerOv » 06.02.2022{, 17:46}

Всем привет в блоке MQTT ESP Main v6.8 (Для ESP8266), начиная с версий, после программы Flprog 735. Появилась проблема с пропаданием единицы.
В нутри блока есть константа willTopic. автор блоков пишет что
Last Will сообщение - сообщение, которое будет отправлено в указанный топик, после отключения клиента от брокера. По умолчанию Will топик равен установленному значению на входе mqttClientId.
И вот что интересно. При подключениею к брокеру и willTopic меняет свое значенеи с 0 на 1. Так же и mqttConnected меняет свое значенеи с 0 на. 1 И эти значения менялись только при отключении от брокера.В версии 735 это так и было. А вот после версии 735, единица остается на mqttConnected. А на willTopic она меняется через несколько секунд после подключения к MQTT брокеру и появляется ноль на выходе. И при этом связь с брокером не пропадает. Данные продолжают поступать. Может кто нибудь знает как решить эту проблему? Почему пропадает единица в willTopicе?
СпойлерПоказать
Mqtt.jpg

leaner
Сержант
Сообщения: 103
Зарегистрирован: 08.11.2017{, 13:13}
Репутация: 4

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

#496

Сообщение leaner » 07.02.2022{, 08:37}

УРА!!!! ЗАРАБОТАЛА!!! Может кому надо будет. Если у Вас стоит брокер MOSQUITTO( возможно что есть и в других брокерах mqtt) то в папке программы есть такой файл mosquitto.acl/ он и ограничивает users которые могут публиковать и подписываться на топики. Если в файл с логином и паролем внесли учетные данные нового юзера, а в этот файл mosquitto.acl/забыли внести, то новый клиент подключится к брокеру но публиковать и подписываться на топики не сможет

sspilberg
Рядовой
Сообщения: 5
Зарегистрирован: 13.04.2020{, 21:11}
Репутация: 0
Имя: Алексей

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

#497

Сообщение sspilberg » 10.03.2022{, 11:25}

здравствуйте.
обнаружилась следующая проблема с блоками mqtt esp32. в проекте настроено подключение к двум брокерам, один в локальной сети, другой на сервере. логика настроена таким образом что при отключении контроллера от локального роутера через 15 секунд происходит перезагрузка. локальный используется для организации логики работы на объекте поэтому важно подключение. брокер на сервере нужен посредственно для отображения состояний. вот тут как раз проблема нашлась у меня (хотя все было норм ранее). при отключении по какой-либо причине от брокера на сервере на блоке подключения к локальному брокеру так же выставляется ноль и далее перезагрузка по логике. может кто-то сталкивался?!

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

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

#498

Сообщение costy1957 » 03.04.2022{, 01:11}

Пользуюсь в проектах MQTT только этими блоками, пока лучшего не попадалось. Предлагаю 100% копию этих блоков в новом редакторе. С настройками главного блока теперь работать проще и удобнее.
Вложения
MQTT_ESP_Sub_v6.81_(Code_-_Professional).ubi
(164.46 КБ) 56 скачиваний
MQTT_ESP_Pub_v6.81_(Code_-_Professional).ubi
(182.87 КБ) 55 скачиваний
MQTT_ESP_Main_v6.81_(Code_-_Professional).ubi
(406.07 КБ) 55 скачиваний

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

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

#499

Сообщение SerOv » 03.04.2022{, 08:44}

Здраствуйте. Подскажите какие изменения внесены в отличиае от блоков 6.8?

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

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

#500

Сообщение costy1957 » 03.04.2022{, 09:43}

Изменений нет, только редактор другой.
[

Ответить

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