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

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

Добавлено: Пн сен 25, 2017 6:00 pm
Logrus
Logrus писал(а):в onNewMinute

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

// Режимы
$objects=getObjectsByClass("OperationalModes");
// переберем все объекты в класе
foreach($objects as $obj) {
  callMethod($obj['TITLE'].".check");
} 
DarknessMode настроен через восход - закат. все отлично

NightMode в методе check

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

// Ночь
if (timeIs("23:30") && !gg("NightMode.active")){
  say("Пора спать",1); 
  callMethod('NightMode.activate');
}

// День
if (timeIs("8:00") && gg("NightMode.active")){
  say("Утро, пора просыпаться",0); 
  callMethod('NightMode.deactivate');
} 
с кнопки включает и отключает, автоматом включает, но не отключает (мозг уже сломал), соответственно он время каждый час днем не произносит
решилось, таким кодом

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

if (timeis('23:00')) {
 callMethod('NightMode.activate');
} elseif (timeis('07:30')) {
 callMethod('NightMode.deactivate');
}

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

Добавлено: Пт янв 05, 2018 2:18 am
blackangel
Всем привет! Что то я заметил что у меня darknessMode перестал работать. При вызове метода активации, не активирует. но isDark меняет. куда копать подскажите?)))

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

Добавлено: Пт янв 05, 2018 2:44 am
xor
Logrus писал(а):Logrus писал(а):
в onNewMinute
У вас режим переключается два раза в сутки в определенное время, а эти условия проверяются в ежеминутном цикле 24*60 раз в день.
Я в таких случаях пользуюсь планировщиком Cron от Eraser'а, оччень рекомендую.

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

Добавлено: Пт янв 05, 2018 11:45 am
Logrus
blackangel проверь аналогично https://majordomo.smartliving.ru/forum/ ... 420#p67950

xor ага, модуль хорош, но наверное концепция несколько другая, вызов всех чек у режимов единообразно и ночной более гибко
ночь.PNG
ночь.PNG (8.12 КБ) 5906 просмотров
через крон так уже не получится, либо минутный таймер там заводить (пробовал он несколько некорректно работает, это не плохо, а несколько не так как ожидаешь, но можно и плюсы в этом найти)
п.с. не скромно, а про //Message Global правда там с дропбоксом завязки, а на малинке, хз, как, можно подробнее, можно в блоге?

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

Добавлено: Пт янв 05, 2018 6:16 pm
xor
Logrus писал(а): через крон так уже не получится
Можно-можно.
У меня есть объекты MyVars, такие глобальные переменные, чтобы не совать в зискомпьютер. Там я держу в том числе переменные для Крона. Можно их в интерфейс и вытягивать как у вас на картинке.

Но это уж кому как удобнее.

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

Добавлено: Пт янв 05, 2018 6:42 pm
Logrus
единообразие вызовов не получится, там много менять придется
но я не понял как, у меня в классе Settings (начало/конец ночного не перенес), а крон то запускать по * * * * *
я у вас посмотрел, галочку в память на CheckNightTemp - Проверка ночной температуры себе поставил )))

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

Добавлено: Пт янв 05, 2018 8:15 pm
xor
Поздравляю себя соврамши!
Да, у меня жестко в Кроне время прописано(.
Описал свои хотелки нереализованные по поводу одно-двухкратных событий в сутках.
Наверное, буду делать без Крона как-то так:

Получаем время события в сутках (напр. 14:30 ) любым способом (расчетом, напр., для восхода/заката, из интерфейса для тихого режима),
$datetime=timeConvert("14:30");
и создаем джоб
AddScheduledJob("title","commands",$datetime, $expire=60);

Сейчас я просто борюсь у себя за очистку циклов и увеличение быстродействия

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

Добавлено: Пт янв 05, 2018 8:52 pm
Logrus
я думал об этом, но остановился на таком исходя из удобства/понятности
ну дернет он все чеки в режиме 1440 раз в сутки, ну

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

if (timeIs(gg('ThisComputer.NightModeStart'))) {
 callMethod('NightMode.activate');
} elseif (timeIs(gg('ThisComputer.NightModeEnd'))) {
 callMethod('NightMode.deactivate');
} 

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

 if (timeBetween(gg('ThisComputer.SunRiseTime'),gg('ThisComputer.SunSetTime')) && gg('ThisComputer.isDark')=="1") {
  sg("ThisComputer.isDark",0);
  callMethodSafe('DarknessMode.deactivate');
 } elseif (!timeBetween(gg('ThisComputer.SunRiseTime'),gg('ThisComputer.SunSetTime')) && gg('ThisComputer.isDark')!="1") {
  sg("ThisComputer.isDark",1);
  callMethodSafe('DarknessMode.activate');
 } 
в сравнении с простыми устройствами и кучей расчетов времени и прочего, имхо, мелочь, а разбираться проще
выше примеры, с дополнительными проверками и дерганьем/записью в свойства, опять же доп условия нагрузка, но этим все постепенно обрастает
хотя уже не однообразно вижу, поправлю (хотя вот от знающих товарищей пояснения бы получить, так хорошо, так плохо, но делаем по такому компромиссу)

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

Добавлено: Пт янв 05, 2018 9:29 pm
xor
А соглашусь.
Иногда идеально соптимизируешь, а через месяц и несколько обновлений уже хрен разберешься.
Или концепция внезапно поменяется.

Ну, за ясность!

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

Добавлено: Ср янв 10, 2018 1:21 pm
Sergibus0
blackangel писал(а): Привожу пример, как это можно проделать:
СпойлерПоказать
поправте немного файл app_openweather.class.php, который находится в папке ../modules/app_openweather. В данном файле найдите строки
$sunRise = $sunInfo["sunrise"];
$sunSet = $sunInfo["sunset"];
после этих строк допишите
$sunRiseData = date(('H:i'),$sunInfo["sunrise"]);
$sunSetData = date(('H:i'),$sunInfo["sunset"]);
далее находим строку
sg('ow_fact.sunrise', $sunRise);
и после неё вставляем следующие строки
sg('ThisComputer.SunRiseTime', $sunRiseData);
sg('ThisComputer.SunSetTime', $sunSetData);
Сделал, всё работает, но как только прилетит обновление эту процедуру нужно будет делать заново...
Нельзя этот кусочек кода включить на постоянной основе?