Страница 1 из 2

[Настройка] Автоматическое управление освещением в комнате

Добавлено: Пт апр 06, 2018 1:47 pm
maksim
Самое основное предназначение умного дома это управление освещением, так как взаимодействовать с выключателем в течении дня приходится очень много раз, если конечно он не один в доме (квартире). И так с самого начала. Мажор новая версия стоит на Винде 10, одна подопытная комната, спальня в ней установлен
1. Выключатель Xiaomi aqara с нулевой линией (лапухнулся и перепутал он не имеет функции отвязки реле от клавиш, для этого надо без нулевой линии) Сам по себе выключатель прикольный, сделан качественно, но когда установил его то выглядит сие чудо как хрен знает что. и релюшки клацают слышно хорошо
20180329_163843.jpg
20180329_163843.jpg (1.48 МБ) 11431 просмотр
2. Датчик движения Xiaomi aqara с датчиком освещенности, установлен на потолке в левом дальнем углу от входной двери, при высоте потолка 2,8м не срабатывает на 1/3 комнаты маловат угол обзора, но зато не ловит когда лежишь на кровати встаешь срабатывает в данном случае плюс а вообще минус. ну а так в целом девайсик очень даже достойный маленький аккуратненький.
20180329_163901.jpg
20180329_163901.jpg (999.05 КБ) 11431 просмотр
3. Шлюз Xiaomi gateway 2. служит ночником ну и шлюзом по совместительству
4. Датчик температуры Xiaomi aqara. Тоже очень достойная вещь, выглядит круто показания у моего 100% никакие есп с датчиками температуры рядом не стояли. так компактно и привлекательно самому собрать за эти деньги не получится.
А теперь програмная часть. точнее ее начало я с php на Вы и делаю все исходя из примеров. надеюсь сообща допилить до нужного вида.
И так в ОБЕКТЫ создаем новый класс "ReleSensors" название как душе угодно.
В нем добавляем объекты "Spalnj", "Hol" столько в скольких комнатах надо управлять освещением.
Далее в свойства добавляем
1 - AvtoOn время включения автоматического управления светом
2 - AvtoOff время выключения автоматического управления светом
3 - AvtoTurnOff автоматичесское управление светом
4 - SwitchMotionOff выключения освещения при отсутствии движения
5 - SwitchMotionOn включение освещения по датчику движения
6 - delayPower время задержки выключения освещения
7 - AvtoTurnOffNicha автоматическое управление подсветкой в нишах ( при наличии дополнительной группы)
8 - NotDisturb ктото спит должно выключить все свет и отключить все автоматическое управление
Screenshot_2018-04-06-11-06-11.png
Screenshot_2018-04-06-11-06-11.png (186.46 КБ) 11431 просмотр
Далее в Меню управление 》Управление комнатами 》 1 Спальня, 2 коридор, итд.
В "Спальня" добавляем дочерние пункты в них в объект добавляем Spalnj а в свойство добавляем нужное
Кто то спит / switch/ 110
Светом управляет: "Алиса" / switch/ 90
Подсветкой ниш управляет: Алиса / switch/ 80
Включение света по движению / switch/ 70
Выключение света без движения / switch/ 60
Задержка выключения / sliderbox/ 50
Запрет управления светом Алисе / timebox/ 40
Разрешение управлять светом Алисе / timebox/ 30
Подсветка ниш / switch/ 20
Свет / switch/ 10спальня
Screenshot_2018-04-06-12-12-40.png
Screenshot_2018-04-06-12-12-40.png (876.73 КБ) 11431 просмотр
Далее переходим к Сценариям
создаем сценарий включения светом TurnOnSwet для выключателя aqara callMethod("Relay03.turnOn");
аналогично для подсветки ниш TurnOnSwetNicha только указываем номер реле который им управляет Relay(Х)
ну и сценарий управления подсветки SwitchAvtoAlisa

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

