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

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
ImageMaker
Сообщения: 76
Зарегистрирован: Ср фев 13, 2019 9:28 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

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

Сообщение ImageMaker » Сб май 22, 2021 10:38 pm

Совсем не дружу с php :?

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

Подскажите код для открытия и закрытия штор на рассвете и закате для сценария.
Аватара пользователя
Nail
Сообщения: 373
Зарегистрирован: Пн мар 05, 2018 7:09 am
Откуда: Самара
Благодарил (а): 174 раза
Поблагодарили: 28 раз

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 минут после рассвета
}
За это сообщение автора 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: Подскажите код для открытия и закрытия штор на рассвете и закате.

Сообщение ImageMaker » Вс май 23, 2021 4:15 pm

Я правильно понимаю, что в моём случае Relay09.turnOn и Relay09.turnOff нужно заменить на XiOpenable01.level=0 и XiOpenable01.level=100 ?
Или не так?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Вс май 23, 2021 8:20 pm

Если XiOpenable01.level=0 и XiOpenable01.level=100 -- это у вас команды на открытие и закрытие, то понимаете правильно.
Аватара пользователя
xor
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

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

Сообщение xor » Пн май 24, 2021 12:12 am

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%
Аватара пользователя
Nail
Сообщения: 373
Зарегистрирован: Пн мар 05, 2018 7:09 am
Откуда: Самара
Благодарил (а): 174 раза
Поблагодарили: 28 раз

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

Сообщение 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);
}
Он лучше, вроде тоже не дергает?
За это сообщение автора 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
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

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

Сообщение xor » Пн май 24, 2021 2:32 pm

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 однократно в сутки, при появлении времени заката/рассвета я и предлагал сразу поставить две задачи на подъем/опускание штор. Один раз в день, когда нам становится известно время заката/рассвета, нам по приведенной логике известны и время поднятия/опускания штор. по-моему, это естественнее, чем каждую минуту проверять в течение дня наступление восхода или заката
Аватара пользователя
ImageMaker
Сообщения: 76
Зарегистрирован: Ср фев 13, 2019 9:28 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

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

Сообщение 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
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

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

Сообщение xor » Ср май 26, 2021 1:06 am

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 + время в этих свойствах должно быть в формате "чч:мм". если этот код лежит в сценариях, то его надо вызывать каждую минуту тогда, чтоб не прошляпить эти два момента за день
За это сообщение автора xor поблагодарил:
ImageMaker (Ср май 26, 2021 4:19 pm)
Рейтинг: 1.16%
Аватара пользователя
ImageMaker
Сообщения: 76
Зарегистрирован: Ср фев 13, 2019 9:28 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

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

Сообщение ImageMaker » Ср май 26, 2021 4:51 pm

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