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

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

MQTT для Arduino, ESP8266, ESP32

#221

Сообщение User8 » 04.02.2019{, 21:07}

SerOv, попробуйте keepAlive 500 поставить.

Отправлено спустя 9 минут 19 секунд:
Не самая лучшая идея судить о сне по этому параметру, лучше мерить мультиметром потребление. После выставления keepAlive он вообще 0 не пошлет в топик, только после 500 секунд по идеи.

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT для Arduino, ESP8266, ESP32

#222

Сообщение SerOv » 04.02.2019{, 21:16}

увеличил. буду смотреть.
до этого почему то стабильности не было. То пробовал подключаться то нет
вот фото
СпойлерПоказать
son3.jpg
Отправлено спустя 13 минут 13 секунд:
При keepAlive 500 не соединятся с WIFI. Пытается но соединения нет.

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

MQTT для Arduino, ESP8266, ESP32

#223

Сообщение User8 » 04.02.2019{, 21:52}

SerOv, а как есп может проснуться, если указано что спать нужно 428 сек? Вот так можно попробовать, если на входе mqttConnect есть единица, то esp будет пытаться подключиться к брокеру, в ином случае попыток подключиться не будет.
Вложения
MQTT_ESP_Main_6_4_Connect_Input_(CODE).ubi
(501.13 КБ) 85 скачиваний
Последний раз редактировалось User8 04.02.2019{, 22:09}, всего редактировалось 1 раз.

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

MQTT для Arduino, ESP8266, ESP32

#224

Сообщение SerOv » 04.02.2019{, 22:04}

Я думал что client1/status засыпает вместе с ESP. Потом есть разрешение от выход из сна и Начинает работать client1/status. Так же иногда происходит. Иногда он же не пытается соединится.

Отправлено спустя 20 минут 36 секунд:
Спасибо за блок. Но я теперь не пойму как его подключить. Связать с блоком DeepSleep но у него нет выхода.

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

MQTT для Arduino, ESP8266, ESP32

#225

Сообщение User8 » 04.02.2019{, 22:42}

SerOv, перед тем как подавать единицу на сон, убрать единицу с mqttConnect через переменную

Отправлено спустя 6 минут 31 секунду:
SerOv, вот что нашел:
Пс. deepsleep надо использовать с осторожностью. Если просто так, да и с частотой раз в несколько минут - то через месяц-три можно модуль выкинуть в мусорку. Встроенный SDK по каждому чиху перезаписывает один и тотже кусочек EEPROM памяти. Любые изменения в настройках WiFi, каждое включение/выключение и т.д. приводит к тому, что текущие настройки заново сохраняются в память. Т.е., если наставить всяких "автоконнект выкл" - "автоконнекст вкл" то на ровном месте мы уже два раза перезаписали эту память, плюс сюда процесс подключения - и вот уже третья запись. Таким образом, необдуманно можно добиться нескольких перезаписей (2-5-8) по каждому старту после deepsleep. А если это проиходит каждую минуту - то не трудно подсчитать, через сколько ресурс EEPROM исчерпается и модуль нам "нарисует синий экран смерти" :)
https://esp8266.ru/forum/threads/esp826 ... -son.2870/

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#226

Сообщение pipapsix » 06.02.2019{, 13:45}

Добрый день.
Такая проблемма, появляется наслоение данных из разных топиков.
Есть 1 есп с экраном которая выводит показания, которые принимает с брокера.
И есть 3 шт есп которые отправляет их на брокер.
У всех разные ID,разные адреса. Топики разные.
Но иногда в например, строчку с температурой вклинивается влажность.

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

MQTT для Arduino, ESP8266, ESP32

#227

Сообщение User8 » 06.02.2019{, 15:45}

pipapsix, нужно проверить, если с еще одного клиента подписаться на тот же топик, будет ли такое же наложение

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#228

Сообщение pipapsix » 06.02.2019{, 16:10}

User8 писал(а):
06.02.2019{, 15:45}
если с еще одного клиента подписаться на тот же топик
У меня уже клиенты кончились))
А если дам логин и пароль от моего брокера?? в личку.
Это не постоянно происходит, а через разные промежутки времени.

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

