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

Anydy

MQTT для Arduino, ESP8266, ESP32

#261

Сообщение Anydy » 12.03.2019{, 00:08}

User8, сделайте просто в каждом цикле программы отправку еденички на выход ..и сброс после .....это же вроде просто!

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

MQTT для Arduino, ESP8266, ESP32

#262

Сообщение User8 » 12.03.2019{, 00:17}

Anydy, единицы после прихода чего? Зачем избыточный функционал, если можно все сделать с помощью стандартных блоков flprog.

Anydy

MQTT для Arduino, ESP8266, ESP32

#263

Сообщение Anydy » 12.03.2019{, 00:24}

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

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

MQTT для Arduino, ESP8266, ESP32

#264

Сообщение smol » 13.03.2019{, 15:17}

User8 писал(а):
12.03.2019{, 00:17}
Anydy, единицы после прихода чего? Зачем избыточный функционал, если можно все сделать с помощью стандартных блоков flprog.
У меня максимум 5 блоков использовать получается (3 подписки, 2 публикации) параметров много приходится цикл городить (смену топика и данных в одном Public блоке)

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

MQTT для Arduino, ESP8266, ESP32

#265

Сообщение User8 » 13.03.2019{, 15:49}

smol, попробуй эти блоки viewtopic.php?p=61486#p61486

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

MQTT для Arduino, ESP8266, ESP32

#266

Сообщение smol » 13.03.2019{, 16:24}

User8 писал(а):
13.03.2019{, 15:49}
smol, попробуй эти блоки viewtopic.php?p=61486#p61486
О!! Спасибо попробую. А в чем отличие, кратко?

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

MQTT для Arduino, ESP8266, ESP32

#267

Сообщение User8 » 13.03.2019{, 16:26}

smol, другая библиотека, код переписан немного

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

MQTT для Arduino, ESP8266, ESP32

#268

Сообщение smol » 13.03.2019{, 16:33}

User8 писал(а):
13.03.2019{, 16:26}
smol, другая библиотека, код переписан немного
ага увидел, QoS = 0 без вариантов. Попробуем.

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

MQTT для Arduino, ESP8266, ESP32

#269

Сообщение smol » 02.04.2019{, 23:35}

User8 писал(а):
13.03.2019{, 15:49}
smol, попробуй эти блоки viewtopic.php?p=61486#p61486
Попробовал блок подписки выдает строку кодов на выходе Message , т.е при отправке в топик значения 100 получаем текст 494848

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

MQTT для Arduino, ESP8266, ESP32

#270

Сообщение User8 » 03.04.2019{, 01:17}

smol, обновил блок, должно работать

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

MQTT для Arduino, ESP8266, ESP32

#271

Сообщение smol » 03.04.2019{, 07:21}

User8 писал(а):
03.04.2019{, 01:17}
smol, обновил блок, должно работать
Спасибо, попробую.
Отлично, все работает

superolegb
Рядовой
Сообщения: 8
Зарегистрирован: 29.09.2017{, 13:05}
Репутация: 0

MQTT для Arduino, ESP8266, ESP32

#272

Сообщение superolegb » 22.04.2019{, 21:13}

добрый день!

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

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

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

#273

Сообщение User8 » 29.05.2019{, 03:20}

Реализована полная поддержка QoS на блоке Sub без костылей, используйте последние версии блоков.

apercot
Рядовой
Сообщения: 1
Зарегистрирован: 09.11.2016{, 21:35}
Репутация: 0

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

#274

Сообщение apercot » 09.06.2019{, 21:01}

mqtt_esp_main_6_8 использую

Arduino: 1.8.9 (Windows 10), Плата:"NodeMCU 0.9 (ESP-12 Module), 80 MHz, 57600, 4M (3M SPIFFS)"

In file included from c:\Program Files (x86)\FLProg\ideV3\portable\sketchbook\libraries\async-mqtt-client-master\src/AsyncMqttClient.h:4:0,

from C:\Users\Apercot\AppData\Local\Temp\flprog\pr2\pr2.ino:2:

c:\Program Files (x86)\FLProg\ideV3\portable\sketchbook\libraries\async-mqtt-client-master\src/AsyncMqttClient.hpp:12:25: fatal error: ESPAsyncTCP.h: No such file or directory

#include <ESPAsyncTCP.h>

^

compilation terminated.

exit status 1
Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).

Народ добрый вечер
Мучаюсь уже два дня что может быть
Выручайте

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

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

#275

Сообщение User8 » 09.06.2019{, 21:08}

apercot, установить эту библиотеку https://github.com/me-no-dev/ESPAsyncTCP

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

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

#276

Сообщение ivanpost » 18.06.2019{, 22:48}

Никак не удается блок Main параметризировать из системных параметров или переменных загруженных из этих параметров... Из констант все работает отлично. Нет ли какой хитрости?

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

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

#277

Сообщение User8 » 18.06.2019{, 23:36}

ivanpost, должно все работать, если последние версии блоков используете или покажите как используете.

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

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

#278

Сообщение ivanpost » 18.06.2019{, 23:48}

Параметры Main
Прямо так делаете? Может что конвертировать необходимо?

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

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

#279

Сообщение User8 » 19.06.2019{, 00:02}

ivanpost, да должно работать, в видео показано как https://m.youtube.com/watch?v=j1xbNdPzI ... ex=11&t=0s

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

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

#280

Сообщение ivanpost » 19.06.2019{, 14:52}

User8 писал(а):
19.06.2019{, 00:02}
ivanpost, да должно работать, в видео показано как https://m.youtube.com/watch?v=j1xbNdPzI ... ex=11&t=0s
Моя ошибка была в том, что я поставил условие на плату с Блоком Main. Начинает работать, когда включен WiFi. Вероятно, этого делать не нужно. Блок должен обрабатываться сразу при старте.

Ответить

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