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

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

MQTT для Arduino, ESP8266, ESP32

Сообщение pipapsix »

Timoha писал(а): 30 дек 2018, 21:30Попробуйте задействовать в вашей схеме часы реального времени. (включение/отключение реле по времени)
Вот о том и речь.
Часы имеются в проекте, мне нужно управлять и с помощью часов и с помощью MQTT одним и тем же реле.
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

MQTT для Arduino, ESP8266, ESP32

Сообщение slon-genia »

pipapsix писал(а): 31 дек 2018, 05:56
Timoha писал(а): 30 дек 2018, 21:30Попробуйте задействовать в вашей схеме часы реального времени. (включение/отключение реле по времени)
Вот о том и речь.
Часы имеются в проекте, мне нужно управлять и с помощью часов и с помощью MQTT одним и тем же реле.
Я выкладывал свой проэкт в этой теме. Там трёхканальное реле управления освещением. Управление идёт как по MQTT, так и с местного выключателя. Поставьте вместо выключателя свой таймер либо часы и будет вам то что вы хотите.
Timoha
Рядовой
Сообщения: 11
Зарегистрирован: 06 окт 2017, 21:15
Откуда: Москва
Имя: Юрий

MQTT для Arduino, ESP8266, ESP32

Сообщение Timoha »

[ref]pipapsix[/ref],
В своем первом ответе, я поначалу выложил эту схему, после посчитал что в данной теме она немного не к месту - удалил. надеюсь топикстартер позволит - если снесет данное сообщение, не обижусь.
В данной схеме плата освещения из рабочего проекта "умного курятника" ))))... в схеме реализовано автоматическое включение и отключение по времени (включая рассвет/закат), ручное управление (mqtt), а также управление режимами: авто, ручное, отключение. Посмотрите, может найдете для себя что то полезное.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

MQTT для Arduino, ESP8266, ESP32

Сообщение pipapsix »

[ref]Timoha[/ref],
Благодарю, возьму что мне нужно.

Всех с наступающим.
В Волгоградской области НГ на час раньше.

Отправлено спустя 29 секунд:
[ref]slon-genia[/ref],
Я тоже помню было, но не наткнулся.
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

MQTT для Arduino, ESP8266, ESP32

Сообщение pipapsix »

С наступившим.
Тут я не пойму в чем дело.
Значит работали две есп, все передавали.
А так как ростелеком задолбал, решил отказаться от него.
Взял билайновский ВАФАЙ модем , перешил его под теле2., подключил безлимит.
Положил его под крышу, выдает до 60мб, настраиваю WIFI антену TPLINK мостом к модему, от него шнуром к роутеру(на роутере WIFI отключил),все ништяк на компах и смартфонах интет есть.
в ESPках прописал новую сетть от тплинка, они подключаются к нему, вижу их в настройках. Могу даже открыть ВЭБ ЕСПШЕК и зати в него, а вот MQTT серверу не подключаются.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

User8 писал(а): 25 дек 2018, 15:47Да эта даже лучше, т.к. асинхронно работает, но нужно разбираться. На днях заберу esp горстку и нормально протестирую все.
Как самочувствие после НГ?
Говорят что на этой библиотеке работает qos.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]CraCk[/ref], жив, не понятно как там qos работает, потратил много времени чтобы добиться работы qos на sub блоке на этой библиотеке, в итоге приходит только последнее сообщение с одного топика. Нужно какой-то буфер делать, чтобы временно хранить полученные данные, но примеров как этот буфер реализовать я не нашел. При включении esp с брокера приходят все данные и в итоге в переменную записывается только последнее сообщение. У меня недостаточно знаний, чтобы сделать этот буфер, надеюсь кто-то возьмется доделать. Насчет qos на pub блоке почти не проверял, вроде как не работает если данные не отосланы на брокер, но на блоке pub qos не так критичен, всегда можно отослать и проверить дошло или нет сообщение. Все сложно с этими qos для микроконтроллеров...

Отправлено спустя 9 минут 16 секунд:
Еще одна версия блоков на другой библиотеке: https://github.com/marvinroger/async-mqtt-client
Зависаний щас совсем вроде нет, даже во время коннекта. Все должно работать кроме qos, с ним все непонятно.
Удалил прикрепленные блоки, нужно доработать...
Последний раз редактировалось User8 02 янв 2019, 23:14, всего редактировалось 1 раз.
SerOv
Лейтенант
Сообщения: 613
Зарегистрирован: 06 янв 2018, 19:50
Благодарил (а): 8 раз
Поблагодарили: 2 раза

MQTT для Arduino, ESP8266, ESP32

Сообщение SerOv »

А почему после 4-ой сразу 6-я версия? И какие главные отличия между ними? Можете описать.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]SerOv[/ref], 5.0 еще на одной библиотеке, выкладывал на предыдущих страницах. Как таковой разницы почти нет, пытаемся найти лучшую.
SerOv
Лейтенант
Сообщения: 613
Зарегистрирован: 06 янв 2018, 19:50
Благодарил (а): 8 раз
Поблагодарили: 2 раза

MQTT для Arduino, ESP8266, ESP32

Сообщение SerOv »

У меня на вашей 4 версии. Работает в мажордомо. Спасибо вам за блоки.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

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

Сообщение User8 »

Блоки для Arduino Ethernet:

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


Используйте клеммы вместо переменных хотя бы для входов/выходов String в вашем проекте, чтобы использовать меньше динамическую память и не получить глюки во время работы arduino. Особенно это касается Arduino Uno, Nano, Pro mini и других подобных контроллеров на atmega328p.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось User8 05 июл 2019, 05:17, всего редактировалось 53 раза.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

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

