Re: Автоматизация в ванной и в туалете
Добавлено: Пт дек 25, 2020 4:49 pm
Я это делал на тестовой виртуальной машине, на мастере. Скорее по этой причине и не работает на Альфе. Значит на тестовой машине просто выбирайте мастер.
Кстати, забыл упомянуть. ДД не фиксирует движение, если лежишь в ванной. Горячая вода и пар препятствуют обнаружению. Система может ошибочно посчитать, что в ванной никого нет и выключит свет.Alexander Znamensky писал(а): ↑Пт дек 25, 2020 2:26 pmПривет!
Несколько комментариев:
1. Сцена из бекапа не устанавливается на Альфу. - вешает наглухо систему.
2. В видео и в бекапе не совпадают скрипты - новички запутаются )))
3. Возник вопрос - зачем такая сложная реализация? Мне кажется, что объекты SDoorVannaya / SDoorToilet лишние?
Привожу свой код (он у меня давно работает в чем-то он похож, но, кмк попроще). Может я что-то не учитываю в своей автоматизации?
Этот скрипт я вызываю при открывании-закрывании двери и при обнаружении движения:СпойлерПоказатьКод: Выделить всё
// Открыли дверь, включаем свет на 10 секунд. if (gg('Дверь_в_ванную.status') == 0) { sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 10); } // Дверь открыта и было движение, включаем свет на 3 минуты. elseif (gg('Дверь_в_ванную.status') == 0 && gg('Датчик_движения_в_ванной.status') == 1) { sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 60*3); } // Дверь закрыта и было движение, включаем свет на 10 минут. elseif (gg('Дверь_в_ванную.status') == 1 && gg('Датчик_движения_в_ванной.status') == 1) { sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 60*10); } // Дверь закрыта и нет движения, выключаем свет через 5 сек. elseif (gg('Дверь_в_ванную.status') == 1 && gg('Датчик_движения_в_ванной.status') == 0) { // sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 5); }
В моем случае все надежно. Сбоев нет. Система точно знает, что в ванной\туалете кто-то есть и когда включается режим "в помещении кто-то есть", то ДД уже не нужен и свет физически никто не сможет выключить (кто-то ошибочно посчитал, что внутри никого нет и нажали на выключатель). Можно хоть полдня лежать в ванной, свет не выключится.
Да, все верно! В моем случае это непринципиально. Но если лежать в ванной, то можно увеличить время таймера в случае "Дверь закрыта и было движение, включаем свет" с 10 минут, например, до 40 минут или столько, сколько нужно лежать в ванной ))).Divan писал(а): ↑Пт дек 25, 2020 6:48 pmКстати, забыл упомянуть. ДД не фиксирует движение, если лежишь в ванной. Горячая вода и пар препятствуют обнаружению. Система может ошибочно посчитать, что в ванной никого нет и выключит свет.Alexander Znamensky писал(а): ↑Пт дек 25, 2020 2:26 pmПривет!
Несколько комментариев:
1. Сцена из бекапа не устанавливается на Альфу. - вешает наглухо систему.
2. В видео и в бекапе не совпадают скрипты - новички запутаются )))
3. Возник вопрос - зачем такая сложная реализация? Мне кажется, что объекты SDoorVannaya / SDoorToilet лишние?
Привожу свой код (он у меня давно работает в чем-то он похож, но, кмк попроще). Может я что-то не учитываю в своей автоматизации?
Этот скрипт я вызываю при открывании-закрывании двери и при обнаружении движения:СпойлерПоказатьКод: Выделить всё
// Открыли дверь, включаем свет на 10 секунд. if (gg('Дверь_в_ванную.status') == 0) { sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 10); } // Дверь открыта и было движение, включаем свет на 3 минуты. elseif (gg('Дверь_в_ванную.status') == 0 && gg('Датчик_движения_в_ванной.status') == 1) { sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 60*3); } // Дверь закрыта и было движение, включаем свет на 10 минут. elseif (gg('Дверь_в_ванную.status') == 1 && gg('Датчик_движения_в_ванной.status') == 1) { sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 60*10); } // Дверь закрыта и нет движения, выключаем свет через 5 сек. elseif (gg('Дверь_в_ванную.status') == 1 && gg('Датчик_движения_в_ванной.status') == 0) { // sg('XiRelay26.status', 1); SetTimeOut('XiRelay26OffTimer', 'sg("XiRelay26.status", 0);', 5); }