Страница 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....
В этом методе уже есть какой-то код
Просто добавить мой код после существующего кода?