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

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

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

#401

Сообщение Phazz » 02.01.2021{, 21:54}

Rovki, Это Вам для каскада нужно?

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#402

Сообщение Rovki » 02.01.2021{, 22:02}

Да, тезка и земеля (я родом из Новосиба) ,для каскады/
Посмотрел ваш пример , у меня так же с RND>string> ваш блок для отправки чисел ,но не хочет отправлять ,точнее каскада (подписчик) не получает :( брокер polmira.ru
Кратковременное подключение к брокеру есть (индикатор на выходе блока издателя) каждые 5 сек.
Электронщик до мозга костей и не только

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

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

#403

Сообщение Phazz » 02.01.2021{, 23:07}

Ну в принципе блок приема переделывать не нужно. А отправки думаю решаемо. Но лучше попросите своих программистов научить программу работать со строками.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#404

Сообщение Rovki » 02.01.2021{, 23:16}

Phazz писал(а):
02.01.2021{, 23:07}
Ну в принципе блок приема переделывать не нужно. А отправки думаю решаемо. Но лучше попросите своих программистов научить программу работать со строками.
Да в модбасе стринг сами понимаете ..а делать для MQTT только- накладно. Да и в конечном случае пользователю нужно передавать значения разные ,а не тексты (для этого есть почта,пуш,смс) . А уже к значению можно в каскаде использовать динамический текст ,зачем его по сети гонять

Отправлено спустя 21 минуту 45 секунд:
Тут похоже проблема с ID ... :smile427:
Электронщик до мозга костей и не только

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

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

#405

Сообщение User8 » 03.01.2021{, 04:17}

Rovki, скоро автор флпрог добавит mqtt нативно в программу, поэтому если вам нужен выбор типа отправки/приема данных, обратитесь к нему, может он учтет.

grover
Рядовой
Сообщения: 22
Зарегистрирован: 14.01.2018{, 22:08}
Репутация: 0

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

#406

Сообщение grover » 25.01.2021{, 12:23}

Есть у кого-нибудь блоки для thingspeak.com

MAN8007
Рядовой
Сообщения: 17
Зарегистрирован: 18.02.2016{, 12:44}
Репутация: 0

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

#407

Сообщение MAN8007 » 15.02.2021{, 20:22}

User8 писал(а):
03.01.2019{, 01:03}
Блоки для Arduino Ethernet:

Если используете блоки на нескольких arduino, не забудьте зайти в параметры Main блока и изменить mac адрес.
В параметре mac замените последний символ на 0xEE или 0xEF. На каждой arduino должен быть разный mac адрес.


Используйте клеммы вместо переменных хотя бы для входов/выходов String в вашем проекте, чтобы использовать меньше динамическую память и не получить глюки во время работы arduino. Особенно это касается Arduino Uno, Nano, Pro mini и других подобных контроллеров на atmega328p.
Здравствуйте User8. Не могли бы Вы в блоке MQTT_Ethernet_Sub_3_6 вход Topik сделать выходом. Дело в том что я хочу сделать шлюз CAN-MQTT для связи с IOBROKERом , а блок SUB имеет только вход Topik , а для постройки парсера нужен выход. Заранее спасибо.

Bentry
Рядовой
Сообщения: 43
Зарегистрирован: 20.09.2017{, 10:22}
Репутация: 7

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

#408

Сообщение Bentry » 18.02.2021{, 18:47}

Не могу разобраться. Скачал блок "MQTT_ESP_Sub_6_8_(CODE).ubi"
С esp8266 компилироваться не хочет. Зато без проблем компилируется с контроллером ESP32.
Нашел точно такой же блок, но у него нет входа "Unsubscribe". Вот он с 8266 компилируется. Но мне как раз этот вход ой как нужен.
Где косяк, не могу понять

__________________________________

Проблема сама решилась. Удалил блок "MQTT ESP Main v6.8", удалил библиотеки и скачал по новой.

igorek
Рядовой
Сообщения: 28
Зарегистрирован: 02.01.2018{, 15:52}
Репутация: 0

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

#409

Сообщение igorek » 15.04.2021{, 18:46}

дайте правильную логику роботы mqtt///
а именно отправку я понял , как привязать к брокеру.... как получить данные с брокера...

1. 3- ЕСП 8266 в режиме клиент
2. на микротику загружено MQTT - broker

все проходит через роутер...

микротик подключен к роутеру по лан порту.
ЕСП8266 подключены через WIFI к роутеру .
как и что привязать в микротик то, что пакеты должны все проходить с WIFI роутера на lan микротик который держит mqtt-broker

Modul
Рядовой
Сообщения: 37
Зарегистрирован: 16.03.2021{, 13:10}
Репутация: 3
Имя: Egor

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

#410

Сообщение Modul » 15.04.2021{, 23:12}

Что то все так сложно.. Зачем роутер если на микротике поднят брокер? Или микротик не имеет выхода в интернет, а только через роутер? Не проще было поднять брокер на впс?

igorek
Рядовой
Сообщения: 28
Зарегистрирован: 02.01.2018{, 15:52}
Репутация: 0

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

#411

Сообщение igorek » 15.04.2021{, 23:20}

Modul писал(а):
15.04.2021{, 23:12}
Что то все так сложно.. Зачем роутер если на микротике поднят брокер? Или микротик не имеет выхода в интернет, а только через роутер? Не проще было поднять брокер на впс?

так правильно микротик 2011 ils_in.... только 10 портов лан....из них 5 гигабит и 1 сфп порт .....

ivans39
Рядовой
Сообщения: 2
Зарегистрирован: 19.03.2021{, 12:28}
Репутация: 0
Имя: ivan

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

#412

Сообщение ivans39 » 07.05.2021{, 11:09}

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

starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

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

#413

Сообщение starshoy81 » 12.05.2021{, 00:39}

ivans39, esp-link посмотрите, возьмите оттуда страницы

xolodnow
Рядовой
Сообщения: 1
Зарегистрирован: 12.05.2021{, 15:05}
Репутация: 0
Имя: Евгений

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

#414

Сообщение xolodnow » 12.05.2021{, 15:07}

да

vasiliy209
Рядовой
Сообщения: 2
Зарегистрирован: 11.05.2021{, 15:07}
Репутация: 0
Имя: Василий

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

#415

Сообщение vasiliy209 » 16.05.2021{, 13:43}

Здравствуйте! При использовании 2-х реле, реле включаются не правильно. Если реле расположенное ниже в программе флпрог не включить, то реле расположенное выше не включается. Это как 2-х клавишный включатель не правильно подключаешь, то так работает. Топики в порт приходят правильно.
WQTT.RU.flp
(1.41 МБ) 52 скачивания

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#416

Сообщение edyapd » 16.05.2021{, 14:18}

vasiliy209, а какие сообщения посылаются в топики? И можете привести схему подключения реле к выходам?

vasiliy209
Рядовой
Сообщения: 2
Зарегистрирован: 11.05.2021{, 15:07}
Репутация: 0
Имя: Василий

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

#417

Сообщение vasiliy209 » 16.05.2021{, 15:05}

Спасибо! Разобрался, дело было в подключении 2-х канального реле.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

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

#418

Сообщение Di123 » 10.08.2021{, 16:56}

на гугл плей есть прога mqtt dash с ней будет работать это всё ?

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

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

#419

Сообщение Phazz » 10.08.2021{, 17:24}

Да, с любой прогой которая умеет MQTT будет работать

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

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

#420

Сообщение Di123 » 15.08.2021{, 16:42}

Phazz, а сейчас на где обычно создают брокеров а то милый котик уже неактивен там какой то колючий ёж теперь

Отправлено спустя 22 минуты 13 секунд:
в программе написано что вроде как он сам создаёт брокера но не подключается никуда
2021-08-15 20-58-37.PNG
Отправлено спустя 52 минуты 49 секунд:
делаю точку доступа но и по ней ничего не соединяется

2021-08-15_215216.png
2021-08-15 21-51-51.PNG

Ответить

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