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

Anydy

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

#321

Сообщение Anydy » 09.11.2019{, 03:05}

User8, Да ...верно.....у нас на форуме уже принято так ----помогите а то я нимагу поднять ногу....и всё ---больше никакой информации...

Аватара пользователя
НиколаМастер
Рядовой
Сообщения: 99
Зарегистрирован: 10.01.2018{, 12:36}
Репутация: 8
Контактная информация:

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

#322

Сообщение НиколаМастер » 11.11.2019{, 15:55}

Посмотрите пожалуйста.

Отправлено спустя 1 час 32 минуты 25 секунд:
Про пин 4 я понял, а какой блок основной использовать?
Вложения
11.11.19_2.flp
(2.18 МБ) 108 скачиваний
Brevis esse laboro, obscurus fiо - если я стараюсь быть кратким, я становлюсь непонятным

Аватара пользователя
НиколаМастер
Рядовой
Сообщения: 99
Зарегистрирован: 10.01.2018{, 12:36}
Репутация: 8
Контактная информация:

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

#323

Сообщение НиколаМастер » 12.11.2019{, 08:41}

Друзья, еще раз прошу помощи, проблеме не в веб сервере, он работает нормально и без 4 пина.
Проблема в последней плате, нет соединения с MQTT сервером.

Отправлено спустя 3 часа 43 минуты 20 секунд:
viewtopic.php?p=79251&sid=ea3cf0e4facc6 ... 333#p79251
я исправился :)
Brevis esse laboro, obscurus fiо - если я стараюсь быть кратким, я становлюсь непонятным

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

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

#324

Сообщение User8 » 12.11.2019{, 14:44}

НиколаМастер, создайте новый проект, скачайте последние версии блоков mqtt и попытайтесь установить связь с cloudmqtt.com для начала, запихнуть все подряд в проект и надеться что все заработает, такого не бывает. Main блок у вас старый, он не работает с последними версиями блоков pub и sub. Вебсервер как и gsm можно убрать, используйте mqtt клиент для телефона любой для показа нужной информации из топиков.

Timoha
Рядовой
Сообщения: 11
Зарегистрирован: 06.10.2017{, 21:15}
Репутация: 0
Откуда: Москва
Имя: Юрий

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

#325

Сообщение Timoha » 13.11.2019{, 20:46}

User8, хотел в очередной раз поблагодарить за отличные блоки! Более года успешно применяю их. Решил обновить ряд проектов, заодно и версию блоков mqtt, в итоге провозился полдня в поисках причины отсутствия соединения с mqtt брокером. Причину обнаружил. Есть такой блок Уровень сигнала WiFi Esp8266, так вот при использовании его совместно с блоками mqtt версии 6.8, соединение с брокером отсутствует, сам блок уровня сигнала работает. До версии 6.8 использовал блоки mqtt 4.0 - подобного не было. Причину конфликта блоков, увы пока не получилось установить!

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

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

#326

Сообщение User8 » 13.11.2019{, 21:19}

Timoha, в том блоке опрос уровня сигнала идет в каждом цикле, из-за этого скорее всего тупит, еще и вывод в юарт зачем-то. Решение: добавить вход при подаче единицы на который будет выполнен один запрос на актуальный уровень сигнала.

Отправлено спустя 17 минут 44 секунды:
Timoha, viewtopic.php?p=79564#p79564

Timoha
Рядовой
Сообщения: 11
Зарегистрирован: 06.10.2017{, 21:15}
Репутация: 0
Откуда: Москва
Имя: Юрий

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

#327

Сообщение Timoha » 13.11.2019{, 22:05}

User8, :smile9: ... работает!

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

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

#328

Сообщение Rovki » 13.11.2019{, 23:12}

Подскажите есть ли какие то конвертеры модбас- mqtt :smile37:
Электронщик до мозга костей и не только

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

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

#329

Сообщение User8 » 13.11.2019{, 23:48}

Rovki, как вы себе это представляете? Можно использовать их вместе при желании и передавать данные из одного протокола в другой через контроллер, но смысл в таком решение только если у вас есть оборудование с модбас и вы хотите с него данные передавать в mqtt.

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

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

#330

Сообщение Rovki » 14.11.2019{, 00:15}

User8 писал(а):
13.11.2019{, 23:48}
Rovki, если у вас есть оборудование с модбас и вы хотите с него данные передавать в mqtt.
Да так ...
Электронщик до мозга костей и не только

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

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

#331

Сообщение starshoy81 » 14.11.2019{, 00:57}

Rovki, разные уровни протоколов. И MQTT исключительно строчными посылками оперирует. Я такую штуку делал на есп в связке с ардуино, пару лет назад. На даче у меня зарядник от солнечных батарей опрашивает ардуина по модбасу, потом конвертирует в строки, распределяет по топикам и через уарт гонит в есп, которая в свою очередь гонит весь этот поток на mqtt брокер. Работает без сбоев.

Fghjk
Сержант
Сообщения: 158
Зарегистрирован: 28.10.2019{, 15:53}
Репутация: 2
Имя: fghjk

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

#332

Сообщение Fghjk » 14.11.2019{, 02:56}

А наоборот?
Как в/по модбас строки передать?

А если так:
-33 буквы всего
-каждую букву принять за цифру
-строки кодировать в эти цифры и гнать в модбас
-на другой стороне модбаса - обратно раскодировать
-

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

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

#333

Сообщение User8 » 14.11.2019{, 03:32}

Fghjk, если строки статичные, то можно по модбасу инт передавать, а на принимающей стороне уже от того какое число пришло, выбирать нужную строку.

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

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

#334

Сообщение Chylan » 14.11.2019{, 14:11}

подскажите как сделать переподключения к брокеру, у меня пропадает интернет а после появления есп Не переподключается

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

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

#335

Сообщение starshoy81 » 14.11.2019{, 15:46}

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

Fghjk
Сержант
Сообщения: 158
Зарегистрирован: 28.10.2019{, 15:53}
Репутация: 2
Имя: fghjk

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

#336

Сообщение Fghjk » 14.11.2019{, 16:42}

starshoy81 писал(а):
14.11.2019{, 15:46}
а зачем вам строки по модбасу передавать? В mqtt тип данных - строчный, а уж что там написано,
Как по модбас текст сообщения передать?

Fghjk
Сержант
Сообщения: 158
Зарегистрирован: 28.10.2019{, 15:53}
Репутация: 2
Имя: fghjk

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

#337

Сообщение Fghjk » 14.11.2019{, 16:44}

Есть виртуино модбас - там интересно можно строки передавать?

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

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

#338

Сообщение User8 » 14.11.2019{, 17:37}

Chylan, а 0 появляется на выходе mqttConnected или всегда единица?
Последний раз редактировалось User8 17.11.2019{, 01:19}, всего редактировалось 1 раз.

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

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

#339

Сообщение starshoy81 » 14.11.2019{, 19:47}

Fghjk писал(а):
14.11.2019{, 16:42}
Как по модбас текст сообщения передать?
Зачем передавать текст именно по модбасу?

Fghjk
Сержант
Сообщения: 158
Зарегистрирован: 28.10.2019{, 15:53}
Репутация: 2
Имя: fghjk

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

#340

Сообщение Fghjk » 15.11.2019{, 00:35}

Отправлено спустя 28 секунд:
starshoy81 писал(а):
14.11.2019{, 19:47}

Зачем передавать текст именно по модбасу
Сим800 принимает текст смс и по модбас передается на панель.

Ответить

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