Делюсь опытом ESPEasy: кнопка + реакция на кнопу (нагрузка) + MQTT в обе стороны

Sergius

New member
Здравствуйте. Подскажите пожалуйста, можно ли сделать правило для EspEasy чтобы была проверка подключения к MQTT. Я имею ввиду такой пример нажата кнопка, ЕСТЬ СОЕДИНЕНИЕ С MQTT, если да то переключаем реле и отправляем в топик сообщение, НЕТ СОЕДИНЕНИЯ С MQTT переключаем реле и НЕ пытаемся отправлять сообщения в топик.

Дело в том что EspEasy тормозит когда нет соединения с MQTT сервером, а ты пытаешься клацать кнопкой
 

Сергей_Ф

Moderator
Команда форума
@Val как вариант. Вы можете передавать на nqtt-сервер текущий ip. Получить его и попробовать сформировать команду http на его основе. Или воспользоваться одним из сервисов динамического dns.
 

smart

New member
Что-то я не пойму. Автор топика прямо пишет пример того как в прошивке ESPEasy использовать MQTT в обе стороны.
А потом оказывается что управление работает только по HTTP
 

Andre000

New member
Что-то я не пойму. Автор топика прямо пишет пример того как в прошивке ESPEasy использовать MQTT в обе стороны.
А потом оказывается что управление работает только по HTTP
Верте Автору Работает. Все остальное ..............................ня
 

Fortunatto

New member
Что-то я не пойму. Автор топика прямо пишет пример того как в прошивке ESPEasy использовать MQTT в обе стороны.
А потом оказывается что управление работает только по HTTP
если прописывать как автор (if [sw3#GPIO12] = 0), то отключение (у меня) не работает. но если заменить эту строку на "else", то (у меня) срабатывает:

on sw3#GPIO12 do
if [sw3#GPIO12] = 1
gpio,12,1
//if [sw3#GPIO12] = 0
else
gpio,12,0
endif
endon

Доплнено: я так полумал, видимо автор не закрыл первый if и второй if рассматривается системой как вложенный. Вот и ошибка.
 

fait

New member
У меня сделано очень похоже. Есть одна существенная проблема: как только по какой-то причине mqtt сервер недоступен, девайс перестаёт реагировать на нажатие кнопки. Иногда может включить/выключить один раз из 10 нажатий, затем и эта возможность пропадает. Если найдёте решение этой проблемы - отпишитесь пожалуйста.
У меня такая же ситуация, выключатели Sonoff с прошивкой ESPEasy. Зависает именно Generic - MQTT Import. Вышел из данной ситуации так: настроил промежуточную ESP8266 на прослушивание MQTT и отправку данных по UDP (ESPEasy P2P Networking) на выключатели. Выключатели в MQTT свое состояние отправляют сами. В случает обрыва связи с сервером зависает промежуточная ESPка. При таком решении есть небольшая задержка при групповом включении/отключении, но не критично.
 

disburse

New member
Всем привет! Спасибо за ман очень сильно помогло в плане соединения ESP easy на sonoff ch4 r2, сервер на openwrt - mosquitto. Отслеживание состояния сделал через галку Send to Controller. Сейчас не могу управлять состоянием реле с телефона MQTTdashboard. На ноутбуке смотрю за публикациями с помощью mqtt-explorer. Публикации вижу, которые приходят от устройства Sonoff, телефон почему-то создает новую тему для публикаций с таким же именем и странным путём с пустым заголовком. Думаю что на первом шаге нужно понять могу ли я в принципе управлять реле. Но не знаю как это сделать. Прикрепляю скрин типичного представителя девайса для реле Name = Value у меня. И так у всех реле - типовое. Ещё не уверен в правильности своих правил и настроек. Может кто подсказать все ли верно?

on Button1#GPIO0 do
if [Button1#GPIO0] = 1
gpio,0,1
if [Button1#GPIO0] = 0
gpio,0,0
endif
endon

on Button2#GPIO9 do
if [Button2#GPIO9] = 1
gpio,9,1
if [Button2#GPIO9] = 0
gpio,9,0
endif
endon

on Button3#GPIO10 do
if [Button3#GPIO10] = 1
gpio,10,1
if [Button3#GPIO10] = 0
gpio,10,0
endif
endon

on Button4#GPIO14 do
if [Button4#GPIO14] = 1
gpio,14,1
if [Button4#GPIO14] = 0
gpio,14,0
endif
endon

on Relay1#Relay1 do
if [Relay1#Relay1] = 1
gpio,12,1
if [Relay1#Relay1] = 0
gpio,12,0
endif
endon

on Relay2#GPIO5 do
if [Relay2#GPIO5] = 1
gpio,5,1
if [Relay2#GPIO5] = 0
gpio,5,0
endif
endon

on Relay3#GPIO4 do
if [Relay3#GPIO4] = 1
gpio,4,1
if [Relay3#GPIO4] = 0
gpio,4,0
endif
endon


on Relay4#GPIO15 do
if [Relay4#GPIO15] = 1
gpio,15,1
if [Relay4#GPIO15] = 0
gpio,15,0
endif
endon
 

Вложения

disburse

New member
Решил часть проблем. IoT MQTT все нормально отправляет куда надо, состояние меняется. Но на sonoff в разделе Devices - не вижу изменений в состоянии реле (см. скрин).
Правило для реле:

on Relay1#GPIO12 do
if [Relay1#GPIO12] = 1
gpio,12,1
if [Relay1#GPIO12] = 0
gpio,12,0
endif
endon
 

Вложения

disburse

New member
Поменял в релюхах и в кнопках значения Values в State. Тоесть все кнопки у меня сейчас имеют название вида Button1, а релюхи Relay1. А Values у всех State.
Правила поменял на
on Button1#State=1 do
if [Relay1#State]=0
gpio,12,1
else
gpio,12,0
endif
endon
Не помогло.
 

disburse

New member
Обратил внимание на некоторые странные показания в pinstates у некоторых пинов. Может кто подсказать что тут не так?
1593366692800.png
Правил еще вот это на телефоне, не помогает (сменил Relay на Button).
 

Вложения

chumaty

New member
народ, кто может подсказать, почему когда добавляешь "Generic - MQTT Import" то в MQTT брокер отправляется ID устройства как "%sysname%-Import-и_дальше_цифра" но цифра всегда разная, т.е. айди всегда меняется при подключении к брокеру? Как задать конкретный айди для "Generic - MQTT Import" ?
 
Сверху Снизу