MQTT для Arduino, ESP8266, ESP32

#229

Сообщение User8 » 06.02.2019{, 16:24}

pipapsix, клиент не обязтательно esp, можно поставить на телефон или винду

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#230

Сообщение pipapsix » 06.02.2019{, 16:28}

Вот сейчас на компе запустил,пока все ок.
Вот сейчас за минуту раз пять , глюкануло, на экране.
Может не в эту тему нужно писать, а все дело в экране??
СпойлерПоказать
IMG_20190206_171847.jpg

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

MQTT для Arduino, ESP8266, ESP32

#231

Сообщение User8 » 06.02.2019{, 16:32}

pipapsix, возможно всё

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#232

Сообщение pipapsix » 06.02.2019{, 17:37}

User8 писал(а):
06.02.2019{, 16:32}
возможно всё
Не в экране проблемма.Не понимаю где ошибся.
СпойлерПоказать
IMG_20190206_183412.jpg
Отправлено спустя 8 минут 25 секунд:
Что за кошмар,? теперь стал температуру с другой есп брать и влеплять в показания))
Топики же разные, кааак.?

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

MQTT для Arduino, ESP8266, ESP32

#233

Сообщение User8 » 06.02.2019{, 19:09}

pipapsix, попробуй
Вложения
MQTT_ESP_Main_6_4_External_Input_test_(CODE).ubi
(505.79 КБ) 92 скачивания

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#234

Сообщение pipapsix » 07.02.2019{, 07:30}

User8 писал(а):
06.02.2019{, 19:09}
попробуй
Вот так здорово!
15 минут полет нормальный.
Благодарю.
Кстати это же было и в пред идущих версиях, кажется в 4. я тогда думал что показалось)) вот и не сказал.

Аватара пользователя
Stepa
Рядовой
Сообщения: 64
Зарегистрирован: 01.05.2018{, 00:45}
Репутация: 1
Откуда: Ковылкино, Мордовия
Имя: Степан

MQTT для Arduino, ESP8266, ESP32

#235

Сообщение Stepa » 09.02.2019{, 12:05}

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

Ошибки
СпойлерПоказать
Arduino: 1.8.1 (Windows 7), Плата:"Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

........................................................
pr4:13: error: 'WiFiEventHandler' does not name a type

WiFiEventHandler wifiConnectHandler;

^

pr4:14: error: 'WiFiEventHandler' does not name a type

WiFiEventHandler wifiDisconnectHandler;

^

pr4:159: error: 'WiFiEventStationModeGotIP' does not name a type

void onWifiConnect(const WiFiEventStationModeGotIP& event)

^

pr4:159: error: ISO C++ forbids declaration of 'event' with no type [-fpermissive]

void onWifiConnect(const WiFiEventStationModeGotIP& event)

^

pr4:163: error: 'WiFiEventStationModeDisconnected' does not name a type

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)

^

pr4:163: error: ISO C++ forbids declaration of 'event' with no type [-fpermissive]

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)

^

C:\Users\Admin\AppData\Local\Temp\flprog\pr4\pr4.ino: In function 'void setup()':

pr4:46: error: 'wifiConnectHandler' was not declared in this scope

wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);

^

pr4:46: error: 'WiFi' was not declared in this scope

wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect);

^

pr4:47: error: 'wifiDisconnectHandler' was not declared in this scope

wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect);

^

C:\Users\Admin\AppData\Local\Temp\flprog\pr4\pr4.ino: At global scope:

pr4:159: error: 'WiFiEventStationModeGotIP' does not name a type

void onWifiConnect(const WiFiEventStationModeGotIP& event)

^

pr4:159: error: ISO C++ forbids declaration of 'event' with no type [-fpermissive]

void onWifiConnect(const WiFiEventStationModeGotIP& event)

^

pr4:163: error: 'WiFiEventStationModeDisconnected' does not name a type

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)

^

pr4:163: error: ISO C++ forbids declaration of 'event' with no type [-fpermissive]

void onWifiDisconnect(const WiFiEventStationModeDisconnected& event)

^