Сообщение User8 »

Копии блоков для ESP8266 и ESP32, для подключения еще к одному брокеру одновременно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось User8 30 апр 2020, 21:20, всего редактировалось 12 раз.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

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

Сообщение User8 »

Main блок для ESP32, блоки pub и sub возьмите от ESP8266.

Используется обновленная библиотека, для корректной работы mqtt, нужно удалить старую библиотеку.
Удалите папку async-mqtt-client по пути: flprog\ideV4\libraries\ и еще возможно из flprog\ideV4\portable\sketchbook\libraries\ После компиляции проекта, flprog сама добавит новую библиотеку.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось User8 25 янв 2020, 23:21, всего редактировалось 21 раз.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

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

Сообщение User8 »

MQTT библиотека для ESP8266 и ESP32, разархивировать в папку: flprog\ideV3\libraries\ или flprog\ideV4\libraries\

Для тех, у кого flprog сама не экспортировала библиотеку из блоков или антивирус заблокировал данное действие.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось User8 14 дек 2019, 23:07, всего редактировалось 5 раз.
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

MQTT для Arduino, ESP8266, ESP32

Сообщение starshoy81 »

[ref]User8[/ref], [ref]CraCk[/ref], вот кстати, по поводу qos указано в последней обсуждаемой библиотеке:
async-mqtt-client :: index
Ограничения и известные проблемы
Когда для CleanSession установлено значение false, реализация не соответствует спецификации. Следующее не соблюдается:
Нужно помнить:

Все сообщения в потоке QoS 1 или 2, которые не подтверждены посредником
Все полученные сообщения QoS 2, которые еще не подтверждены брокеру
Это означает, что повторная передача не выполняется в случае сбоя.

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

Так что надо еще и настраивать брокер на корректную работу с сообщениями. В частности CleanSession в True и выделять память для хранения сообщений. Памяти нужно прилично, т.к. обмен идёт string типом. На моей малине процесс москито занимает 6 Мб, при четырёх клиентах на дефолтных настройках.
Также надо учитывать, что не все авторы библиотек реализуют полную поддержку протокола. И, также, под какую версию протокола написана библиотека.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]starshoy81[/ref], c cleanSession true никакие сообщения с qos 1 2 не дойдут, если во время передачи одно из устройств не будет подключено к брокеру.
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

MQTT для Arduino, ESP8266, ESP32

Сообщение starshoy81 »

[ref]User8[/ref], не дойдут, только если подписчик отвалился от брокера, а сообщения в этот же момент приняты. Фактически же маловероятно. У меня есть интересный опыт - на даче исполнительное устройство, я рядом с ним, клиент mqtt на смарте подключен через сотовую сеть к брокеру в городе, в городе брокер сидит за роутером с проводным интернетом, этот брокер стоит в мосту с брокером на даче, брокер на даче сидит через сотовую сеть со скоростью 64 кбит\сек на роутере, к роутеру подключен клиент шилд 5100 подключенный к меге, на меге запущена программа трансляции mqtt на модбас, мега через 485 на скорости 19200 бит\сек передаёт данные в контроллер, который управляет тем исполнительным устройством, про которое я писал в начале этой длинной цепочки. Так вот - задержки команд управления на глаз не видны, не смотря на приличное количество узлов трансляции. Поэтому в локалке принятые сообщения практически моментально оказываются у подписчика.

"При подключении клиент устанавливает флаг «чистого сеанса», который иногда также называют флагом «чистого запуска». Если для чистой сессии задано значение false, то соединение считается долговременным. Это означает, что когда клиент отключается, все подписки, которые он имеет, остаются, и любые последующие сообщения QoS 1 или 2 будут сохраняться до тех пор, пока он не подключится снова в будущем. Если чистый сеанс имеет значение true, то все подписки будут удалены для клиента при его отключении."

Надо ещё учитывать, что ранг qos должен быть одинаковым для подписчика и публициста, иначе qos будет считаться по наименьшему значению.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

ESP Main блок в первом посте обновлен, исправил небольшое упущение - подписка на топики происходила в каждом цикле, теперь подписка происходит один раз, после подключения к брокеру.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

В библиотеке есть возможность узнать, дошло сообщение до брокера или нет с QoS 1 и 2. Долго думал как это реализовать, чтобы можно было пользоваться, вот что придумал:
Выход qosDelivered - нужен для контроля доставки сообщений с QoS 1 и 2 до брокера. При подаче и удерживании единицы на входе Send, на выходе qosDelivered будет единица, если сообщение доставлено на брокер. Единица будет держаться на данном выходе пока на входе Send не пропадет единица.
Если это можно будет применять, то я обновлю в первом посте, а пока пусть будут тут.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

[ref]User8[/ref], Спасибо за проделанную работу. Уже даже что то работает с QoS. Но есть еще проблема. Если соединение разорвать например на 15 сек то при восстановление соединения сообщение с нови статусом от есп приходи . Но если разорвать соединение на 1 минуту, то после этого уже новый статус с клиента не приходит. Получаться как бы есп сама себя обнуливает по какому то таймеру.
User8 писал(а): 06 янв 2019, 09:58В библиотеке есть возможность узнать, дошло сообщение до брокера или нет с QoS 1 и 2. Долго думал как это реализовать, чтобы можно было пользоваться, вот что придумал:
Можете здесь посмотреть реализацию такой опции.
viewtopic.php?f=71&t=3129

Отправлено спустя 12 минут 52 секунды:
[ref]User8[/ref], Попробовал Выход qosDelivered после прошивки на выходе все время 1 и ничто не влияет на статус.
[spoiler]
Снимок.JPG
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя