Страница 28 из 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

Добавлено: 19.01.2023{, 17:51}
worm73
Добрый день. Помогите перепробовал разные версии FLprog так же разные версии блоков MQTT с данного форума и все время одна и таже ошибка при компиляции в arduino ide.


pr2:29:1: error: 'WiFiEventHandler' does not name a type; did you mean 'WiFiEventFuncCb'?
WiFiEventHandler wifiConnectHandler;
^~~~~~~~~~~~~~~~
WiFiEventFuncCb
pr2:30:1: error: 'WiFiEventHandler' does not name a type; did you mean 'WiFiEventFuncCb'?
WiFiEventHandler wifiDisconnectHandler;
^~~~~~~~~~~~~~~~
WiFiEventFuncCb
pr2:250:26: error: 'WiFiEventStationModeGotIP' does not name a type
void onWifiConnect(const WiFiEventStationModeGotIP& event)
^~~~~~~~~~~~~~~~~~~~~~~~~
pr2:254:29: error: 'WiFiEventStationModeDisconnected' does not name a type; did you mean 'esp_netif_action_disconnected'?
void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
esp_netif_action_disconnected
C:\Users\Professional\AppData\Local\Temp\flprog\pr2\pr2.ino: In function 'void setup()':
pr2:47:5: error: 'wifiConnectHandler' was not declared in this scope
wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);
^~~~~~~~~~~~~~~~~~
C:\Users\Professional\AppData\Local\Temp\flprog\pr2\pr2.ino:47:5: note: suggested alternative: 'AcConnectHandler'
wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);
^~~~~~~~~~~~~~~~~~
AcConnectHandler
pr2:47:31: error: 'class WiFiClass' has no member named 'onStationModeGotIP'
wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);
^~~~~~~~~~~~~~~~~~
pr2:48:5: error: 'wifiDisconnectHandler' was not declared in this scope
wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
^~~~~~~~~~~~~~~~~~~~~
C:\Users\Professional\AppData\Local\Temp\flprog\pr2\pr2.ino:48:5: note: suggested alternative: 'AcConnectHandler'
wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
^~~~~~~~~~~~~~~~~~~~~
AcConnectHandler
pr2:48:34: error: 'class WiFiClass' has no member named 'onStationModeDisconnected'
wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);
^~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\Professional\AppData\Local\Temp\flprog\pr2\pr2.ino: At global scope:
pr2:250:26: error: 'WiFiEventStationModeGotIP' does not name a type
void onWifiConnect(const WiFiEventStationModeGotIP& event)
^~~~~~~~~~~~~~~~~~~~~~~~~
pr2:254:29: error: 'WiFiEventStationModeDisconnected' does not name a type; did you mean 'esp_netif_action_disconnected'?
void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
esp_netif_action_disconnected
Несколько библиотек найдено для "WiFi.h"
Используется: C:\Program Files (x86)\FLProg\ideV8\portable\packages\esp32\hardware\esp32\2.0.5\libraries\WiFi
Не используется: c:\Program Files (x86)\FLProg\ideV8\libraries\WiFi
exit status 1
'WiFiEventHandler' does not name a type; did you mean 'WiFiEventFuncCb'?

Уже руки опускаются, но хочется результата. Использую ESP32

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

Добавлено: 19.01.2023{, 19:26}
Sancho
worm73 писал(а):
19.01.2023{, 17:51}
Добрый день. Помогите перепробовал разные версии FLprog так же разные версии блоков MQTT с данного форума и все время одна и таже ошибка при компиляции в arduino ide.
Проект бы для теста...

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

Добавлено: 19.01.2023{, 20:14}
Phazz
worm73, а майн блок для esp32?

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

Добавлено: 19.01.2023{, 22:48}
artemka19
Sancho писал(а):
19.01.2023{, 19:26}
Проект бы для теста...
сегодня Крещение....гадаем на свечах)))

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