C:\Users\Admin\AppData\Local\Temp\flprog\pr4\pr4.ino: In function 'void onMqttDisconnect(AsyncMqttClientDisconnectReason)':

pr4:173: error: 'WiFi' was not declared in this scope

if (WiFi.isConnected()) {

^

Используем библиотеку Ticker версии 1.0 из папки: c:\Program Files (x86)\FLprog\ideV2\portable\packages\esp8266\hardware\esp8266\2.3.0-rc2\libraries\Ticker
Используем библиотеку async-mqtt-client версии 0.8.2 из папки: c:\Program Files (x86)\FLprog\ideV2\libraries\async-mqtt-client
Используем библиотеку ESPAsyncTCP версии 1.2.0 из папки: c:\Program Files (x86)\FLprog\ideV2\libraries\ESPAsyncTCP
exit status 1
'WiFiEventHandler' does not name a type
Проектик
1.flp
(635.29 КБ) 82 скачивания
Настройки IDE
СпойлерПоказать
1.jpg
1.jpg (24.31 КБ) 1352 просмотра
Отправлено спустя 8 минут 49 секунд:
А, черт , все, тупанул, модуль не включил в настройках :smile390:

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

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

#236

Сообщение User8 » 12.02.2019{, 17:36}

Эта инструкция устарела, qos теперь работает без костылей.

Для того, чтобы на блоке sub работал qos, и после старта esp доходило последнее недоставленное сообщение, нужно сделать следующее:

Используйте прикрепленные блоки к данному сообщению, вместо тех, что в первом посте.
- После создания программы в flprog, нажмите на компилировать проект.
- Когда появится arduino IDE, найдите в начале строку subscribed_47669363_1, цифры у вас будут другие, вам нужно скопировать эти цифры, после чего закрыть Arduino IDE.
- Далее нажмите правой кнопкой мыши на блоке MQTT ESP qosMain v6.5, нажмите "Редактировать".
- Перейдите на вкладку FunctionSection и выберите void messageReceived.
- Скопируйте текст ниже и вставьте в функцию void messageReceived, вместо слова "цифры" укажите цифры которые вы копировали в Arduino IDE.

Код: Выделить всё

if (Topic_цифры_1 == topic) {
	Message_цифры_1 = payload;
}
- Вставьте текст столько раз, сколько у вас блоков sub в проекте.
- Для каждой новой вставке укажите в конце цифр на 1 больше. Вот так у вас должно получиться, если у вас 3 подписки:

Код: Выделить всё

if (Topic_47669363_1 == topic) {
	Message_47669363_1 = payload;
}
if (Topic_47669363_2 == topic) {
	Message_47669363_2 = payload;
}
if (Topic_47669363_3 == topic) {
	Message_47669363_3 = payload;
}
- Далее сохраните блок и нажмите обновить блок в проекте.

Теперь вам не придется каждый раз править скетч в ардуино ide. Да это костыли, но в текущей реализации flprog по другому получится только с затратой гораздо большего количества динамической памяти, что критично для микроконтроллеров.
Вложения
MQTT_ESP_qosMain_6_5_External_Input_(CODE).ubi
(504.57 КБ) 80 скачиваний
MQTT_ESP_qosSub_6_5_(CODE).ubi
(18.57 КБ) 76 скачиваний
Последний раз редактировалось User8 29.05.2019{, 14:05}, всего редактировалось 13 раз.

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#237

Сообщение pipapsix » 13.02.2019{, 06:06}

Уже боюсь , что то трогать.
При отключении первой есп, передающая есп, отправляет постоянно последнии показания на народный мониторинг.
Это мне гдето нужно поменять?. раньше внимание не обратил как то.
СпойлерПоказать
2019-02-13_07-01-20.png

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

MQTT для Arduino, ESP8266, ESP32

#238

Сообщение User8 » 13.02.2019{, 10:17}

pipapsix, не совсем понятно обьяснил, что как не должно делать и что должно делать? Если после отключения идут постоянно последние данные, то нужно присвоить переменной из которой идут эти данные нужное значение 0 например. Или попробовать использовать второй блог народмон если конечно это возможно.

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

MQTT для Arduino, ESP8266, ESP32

#239

Сообщение pipapsix » 13.02.2019{, 10:52}

User8, кстати. Наверно так и есть, вечером проверю.

renat85
Рядовой
Сообщения: 29
Зарегистрирован: 06.09.2015{, 20:48}
Репутация: 2

MQTT для Arduino, ESP8266, ESP32

#240

Сообщение renat85 » 15.02.2019{, 19:00}

Кто сталкивался, как лечить?
Из допов включена и используется функциональность пользовательских настроек ESP.

В момент компиляции:
СпойлерПоказать
c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x54): undefined reference to `AsyncMqttClientInternals::ConnAckPacket::ConnAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (bool, unsigned char)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x58): undefined reference to `AsyncMqttClientInternals::PingRespPacket::PingRespPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void ()>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x5c): undefined reference to `AsyncMqttClientInternals::SubAckPacket::SubAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short, char)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x60): undefined reference to `AsyncMqttClientInternals::UnsubAckPacket::UnsubAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x64): undefined reference to `AsyncMqttClientInternals::PublishPacket::PublishPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (char*, char*, unsigned char, bool, bool, unsigned int, unsigned int, unsigned int, unsigned short)>, std::function<void (unsigned short, unsigned char)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x68): undefined reference to `AsyncMqttClientInternals::PubRelPacket::PubRelPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x6c): undefined reference to `AsyncMqttClientInternals::PubAckPacket::PubAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x70): undefined reference to `AsyncMqttClientInternals::PubRecPacket::PubRecPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o:(.text._ZN15AsyncMqttClient7_onDataEP11AsyncClientPcj+0x74): undefined reference to `AsyncMqttClientInternals::PubCompPacket::PubCompPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\Users\Renat\Desktop\FLProg\ideV2\libraries\AsyncMqttClient/AsyncMqttClient.cpp:384: undefined reference to `AsyncMqttClientInternals::ConnAckPacket::ConnAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (bool, unsigned char)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\users\renat\desktop\flprog\idev2\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional:1987: undefined reference to `AsyncMqttClientInternals::PingRespPacket::PingRespPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void ()>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: c:\users\renat\desktop\flprog\idev2\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional:1987: undefined reference to `AsyncMqttClientInternals::SubAckPacket::SubAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short, char)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\Users\Renat\Desktop\FLProg\ideV2\libraries\AsyncMqttClient/AsyncMqttClient.cpp:389: undefined reference to `AsyncMqttClientInternals::UnsubAckPacket::UnsubAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: c:\Users\Renat\Desktop\FLProg\ideV2\libraries\AsyncMqttClient/AsyncMqttClient.cpp:395: undefined reference to `AsyncMqttClientInternals::PublishPacket::PublishPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (char*, char*, unsigned char, bool, bool, unsigned int, unsigned int, unsigned int, unsigned short)>, std::function<void (unsigned short, unsigned char)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\users\renat\desktop\flprog\idev2\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional:2453: undefined reference to `AsyncMqttClientInternals::PubRelPacket::PubRelPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\Users\Renat\Desktop\FLProg\ideV2\libraries\AsyncMqttClient/AsyncMqttClient.cpp:398: undefined reference to `AsyncMqttClientInternals::PubAckPacket::PubAckPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\users\renat\desktop\flprog\idev2\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional:1336: undefined reference to `AsyncMqttClientInternals::PubRecPacket::PubRecPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

c:/users/renat/desktop/flprog/idev2/portable/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\AsyncMqttClient\AsyncMqttClient.cpp.o: in function `AsyncMqttClient::_onData(AsyncClient*, char*, unsigned int)':

c:\users\renat\desktop\flprog\idev2\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/tuple:140: undefined reference to `AsyncMqttClientInternals::PubCompPacket::PubCompPacket(AsyncMqttClientInternals::ParsingInformation*, std::function<void (unsigned short)>)'

collect2.exe: error: ld returned 1 exit status

exit status 1
Ошибка компиляции для платы LOLIN(WEMOS) D1 R2 & mini.

UPD: решение тут: https://github.com/marvinroger/async-mq ... started.md

Просто скопировать библиотеку с гитхаба и положить в папку libraries не подходит.

Ответить

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