viktan92 писал(а):В самой системе я заметил такую особу как Алиса, и она выводит системные сообщения типа "Темное время суток" или "Ночной режим включен"
что я хочу что бы у меня вышло в итоге:
Что бы при наступлении темного времени суток, в зависимости от перехода на летнее и зимнее время. включался так сказать дежурный свет (разные подсветки и таршеры).
а с наступление ночного режима включался свет в определенных местах.
Ну и я так понял что Алиса понимает длительность светового дня? Если так то нужно так что бы свет работал с таким же пониманием.
За наступление темного времени суток отвечает следующий код в методе onNewMinute
Код: Выделить всё
if (timeBetween(getGlobal('ThisComputer.SunRiseTime'),getGlobal('ThisComputer.SunSetTime'))) {
if (getGlobal('isDark')) {
setGlobal("isDark",0);
callMethod('DarknessMode.deactivate');
}
} else {
if (!getGlobal('isDark')) {
setGlobal("isDark",1);
callMethod('DarknessMode.activate');
Соответственно что бы он работал корректно для вашего местоположения нужны актуальные данные SunSetTime и SunRiseTime, т.е. время заката и рассвета. Эти данные можно взять из модуля погоды или при помощи такого скрипта, вычисляющего рассвет, закат, сумерки и т.д. на основе географических координат.
Код: Выделить всё
$sun_info = date_sun_info(time(), 55.XXXXXX, 52.XXXXXXX);
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
//echo 'Восход: '.date("H:i:s", $sunrise).'<br>';
setGlobal('ThisComputer.SunRiseTime',date("H:i", $sunrise));
}
if ($key == 'sunset') {
$sunset = $val;
$day_length = $sunset - $sunrise;
//echo 'Заход: '.date("H:i", $sunset).'<br>';
//echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>';
setGlobal('ThisComputer.SunSetTime',date("H:i", $sunset));
setGlobal('ThisComputer.LongTagTime',gmdate("H:i", $day_length));
}
if ($key == 'transit') {
//echo 'В зените: '.date("H:i:s", $val).'<br>';
setGlobal('ThisComputer.TransitTime',date("H:i", $val));
}
if ($key == 'civil_twilight_begin') {
//echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
setGlobal('ThisComputer.Chicivil_beginTime',date("H:i", $val));
}
if ($key == 'civil_twilight_end') {
//echo 'Конец вечерних сумерек: '.date("H:i:s", $val).'<br>';
setGlobal('ThisComputer.civil_endTime',date("H:i", $val));
}
}
За «ночной режим» отвечает следующий код в onNewMinute
Код: Выделить всё
if (timeIs('23:00')) {
callMethod('NightMode.activate');
т. е. вы сами определяете время наступления ночного режима.
Для того что бы управлять например освещением вам нужно прописать ваши команды в нужные методы.
Действия при наступлении темного времени суток в метод DarknessMode.activate
Действия при наступлении ночного режима в метод NightMode.activate