Страница 16 из 32

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

Добавлено: 08.09.2018{, 14:04}
User8
Подробнее про 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 клиент для Arduino, ESP8266, ESP32

Добавлено: 11.07.2019{, 11:11}
User8
dimonsustr писал(а):
11.07.2019{, 08:50}
постоянный ребут ESP независимо от версии Flprog
Что за есп используете? Есть такая nodemcu wemos глючная: https://images.app.goo.gl/9PfWmk1TESkG8axQA на ней нужно питание на прямую 3.3v подавать для стабильной работы.
Удалите все блоки mqtt из флпрог и скачайте последние версии.

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

Добавлено: 11.07.2019{, 17:09}
dimonsustr
User8 писал(а):
11.07.2019{, 11:11}
dimonsustr писал(а):
11.07.2019{, 08:50}
постоянный ребут ESP независимо от версии Flprog
Что за есп используете? Есть такая nodemcu wemos глючная: https://images.app.goo.gl/9PfWmk1TESkG8axQA на ней нужно питание на прямую 3.3v подавать для стабильной работы или delay(10); в loop(); засунуть.
Удалите все блоки mqtt из флпрог и скачайте последние версии.
У меня NODEMCU V3 LOLIN ver 0.1. Буду продолжать эксперименты, спасибо.

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

Добавлено: 16.07.2019{, 08:38}
Vibe
всем спасибо кто помог с решением моей проблемы, обновил mosquitto на своем линух сервере, все заработало. использую FLPROG блоки 6.8
User8 :smile9:
Golan :smile9:

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

Добавлено: 25.07.2019{, 23:32}
CraCk
В версии флпрог 5.3.0 при компиляции есть предупреждение. Проект создал с нуля. Встречалось такое?
На версии флпрог 4.2.0 такого нет.
СпойлерПоказать
Снимок.JPG

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

Добавлено: 26.07.2019{, 00:05}
User8
CraCk, это не относится к блокам, нужно обновить платы esp8266 в arduino ide.
Отправлено спустя 39 минут 52 секунды:
viewtopic.php?f=135&t=5424

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

Добавлено: 28.07.2019{, 14:46}
CraCk
Здравствуйте User8, вы еще не пробовали другие mqtt брокера кроме Москито? Дело в том что выпросил в разработчика Iobroker добавить в их mqtt брокер возможность вкл/выкл режим clear session для корректной работы qos-1-2. Сегодня протестировал clear session=false на брокере, и клиенте. Но это всеравно не работает. :(

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

Добавлено: 28.07.2019{, 14:55}
User8
CraCk, если на москито работает qos 1-2, а на iobrokere’е не работает, значит проблема в неправильной настройке или в самом iobroker’е. Mqtt стандартизирован, поэтому все должно работать, если конечно разработчики соблюдали стандарт.

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

Добавлено: 08.09.2019{, 21:37}
CraCk
Как правильно организовать подписку и публикацию? В общем нужно отправить от клиента значение в епром, и в то же время его опубликовать, чтоб увидеть какое значение записано. Сейчас есть так. Но это не хорошо. Потому что это дело начинает по кругу само себя записывать и считывать.
СпойлерПоказать
Снимок.JPG

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

Добавлено: 08.09.2019{, 21:42}
User8
CraCk, детектор изменения числа на выход Message блока sub и потом выход детектора на вход Send блока pub.

Отправлено спустя 4 минуты 14 секунд:
А вообще нужно использовать 2 топика для таких вещей, какой смысл в один топик слать и получать одно и то же значение?

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

Добавлено: 08.09.2019{, 22:35}
CraCk
User8 писал(а):
08.09.2019{, 21:46}
детектор изменения числа на выход Message блока sub и потом выход детектора на вход Send блока pub.
Спасиб чет я туплю.
Собрал так схему.
СпойлерПоказать
Снимок.JPG
Но когда изменяю значения получаю в ответ три сообщения. Возможно еще нужно сделать задержку на отправку.
СпойлерПоказать
Снимок2.JPG
Но как объяснить то что есп каждую минуту отправляет уровень сигнала RSSI. И там я тоже получаю не одно сообщение. Там только разница в одном retain - true во втором retain - false.
СпойлерПоказать
Снимок3.JPG

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

Добавлено: 08.09.2019{, 22:38}
User8
CraCk, qos 2 попробуй поставь, если конечно это важное сообщение, для всех остальных сообщений лучше использовать qos 0, быстрее работает.

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

Добавлено: 08.09.2019{, 22:40}
CraCk
User8 писал(а):
08.09.2019{, 21:46}
А вообще нужно использовать 2 топика для таких вещей, какой смысл в один топик слать и получать одно и то же значение?
Не знаю будит ли это по феншую правильно. Интересно увидеть мануал промышленных устройств как там такое реализовано.

Отправлено спустя 34 минуты 30 секунд:
User8 писал(а):
08.09.2019{, 22:38}
CraCk, qos 2 попробуй поставь, если конечно это важное сообщение, для всех остальных сообщений лучше использовать qos 0, быстрее работает.
Не помогло ничего. На старых блоках кажись такого не было. Завтра попробую старые версии блоков.

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

Добавлено: 14.10.2019{, 19:49}
slon-genia
Добрый день всем. Помогите с такой проблемой. Использую блоки MQTT из шапки, брокер- IO broker. При подключении esp к брокеру в топик status отправляется значение 1, а при отключении esp от брокера в данный топик должен приходить 0. (Согласно инструкции блока main). У меня при подключении 1 приходит,а при отключении питания esp значение на 0 не меняется. В чем проблема?

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

Добавлено: 14.10.2019{, 20:01}
User8
slon-genia, возможно io-broker не поддерживает данную функцию т.к. единицу шлет сам клиент, а ноль должен рассылать уже брокер, или возможно в настройках iobroker’а нужно включить last will. Ноль приходит не сразу, а через секунд 20.

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

Добавлено: 14.10.2019{, 21:34}
slon-genia
User8 писал(а):
14.10.2019{, 20:01}
slon-genia, возможно io-broker не поддерживает данную функцию т.к. единицу шлет сам клиент, а ноль должен рассылать уже брокер, или возможно в настройках iobroker’а нужно включить last will. Ноль приходит не сразу, а через секунд 20.
Поддерживает. LWT так называется данная функция. В своих ранних проэктах эта функция работала. Не помню правда версию блоков и библиотеки. Не сохранил.

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

Добавлено: 14.10.2019{, 22:11}
User8
slon-genia, на mosquitto работает.

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

Добавлено: 15.10.2019{, 22:55}
slon-genia
User8 писал(а):
14.10.2019{, 22:11}
slon-genia, на mosquitto работает.
С mosquito работает нормально. Проверил. Значит проблема в IO Broker?

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

Добавлено: 15.10.2019{, 23:23}
User8
slon-genia, других вариантов нет.

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

Добавлено: 08.11.2019{, 18:51}
НиколаМастер
Привет, скажите, с помощью 5100 у кого то получалось подключиться в MQTT?
у меня не выходит

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

Добавлено: 08.11.2019{, 22:18}
User8
НиколаМастер, если нужна помощь, нужно подробное описание что и как было сделано.