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

Chylan
Рядовой
Сообщения: 37
Зарегистрирован: 24.12.2018{, 18:56}
Репутация: 0
Имя: Сергей

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

#341

Сообщение Chylan » 17.11.2019{, 16:52}

User8 писал(а):
14.11.2019{, 17:37}
Chylan, а 0 появляется на выходе mqttConnected или всегда единица?
в каком смысле? На mqttConnected 1 если есть подключение, если оно пропало то 0

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

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

#342

Сообщение User8 » 17.11.2019{, 17:02}

Chylan, в последней версии библиотеки asyncmqtt на гитхаб есть проблема с тем, что если выдернуть интернет кабель, то не срабатывает кэлбэк-функция дисконнекта, в связи с чем дисконект не происходит и esp думает, что она подключена к mqtt, но на самом деле mqtt перестает работать.

В той версии библиотеки, что идет вместе с блоками, такой проблемы нет и дисконнект происходит спустя секунд 20-30 в любом случае.

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

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

#343

Сообщение Phazz » 02.12.2019{, 14:31}

C ESP32 не работает (

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

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

#344

Сообщение User8 » 02.12.2019{, 21:32}

Phazz, viewtopic.php?p=61490#p61490

Отправлено спустя 43 минуты 52 секунды:
Нужно только удалить старую библиотеку, иначе работать mqtt будет нестабильно, по ссылку выше подробно написал.

jenikP
Рядовой
Сообщения: 28
Зарегистрирован: 06.11.2018{, 09:18}
Репутация: 1
Имя: Евгений

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

#345

Сообщение jenikP » 03.12.2019{, 14:51}

Кто нибудь использовал в одном проекте два блока MQTT и Thingspeak? По отдельности все работает,
а если совместно - нет связи с MQTT сервером (cloudmqtt).

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

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

#346

Сообщение texbez » 03.12.2019{, 21:47}

jenikP писал(а):
03.12.2019{, 14:51}
Кто нибудь использовал в одном проекте два блока MQTT и Thingspeak? По отдельности все работает,
а если совместно - нет связи с MQTT сервером (cloudmqtt).
Я вообще с Thingspeak не разобрался.Я так понял что он только платный после пробного периода.

jenikP
Рядовой
Сообщения: 28
Зарегистрирован: 06.11.2018{, 09:18}
Репутация: 1
Имя: Евгений

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

#347

Сообщение jenikP » 04.12.2019{, 09:14}

texbez писал(а):
03.12.2019{, 21:47}
jenikP писал(а):
03.12.2019{, 14:51}
Кто нибудь использовал в одном проекте два блока MQTT и Thingspeak? По отдельности все работает,
а если совместно - нет связи с MQTT сервером (cloudmqtt).
Я вообще с Thingspeak не разобрался.Я так понял что он только платный после пробного периода.
С ограничениями (количество подключений, мост MQTT... ), но работает.
СпойлерПоказать
thingspeak.JPG

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

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

#348

Сообщение User8 » 04.12.2019{, 09:44}

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

jenikP
Рядовой
Сообщения: 28
Зарегистрирован: 06.11.2018{, 09:18}
Репутация: 1
Имя: Евгений

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

#349

Сообщение jenikP » 04.12.2019{, 09:52}

User8 писал(а):
04.12.2019{, 09:44}
используй любой mqtt клиент для телефона
Клиент mqtt на смарте установлен, но я хочу еще и наблюдать/анализировать данные за определенный период.
Т.е. mqtt -управление, thingspeak- статистика. Повторюсь оба блока: MQTT и Thingspeak рабочие, но при подключении к точке доступа возникает конфликт в результате подключается только блок Thingspeak.

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

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

#350

Сообщение User8 » 04.12.2019{, 11:15}

jenikP, отключи клиент wifi в настройках flprog, ты же указываешь данные о wifi в блоке thingspeak. Там правда криво все и используется delay, но это уже другой вопрос.

jenikP
Рядовой
Сообщения: 28
Зарегистрирован: 06.11.2018{, 09:18}
Репутация: 1
Имя: Евгений

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

#351

Сообщение jenikP » 04.12.2019{, 11:39}

User8 писал(а):
04.12.2019{, 11:15}
отключи клиент wifi
Спасибо за совет, но варианты с подключением уже перепробовал.

Отправлено спустя 4 минуты 19 секунд:
jenikP писал(а):
04.12.2019{, 11:39}
User8
Будет ли работать Ваш блок MQTT с блоками Cayenne?

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

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

#352

Сообщение User8 » 04.12.2019{, 11:46}

jenikP, у cayenne там тоже в блоках проблема, что контроллер зависает при пропадании интернета вроде.

jenikP
Рядовой
Сообщения: 28
Зарегистрирован: 06.11.2018{, 09:18}
Репутация: 1
Имя: Евгений

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

#353

Сообщение jenikP » 04.12.2019{, 11:53}

User8 писал(а):
04.12.2019{, 11:46}
jenikP, у cayenne там тоже в блоках проблема, что контроллер зависает при пропадании интернета вроде.
В связке mqtt и thingspeak так же после заливки нужно передернуть питание (иначе нет подключения)

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

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

#354

Сообщение User8 » 04.12.2019{, 11:56}

jenikP, нет, там даже без mqtt не работает.

Отправлено спустя 1 час 6 минут 17 секунд:
jenikP, пробуй этот блок viewtopic.php?p=80956#p80956

jenikP
Рядовой
Сообщения: 28
Зарегистрирован: 06.11.2018{, 09:18}
Репутация: 1
Имя: Евгений

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

#355

Сообщение jenikP » 04.12.2019{, 13:42}

User8 писал(а):
04.12.2019{, 13:02}
пробуй этот блок viewtopic.php?p=80956#p80956
Подключился к cloudmqtt и thingspeak без шаманства, буду наблюдать.

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

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

#356

Сообщение SerOv » 01.02.2020{, 17:37}

FLProg 6.3.0. При добавлении в схему блока MQTT ESP Sub v6.8. Для ESP32
А на ESP8266 этот блок нормально работает и посылает команды.
Arduino 1.8.11 Выдает ошибкe при проверке. А если плату с этим блоком убрать из компиляции. То проверка проходит без ошибок.
СпойлерПоказать
Arduino: 1.8.11 (Windows 10), Плата:"ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
C:\Users\SerOv\AppData\Local\Temp\flprog\pr8\pr8.ino: In function 'void loop()':

pr8:107:106: error: too few arguments to function 'void sub(const String&, String&, const byte&, bool&, bool&, const bool&, bool&)'

sub(Topic_195481493_2, Message_195481493_2, QoS_195481493_2, Received_195481493_2, subscribed_195481493_2);

^

C:\Users\SerOv\AppData\Local\Temp\flprog\pr8\pr8.ino:160:6: note: declared here

void sub(const String &topic, String &message, const byte &qos, bool &received, bool &subscribed, const bool &unsubscribe, bool &rTrig)

^

Несколько библиотек найдено для "ArduinoOTA.h"
Используется: D:\Program
Не используется: d:\Program
Несколько библиотек найдено для "WiFi.h"
Используется: D:\Program
Не используется: d:\Program
exit status 1
too few arguments to function 'void sub(const String&, String&, const byte&, bool&, bool&, const bool&, bool&)'

Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library
Неверная библиотека найдена в d:\Program Files (x86)\FLProg 630\ideV4\libraries\Esp32-SoftwareSerial-master: Missing 'sentence' from library

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
MQTT ESP32Sub.flp
(556.34 КБ) 112 скачиваний

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

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

#357

Сообщение AlekseyAaa » 02.02.2020{, 18:42}

User8 писал(а):
17.11.2019{, 17:02}
Chylan, в последней версии библиотеки asyncmqtt на гитхаб есть проблема с тем, что если выдернуть интернет кабель, то не срабатывает кэлбэк-функция дисконнекта, в связи с чем дисконект не происходит и esp думает, что она подключена к mqtt, но на самом деле mqtt перестает работать.

В той версии библиотеки, что идет вместе с блоками, такой проблемы нет и дисконнект происходит спустя секунд 20-30 в любом случае.
Спасибо! А то я уже ватчдог на аттини припаял, но не спасало :) Теперь нормально подключается. :smile9:

