Система защиты от протечек на ESP 8266

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Pacific
Сообщения: 116
Зарегистрирован: Чт май 28, 2015 9:40 pm
Откуда: Вёска пад Мiнскам
Благодарил (а): 60 раз
Поблагодарили: 7 раз

Re: Система защиты от протечек на ESP 8266

Сообщение Pacific » Пн янв 14, 2019 8:33 pm

Собственно, skysilver всё хорошо расписал.
JackOfShadows писал(а):
Пн янв 14, 2019 5:06 pm
Как именно Вы делали, и в чём у меня немасштабируемость?
есть сценарий, который обрабатывает get от ESP
СпойлерПоказать
$idesp=$params['idesp'];
$host=$params['hostname'];
if (!$host) return;
say1("ESP.Host=".$host);
//addClass('ESP8266'); //Создаем класс ESP8266
addClassObject('ESP8266',$host); //Создаёт класс заданного имени дочерним от ParentClass
sg ('ESP8266.'.$host.".idesp",$idesp);
sg ('ESP8266.'.$host.".hostname",$host);
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj)
{
// say($obj['TITLE']);
// say(gg($obj['TITLE'].".idesp"));
if (gg($obj['TITLE'].".hostname") ==$host) //
{
// say($obj['TITLE']);
if (is_array($params)) {
sg ($obj['TITLE'].".LastUpdate",date("d-m-Y H:i:s",time()));

//если модуль был неактивный, то отмечаем активность
if (gg($obj['TITLE'].".alive")=='false') callMethod($obj['TITLE'].".testAlive");

foreach($params as $k=>$v) {
if ($k!="script") {
sg($obj['TITLE'].".".$k,$v);
}
}
}

$ibutton = $params['ibutton']; //если произошло считывание, то ЕСП передает этот параметр. В обычной периодической посылке этого параметра нет
if ($ibutton != '') {
say($host.".ibutton = ".$ibutton);
cm("keyAccess.iButton_read", array("iButton"=>$ibutton, "iButtonst"=>$params["ibuttonst"]));

}

$wiegandID = $params['wiegand'];

if ($wiegandID != '')
say($host.".Wiegand = ".$wiegandID);

//обработка прерываний
if ($params['gpioint1']==1) {
// getURL('http://192.168.1.218/gpio?st=2&pin=12', 0);
runScript("INT1_received", array("module"=>$host));
say('INT1');

}
if ($params['gpioint2']==1) {
runScript("INT2_received", array("module"=>$host));
say('INT2');

}
}
}
Сценарий обновляет свойства объектов класса ESP8266 плюс реагирует на прерывания на самой ЕСП:

Код: Выделить всё

if ($params['gpioint2']==1) {
      	runScript("INT2_received", array("module"=>$host));
Есть несколько классов, объекты которых ссылаются на тот или иной объект ЕСП : реле, информеры, датчики итд.
Также имеются сценарии, которые циклично (например, раз в минуту) "разносят" данные с объектов ЕСП по связанным объектам реле, датчиков итд и обрабатывают эти данные.
Масштабируемость - в иерархии : на один объект ЕСП могут ссылаться самые разные объекты, ведь ЕСП весьма функциональна.
А у вас всё крутится вокруг одного объекта : ThisComputer. Это оправдано, если датчиков и исполнительных устройств 1, 2, 3... Но у меня сейчас в сети 14 штук ЕСП и добавляются новые.

У меня ЕСП сами инициируют передачу данных на сервак. Я не вижу принципиальных возражений против периодического опроса сервером, но всё равно придется городить механизм, когда ЕСП сама хочет вам сообщить, что воды уже 1мм, а к моменту очередного опроса от сервака воды уже будет по колено.
За это сообщение автора Pacific поблагодарил:
JackOfShadows (Пн янв 14, 2019 8:39 pm)
Рейтинг: 1.16%
россыпь датчиков и серв <-> 20+ ESP8266(WiFi-IoT) <-> Malinka Pi3 :)
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: Система защиты от протечек на ESP 8266

