Подскажите код для открытия и закрытия штор на рассвете и закате.
Модератор: immortal
- ImageMaker
- Сообщения: 76
- Зарегистрирован: Ср фев 13, 2019 9:28 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Подскажите код для открытия и закрытия штор на рассвете и закате.
Совсем не дружу с php
Есть время рассвета ow_fact_2.sunrise и время заката ow_fact_2.sunset
Если XiOpenable01.level=0, то шторы закрываются.
Если XiOpenable01.level=100, то шторы открываются.
Подскажите код для открытия и закрытия штор на рассвете и закате для сценария.
Есть время рассвета ow_fact_2.sunrise и время заката ow_fact_2.sunset
Если XiOpenable01.level=0, то шторы закрываются.
Если XiOpenable01.level=100, то шторы открываются.
Подскажите код для открытия и закрытия штор на рассвете и закате для сценария.
- Nail
- Сообщения: 374
- Зарегистрирован: Пн мар 05, 2018 7:09 am
- Откуда: Самара
- Благодарил (а): 174 раза
- Поблагодарили: 28 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
ПРИМЕР (сценарий в 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 минут после рассвета
}
- За это сообщение автора Nail поблагодарил:
- ImageMaker (Вс май 23, 2021 4:11 pm)
- Рейтинг: 1.16%
Mini AMD A6 1450 Quad-core.Ubuntu Server 18.04 (64-bit). MegaD. Zigbee2mqtt+SLS ZigBee Gateway. Broadlink.
- ImageMaker
- Сообщения: 76
- Зарегистрирован: Ср фев 13, 2019 9:28 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
Я правильно понимаю, что в моём случае Relay09.turnOn и Relay09.turnOff нужно заменить на XiOpenable01.level=0 и XiOpenable01.level=100 ?
Или не так?
Или не так?
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
Если XiOpenable01.level=0 и XiOpenable01.level=100 -- это у вас команды на открытие и закрытие, то понимаете правильно.
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
можно немного съэкономить - не проверять закат/рассвет каждую минуту, а при обновлении в системе заката/восхода сразу и запускать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);
- За это сообщение автора xor поблагодарил:
- ImageMaker (Ср май 26, 2021 8:14 am)
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
- Nail
- Сообщения: 374
- Зарегистрирован: Пн мар 05, 2018 7:09 am
- Откуда: Самара
- Благодарил (а): 174 раза
- Поблагодарили: 28 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
У меня такой стоит на данный момент.
Код: Выделить всё
if (timeIs(date("H:i",date_sun_info(time(),53.181683, 50.282005)['sunset']-60*60))) {
//определение заката по координатам опережение на 60 мин
callMethod('Relay09.turnOn');
//say("Закрываю шторы через час закат",2);
}
- За это сообщение автора Nail поблагодарил:
- ImageMaker (Ср май 26, 2021 8:15 am)
- Рейтинг: 1.16%
Mini AMD A6 1450 Quad-core.Ubuntu Server 18.04 (64-bit). MegaD. Zigbee2mqtt+SLS ZigBee Gateway. Broadlink.
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
это же в ежеминутном цикле? в чём тогда выгода?Nail писал(а): ↑Пн май 24, 2021 11:10 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 однократно в сутки, при появлении времени заката/рассвета я и предлагал сразу поставить две задачи на подъем/опускание штор. Один раз в день, когда нам становится известно время заката/рассвета, нам по приведенной логике известны и время поднятия/опускания штор. по-моему, это естественнее, чем каждую минуту проверять в течение дня наступление восхода или заката
win10 connect https://connect.smartliving.ru/profile/303
- ImageMaker
- Сообщения: 76
- Зарегистрирован: Ср фев 13, 2019 9:28 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
У меня такая конструкция в сценариях:
Но не работает
Почему?
Код: Выделить всё
if (timeIs(getGlobal('ThisComputer.SunSetTime'))) { // проверка что сейчас закат
SetTimeOut("lightOnTimer","callMethod('XiOpenable01.close');", 60);
// закрываем штору, устанавливаем таймер через одну минуту после заката
}
if (timeIs(getGlobal('ThisComputer.SunRiseTime'))) { // проверка что сейчас расcвет
SetTimeOut("lightOnTimer","callMethod('XiOpenable01.open');",1500);
// открываем штору , устанавливаем таймер через 90 минут после рассвета
}
Почему?
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
это не в сценариях должно быть, а в методе ClockChime.onNewMinute. этот метод вызывается каждую минуту и там текущее время сравнивается с закатом/рассветом из свойств ваших ThisComputer.SunSetTime и ThisComputer.SunRiseTime + время в этих свойствах должно быть в формате "чч:мм". если этот код лежит в сценариях, то его надо вызывать каждую минуту тогда, чтоб не прошляпить эти два момента за день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 минут после рассвета }
Почему?
- За это сообщение автора xor поблагодарил:
- ImageMaker (Ср май 26, 2021 4:19 pm)
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
- ImageMaker
- Сообщения: 76
- Зарегистрирован: Ср фев 13, 2019 9:28 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Подскажите код для открытия и закрытия штор на рассвете и закате.
В этом методе уже есть какой-то код
Просто добавить мой код после существующего кода?