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

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

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

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

Быстрый старт без установки брокера используя сайт cloudmqtt.com:
https://www.youtube.com/watch?v=QGQpr_Rc8mo
https://www.youtube.com/watch?v=jwEAYTMzVME

Настройка и использование 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

Группы в Telegram:
https://t.me/joinchat/G96_oxYz8SPyJIEr0onKBQ
https://t.me/joinchat/BRr4VVHiIr1f-AX_Ubg1lg

Описание блока 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.
Retain - если true, последнее отправленное сообщение сохраняется на mqtt брокере. Это сообщение будет получать подписчик при подключении к брокеру.
Выход qosDelivered - нужен для контроля доставки сообщений с QoS 1 и 2 до брокера. При подаче и удерживании единицы на входе Send, на выходе qosDelivered будет единица, если сообщение доставлено на брокер. Единица будет держаться на данном выходе пока на входе Send не пропадет единица.

Не забудьте включить wifi клиент в настройках контроллера и указать данные вашей wifi сети.

Блоки для Ethernet Arduino: viewtopic.php?p=61486#p61486
Копии блоков для ESP8266, для подключения к двум брокерам одновременно: viewtopic.php?p=61489#p61489
Блоки для ESP8266:
Вложения
MQTT_ESP_Main_6_8_(CODE).ubi
(521.53 КБ) 41 скачивание
MQTT_ESP_Sub_6_8_(CODE).ubi
(38.95 КБ) 40 скачиваний
MQTT_ESP_Pub_6_8_(CODE).ubi
(44.63 КБ) 82 скачивания
Последний раз редактировалось User8 12.07.2019{, 15:43}, всего редактировалось 149 раз.

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

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

#281

Сообщение User8 » 19.06.2019{, 15:16}

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

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

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

#282

Сообщение User8 » 05.07.2019{, 17:44}

Добавлена возможность отписаться от топика;
Добавлены копии блоков для ESP8266, для подключения к двум брокерам одновременно;

Vibe
Рядовой
Сообщения: 7
Зарегистрирован: 27.06.2019{, 21:28}
Репутация: 0
Имя: Стас

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

#283

Сообщение Vibe » 06.07.2019{, 17:16}

ребят, помогите с одним вопросом.
установил и настроил MQTT ESP средствами FLPROG, ничего не работает. есть рабочий сервер на линуксе, с других плат меседжи прилетают. ESPшку проверил через cloudmqtt.com, работает. пробую на свой, ничего не получается. нет подключения и все. проверял с паролем и без. та же фигня. выход MQTTConnected пишет нет подключения. пробовал почти все пользовательские блоки. на всех та же беда. чую что то с моим сервером но не могу понять куда копать.
буду благодарен за любую помощь.

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

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

#284

Сообщение User8 » 07.07.2019{, 00:41}

Vibe, а брокер вообще запущен? Возможно роутер блокирует чего, информации мало, ничего конкретного подсказать не получится.

Vibe
Рядовой
Сообщения: 7
Зарегистрирован: 27.06.2019{, 21:28}
Репутация: 0
Имя: Стас

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

#285

Сообщение Vibe » 07.07.2019{, 18:12}

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

Отправлено спустя 4 минуты 43 секунды:
хотя нет, после выключения, нет подключения к серверу.
Вложения
mqtt.JPG

bondarchyk
Рядовой
Сообщения: 9
Зарегистрирован: 13.11.2018{, 11:46}
Репутация: 0
Имя: Дмитрий

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

#286

Сообщение bondarchyk » 08.07.2019{, 10:24}

User8, Большое спасибо Вам за прекрасные блоки и проделанною работу. Я только начал изучать и внедрять данные блоки, и у меня все с первого раза получилось. Но так как имею пару больших проектов, построенных на Arduino MEGA, то очень есть большая необходимость применять данные блоки в связке с Arduino UNO или Arduino MEGA с подключенным к ним ESP6288-01. С того что я увидел, то есть блоки для Ethernet Arduino, я понял что связь через шилд, а мне необходимо с ESP6288-01, может я не прав, то прошу поправить меня, и подсказать как необходимо сделать.

Аватара пользователя
Golan
Капитан
Сообщения: 808
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 70
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

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

#287

Сообщение Golan » 08.07.2019{, 10:35}

Vibe писал(а):
07.07.2019{, 18:17}
хотя нет, после выключения, нет подключения к серверу.
Вы начните с самого простого, просто публикацию с генератором например, либо подписку, заработает, (можно смотреть в MQTTfx), будете цеплять что нибудь другое.
1.jpg
1.jpg (10.73 КБ) 216 просмотров
Добро не ценится в современном мире, люди от него наглеют!

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

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

#288

Сообщение User8 » 08.07.2019{, 10:46}

bondarchyk, благодарю, вся логика касающяяся mqtt пишется и загружается на esp, связь между контроллерами осуществляете с помощью uart и блоков отправки и приема переменной в uart, эти блоки стандартные и есть в программе, в разделе UART.

Vibe
Рядовой
Сообщения: 7
Зарегистрирован: 27.06.2019{, 21:28}
Репутация: 0
Имя: Стас

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

#289

Сообщение Vibe » 08.07.2019{, 22:23}

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

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

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

#290

Сообщение User8 » 08.07.2019{, 23:03}