Сообщение JackOfShadows » Пн янв 14, 2019 8:38 pm

skysilver писал(а):
Пн янв 14, 2019 5:22 pm

Спасибо. Второй драфт:

1. В МДМ создаю класс-объект для моей esp c нужными свойствами.
2. В МДМ создаю сценарий, в "использовать для программирования" - разбор приходящих свойств и раскладка по свойствам объекта.
3. В esp при запуске и на изменения состояния вызываю http://MAJORDOMO_IP/objects/?script=<SCRIPT>&param1=value1&param2=value2

Так?

Где и как в МДМ задать объекту esp его имя/IP, чтобы вызывать методы через getUrl - прописать в свойство в панели управления при добавлении в класс нового объекта?

"Простые устройства" - упрощение работы с классами/объектами или что-то качественно иное? Например, прикрепить пару кнопок к объекту esp - ПУ помогут?
Последний раз редактировалось JackOfShadows Пн янв 14, 2019 8:59 pm, всего редактировалось 1 раз.
JackOfShadows
Сообщения: 104
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 23 раза
Поблагодарили: 26 раз

Re: Система защиты от протечек на ESP 8266

Сообщение JackOfShadows » Пн янв 14, 2019 8:48 pm

Pacific писал(а):
Пн янв 14, 2019 8:33 pm
Есть несколько классов, объекты которых ссылаются на тот или иной объект ЕСП : реле, информеры, датчики итд.
Также имеются сценарии, которые циклично (например, раз в минуту) "разносят" данные с объектов ЕСП по связанным объектам реле, датчиков итд и обрабатывают эти данные.
Масштабируемость - в иерархии : на один объект ЕСП могут ссылаться самые разные объекты, ведь ЕСП весьма функциональна.
А у вас всё крутится вокруг одного объекта : ThisComputer. Это оправдано, если датчиков и исполнительных устройств 1, 2, 3... Но у меня сейчас в сети 14 штук ЕСП и добавляются новые.
Ваш дизайн определяется использованием wifi-iot. У меня МДМ не знает, что это именно esp с gpio. Это просто некий чёрный ящик со своим интерфейсом более высокого уровня - свойства isOpened, isClosed, isOpening, isClosing, isAlarm, log и методы doOpen, doClose, doRotate
У меня ЕСП сами инициируют передачу данных на сервак. Я не вижу принципиальных возражений против периодического опроса сервером, но всё равно придется городить механизм, когда ЕСП сама хочет вам сообщить, что воды уже 1мм, а к моменту очередного опроса от сервака воды уже будет по колено.
Это критично в том случае, если логика "залило-перекрыть" будет на МДМ. Я согласен со skysilver, что эта система должна быть автономной - логика останется в esp, а МДМ будет использоваться только для мониторинга состояния и сигнализации голосом/звуком/светом. Напишет ли МДМ в телеграм через пять минут после того, как esp перекроет воду - менее критично, чем возможность неперекрытия воды из-за зависания циклов МДМ.

Esp сама будет передавать, это логичнее, да.
Pacific
Сообщения: 116
Зарегистрирован: Чт май 28, 2015 9:40 pm
Откуда: Вёска пад Мiнскам
Благодарил (а): 60 раз
Поблагодарили: 7 раз

Re: Система защиты от протечек на ESP 8266

Сообщение Pacific » Пн янв 14, 2019 9:24 pm

JackOfShadows писал(а):
Пн янв 14, 2019 8:48 pm
Ваш дизайн определяется использованием wifi-iot.
абсолютно верно, от этого и плясал.
JackOfShadows писал(а):
Пн янв 14, 2019 8:48 pm
У меня МДМ не знает, что это именно esp с gpio. Это просто некий чёрный ящик со своим интерфейсом более высокого уровня - свойства isOpened, isClosed, isOpening, isClosing, isAlarm, log и методы doOpen, doClose, doRotate
В моём случае делать "черный ящик" особого смысла не было, а в вашем, почему бы и нет?!
JackOfShadows писал(а):
Пн янв 14, 2019 8:48 pm
Это критично в том случае, если логика "залило-перекрыть" будет на МДМ. Я согласен со skysilver, что эта система должна быть автономной - логика останется в esp, а МДМ будет использоваться только для мониторинга состояния и сигнализации голосом/звуком/светом.
Ну, кроме понятия "критично" есть еще понятие "приятно". Я тоже исповедую принцип автономности ЕСП (вернее, стараюсь). Но, ведь приятней получить сигнал, что открылась калитка и выйти на крыльцо встретить жену, чем получить сигнал, когда уже можно не дёргаться)
россыпь датчиков и серв <-> 20+ ESP8266(WiFi-IoT) <-> Malinka Pi3 :)
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Система защиты от протечек на ESP 8266