if ((timeBetween((gg('Spalnj.AvtoOn')),(gg('Spalnj.AvtoOff')))) && (getGlobal('Spalnj.AvtoTurnOff')) && (getGlobal('Spalnj.SwitchMotionOn')) && (getGlobal('Motion01.status')) && (getGlobal('Spalnj.NotDisturb') =="0") && (getGlobal('Relay03.status') =="0") =="1"){
 runScript('TurnOnSwet');
   say("Включила свет",2);}
   // Включение подсветка ниш если:время больше текущего - разрешено светом управлять алисе - время разрешения управление - включать свет по движению

if ((timeBetween((gg('Spalnj.AvtoOn')),(gg('Spalnj.AvtoOff')))) && (getGlobal('Spalnj.AvtoTurnOffNicha')) && (getGlobal('Spalnj.SwitchMotionOn')) && (getGlobal('Motion01.status')) && (getGlobal('Relay04.status') =="0") =="1"){
   runScript('TurnOnSwetNicha');
    say("Включила подсветку в нишах",2);} 
Создаем Скрипт для запуска скрипа SwitchAvtoAlisa каждую секунду ( но както работает странно думаю код надо переместить в onNewMinute. сам код

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

runScript('SwitchAvtoAlisa');
setTimeOut("timer_Sp_timeout", "runScript('timer_Sp');", 1);

А теперь о багах. оказалось что когда я подхожу и выключаю свет выключателем в это время срабатывает датчик и Алиса включает свет , я выключаю она включает (короче жена сказала что в доме должна быть одна женщина) предполагаю что надо добавить какой нибудь таймер когда сработал выключатель на временное выключения сценария SwitchAvtoAlisa но у меня на это пока не хватает знаний, куда и какой вставить.
Также не смог реализовать выключения освещения без движения. хочу разделить его на 3 вида. 1 это общий который будет выключать забытый свет через ХХ время скажем 20мин (с возможностью выставлять его из меню а голосом еще лучше) а второй это когда я зашел свет включился я вышел свет выключился через 2 мин, применительно для коридора, ванны, да и просто зашел что нибудь взять. и третий это когда я захожу допустим в ванну включаю свет выключателем (тем самым даю понять системе что я буду долго там находится) должен отключится таймер N2. жду помощи от гуру и надеюсь информация будет полезна новичкам таким как я.

Re: Автоматическое управлерие освищением в комнате

Добавлено: Пт апр 06, 2018 1:52 pm
skysilver
Фоток нет :|

upd. О, уже есть. ) Но какие-то все одинаковые. )

Re: Автоматическое управлерие освищением в комнате

Добавлено: Пт апр 06, 2018 1:55 pm
maksim
да щас подправлю чето прыгает все

Re: Автоматическое управлерие освещением в комнате

Добавлено: Вс апр 08, 2018 1:08 am
Dicont
Что бы не включался свет, добавь проверку в код датчика движения, и включай только когда 1:
$motion02 = gg('Motion02.status');
if ($motion02 == 1 )
{sg('Relay03.status', 1);}

Но тут тоже есть "баг" - пока не пройдет 10 секунд и свойство не перейдет в 0, срабатывать повторно в течении 10 сек не будет.
Нужно включать кнопкой, зато сам не включиться, если выключить.
Включение света, после выключения это нормальное явление, идет повторная проверка что датчик движения доступен, и свойство обновляется в некоторых случаях.

Re: Автоматическое управлерие освещением в комнате

Добавлено: Вс апр 08, 2018 10:24 am
maksim
у меня в спальне выключатель стоит внутри, и получается что я выключил и начинаю уходить и закрывать дверь он увидел движение и включил, а вот если щелкнуть и убежить он не успевает сработать

Re: Автоматическое управлерие освещением в комнате

