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

Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Сб май 22, 2021 10:38 pm
ImageMaker
Совсем не дружу с php :?

Есть время рассвета ow_fact_2.sunrise и время заката ow_fact_2.sunset
Если XiOpenable01.level=0, то шторы закрываются.
Если XiOpenable01.level=100, то шторы открываются.

Подскажите код для открытия и закрытия штор на рассвете и закате для сценария.

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Вс май 23, 2021 1:16 pm
Nail
ПРИМЕР (сценарий в onNewMinute)

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

if (timeIs(getGlobal('ThisComputer.SunSetTime'))) { // проверка что сейчас закат
SetTimeOut("lightOnTimer","callMethod('Relay09.turnOn');", 60); 
 // закрываем штору, устанавливаем таймер  через одну минуту после заката
}
if (timeIs(getGlobal('ThisComputer.SunRiseTime'))) { // проверка что сейчас расcвет
SetTimeOut("lightOnTimer","callMethod('Relay09.turnOff');",1500); 
 // открываем штору , устанавливаем таймер через  90 минут после рассвета
}

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Вс май 23, 2021 4:15 pm
ImageMaker
Я правильно понимаю, что в моём случае Relay09.turnOn и Relay09.turnOff нужно заменить на XiOpenable01.level=0 и XiOpenable01.level=100 ?
Или не так?

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Вс май 23, 2021 8:20 pm
Chainik
Если XiOpenable01.level=0 и XiOpenable01.level=100 -- это у вас команды на открытие и закрытие, то понимаете правильно.

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Пн май 24, 2021 12:12 am
xor
Nail писал(а):
Вс май 23, 2021 1:16 pm
ПРИМЕР (сценарий в onNewMinute)

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

if (timeIs(getGlobal('ThisComputer.SunSetTime'))) { // проверка что сейчас закат
SetTimeOut("lightOnTimer","callMethod('Relay09.turnOn');", 60); 
 // закрываем штору, устанавливаем таймер  через одну минуту после заката
}
if (timeIs(getGlobal('ThisComputer.SunRiseTime'))) { // проверка что сейчас расcвет
SetTimeOut("lightOnTimer","callMethod('Relay09.turnOff');",1500); 
 // открываем штору , устанавливаем таймер через  90 минут после рассвета
}
можно немного съэкономить - не проверять закат/рассвет каждую минуту, а при обновлении в системе заката/восхода сразу и запускать
запланированные задачи для поднятия/опускания штор - addScheduledJob("blinds_on","callMethod('Relay09.turnOn');",$datetime);, например, где $datetime абсолютное время
типа timeconvert(getGlobal('ThisComputer.SunRiseTime')) - юникс время восхода
для примера выше -- через 90 минут после рассвета

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

//сегодня вычислили рассвет
$datetime = timeconvert(getGlobal('ThisComputer.SunRiseTime')) + 1500;
addScheduledJob("blinds_on","callMethod('Relay09.turnOn');",$datetime);

//сегодня вычислили рассвет для завтра
$datetime = timeconvert(getGlobal('ThisComputer.SunRiseTime')) + 1500 + 24*60*60; //timeconvert возвращает время только сегодняшним числом, добавим сутки
addScheduledJob("blinds_on","callMethod('Relay09.turnOn');",$datetime);

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Пн май 24, 2021 11:10 am
Nail
xor писал(а):
Пн май 24, 2021 12:12 am

можно немного съэкономить - не проверять закат/рассвет каждую минуту, а при обновлении в системе заката/восхода сразу и запускать
запланированные задачи для поднятия/опускания штор...
У меня такой стоит на данный момент.

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

if (timeIs(date("H:i",date_sun_info(time(),53.181683, 50.282005)['sunset']-60*60))) {
  //определение заката по координатам опережение на 60 мин
callMethod('Relay09.turnOn');
//say("Закрываю шторы через час закат",2);
}
Он лучше, вроде тоже не дергает?

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Пн май 24, 2021 2:32 pm
xor
Nail писал(а):
Пн май 24, 2021 11:10 am
xor писал(а):
Пн май 24, 2021 12:12 am

можно немного съэкономить - не проверять закат/рассвет каждую минуту, а при обновлении в системе заката/восхода сразу и запускать
запланированные задачи для поднятия/опускания штор...
У меня такой стоит на данный момент.

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

if (timeIs(date("H:i",date_sun_info(time(),53.181683, 50.282005)['sunset']-60*60))) {
  //определение заката по координатам опережение на 60 мин
callMethod('Relay09.turnOn');
//say("Закрываю шторы через час закат",2);
}
Он лучше, вроде тоже не дергает?
это же в ежеминутном цикле? в чём тогда выгода?
у меня вот это date_sun_info(time(),53.181683, 50.282005)['sunset'] вычисляется в методе onNewDay однократно в сутки, при появлении времени заката/рассвета я и предлагал сразу поставить две задачи на подъем/опускание штор. Один раз в день, когда нам становится известно время заката/рассвета, нам по приведенной логике известны и время поднятия/опускания штор. по-моему, это естественнее, чем каждую минуту проверять в течение дня наступление восхода или заката

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Вт май 25, 2021 9:06 pm
ImageMaker
У меня такая конструкция в сценариях:

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

if (timeIs(getGlobal('ThisComputer.SunSetTime'))) { // проверка что сейчас закат
SetTimeOut("lightOnTimer","callMethod('XiOpenable01.close');", 60); 
 // закрываем штору, устанавливаем таймер  через одну минуту после заката
}
if (timeIs(getGlobal('ThisComputer.SunRiseTime'))) { // проверка что сейчас расcвет
SetTimeOut("lightOnTimer","callMethod('XiOpenable01.open');",1500); 
 // открываем штору , устанавливаем таймер через  90 минут после рассвета
}
Но не работает :?
Почему?

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Ср май 26, 2021 1:06 am
xor
ImageMaker писал(а):
Вт май 25, 2021 9:06 pm
У меня такая конструкция в сценариях:

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

if (timeIs(getGlobal('ThisComputer.SunSetTime'))) { // проверка что сейчас закат
SetTimeOut("lightOnTimer","callMethod('XiOpenable01.close');", 60); 
 // закрываем штору, устанавливаем таймер  через одну минуту после заката
}
if (timeIs(getGlobal('ThisComputer.SunRiseTime'))) { // проверка что сейчас расcвет
SetTimeOut("lightOnTimer","callMethod('XiOpenable01.open');",1500); 
 // открываем штору , устанавливаем таймер через  90 минут после рассвета
}
Но не работает :?
Почему?
это не в сценариях должно быть, а в методе ClockChime.onNewMinute. этот метод вызывается каждую минуту и там текущее время сравнивается с закатом/рассветом из свойств ваших ThisComputer.SunSetTime и ThisComputer.SunRiseTime + время в этих свойствах должно быть в формате "чч:мм". если этот код лежит в сценариях, то его надо вызывать каждую минуту тогда, чтоб не прошляпить эти два момента за день

Re: Подскажите код для открытия и закрытия штор на рассвете и закате.

Добавлено: Ср май 26, 2021 4:51 pm
ImageMaker
xor писал(а):
Ср май 26, 2021 1:06 am
...в методе ClockChime.onNewMinute....
В этом методе уже есть какой-то код :?
Просто добавить мой код после существующего кода?