Блок для ESP8266, Связь с миром по MQTT.

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

Блок для ESP8266, Связь с миром по MQTT.

Сообщение User8 »

Golan писал(а): 14 авг 2018, 19:03А что он делает?
Это режим отправки последнего сообщения подписчику при подключении к брокеру.

Отправлено спустя 2 часа 4 минуты 55 секунд:
Anydy писал(а): 09 авг 2018, 17:14Проверьте, я пока что не могу проверить, позже проверю, на выходах должны появляться еденички при успешном подключении и 0 если нет ...
При отключении брокера, сигнал с выхода statMqtt не пропадает.
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Блок для ESP8266, Связь с миром по MQTT.

Сообщение pipapsix »

Привет всем/
Не могу вывести данные с esp на экран hd44780. есть решение??
на nextion идут, а на этот нет.
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Блок для ESP8266, Связь с миром по MQTT.

Сообщение pipapsix »

Добрый день. Вот что имеем.
Подключён экран нехтион выводится температура с есп , одновременно работает mqtt и передаёт данные, но при отключении брокера, данные на экран перестают идти, пока не включится брокер. Как то не правильно. Есть решение?
Anydy

Блок для ESP8266, Связь с миром по MQTT.

Сообщение Anydy »

pipapsix писал(а): 25 авг 2018, 13:03при отключении брокера, данные на экран перестают идти, пока не включится брокер.
Все верно ...на данном этапе выполнение всей программы останавливается пока нет связи с брокером. Подумаю как переделать ...но по сути это пример блока, и каждый может его доработать под себя!
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Блок для ESP8266, Связь с миром по MQTT.

Сообщение pipapsix »

Anydy писал(а): 25 авг 2018, 18:06Все верно ...на данном этапе выполнение всей программы останавливается пока нет связи с брокером. Подумаю как переделать ...но по сути это пример блока, и каждый может его доработать под себя!
Может доделать под себя не в моем случае,ну не дано мне это.
Просто собираю автоматику для инкубатора и вдруг она отключится, хана яйцу.
Anydy

Блок для ESP8266, Связь с миром по MQTT.

Сообщение Anydy »

да, я понимаю....не спроста блок в теме "разработка ПБ" ...обязательно сделаю так чтобы связь с брокером или WIFI (GSM) никак не влияла на работу основной программы.

Отправлено спустя 22 минуты 16 секунд:
Подумал немного....тут в любом случае придется прерывать основную программу на время которое нужно для попытки соединения с брокером или сетью....например раз в пять минут на 30 секунд управление передается функции переподключения...
Если устроит такой вариант то это можно сделать.
Так что для надежности придется использовать одну ардуино как связь с MQTT, а другую как основной контроллер.
Может ошибаюсь...знающие люди поправьте ....
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

Блок для ESP8266, Связь с миром по MQTT.

Сообщение User8 »

Переделал блок по человечески:
1. Убрал все, что касается wifi. Т.к. wifi теперь можно настраивать в самой flprog.
2. Убрал остановку основного цикла, когда брокер недоступен. Теперь по идее контроллер выполняет основной цикл, даже когда mqtt брокер недоступен.
3. Добавлен нормально работающий выход, на котором будет единица, когда mqtt подключен к брокеру. Он пригодится вместо qos, для отсылки данных сразу после подключения к брокеру, т.к qos лучше не использовать, дабы не забивать память esp.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Amator
Рядовой
Сообщения: 23
Зарегистрирован: 11 дек 2015, 12:32
Откуда: Украина г.Краматорск

Блок для ESP8266, Связь с миром по MQTT.

Сообщение Amator »

Вы слышали про сервис Cayenne, очень классный и бесплатный, кто может сделать по него блоки, я буду очень признателен
Вот ссылка на обзор https://www.youtube.com/watch?v=Cu2hskYC23I
https://mydevices.com/cayenne/features/
И ссылка на приложение https://play.google.com/store/apps/deta ... -mydevices
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

Блок для ESP8266, Связь с миром по MQTT.

Сообщение starshoy81 »