Добавлено: Вс апр 08, 2018 12:35 pm
Chainik
В плане алгоритмов можно сделать 2 режима: один условно "ручной", где свет будет включаться и выключаться посредством выключателя (и выключаться автоматом только когда его забыли выключить), а другой алгоритм, когда свет будет включаться/выключаться по датчику движения. И переключаться между этими режимами (https://ab-log.ru/forum/viewtopic.php?f ... 440#p28440).

Re: [Настройка] Автоматическое управление освещением в комнате

Добавлено: Вт янв 22, 2019 8:26 pm
mazahaka7sk
Ну что допилили скрипты ? Получилось все настроить ? Если да напишите

Re: [Настройка] Автоматическое управление освещением в комнате

Добавлено: Сб мар 30, 2019 6:03 pm
lihodeev
Ребят, а кто то может сказать как реализовать ручное управление при данном - свет в комнате управляется скриптом -
sg('pirHAL.status', 1);
if(timeBetween('18:00', '23:59')){
SetTimeOut("MS2ActTimer","sg('pirHAL.status', 0);",0);
getURL("http://192.168.1.37/?Hai0=1", 0);
//run timer on 10 minuts
clearTimeOut("lightOffTimer5");
SetTimeOut("lightOffTimer5","getURL('http://192.168.1.37/?Hai0=0', 0);",60*10);}
все вроде чудесно,НО если скажем лег спать до 12 ночи, и не удачно повернулся или датчик движения увидел активность то Алиса добросовестно отрабатывает включение света, чего не очень то хотелось. Как сделать так, чтобы при пусть голосовой команде типа *я ложусь спать* этот скрипт блокировался до утра или до момента восхода солнца?

Re: [Настройка] Автоматическое управление освещением в комнате

Добавлено: Сб мар 30, 2019 6:29 pm
xor
lihodeev писал(а):
Сб мар 30, 2019 6:03 pm
Ребят, а кто то может сказать как реализовать ручное управление при данном - свет в комнате управляется скриптом -
sg('pirHAL.status', 1);
if(timeBetween('18:00', '23:59')){
SetTimeOut("MS2ActTimer","sg('pirHAL.status', 0);",0);
getURL("http://192.168.1.37/?Hai0=1", 0);
//run timer on 10 minuts
clearTimeOut("lightOffTimer5");
SetTimeOut("lightOffTimer5","getURL('http://192.168.1.37/?Hai0=0', 0);",60*10);}
все вроде чудесно,НО если скажем лег спать до 12 ночи, и не удачно повернулся или датчик движения увидел активность то Алиса добросовестно отрабатывает включение света, чего не очень то хотелось. Как сделать так, чтобы при пусть голосовой команде типа *я ложусь спать* этот скрипт блокировался до утра или до момента восхода солнца?
сделать флаг Enable и проверять его при запуске скрипта, а флагом управлять шаблоном, да и из планировщика какого-нибудь по времени

Re: [Настройка] Автоматическое управление освещением в комнате

Добавлено: Сб мар 30, 2019 6:41 pm
Chainik
lihodeev писал(а):
Сб мар 30, 2019 6:03 pm
...
все вроде чудесно,НО если скажем лег спать до 12 ночи, и не удачно повернулся или датчик движения увидел активность то Алиса добросовестно отрабатывает включение света, чего не очень то хотелось. Как сделать так, чтобы при пусть голосовой команде типа *я ложусь спать* этот скрипт блокировался до утра или до момента восхода солнца?
Можно попробовать использовать доп.свойство аля "лег_спать". Если свойство = "1", код исходного скрипта запускаться не будет. После восхода солнца и срабатывания датчика движения свойству "лег_спать" присвоится значение "0". Только надо проверить, что в ThisComputer.SunRise время восхода устанавливается правильно.

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

if(timeBetween('ThisComputer.SunRiseTime', '17:59')){
sg("ОБЪЕКТ.Свойство_лег_спать', 0);
}
if(gg("ОБЪЕКТ.Свойство_лег_спать") == "0"){
ИСХОДНЫЙ КОД СКРИПТА
}