sashamelja
Рядовой
Сообщения: 10
Зарегистрирован: 04.02.2020{, 23:37}
Репутация: 1
Имя: Александр

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

#358

Сообщение sashamelja » 05.02.2020{, 15:46}

У когото работает MQTT на fl6.3+esp32
(у меня не конектитса с брокером,библиотеки подменял, блок для esp32, даные брокера введены правильно, esp 32 точно в сети.)

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

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

#359

Сообщение SerOv » 05.02.2020{, 17:52}

sashamelja писал(а):
05.02.2020{, 15:46}
У когото работает MQTT на fl6.3+esp32
(у меня не конектитса с брокером,библиотеки подменял, блок для esp32, даные брокера введены правильно, esp 32 точно в сети.)
У меня работаетESP32 c блоками MQTT_ESP32_Main_6_8_(CODE) и MQTT_ESP_Pub_6_8_copy_(CODE) все нормально.
А вот с блоком MQTT_ESP_Sub_6_8_copy_(CODE) выдает ошибку Arduino 1.8.10

Отправлено спустя 4 минуты 58 секунд:
sashamelja писал(а):
05.02.2020{, 15:46}
У когото работает MQTT на fl6.3+esp32
(у меня не конектитса с брокером,библиотеки подменял, блок для esp32, даные брокера введены правильно, esp 32 точно в сети.)
Да и чем вы ее запитываете? Сначало тоже так было.

sashamelja
Рядовой
Сообщения: 10
Зарегистрирован: 04.02.2020{, 23:37}
Репутация: 1
Имя: Александр

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

#360

Сообщение sashamelja » 05.02.2020{, 21:47}

Питание от ноута - хорошим юсб шнуром.(ви-фи,и блю-пупс)работают нормально, и ни каких ошибок не могу подключитса к серверу.
Старые проекты, на 5.3+8266-работают перекрасно.
У вас портативная 6.3 ?
У меня не портативная и там Arduino 1.8.11
Вы подменяли библиотеки в аде?
Если помните розкажите пожалуста подробней все действия после установки fl.

Ответить

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