User8 писал(а): 28 авг 2018, 22:133. Добавлен нормально работающий выход, на котором будет единица, когда mqtt подключен к брокеру. Он пригодится вместо qos, для отсылки данных сразу после подключения к брокеру, т.к qos лучше не использовать, дабы не забивать память esp.
Вместо qos он не пригодится, т.к. qos нужен для контроля доставки сообщений, а не соединения с брокером. Поэтому, кому нужен qos, думайте как его прикрутить.

Вот из документации на москитто https://mosquitto.org/man/mqtt-7.html

Качество обслуживания
MQTT определяет три уровня качества обслуживания (QoS). QoS определяет, насколько сложно брокер / клиент попытается обеспечить получение сообщения. Сообщения могут быть отправлены на любом уровне QoS, и клиенты могут попытаться подписаться на темы на любом уровне QoS. Это означает, что клиент выбирает максимальное QoS, которое он получит. Например, если сообщение опубликовано в QoS 2, и клиент подписывается на QoS 0, сообщение будет доставлено этому клиенту с QoS 0. Если второй клиент также подписан на одну и ту же тему, но с QoS 2, то он получит одно и то же сообщение, но с QoS 2. Для второго примера, если клиент подписан QoS 2 и сообщение опубликовано в QoS 0, клиент получит его на QoS 0.

Более высокие уровни QoS более надежны, но связаны с более высокой задержкой и имеют более высокие требования к пропускной способности.

0: Брокер / клиент отправит сообщение один раз, без подтверждения.

1: Брокер / клиент доставляет сообщение хотя бы один раз, при этом требуется подтверждение.

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

Блок для ESP8266, Связь с миром по MQTT.

Сообщение User8 »

starshoy81 писал(а): 29 авг 2018, 21:55Вместо qos он не пригодится, т.к. qos нужен для контроля доставки сообщений
Я знаком с qos, автор библиотеки не советует использовать qos. Если есть связь с брокером, то сообщение доставится т.к. используется tcp. Если брокер отключен, а в это время отправить сообщение, то оно не доставится, но с помощью выхода блока коннекта к брокеру можно отправлять только когда коннект есть, в таком случае qos не нужен.
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

Блок для ESP8266, Связь с миром по MQTT.

Сообщение ivanpost »

[ref]User8[/ref], Что за константа clientld ?
Хоть по минимуму комменты в блоке пишите пжлст! :smile38: Я правда сам этим страдаю...
Но гадать - чижило!
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

Блок для ESP8266, Связь с миром по MQTT.

Сообщение starshoy81 »

Anydy писал(а): 25 авг 2018, 20:58Подумал немного....тут в любом случае придется прерывать основную программу на время которое нужно для попытки соединения с брокером или сетью....например раз в пять минут на 30 секунд управление передается функции переподключения...
Если устроит такой вариант то это можно сделать.
Так что для надежности придется использовать одну ардуино как связь с MQTT, а другую как основной контроллер.
Может ошибаюсь...знающие люди поправьте ....
Есп всегда переключается на обработку вифи подключения при проблемах со связью, приостанавливая цикл выполнения загруженного кода.
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

Блок для ESP8266, Связь с миром по MQTT.

Сообщение ivanpost »

[ref]starshoy81[/ref], Ого? Что значит всегда? Или только для этих блоков? Это откуда информация? Нам просто неприемлемо так... Милисекундные процессы.
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

Блок для ESP8266, Связь с миром по MQTT.

Сообщение starshoy81 »

User8 писал(а): 29 авг 2018, 22:10. Если есть связь с брокером, то сообщение доставится
Брокеру доставится, а подписчику не факт. Для этого и выставляют qos, чтобы подписчик гарантировано получил сообщение.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Блок для ESP8266, Связь с миром по MQTT.

Сообщение CraCk »

ivanpost писал(а): 29 авг 2018, 22:29Ого? Что значит всегда? Или только для этих блоков? Это откуда информация? Нам просто неприемлемо так... Милисекундные процессы.
Я тоже где то на сайте esp8266.ru читал про то что у этих модулей есть такой недостаток. Если использовать как простой датчик температуры то сойдет, а если esp8266 используется для управление чем нибудь то такой вариант не приемлем, пропал wifi зависло управление устройством. Сам не проверял такое. Очень не хватает времени.

