Страница 9 из 33
MQTT для Arduino, ESP8266, ESP32
Добавлено: 31 дек 2018, 05:56
pipapsix
Timoha писал(а): 30 дек 2018, 21:30Попробуйте задействовать в вашей схеме часы реального времени. (включение/отключение реле по времени)
Вот о том и речь.
Часы имеются в проекте, мне нужно управлять и с помощью часов и с помощью MQTT одним и тем же реле.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 31 дек 2018, 08:13
slon-genia
pipapsix писал(а): 31 дек 2018, 05:56
Timoha писал(а): 30 дек 2018, 21:30Попробуйте задействовать в вашей схеме часы реального времени. (включение/отключение реле по времени)
Вот о том и речь.
Часы имеются в проекте, мне нужно управлять и с помощью часов и с помощью MQTT одним и тем же реле.
Я выкладывал свой проэкт в этой теме. Там трёхканальное реле управления освещением. Управление идёт как по MQTT, так и с местного выключателя. Поставьте вместо выключателя свой таймер либо часы и будет вам то что вы хотите.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 31 дек 2018, 09:58
Timoha
[ref]pipapsix[/ref],
В своем первом ответе, я поначалу выложил эту схему, после посчитал что в данной теме она немного не к месту - удалил. надеюсь топикстартер позволит - если снесет данное сообщение, не обижусь.
В данной схеме плата освещения из рабочего проекта "умного курятника" ))))... в схеме реализовано автоматическое включение и отключение по времени (включая рассвет/закат), ручное управление (mqtt), а также управление режимами: авто, ручное, отключение. Посмотрите, может найдете для себя что то полезное.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 31 дек 2018, 19:38
pipapsix
[ref]Timoha[/ref],
Благодарю, возьму что мне нужно.
Всех с наступающим.
В Волгоградской области НГ на час раньше.
Отправлено спустя 29 секунд:
[ref]slon-genia[/ref],
Я тоже помню было, но не наткнулся.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 02 янв 2019, 17:14
pipapsix
С наступившим.
Тут я не пойму в чем дело.
Значит работали две есп, все передавали.
А так как ростелеком задолбал, решил отказаться от него.
Взял билайновский ВАФАЙ модем , перешил его под теле2., подключил безлимит.
Положил его под крышу, выдает до 60мб, настраиваю WIFI антену TPLINK мостом к модему, от него шнуром к роутеру(на роутере WIFI отключил),все ништяк на компах и смартфонах интет есть.
в ESPках прописал новую сетть от тплинка, они подключаются к нему, вижу их в настройках. Могу даже открыть ВЭБ ЕСПШЕК и зати в него, а вот MQTT серверу не подключаются.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 02 янв 2019, 18:51
CraCk
User8 писал(а): 25 дек 2018, 15:47Да эта даже лучше, т.к. асинхронно работает, но нужно разбираться. На днях заберу esp горстку и нормально протестирую все.
Как самочувствие после НГ?
Говорят что на этой библиотеке работает qos.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 02 янв 2019, 20:11
User8
[ref]CraCk[/ref], жив, не понятно как там qos работает, потратил много времени чтобы добиться работы qos на sub блоке на этой библиотеке, в итоге приходит только последнее сообщение с одного топика. Нужно какой-то буфер делать, чтобы временно хранить полученные данные, но примеров как этот буфер реализовать я не нашел. При включении esp с брокера приходят все данные и в итоге в переменную записывается только последнее сообщение. У меня недостаточно знаний, чтобы сделать этот буфер, надеюсь кто-то возьмется доделать. Насчет qos на pub блоке почти не проверял, вроде как не работает если данные не отосланы на брокер, но на блоке pub qos не так критичен, всегда можно отослать и проверить дошло или нет сообщение. Все сложно с этими qos для микроконтроллеров...
Отправлено спустя 9 минут 16 секунд:
Еще одна версия блоков на другой библиотеке:
https://github.com/marvinroger/async-mqtt-client
Зависаний щас совсем вроде нет, даже во время коннекта. Все должно работать кроме qos, с ним все непонятно.
Удалил прикрепленные блоки, нужно доработать...
MQTT для Arduino, ESP8266, ESP32
Добавлено: 02 янв 2019, 21:55
SerOv
А почему после 4-ой сразу 6-я версия? И какие главные отличия между ними? Можете описать.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 02 янв 2019, 22:18
User8
[ref]SerOv[/ref], 5.0 еще на одной библиотеке, выкладывал на предыдущих страницах. Как таковой разницы почти нет, пытаемся найти лучшую.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 02 янв 2019, 22:22
SerOv
У меня на вашей 4 версии. Работает в мажордомо. Спасибо вам за блоки.
MQTT клиент для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 01:03
User8
Блоки для Arduino Ethernet:
Если используете блоки на нескольких arduino, не забудьте зайти в параметры Main блока и изменить mac адрес.
В параметре mac замените последний символ на 0xEE или 0xEF. На каждой arduino должен быть разный mac адрес.
Используйте клеммы вместо переменных хотя бы для входов/выходов String в вашем проекте, чтобы использовать меньше динамическую память и не получить глюки во время работы arduino. Особенно это касается Arduino Uno, Nano, Pro mini и других подобных контроллеров на atmega328p.
MQTT клиент для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 01:04
User8
Копии блоков для ESP8266 и ESP32, для подключения еще к одному брокеру одновременно.
MQTT клиент для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 01:05
User8
Main блок для ESP32, блоки pub и sub возьмите от ESP8266.
Используется обновленная библиотека, для корректной работы mqtt, нужно удалить старую библиотеку.
Удалите папку async-mqtt-client по пути: flprog\ideV4\libraries\ и еще возможно из flprog\ideV4\portable\sketchbook\libraries\ После компиляции проекта, flprog сама добавит новую библиотеку.
MQTT клиент для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 01:09
User8
MQTT библиотека для ESP8266 и ESP32, разархивировать в папку: flprog\ideV3\libraries\ или flprog\ideV4\libraries\
Для тех, у кого flprog сама не экспортировала библиотеку из блоков или антивирус заблокировал данное действие.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 01:14
starshoy81
[ref]User8[/ref], [ref]CraCk[/ref], вот кстати, по поводу qos указано в последней обсуждаемой библиотеке:
async-mqtt-client :: index
Ограничения и известные проблемы
Когда для CleanSession установлено значение false, реализация не соответствует спецификации. Следующее не соблюдается:
Нужно помнить:
Все сообщения в потоке QoS 1 или 2, которые не подтверждены посредником
Все полученные сообщения QoS 2, которые еще не подтверждены брокеру
Это означает, что повторная передача не выполняется в случае сбоя.
Вы не можете отправить полезную нагрузку больше той, что может поместиться в оперативной памяти.
Так что надо еще и настраивать брокер на корректную работу с сообщениями. В частности CleanSession в True и выделять память для хранения сообщений. Памяти нужно прилично, т.к. обмен идёт string типом. На моей малине процесс москито занимает 6 Мб, при четырёх клиентах на дефолтных настройках.
Также надо учитывать, что не все авторы библиотек реализуют полную поддержку протокола. И, также, под какую версию протокола написана библиотека.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 01:19
User8
[ref]starshoy81[/ref], c cleanSession true никакие сообщения с qos 1 2 не дойдут, если во время передачи одно из устройств не будет подключено к брокеру.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 03:11
starshoy81
[ref]User8[/ref], не дойдут, только если подписчик отвалился от брокера, а сообщения в этот же момент приняты. Фактически же маловероятно. У меня есть интересный опыт - на даче исполнительное устройство, я рядом с ним, клиент mqtt на смарте подключен через сотовую сеть к брокеру в городе, в городе брокер сидит за роутером с проводным интернетом, этот брокер стоит в мосту с брокером на даче, брокер на даче сидит через сотовую сеть со скоростью 64 кбит\сек на роутере, к роутеру подключен клиент шилд 5100 подключенный к меге, на меге запущена программа трансляции mqtt на модбас, мега через 485 на скорости 19200 бит\сек передаёт данные в контроллер, который управляет тем исполнительным устройством, про которое я писал в начале этой длинной цепочки. Так вот - задержки команд управления на глаз не видны, не смотря на приличное количество узлов трансляции. Поэтому в локалке принятые сообщения практически моментально оказываются у подписчика.
"При подключении клиент устанавливает флаг «чистого сеанса», который иногда также называют флагом «чистого запуска». Если для чистой сессии задано значение false, то соединение считается долговременным. Это означает, что когда клиент отключается, все подписки, которые он имеет, остаются, и любые последующие сообщения QoS 1 или 2 будут сохраняться до тех пор, пока он не подключится снова в будущем. Если чистый сеанс имеет значение true, то все подписки будут удалены для клиента при его отключении."
Надо ещё учитывать, что ранг qos должен быть одинаковым для подписчика и публициста, иначе qos будет считаться по наименьшему значению.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 03 янв 2019, 21:41
User8
ESP Main блок в первом посте обновлен, исправил небольшое упущение - подписка на топики происходила в каждом цикле, теперь подписка происходит один раз, после подключения к брокеру.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 06 янв 2019, 09:58
User8
В библиотеке есть возможность узнать, дошло сообщение до брокера или нет с QoS 1 и 2. Долго думал как это реализовать, чтобы можно было пользоваться, вот что придумал:
Выход qosDelivered - нужен для контроля доставки сообщений с QoS 1 и 2 до брокера. При подаче и удерживании единицы на входе Send, на выходе qosDelivered будет единица, если сообщение доставлено на брокер. Единица будет держаться на данном выходе пока на входе Send не пропадет единица.
Если это можно будет применять, то я обновлю в первом посте, а пока пусть будут тут.
MQTT для Arduino, ESP8266, ESP32
Добавлено: 06 янв 2019, 16:56
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]