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

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#561

Сообщение Ingwar » 27.01.2023{, 21:56}

Надо наверное уже где-то закрепить (хотя и не поможет, народ любит писать, а не читать), что при работе с esp отключаете в настройках IDE вывод сообщений. Это значительно увеличивает шансы удачной компиляции.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Agat
Рядовой
Сообщения: 40
Зарегистрирован: 07.01.2023{, 12:29}
Репутация: 2
Имя: Дмитрий

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

#562

Сообщение Agat » 28.01.2023{, 11:16}

Ingwar писал(а):
27.01.2023{, 21:56}
Надо наверное уже где-то закрепить (хотя и не поможет, народ любит писать, а не читать), что при работе с esp отключаете в настройках IDE вывод сообщений. Это значительно увеличивает шансы удачной компиляции.
Спасибо! Только это и помогло!

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

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

#563

Сообщение costy1957 » 28.01.2023{, 23:03}

Если можно поподробнее, как в настройках IDE отключить вывод сообщений.

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

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

#564

Сообщение costy1957 » 30.01.2023{, 16:38}

Господин полковник
Ingwar, если Вы сказали А, будьте любезны и Б сказать. Так, где волшебная кнопка, которая отключает вывод сообщений в Ide?

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

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

#565

Сообщение worm73 » 31.01.2023{, 15:08}

Доброго времени суток всем.
Подскажите в чём может быть ошибка, делаю простой тестовый скейч из 3 блоков для работы с MQTT на ESP32 связь с брокером есть, а сообщение не шлётся, отправку белаю через генератор каждые 2 сек.
Вложения
ESP32.png

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

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

#566

Сообщение SerOv » 31.01.2023{, 15:44}

Файл проекта можете выложить?

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

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

#567

Сообщение worm73 » 31.01.2023{, 17:55}

Вот

Отправлено спустя 1 час 31 минуту 36 секунд:
Разобрался. Блок MQTT ESP Main v6.82.1 с возможностью выбора платы не выдавала логическую "1" на выходи при подключении к брокеру, хотя брокер получал сообщение о подключении ESP32. Поменял блок на MQTT ESP32 Main v6.8. и всё заработало.
Вложения
Test_ESP32.flp
(6.34 МБ) 47 скачиваний

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

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

#568

Сообщение costy1957 » 31.01.2023{, 21:25}

исправил ошибку по выходу mqttConected для esp32 ver 6.82.2

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

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

#569

Сообщение Phazz » 31.01.2023{, 21:26}

costy1957, а почему не объединили версии для 8266 и 32 в одном блоке?

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

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

#570

Сообщение costy1957 » 31.01.2023{, 21:28}

они в одном блоке

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#571

Сообщение rw6cm » 31.01.2023{, 22:00}

Phazz писал(а):
31.01.2023{, 21:26}
а почему не объединили версии для 8266 и 32 в одном блоке?
Скажите а зачем это делать?
В проекте мы можем выбрать только один контроллер.
Значит код второго контроллера будет всегда лишним весом,
увеличивая вес блока/проекта и тормоза при редактировании проекта.
Win10-64, FLProg (portable)

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

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

#572

Сообщение costy1957 » 31.01.2023{, 22:22}

При выборе контролера используется код для него, код второго контролера не задействуется и является лишним весом в блоке main, соответственно никаких тормозов при редактировании проекта. А делается это для того, чтобы уменьшить размер блока при создании проекта и освободить пространство под другие блоки при работе над проектом

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#573

Сообщение rw6cm » 31.01.2023{, 23:14}

costy1957 писал(а):
31.01.2023{, 22:22}
При выборе контролера используется код для него, код второго контролера не задействуется и является лишним весом в блоке main, соответственно никаких тормозов при редактировании проекта.
Вы ошибаетесь. Каждый раз когда подводите мышку к блоку идет анализ всего кода блока. (Если выбрано то, то так, или так, итд)
На это комп тратит процессорное время. На слабых компьютерах это очень заметно.
А делается это для того, чтобы уменьшить размер блока при создании проекта и освободить пространство под другие блоки при работе над проектом
Это о чем? Каким образом вы его уменьшаете?
Win10-64, FLProg (portable)

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

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

#574

Сообщение artemka19 » 31.01.2023{, 23:21}

rw6cm писал(а):
31.01.2023{, 23:14}
Вы ошибаетесь. Каждый раз когда подводите мышку к блоку идет анализ всего кода блока. (Если выбрано то, то так, или так, итд)
На это комп тратит процессорное время. На слабых компьютерах это очень заметно.
не замечал такого

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

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

#575

Сообщение costy1957 » 01.02.2023{, 00:32}

rw6cm, когда блоки откроете, тогда увидите, что я там уменьшил. И еще, это альтернативный блок, пользователь должен иметь возможность выбора, а не упираться в какое то одно решение. Еще есть понятие удобство, так я за удобство, пусть даже с лишним весом.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

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

#576

Сообщение rw6cm » 01.02.2023{, 04:34}

costy1957 писал(а):
01.02.2023{, 00:32}
И еще, это альтернативный блок, пользователь должен иметь возможность выбора, а не упираться в какое то одно решение. Еще есть понятие удобство, так я за удобство
Вы не поняли. блок main в проекте может быть только один. Вы в него вложили код двух разных контроллеров +логика для выборки.
тем самым увеличили его вес в половину. Может есть смысл каждому свой блок?
Могу понять когда у блока 100500 входов/выходов и куча настроек (при смене контроллера лень все это привязывать)
но здесь один выход и мизер настроек. Поменять в проекте блок и сделать одну привязку это большое не удобство?:)
Есп8266 и есп32 разные контроллеры, и чем дальше, тем сильнее расходится между ними код. Стоит ли их объединять...?

п/с Это просто подсказки.
Можно привязать процессоры прямо в условиях. и не надо будет в настройке его выбирать.
Почти половина кода в блоке дублируется, можно было упростить.
Спасибо за труды, понадобится MQTT обращусь к этой теме.
Win10-64, FLProg (portable)

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

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

#577

Сообщение costy1957 » 01.02.2023{, 09:40}

Могу понять когда у блока 100500 входов/выходов и куча настроек (при смене контроллера лень все это привязывать)
rw6cm, да вы шутник. И вам спасибо. Может быть увидим версию 7.0.
Удачи.

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

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

#578

Сообщение Phazz » 01.02.2023{, 10:07}

costy1957, ах да, сбил с толку отдельный для 8266 блок main.
Тип процессора можно менять автоматически
2023-02-01_12-07-41.png

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

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

#579

Сообщение slsl » 01.02.2023{, 19:13}

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

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

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

#580

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

блок main с автовыбором кода esp8266 или esp32, строка выбора контроллера удалена. Авторы идеи Phazz и rw6cm. Смысл в следующем при проектировании вы уже выбираете тип контроллера, в дальнейшем при компилировании автоматически определяется тип контроллера и его код. При проектировании main блок устанавливается в верхней части проекта и используется 1 раз.
Вложения
MQTT_ESP_Main_v6.82.22_(Code_-_Professional).ubi
esp8266, esp32
(702.57 КБ) 59 скачиваний
Последний раз редактировалось costy1957 01.02.2023{, 20:39}, всего редактировалось 1 раз.

Ответить

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