Сообщение skysilver » Вт янв 15, 2019 11:42 pm

JackOfShadows писал(а):
Пн янв 14, 2019 8:38 pm
1. В МДМ создаю класс-объект для моей esp c нужными свойствами.
2. В МДМ создаю сценарий, в "использовать для программирования" - разбор приходящих свойств и раскладка по свойствам объекта.
3. В esp при запуске и на изменения состояния вызываю http://MAJORDOMO_IP/objects/?script=<SCRIPT>&param1=value1&param2=value2
Так?
В целом да, вполне рабочий вариант.

Класс, объект, свойства можно не создавать руками, а прописать это в код сценария, тогда все само создастся при первой отправке данных с ЕСП.

Либо вместо своего класса и объектов, можно воспользоваться Простыми устройствами. Тип "Датчик протечки" (и многие другие) там уже есть.
JackOfShadows писал(а):
Пн янв 14, 2019 8:38 pm
Где и как в МДМ задать объекту esp его имя/IP, чтобы вызывать методы через getUrl - прописать в свойство в панели управления при добавлении в класс нового объекта?
Допустим, класс ESP. На уровне класса создаются свойства, общие для все ЕСП, - ip, mac, rssi, uptime. Затем в класс добавляются объекты по мере запуска новых ЕСП-шек - Esp01, Esp02. У всех них уже будут свойства, спущенные с уровня класса. Вот в них уже вписывается тот же ip.

Но повторюсь, руками можно вообще ничего не заполнять, если на стороне прошивки организовать передачу всех нужных метрик.
JackOfShadows писал(а):
Пн янв 14, 2019 8:38 pm
"Простые устройства" - упрощение работы с классами/объектами или что-то качественно иное?
Упрощение. Обертка над существующей концепцией класс-объект-свойство.
JackOfShadows писал(а):
Пн янв 14, 2019 8:38 pm
Например, прикрепить пару кнопок к объекту esp - ПУ помогут?
Помогут. И типовые виджеты для Меню и Сцены сами создадут. А дальше уж можно на них свое "чувство прекрасного" применить. :)
За это сообщение автора skysilver поблагодарил:
JackOfShadows (Ср янв 16, 2019 5:34 am)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
leo_boy
Сообщения: 5
Зарегистрирован: Сб дек 08, 2018 11:20 pm
Откуда: Николаев
Благодарил (а): 0
Поблагодарили: 5 раз
Контактная информация:

Re: Система защиты от протечек на ESP 8266

Сообщение leo_boy » Чт янв 17, 2019 2:04 pm

Кому будет интересно мой опыт системы защиты от протечки http://videooko.net/?p=943
На данный момент уже несколько недель в работе.

В последней версии прошивки реализован режим автономности, т.е. сама esp мониторит состояние датчиков и в случае намокания перекрывает вентиль и отправляет письмо с алармом где указываются сработаные датчики. Если есть интернет соединение, то возможно просматривать и управлять через Мажордомо. Также поставил кнопку для ручного отртытия и закрытия задвижки, но если есть хоть один мокрый датчик система не откроет кран даже в ручную.
За это сообщение автора leo_boy поблагодарили (всего 2):
viktor6 (Вт фев 12, 2019 6:20 pm) • Plug (Вт фев 12, 2019 7:48 pm)
Рейтинг: 2.33%
Мой блог videooko.net videooko.net
viktor6
Сообщения: 273
Зарегистрирован: Вс авг 20, 2017 1:46 am
Благодарил (а): 142 раза
Поблагодарили: 13 раз

