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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Вс мар 03, 2019 9:21 pm

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

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

$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); //добавим задание сказать Солнце в зените!
}
За это сообщение автора xor поблагодарил:
Yashalta (Вс мар 03, 2019 10:40 pm)
Рейтинг: 1.16%
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Вс мар 03, 2019 10:02 pm

уже говорил, но повторю еще раз, смысл с цикла майн в перекладывании на цикл шедулер
в первом раз в минуту, во втором раз в 5 сек. проверяется вроде б (а вообще таймеры с секундным интервалом)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Вс мар 03, 2019 11:13 pm

Logrus писал(а):
Вс мар 03, 2019 10:02 pm
уже говорил, но повторю еще раз, смысл с цикла майн в перекладывании на цикл шедулер
в первом раз в минуту, во втором раз в 5 сек. проверяется вроде б (а вообще таймеры с секундным интервалом)
Циклы крутятся, задачи мутятся ))
Цикл майн по-любому запускает раз в минуту метод onNewMinute c выполнением кода с проверками на совпадение времени, например, восхода, заката, зенита, всего, что там написано 24*60 раз в сутки
Цикл шедулера по-любому запускает раз в сек проверку наличия джоба для запуска. если такой джоб есть, он выполняется один раз в указанное время и удаляется.
Фиг знает, что лучше.
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

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

Сообщение timurufa86 » Пт мар 04, 2022 2:06 pm

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