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

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

Модераторы: Bagir, Ivan, immortal, Vit

Pacific
Сообщения: 109
Зарегистрирован: Чт май 28, 2015 9:40 pm
Откуда: Вёска пад Мiнскам
Благодарил (а): 56 раз
Поблагодарили: 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.37%
россыпь датчиков и серв <-> дюжина ESP8266(WiFi-IoT) <-> Malinka Pi2 :)
JackOfShadows
Сообщения: 10
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 7 раз
Поблагодарили: 0

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
Сообщения: 10
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 7 раз
Поблагодарили: 0

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
Сообщения: 109
Зарегистрирован: Чт май 28, 2015 9:40 pm
Откуда: Вёска пад Мiнскам
Благодарил (а): 56 раз
Поблагодарили: 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, а МДМ будет использоваться только для мониторинга состояния и сигнализации голосом/звуком/светом.
Ну, кроме понятия "критично" есть еще понятие "приятно". Я тоже исповедую принцип автономности ЕСП (вернее, стараюсь). Но, ведь приятней получить сигнал, что открылась калитка и выйти на крыльцо встретить жену, чем получить сигнал, когда уже можно не дёргаться)
россыпь датчиков и серв <-> дюжина ESP8266(WiFi-IoT) <-> Malinka Pi2 :)
skysilver
Сообщения: 2237
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 309 раз
Поблагодарили: 1268 раз
Контактная информация:

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.37%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
leo_boy
Сообщения: 3
Зарегистрирован: Сб дек 08, 2018 11:20 pm
Откуда: Николаев
Благодарил (а): 0
Поблагодарили: 1 раз
Контактная информация:

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

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

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

В последней версии прошивки реализован режим автономности, т.е. сама esp мониторит состояние датчиков и в случае намокания перекрывает вентиль и отправляет письмо с алармом где указываются сработаные датчики. Если есть интернет соединение, то возможно просматривать и управлять через Мажордомо. Также поставил кнопку для ручного отртытия и закрытия задвижки, но если есть хоть один мокрый датчик система не откроет кран даже в ручную.
Мой блог videooko.net videooko.net
Ответить