Наcчет qos. Обязательно нужен. qos на esp-link точно работает,проверял. Происходит доставка сообщений после воcстановления связи с MQTT.
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

Блок для ESP8266, Связь с миром по MQTT.

Сообщение Golan »

CraCk писал(а): 29 авг 2018, 22:46пропал wifi зависло управление устройством.
Поддерживаю, только после восстановления связи устройство дорабатывает то что было послано, проверял на серводвижке
Добро не ценится в современном мире, люди от него наглеют!
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

Блок для ESP8266, Связь с миром по MQTT.

Сообщение User8 »

ivanpost писал(а): 29 авг 2018, 22:20Что за константа clientld?
Это id клиента который видит брокер, подробнее надо спросить у автора темы, это он добавил.
starshoy81 писал(а): 29 авг 2018, 22:35Брокеру доставится, а подписчику не факт.
Используя режим retain на блоке публикации, все подписчики получат последнее сообщение при подключении к брокеру.

Отправлено спустя 1 минуту 30 секунд:
Golan писал(а): 29 авг 2018, 22:54только после восстановления связи устройство дорабатывает то что было послано
Нужно проверить с последний версией блока, по идее не должен основной цикл останавливаться.
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

Блок для ESP8266, Связь с миром по MQTT.

Сообщение starshoy81 »

User8 писал(а): 29 авг 2018, 23:03Используя режим retain на блоке публикации, все подписчики получат последнее сообщение при подключении к брокеру.
И каждый раз при подключении они будут получать именно это последнее подписанное retain сообщение, а оно может уже измениться у публикатора, но есп отвалилась от роутера и ничего нового не передала. А вы думаете, что всё в порядке - "вот же сообщение в клиенте, что температура 25*" Ретайн так не используют, он для другого предназначен, к тому же большое количество сохранённых сообщений забивает память брокера, что черевато его killом например, на опенврт.

Вот ещё из доков:
Сохраненные сообщения
Все сообщения могут быть сохранены. Это означает, что брокер будет поддерживать сообщение даже после отправки его всем текущим подписчикам. Если будет произведена новая подписка, соответствующая теме сохраненного сообщения, сообщение будет отправлено клиенту. Это полезно как «последний известный хороший» механизм. Если тема обновляется нечасто, то без сохраненного сообщения недавно подписанному клиенту может потребоваться много времени для получения обновления. При сохраненном сообщении клиент получит мгновенное обновление.
ivanpost писал(а): 29 авг 2018, 22:29Ого? Что значит всегда? Или только для этих блоков? Это откуда информация? Нам просто неприемлемо так... Милисекундные процессы.
вот с форума 8266 цитата:
Так-же при потере связи на пару секунд, если включена шифрация (WPA и т.д.), то модуль отваливается от AP, но сам об этом не знает. Модуль соображает о потере связи в режиме с ключами WPA и т.д. только если произошла явная потеря сигналов beacon (REASON_BEACON_TIMEOUT) на время более 5 сек. Если менее - то получаем глюко модуль, считающий что он соединен с AP, но сессионный ключ может быть утерян и новой синхронизации не происходит. Так-же есть ещё китай-глюкодром связанный с разными типами шифрации, при их переключении. В итоге ESP8266 на сегодня использовать вообще никак - гарантия что он работает менее 10%. :) Только под строжайшим контролем над ним с молотком... Это итог писанины китайцами закрытого SDK в течении года.
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

Блок для ESP8266, Связь с миром по MQTT.

Сообщение ivanpost »

[ref]starshoy81[/ref], Да, я это почитываю. Но это довольно старое сообщение. С тех пор были новые sdk. Правда глючки на связи все равно видны... Но не думал что это сказывается на loop...
Avr ки отлично работают на процессах, где критично 0,10-0,20 сек у меня. Где результат сбоя сразу виден и восстановим только вручную... Как же есп? Все таки оставлять его только на коммуникациях?
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

Блок для ESP8266, Связь с миром по MQTT.

Сообщение starshoy81 »

[ref]ivanpost[/ref], и ещё - после deepsleep есп полностью перезагружается, что занимает примерно 5 сек, в этот момент она ничего кроме загрузки и вифи не делает.
Ответить

Вернуться в «Разработка пользовательских блоков»

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

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