Страница 11 из 11

Re: ночной и дневной режим

Добавлено: Вс мар 03, 2019 9:21 pm
xor
Yashalta писал(а): Вс мар 03, 2019 2:40 pm
xor писал(а): Ср фев 07, 2018 2:47 am Убрал из минутного цикла проверку на наступление темноты/рассвет
После полуночи (0:0) запускается скрипт (ещё и в методе StartUp на всякий случай)
Раз в суткиSPOILER_SHOW

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

$lat=gg('ThisComputer.latitude');   // широта
$long=gg('ThisComputer.longitude'); // долгота

$sun_info = date_sun_info(time(), $lat, $long);

foreach ($sun_info as $key => $val) {

if ($key == 'sunrise') {

  $sunrise = $val;
  //echo 'Восход: '.date("H:i", $sunrise).'<br>';
}

if ($key == 'sunset') {

  $sunset = $val;
  $day_length = $sunset - $sunrise;

  //echo 'Заход: '.date("H:i", $sunset).'<br>';
  //echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>';
  AddScheduledJob("job_SunSet","cm('DarknessMode.activate');say('Закат',2);", $sunset); 
}

if ($key == 'transit') {
  //echo 'В зените: '.date("H:i", $val).'<br>';
}

if ($key == 'civil_twilight_begin') {
  //echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
  AddScheduledJob("job_civil_twilight_begin","cm('DarknessMode.deactivate');", $val); // чуть раньше рассвета, мне так больше нравится
}

if ($key == 'civil_twilight_end') {
  //echo 'Конец вечерних сумерек: '.date("H:i", $val).'<br>';
  AddScheduledJob("job_civil_twilight_end","say('Сумерки',2);", $val); 
}

} 
Сейчас проверяю, наверное, надо при старте скрипта принудительно устанавливать текущее состояние DarknessMode
Понравился ваш скрипт, но, не могу сделать что бы проговаривал "Солнце в зените!" думал, что здесь

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

...
}

if ($key == 'transit') {
  //echo 'В зените: '.date("H:i", $val).'<br>';
 say('Середина ночи (script)!',2);
}
...
А нет, это с точностью до наоборот - это середина ночи!
Скрипт же запускается в полночь и все say в нём тоже тогда же отработают.
И смысл его только в определении времён и создании заданий на эти времена. Ваш случай должен выглядеть так:

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

if ($key == 'transit') {
  //echo 'В зените: '.date("H:i", $val).'<br>';
 AddScheduledJob("job_transit","say('Солнце в зените!',2);", $val); //добавим задание сказать Солнце в зените!
}

Re: ночной и дневной режим

Добавлено: Вс мар 03, 2019 10:02 pm
Logrus
уже говорил, но повторю еще раз, смысл с цикла майн в перекладывании на цикл шедулер
в первом раз в минуту, во втором раз в 5 сек. проверяется вроде б (а вообще таймеры с секундным интервалом)

Re: ночной и дневной режим

Добавлено: Вс мар 03, 2019 11:13 pm
xor
Logrus писал(а): Вс мар 03, 2019 10:02 pm уже говорил, но повторю еще раз, смысл с цикла майн в перекладывании на цикл шедулер
в первом раз в минуту, во втором раз в 5 сек. проверяется вроде б (а вообще таймеры с секундным интервалом)
Циклы крутятся, задачи мутятся ))
Цикл майн по-любому запускает раз в минуту метод onNewMinute c выполнением кода с проверками на совпадение времени, например, восхода, заката, зенита, всего, что там написано 24*60 раз в сутки
Цикл шедулера по-любому запускает раз в сек проверку наличия джоба для запуска. если такой джоб есть, он выполняется один раз в указанное время и удаляется.
Фиг знает, что лучше.

Re: ночной и дневной режим

Добавлено: Пт мар 04, 2022 2:06 pm
timurufa86
skysilver писал(а): Вт авг 28, 2018 11:40 pm
dksobol писал(а): Вт авг 28, 2018 11:39 pm Может тогда вопросик еще. Почему повторяет статусы о многие методы типа "Выключить всё" по 2-5 раз.
Тут хз. Надо вникать в твою конфигурацию.
Добрый день. у меня все по 4 раза повторяет и голосом и текстом. разобрались в чем дело?