Добавлено: 20.01.2023{, 09:22}
worm73
Блоки использую из закрепленного сообщения здесь, а именно MQTT_ESP_Main_v6_82. Проект пока элементарный подсоедениться с брокеру MQTT и отправить сообщение, всего два блока. Пустой проект делаю с настройкой Wifi гружу в ESP32 все ок, добавляю блоки MQTT вылетает ошибка. С MQTT ранее работал на arduino mega все работало без проблем.

Отправлено спустя 4 минуты 13 секунд:
Test_ESP32.flp
(5.77 МБ) 41 скачивание
- тестовый проект

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

Добавлено: 20.01.2023{, 12:17}
slsl
worm73 писал(а):
20.01.2023{, 09:26}
Блоки использую из закрепленного сообщения здесь, а именно MQTT_ESP_Main_v6_82.
Используйте блоки v6.8 -и всё будет норм.

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

Добавлено: 20.01.2023{, 14:55}
worm73
Я разные блоки пробовал, в том числе и v6.8 ошибка одна и таже, так же и разные версии flProg пробовал все одно и тоже. У кого работают эти блоки, можно выложить блоки и полностью папку ide из flprog.

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

Добавлено: 20.01.2023{, 17:39}
SerOv
worm73 писал(а):
20.01.2023{, 14:55}
Я разные блоки пробовал, в том числе и v6.8 ошибка одна и таже, так же и разные версии flProg пробовал все одно и тоже. У кого работают эти блоки, можно выложить блоки и полностью папку ide из flprog.
Вы истользуете Main блок для ESp8266 а для ESP32 блок называется MQTT_ESP32_Main_6_8 скачайте от сюда именно для ESP32 viewtopic.php?p=61490#p61490

Отправлено спустя 9 минут 56 секунд:
И Подавайте на вход блока Send через генератор. Иначе данные придут только один раз. при подключении к брокеру
СпойлерПоказать
capture_001_20012023_174418.jpg

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

Добавлено: 20.01.2023{, 21:54}
costy1957
Спасибо,SerOv, прояснил проблемму, блок для esp32 существует и в версии 6.82 отсутствует, так, как расположен инутри топика 174 сообщение, а в заголовочной части топика отсутствует. В версии 6.82.1 добавлена возможность выбора между 8266 и 32. Pub, Sub блоки те же, что и версии 6.82

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

Добавлено: 20.01.2023{, 22:05}
artemka19
costy1957,
все блоки и ссылки есть на первой странице: как для 8266 так и для 32

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

Добавлено: 20.01.2023{, 22:32}
costy1957
недоглядел....

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

Добавлено: 20.01.2023{, 22:47}
SerOv
artemka19 писал(а):
20.01.2023{, 22:05}
costy1957,
все блоки и ссылки есть на первой странице: как для 8266 так и для 32
надо в сылке Новая версия блоков: заменить Main на 6821 . так как там нет выбора ESP
СпойлерПоказать
capture_002_20012023_223504.jpg
capture_002_20012023_223504.jpg (29.2 КБ) 1381 просмотр
СпойлерПоказать
capture_003_20012023_224111.jpg

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

Добавлено: 24.01.2023{, 09:12}
pochabych
Коллеги добрый день.
Я все со своим вопросом о шифровании и использовании порта 8883, нарыл статью как это реализовать в коде, но я не программист и думаю что портраченное мной время никак не скажется на результатах. Может автор блока сможет внести измения в структуру для выбора порта 1883 или 8883 и при использовании SSL/TLS скормить ESP32 ключ полученный от брокера.
статья

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