Vibe, лог москито находится тут /var/log/mosquitto/

Аватара пользователя
Golan
Капитан
Сообщения: 808
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 70
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

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

#291

Сообщение Golan » 08.07.2019{, 23:52}

Vibe писал(а):
08.07.2019{, 22:23}
наверно придется сделать еще один mqtt сервер
Вы сами отвечаете на свой вопрос
Vibe писал(а):
06.07.2019{, 17:16}
ESPшку проверил через cloudmqtt.com, работает
как я я это пропустил :smile250: , проблема в сервере, блоки тут не при чем скорее всего
Добро не ценится в современном мире, люди от него наглеют!

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

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

#292

Сообщение ivanpost » 09.07.2019{, 22:36}

bondarchyk писал(а):
08.07.2019{, 10:24}
User8, ... Но так как имею пару больших проектов, построенных на Arduino MEGA, то очень есть большая необходимость применять данные блоки в связке с Arduino UNO или Arduino MEGA с подключенным к ним ESP6288-01...
Esp-Link есть прошивка Esp 8266 и блоки основанные на библиотеке El-Client для Uno/Mega. Там полный фарш, включая OTA, Rest, Mqtt и прозрачный бридж. Но есть и ограничения связанные с ограниченной памятью AVR. viewtopic.php?t=2564 Актуальные блоки - в конце темы. Блоки из этой темы лучше при высоких требованиях к коннектам, обработке и длине сообщений. Cвязь esp-Avr - везде по uart

Отправлено спустя 13 минут 51 секунду:
User8, При активной работе блоков в паре с мобильными устройствами, при использовании бесплатных сервисов типа CloudMQTT происходит "зависание" самого брокера. Требуется Reset через сайт или POST запрос. У вас нет реализации Отправки стандартного POST?

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

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

#293

Сообщение User8 » 10.07.2019{, 00:09}

ivanpost писал(а):
09.07.2019{, 22:50}
При активной работе блоков в паре с мобильными устройствами, при использовании бесплатных сервисов типа CloudMQTT происходит "зависание" самого брокера
Что за зависания? Для esp нужно хорошее питание, правильная обвязка и хорошие провода, зависаний не должно быть.

Отправлено спустя 1 минуту 51 секунду:
ivanpost писал(а):
09.07.2019{, 22:50}
Требуется Reset через сайт или POST запрос. У вас нет реализации Отправки стандартного POST?
Это все можно сделать с помощью http клиента, вот например https://github.com/boblemaire/asyncHTTPrequest

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

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

#294

Сообщение ivanpost » 10.07.2019{, 00:26}

User8, Отлично работает на хорошей плате. Виснет именно брокер. Не исключено, из за борща с сообщениями и их кодировкой. Пропадает с ним всякая связь с любого устройства. Его ресет сразу все налаживает

Vibe
Рядовой
Сообщения: 7
Зарегистрирован: 27.06.2019{, 21:28}
Репутация: 0
Имя: Стас

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

#295

Сообщение Vibe » 10.07.2019{, 21:42}

User8, в логе пишет что...
invalid protocol "MQTT"
что делать?
линукс update, upgrade сделал. не помогло. может кто сталкивался с такой проблемой?

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

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

#296

Сообщение User8 » 10.07.2019{, 21:44}

Vibe, в настройках москито должна стоять 3.1.1 версия протокола.

Vibe
Рядовой
Сообщения: 7
Зарегистрирован: 27.06.2019{, 21:28}
Репутация: 0
Имя: Стас

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

#297

Сообщение Vibe » 10.07.2019{, 23:33}

User8, если б я знал как...
наверно библиотеку ардуино обновить?

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

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

#298

Сообщение User8 » 10.07.2019{, 23:45}

Vibe, я ошибся, версия в конфиге не ставится. Устанавливайте по новой, проверяйте все введенные данные, пока все не заработает, в интернете инструкций море.

Отправлено спустя 26 минут 58 секунд:
Vibe, попробуйте подключиться не указывая mqttUser и mqttPassword.

Vibe
Рядовой
Сообщения: 7
Зарегистрирован: 27.06.2019{, 21:28}
Репутация: 0
Имя: Стас

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

#299

Сообщение Vibe » 11.07.2019{, 08:48}

User8, пробовал, то же беда.

dimonsustr
Рядовой
Сообщения: 12
Зарегистрирован: 15.03.2018{, 14:39}
Репутация: 0
Имя: Dima

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

#300

Сообщение dimonsustr » 11.07.2019{, 08:50}

Столкнулся с неизвестным :D Использую cloudmqtt+клиент MQTT Dash, не могу корректно передать цифровое значение ни слайдером, ни через текстовое поле в ESP с MQTT Dash, в обратную сторону данные летают и отображаются корректно. Приходит в блок SUB на ESP какая-то цифровая ахинея (см. фото c консоли cloudmqtt, topic 30). Блоки использую 6.4, с 6.8 почему-то постоянный ребут ESP независимо от версии Flprog. QoS везде 0.
Изображение
upd: судя по тому, что ахинея приходит уже в таком виде на брокер, виноват MQTT Dash (не зря пишут, что правильно заданный вопрос содержит в себе ответ :smile171:). Посоветуйте плз похожего клиента.

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость