[Настройка] onNewMinute

Описание настройки чего либо

Модераторы: immortal, newz20

ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 135 раз
Контактная информация:

Re: onNewMinute

Сообщение ErmolenkoM » Пт янв 24, 2014 9:21 am

electric писал(а):Ребят, подскажите пожалуйста.
Первый раз поставил систему, разбираюсь (железо обычный ПК с Дебиан).

Так и должно быть, или что то перепутано?
Не очень разбираюсь в php, но в коде "onNewMinute" строчка say(timeNow()) должна сообщать нам время раз в час, так?
Может этот текст должен быть в методе "onNewHour"??

Где прописывается что метод "onNewMinute" вызывается раз в минуту?
Или само название метода "onNewMinute" говорит системе что его надо выполнять раз в минуту? :?
Поздравляю!
Все нормально, так и должно быть.
Текст действительно мог бы быть в _каждый_час_ , но это пример. Просто пример :-) Например можно сообщать время каждые 15 минут (правка совсем небольшая) :-)
Оба метода CMS вызывает сама. Методы _предопределены_. Более подробно смотри scripts/cycle_... .php
Можешь заглянуть в мои такие-же методы. Ссылка в подписи.
aka msh555
Cubian на Cubietruck, Connect
Kumehtar
Сообщения: 11
Зарегистрирован: Вт окт 01, 2019 8:30 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: onNewMinute

Сообщение Kumehtar » Чт ноя 28, 2019 1:17 pm

sergejey писал(а):
Пн дек 03, 2012 12:48 pm
можно сделать скрипт такого плана. например, назвать его MyScript1 и в нём такой код

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

clearTimeout("myscript1_timer"); // очищаем таймер (чтобы случайно две копии не запустить)
... тут какой-то полезный код ...
setTimeOut("myscript1_timer","runScript('MyScript1');",30); // ставим таймер на запуск самого себя через 30 секунд
ну а в onNewMinute или даже в onNewHour можно вызвать runScript('MyScript1'); для первого запуска. либо даже вручную запустить его первый раз (правда после перезагрузки системы он сам не запустится я думаю, если вручную).
Подскажите, а где можно сделать этот скрипт? Куда его писать, чтобы можно было запускать из onNewMinute или по нажатию кнопки, например
Jilber
Сообщения: 399
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 61 раз
Поблагодарили: 52 раза

Re: [Настройка] onNewMinute

Сообщение Jilber » Чт ноя 28, 2019 1:21 pm

Панель управления - Сценарии - Добавить сценарий
freesh
Сообщения: 185
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 27 раз

Re: onNewMinute

Сообщение freesh » Чт ноя 28, 2019 1:22 pm

Kumehtar писал(а):
Чт ноя 28, 2019 1:17 pm
sergejey писал(а):
Пн дек 03, 2012 12:48 pm
можно сделать скрипт такого плана. например, назвать его MyScript1 и в нём такой код

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

clearTimeout("myscript1_timer"); // очищаем таймер (чтобы случайно две копии не запустить)
... тут какой-то полезный код ...
setTimeOut("myscript1_timer","runScript('MyScript1');",30); // ставим таймер на запуск самого себя через 30 секунд
ну а в onNewMinute или даже в onNewHour можно вызвать runScript('MyScript1'); для первого запуска. либо даже вручную запустить его первый раз (правда после перезагрузки системы он сам не запустится я думаю, если вручную).
Подскажите, а где можно сделать этот скрипт? Куда его писать, чтобы можно было запускать из onNewMinute или по нажатию кнопки, например
Скрипт пишешь в - Сценариях (панель управления, слева там где объекты, там ниже - сценарии, и там создаешь сценарий)- а в onNewMinute или на метод кнопки пишешь runscript('ИмяССценария").
Raspberry pi3, xiaomi, sonoff rf.
u885
Сообщения: 10
Зарегистрирован: Сб окт 06, 2018 1:42 am
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: [Настройка] onNewMinute

Сообщение u885 » Вт фев 11, 2020 12:00 am

Решил подробнее начать изучать систему мажордомо, и PHP вместе с ней как само собой разумеющееся. Я сам новичок в этом и многого не знаю, устал вчитываться в незакомментированные коды профессионалов этого дела, честное слово глаза сломать можно видя впервые все эти заклинания. Возможно я излишне закомментировал, но если такой код увидят новички в разделах объектов,методов или же сценариев (хотя бы установленных по дефолту как примеры при установке базовой системы ) то вопросов в чатах, форумах и группах станет намного меньше. А новичкам таким как я станет понятнее принцип взаимодействия всей системы как в целом так и в частности. Собственно мое видение метода onNewMinute.

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

#######################################################################
#                   Проверка времени выполнения кода                  #
#      для проверки раскоментируйте строки в начале и в конце         #
#######################################################################
//debmes('Запускаю onNewMinute');
//Timer::start();

#######################################################################
#      Заполняем свойство ThisComputer.timeNow текущим временем       #
#######################################################################
sg('timeNow',date('H:i'));

#######################################################################
#          В переменную $h ставим текущий час, в $m - минуту          #
#  разнесем отдельно часы от минут и заполним ThisComputer.timeH и M  #
#######################################################################
//Получаем переменную час
$h=(int)date('G',time());
//Получаем переменную минута
$m=date('i',time());
//Заполним свойство часы отдельно
sg("ThisComputer.timeH", $h);
//Заполним свойство минуты отдельно
sg("ThisComputer.timeM", $m);
//Выделим и заполним десятки и единицы часов и минут
sg("ThisComputer.timeH1",$H[0]);
sg("ThisComputer.timeH2",$H[1]);
sg("ThisComputer.timeM1",$M[0]);
sg("ThisComputer.timeM2",$M[1]);

#######################################################################
#          Заготовка под какое-либо действие с выходным днем          #
#######################################################################
# if (isWeekDay()) {// Если рабочий день
# }
#
# Или например если в рабочие дни, время 17:00, и включен эко режим
# if (isWeekDay() && timeIs("17:00") && (gg("EconomMode.active")=="1")) {
# say("Скоро пользователи с работы прийдут, отключаю эко режим");
# callMethod('EconomMode.deactivate');
#}
#######################################################################

#######################################################################
# Если время ровно 00 и после 7 утра, и дома кто-то есть, глобальная  #
# настройка clockChimeEnabled разрешена, тогда проговариваем время    #
#######################################################################
// Если время =00минут
if ($m=="00") {
 // Если больше или равно 7 часам и говорить время можно
 if (($h>=7) && gg('clockChimeEnabled')) {
  // Если режим никого нет дома выключен
  if (gg('NobodyHomeMode.active') == '0'){
        //Сказать время с параметром важности сообщения =1(днем говорит, ночью - только в лог)
        say(timeNow(),1);
//  	rs('NoScript');//Заготовка запуска скрипта NoScript
//  	rs('NoScript');//Заготовка запуска скрипта NoScript
//  	rs('NoScript');//Заготовка запуска скрипта NoScript
//  	rs('NoScript');//Заготовка запуска скрипта NoScript
  }
 }
}



#######################################################################
#           Заполняем свойство ThisComputer.HomeStatus                #
# текущим временем и текстом  Дома никого или Дома кто-то есть        #
# также показания системных статусов безопасность, система, интернет  #
#       (эта надпись показывается на главной страничке в меню)        #
#######################################################################
$homeStatus=date('H:i');// Присваиваем переменной $homeStatus текущее время
if (gg('NobodyHomeMode.active')) {//Если активен режим NobodyHomeMode
 $homeStatus.=' Дома никого';//Добавляем к переменной Дома никого
 //  	rs('NoScript');//Заготовка запуска скрипта NoScript
} else {
 $homeStatus.=' Дома кто-то есть';//Иначе добавляем Дома кто-то есть
//  	rs('NoScript');//Заготовка запуска скрипта NoScript
}
$homeStatus.=' '.gg('Security.stateDetails');//свойство статуса безопасности
$homeStatus.=' '.gg('System.stateDetails');//свойство статуса системы
$homeStatus.=' '.gg('Communication.stateDetails');//свойство статуса сети
sg('HomeStatus',$homeStatus);//Сцепляем свойство с переменной и заполняем в ThisComputer.HomeStatus

#######################################################################
#     Включаем и выключаем режим темного времени суток DarknessMode   #
#      в зависимости от времени суток и данных восхода/заката         #
#######################################################################
//Проверим Если время между рассветом и закатом и свойство темно равно 1
if (timeBetween(gg('SunRiseTime'),gg('SunSetTime')) && gg('isDark')=="1") {
  //Изменим свойство на светло
  sg("isDark",0);
  //Запустим метод деактивации режима Темное время суток
  cm('DarknessMode.deactivate');
  //  	rs('NoScript');//Заготовка запуска скрипта NoScript
//Иначе Проверим время между рассветом и закатом и свойство темно не равно 1
} elseif (!timeBetween(gg('SunRiseTime'),gg('SunSetTime')) && gg('isDark')!="1") {
  //Изменим свойство на темно
  sg("isDark",1);
  //Запустим метод активации режима Темное время суток
  cm('DarknessMode.activate');
  //  	rs('NoScript');//Заготовка запуска скрипта NoScript
}
     //Если время совпало со свойством рассвет
     if (timeIs(gg('SunRiseTime'))) {
     //Произнести фразу Всходит солнце
     say('Всходит солнце');
     //  	rs('NoScript');//Заготовка запуска скрипта NoScript
     }
     //Если время совпало со свойством закат
     if (timeIs(gg('SunSetTime'))) {
     //Произнести фразу Солнце заходит с параметром важности сообщения =2(днем и ночью произносит)
     say('Солнце заходит',2);
     //  	rs('NoScript');//Заготовка запуска скрипта NoScript
     }
#######################################################################
#               Активация режима экономии EconomMode                  #
#######################################################################
//Если никого нет дома, экономный режим выключен и время 23:30
if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
 //Произнести Похоже никого нет сегодня, можно сэкономить немного.
 say("Похоже никого нет сегодня, можно сэкономить немного.");
 //Запустить метод активации эконом режима
 cm('EconomMode.activate');
 //  	rs('NoScript');//Заготовка запуска скрипта NoScript
}

#######################################################################
#         Активация деактивация ночного режима NightMode              #
#######################################################################
//Если время 22:22
if (timeIs('22:22')) {
 //Запустить метод активации ночного режима
 cm('NightMode.activate');
 //  	rs('NoScript');//Заготовка запуска скрипта NoScript
//Иначе если время 07:00
} elseif (timeIs('07:00')) {
 //Запустить метод деактивации режима
 cm('NightMode.deactivate');
 //  	rs('NoScript');//Заготовка запуска скрипта NoScript
}

#######################################################################
#                     Запуск обслуживания системы                     #
#######################################################################
//Если время 03:33
if (timeIs("03:33")) {
 //Запустить скрипт оптимизации
 rs("systemMaintenance");
//  	rs('NoScript');//Заготовка запуска скрипта NoScript
}

#######################################################################
#                   Проверка времени выполнения кода                  #
#######################################################################
//debmes ("Время выполнения onNewMinute: ".Timer::finish()." сек.\n\r");

Уважаемое комьюнити если вы видите что что либо не верно комментированное поправьте меня, или имеете более лучший вариант то выложите свои наработки.

По мере изучения MDM по моему мнению лучшего конструктора, буду делиться c вами своими коментариями как опенсорс опенсорсу.
За это сообщение автора u885 поблагодарил:
proxihvost (Вт фев 11, 2020 8:48 pm)
Рейтинг: 1.25%
Ответить