Добавлено: 26.01.2023{, 16:44}
Agat
Добрый день. Ошибки при компиляции для ESP32, FLProg802. Проект состоит из блока MQTT ESP32 Main v6.8 и вывода в UART
esp32.flp
(1011.63 КБ) 26 скачиваний
. Ошибка:
C:\Users\pro2\AppData\Local\Temp\flprog\pr5\pr5.ino: In function 'void connectToMqtt()':
pr5:123:22: error: comparison with string literal results in unspecified behavior [-Werror=address]
if ("default" == "default")
^~~~~~~~~
C:\Users\pro2\AppData\Local\Temp\flprog\pr5\pr5.ino: In function 'void onMqttConnect(bool)':
pr5:147:22: error: comparison with string literal results in unspecified behavior [-Werror=address]
if ("default" == "default")
^~~~~~~~~
C:\Users\pro2\AppData\Local\Temp\flprog\pr5\pr5.ino: In function 'void WiFiEvent(arduino_event_id_t)':
C:\Users\pro2\AppData\Local\Temp\flprog\pr5\pr5.ino:264:18: warning: comparison between 'enum arduino_event_id_t' and 'enum system_event_id_t' [-Wenum-compare]
if (event == SYSTEM_EVENT_STA_GOT_IP) connectToMqtt();
^~~~~~~~~~~~~~~~~~~~~~~
C:\Users\pro2\AppData\Local\Temp\flprog\pr5\pr5.ino:265:23: warning: comparison between 'enum arduino_event_id_t' and 'enum system_event_id_t' [-Wenum-compare]
else if (event == SYSTEM_EVENT_STA_DISCONNECTED) mqttReconnectTimer.detach();
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus.exe: some warnings being treated as errors
Несколько библиотек найдено для "WiFi.h"
Используется: C:\FLProg\ideV8\portable\packages\esp32\hardware\esp32\2.0.6\libraries\WiFi
Не используется: c:\FLProg\ideV8\libraries\WiFi
Используем библиотеку WiFi версии 2.0.0 из папки: C:\FLProg\ideV8\portable\packages\esp32\hardware\esp32\2.0.6\libraries\WiFi
Используем библиотеку async-mqtt-client версии 0.8.2 из папки: c:\FLProg\ideV8\portable\sketchbook\libraries\async-mqtt-client
Используем библиотеку AsyncTCP версии 1.1.1 из папки: c:\FLProg\ideV8\portable\sketchbook\libraries\AsyncTCP
Используем библиотеку Ticker версии 2.0.0 из папки: C:\FLProg\ideV8\portable\packages\esp32\hardware\esp32\2.0.6\libraries\Ticker
Используем библиотеку Flprog_Utilites версии 1.0.0 из папки: c:\FLProg\ideV8\portable\sketchbook\libraries\Flprog_Utilites
exit status 1
comparison with string literal results in unspecified behavior [-Werror=address]

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

Добавлено: 26.01.2023{, 22:57}
costy1957
Если есть желание работать с этими блоками в версии 8.02 удали папку ide8 в ней и скопируй из версии 7.5.2

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

Добавлено: 27.01.2023{, 09:31}
Agat
costy1957 писал(а):
26.01.2023{, 22:57}
Если есть желание работать с этими блоками в версии 8.02 удали папку ide8 в ней и скопируй из версии 7.5.2
Сделал в версии 7.3.5 - такая же ошибка.

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

Добавлено: 27.01.2023{, 12:37}
costy1957
проверил в версии 7.5.2 - блоки работают, в версии 8.02 не работают esp32. Нужны новые ПБ, стройте свои проекты в версии 7.5.2. Возможно что то в программе что то не так и в следующих версиях будет исправлено.

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

Добавлено: 27.01.2023{, 17:40}
SerOv
Agat писал(а):
26.01.2023{, 16:44}
Добрый день. Ошибки при компиляции для ESP32, FLProg802. Проект состоит из блока MQTT ESP32 Main v6.8 и вывода в UART esp32.flp. Ошибка:
Компиляция в 802 прошла без ошибок
СпойлерПоказать
capture_003_27012023_173650.jpg
СпойлерПоказать
capture_004_27012023_174106.jpg

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

Добавлено: 27.01.2023{, 21:13}
costy1957
Какую версию использовали? Х32 или х64, портативную или предустановленную. У меня портативная х64 выдает ошибку.

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

Добавлено: 27.01.2023{, 21:22}
SerOv
costy1957 писал(а):
27.01.2023{, 21:13}
Какую версию использовали? Х32 или х64, портативную или предустановленную. У меня портативная х64 выдает ошибку.
портативная x64
Portable_FLProg_8-0-2_Win64