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

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

Тестирую блоки на стабильность имитируя всякие проблемы со связью и тд.
Клиент esp8266 (wemos d1mini) в прошивке простое нажатие пина D5, которое активирует светодиод (запаян синий на самом esp8266 ) пин D4 и заодно отправляет состояние пина D5 (true или false) на брокер (IoBroker).

1. Клиент esp8266 :smile37:
Соединение с сетью - есть
Брокер включен - да
Если отключить клиента от питания и повторно включить то иногда соединение с брокером не восстанавливается. Приходится делать ресет клиента.

2. Клиент esp8266 :smile9:
Соединение с сетью - есть
Брокер включен - нет
Если отключить программно брокера и за некоторое время включит связь восстанавливается, диодом моргаю.

3. Клиент esp8266 :(
Соединение с сетью - нет
Брокер включен - да
Если отключить соединение, физически выдернуть сетевой кабель на пк, где установлен брокер. Диодом моргать не могу, клиент зависает. При подключение сетевого кабеля назад, соединение не восстанавливается, клиент продолжает висеть. Помогает ресет клиента.
Пока что все. Какие будут идеи?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось CraCk 23 дек 2018, 00:06, всего редактировалось 1 раз.
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Golan »

У меня аналогично по WiFi, отключение брокера вручную и снова включение, связь восстанавливает, но если клиент отключится, например при кратковременном "сбое" питание, то большая вероятность что зависнет до ресета.
Добро не ценится в современном мире, люди от него наглеют!
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

Golan писал(а): 22 дек 2018, 22:17У меня аналогично по WiFi, отключение брокера вручную и снова включение, связь восстанавливает, но если клиент отключится, например при кратковременном "сбое" питание, то большая вероятность что зависнет до ресета.
А если роутер вык/вкл? Или роутер там где и брокер?
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Rovki »

Тогда естественный вопрос - а стоит ли игра свечь ? Одно мучение... ,что может быть дороже ,чем надежность ? :smile44:
Электронщик до мозга костей и не только
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Golan »

CraCk писал(а): 22 дек 2018, 22:26А если роутер вык/вкл? Или роутер там где и брокер?
Пробовал, переподключается, как мне кажется, проблемы в блоке, там в настройках реконнекты и еще что то, ну 60000 секунд и 15.

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

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]CraCk[/ref], проверю у себя.
[ref]Golan[/ref], qos 1 или 2 нужно использовать очень редко и только для важных и не меняющихся каждую секунду данных.
Последний раз редактировалось User8 22 дек 2018, 23:00, всего редактировалось 1 раз.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

User8 писал(а): 08 сен 2018, 14:04- QoS - можно указать 0, 1 или 2. Если не указывать ничего, то сообщение отправляется с QoS 0.
QoS 1 не работает. Проверял так: На роутере блокирую мак адрес клиента, на клиенте меняю состояние с false на true. Дальше на роутере отключаю блокировку по мак. Брокер показывает что подключение восстановилось client1/status обновился. но значение моей публикации осталось false.
Rovki писал(а): 22 дек 2018, 22:29Тогда естественный вопрос - а стоит ли игра свечь ? Одно мучение... ,что может быть дороже ,чем надежность ?
Нет альтернатив. Используем то что есть.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

CraCk писал(а): 22 дек 2018, 22:48QoS 1 не работает.
Надеюсь вы читали документацию и выставили на принимающей стороне так же qos 1.
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Golan »

User8 писал(а): 22 дек 2018, 22:46Golan, qos 1 или 2 нужно использовать очень редко
Ща совсем не использую

Отправлено спустя 43 секунды:
User8 писал(а): 22 дек 2018, 22:55на принимающей стороне так же qos 1
я попадался на это :smile171:
Добро не ценится в современном мире, люди от него наглеют!
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

User8 писал(а): 22 дек 2018, 22:55Надеюсь вы читали документацию и выставили на принимающей стороне так же qos 1.
Все как книжка пишет
[spoiler]
Снимок2.JPG
[/spoiler]
[spoiler]
Снимок.JPG
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]CraCk[/ref], [ref]Golan[/ref], проверил у себя все возможные ситуации на NodeMCU v3, ни одного зависания не заметил, светодиод мигает когда нет коннекта - быстрее и когда есть коннект - медленнее, подвисание только во время попытки подключиться. Попробуйте у себя с эти скетчем, не забудьте указать свои данные wifi и mqtt.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Golan »