Re: Система защиты от протечек на ESP 8266

Сообщение viktor6 » Вт фев 12, 2019 6:22 pm

leo_boy писал(а):
Чт янв 17, 2019 2:04 pm
Кому будет интересно мой опыт системы защиты от протечки http://videooko.net/?p=943
На данный момент уже несколько недель в работе.

В последней версии прошивки реализован режим автономности, т.е. сама esp мониторит состояние датчиков и в случае намокания перекрывает вентиль и отправляет письмо с алармом где указываются сработаные датчики. Если есть интернет соединение, то возможно просматривать и управлять через Мажордомо. Также поставил кнопку для ручного отртытия и закрытия задвижки, но если есть хоть один мокрый датчик система не откроет кран даже в ручную.
Обновите ссылки в блоге на али. Некоторые товар не доступны.
Raspberry Pi3, с образа от Сергея 3.34
leo_boy
Сообщения: 5
Зарегистрирован: Сб дек 08, 2018 11:20 pm
Откуда: Николаев
Благодарил (а): 0
Поблагодарили: 5 раз
Контактная информация:

Re: Система защиты от протечек на ESP 8266

Сообщение leo_boy » Ср фев 13, 2019 9:37 am

...обновил
За это сообщение автора leo_boy поблагодарил:
viktor6 (Ср фев 13, 2019 10:03 am)
Рейтинг: 1.16%
Мой блог videooko.net videooko.net
viktor6
Сообщения: 273
Зарегистрирован: Вс авг 20, 2017 1:46 am
Благодарил (а): 142 раза
Поблагодарили: 13 раз

Re: Система защиты от протечек на ESP 8266

Сообщение viktor6 » Чт фев 14, 2019 11:03 pm

А кто еще как реализовал систему защиты от протечки?
Raspberry Pi3, с образа от Сергея 3.34
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: Система защиты от протечек на ESP 8266

Сообщение samolet » Пн фев 18, 2019 9:56 pm

Всем доброго времени суток
я сделал систему на основе прошивки на этом сайте https://wifi-iot.com/p/esp8266/
на али заказал электронику (ниже в картинках)
на основе MCP23017 назначил порты ввода вывода
https://ru.aliexpress.com/item/MCP23017 ... 33edTOzJBs
в коде в статус апдейт прописал код ниже


Код: Выделить всё

 if (gg('Deutechka.status')=='1') {sayReply("Внимание произошла утечка воды в туалете срочно перекройте воду.",5); }
в свойствах назначил откр. закр. электрокрана. управление при помощи реле
https://ru.aliexpress.com/item/1-2-4-8- ... 32727030-3
https://ru.aliexpress.com/item/2-way-wa ... 33ednGxndk
блок питания 12 V для крана купил в строительном

блок питания по ссылке
https://ru.aliexpress.com/item/1PCS-AC- ... 33edTOzJBs
ИзображенияПоказать
1-2-4-8-DC-5.jpg_640x640.jpg
1-2-4-8-DC-5.jpg_640x640.jpg (192.27 КБ) 4045 просмотров
1-2-4-8-DC-5.jpg_640x640.jpg
1-2-4-8-DC-5.jpg_640x640.jpg (192.27 КБ) 4082 просмотра
erg.jpg
erg.jpg (100.68 КБ) 4083 просмотра
11111.jpg
11111.jpg (125.77 КБ) 4085 просмотров
322.jpg
322.jpg (348.3 КБ) 4090 просмотров
5555.jpg
5555.jpg (84.9 КБ) 4090 просмотров
HTB1x5OporArBKNjSZFLq6A_dVXaI.jpg
HTB1x5OporArBKNjSZFLq6A_dVXaI.jpg (50.12 КБ) 4090 просмотров
Последний раз редактировалось savenko_egor Ср фев 20, 2019 10:55 am, всего редактировалось 1 раз.
Причина: Изображение под спойлер.
Ответить