Евгений, вот смотрите, я сделал проектик, залил в Wemos, после прошивки он подключился к брокеру, это было неделю назад, все было нормально всю неделю. Сегодня с утра включил, он подключился, минут через десять модуль моргнул и вырубился, брокер всегда был на связи, так как через него идет публикация с MQTTfx (числа до бесконечности с клиента в брокере), ни ресет модуля не отключение от питание не помогло, только заново перепрошивка. Залил в другой модуль ту же прошиву, все пошло, перепрошил первый, так же запустился, в чем засада, модуле?
User8 писал(а): 22 дек 2018, 23:21Попробуйте у себя с эти скетчем, не забудьте указать свои данные wifi и mqtt.
Сделаю, отпишусь, теперь уж завтра
Добро не ценится в современном мире, люди от него наглеют!
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

User8 писал(а): 22 дек 2018, 23:21Попробуйте у себя с эти скетчем,
Перво отключил сам брокер-востановилось
Второе заблокировал клиента по мак-востановился
Трете отключил от сети ПК с брокером-завис.
https://youtu.be/SLddqM9By98
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

MQTT для Arduino, ESP8266, ESP32

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

Собрал трёхканальное WI-FI реле с возможностью управления как с местного выключателя, так и дистанционно по протоколу MQTT. В качестве брокера использую mosquito+ magordomo, установленные на orangepi one. Плату собрал , всё работает. На команды реагирует (вкл, выкл) как с выключателя, так и по протоколу. Включил функцию retain в блоке MQTT ESP pub, эту же функцию включил в magordomo. Перевёл все три канала в режим (вкл), передёрнул питание блока реле и восстановились только каналы 2 и 3 (вкл), канал 1- остался в выключенном положении (выкл), хотя должен был тоже перейти в режим (вкл). При этом в magordomo все каналы отображаются как (вкл). Заметил одну фишку: при перетаскивании канала №1 в проэкте FLProg в самый низ- наблюдается та же картина только уже с другим каналом. В чём может быть проблема? Косяк программы, или копать в сторону сервера?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Sancho »

Поставь как нить задержку, перетащив блоки, не основной, на другую плату, выполняющуюся по условию - после того, как пройдёт время Х
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

MQTT для Arduino, ESP8266, ESP32

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

Sancho писал(а): 23 дек 2018, 09:13Поставь как нить задержку, перетащив блоки, не основной, на другую плату, выполняющуюся по условию - после того, как пройдёт время Х
Ятак понял: перетаскиваю один канал на другую плату, при этом блок MQTT ESP Main не трогаю. По задержке ничего не понял? Какую куда задержку и зачем?

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

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]CraCk[/ref], да действительно есть зависание, надо разбираться.
[ref]slon-genia[/ref], retain не всегда будет показывать актуальное состояние, в вашей ситуации лучше отключить retain и попробовать использовать qos.
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

MQTT для Arduino, ESP8266, ESP32

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

User8 писал(а): 23 дек 2018, 12:07retain не всегда будет показывать актуальное состояние, в вашей ситуации лучше отключить retain и попробовать использовать qos.
Хорошо. Простая ситуация: лампочка горит, пропадает электричество, а затем через время опять подаётся, при этом сервер питается от резервного источника питания и пропадание электричества на него никак не влияет. После подачи электричества на блок реле- оно будет в выключенном состоянии а на сервере при этом будет показано что включено. Как быть в такой ситуации без использования retain?
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]CraCk[/ref], много разных тестов провел, получается тормозит loop(), нужно править в самой библиотеке.
[ref]slon-genia[/ref], последнее состояние сохранять в eeprom.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение CraCk »

User8 писал(а): 23 дек 2018, 12:07попробовать использовать qos
Как не крути. Оно не работает. Пробовал обратно от брокера отправлять состояние, доставка работает после восстановление соединения.
Могу снять видео.
Еще в проекте добавил подписку на туже публикацию. Если отправлять от клиента esp1826/pin_D5 = true то тот же клиент не хочет принимать true, а если отправить туже публикацию от брокера esp1826/pin_D5 = true то клиент принимает.
Доработаны проект приложу.

Отправлено спустя 15 минут 41 секунду:
slon-genia писал(а): 23 дек 2018, 12:28После подачи электричества на блок реле- оно будет в выключенном состоянии а на сервере при этом будет показано что включено
Попробуйте подписать клиента на те же топик. И в брокере если есть возможность включить Публиковать состояния при подписке или что то подобное.
[spoiler]
Снимок2.JPG
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

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

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

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