Выполнение команд по расписанию

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

Модератор: immortal

Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Выполнение команд по расписанию

Сообщение Kod.Begemot » Ср янв 29, 2014 2:19 pm

Добрый день!
Подскажите, как лучше реализовать выполнение определенных скриптов (команд?) по расписанию?
Мне нужно чтобы, к примеру, каждый будний день выполнялся скрипт включения теплого пола в ванной утром (5 часов) и скрипт выключения его через 3 часа. Скрипты я написал, опробовал - работают.
А вот куда их прописать - и куда прописать время и день недели запуска - я так и не понял.
Пробовал через "Задания" - работает, но только один раз - и "через N часов/минут... и т.п."
Пробовал через "Календарь - Добавить - Задача..." но там не нашел как указать время.
P.S. Прошу прощения, если вопрос "ламерский", но я только учусь :)
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Выполнение команд по расписанию

Сообщение Lewcom » Ср янв 29, 2014 2:37 pm

Думаю в таймер-> onNewMinute можно организовать.

http://smartliving.ru/forum/viewtopic.p ... =386#p2381
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

Re: Выполнение команд по расписанию

Сообщение Anton_kulibin » Ср янв 29, 2014 2:53 pm

В OnNewMinute Прописать проще некуда, у меня так включается подогрев в гараже.

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

if (timeIs("05:00")) {
 //Запуск любого метода или сценария
 }
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Выполнение команд по расписанию

Сообщение Kod.Begemot » Ср янв 29, 2014 3:58 pm

Спасибо, уже понятнее :)
Попробовал -
if (timeIs("05:00")) {
...
}
работает отлично, теперь непонятно - где взять день недели...
в оригинале есть конструкция
"if (isWeekDay()) {
}
но не совсем понятно как использовать эту функцию..
конструкция
if (isWeekDay() <= 7) {
}
не работает :(
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

Re: Выполнение команд по расписанию

Сообщение Anton_kulibin » Ср янв 29, 2014 4:05 pm

"if (isWeekDay()) {
}
Означает, что конструкция выполняется по рабочим дням недели (понедельник-пятница)
для выходных я делал
if (!(isWeekDay())) {
}
или просто
if (isWeekDay()) {
// код для рабочих дней
} else
{
//код для выходных суббота, воскресенье
}
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Выполнение команд по расписанию

Сообщение sergejey » Ср янв 29, 2014 5:18 pm

еще как вариант использовать стандартную PHP-функцию date('w') которая возвращает число от 0 до 6 в зависимости от дня недели (воскресенье, понедельник, вторник и т.д. до субботы)
например:

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

if (date('w')==5) {
 say('Ура, пятница!');
}

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Выполнение команд по расписанию

Сообщение Kod.Begemot » Ср янв 29, 2014 8:11 pm

Спасибо большое!
Сейчас буду пробовать :)
Leks
Сообщения: 4
Зарегистрирован: Пт янв 31, 2014 1:14 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Выполнение команд по расписанию

Сообщение Leks » Чт фев 06, 2014 12:53 pm

Всем, привет!

Столкнулся с такой же задачей,
В результате появился модуль для выполнения задач по расписанию
Пока находится в длительном тестировании, но уже вполне работоспособен
Может кому еще пригодится - https://github.com/Leks-ha/Majordomo_sc ... job_module
Документация там же в pdf файле
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Выполнение команд по расписанию

Сообщение LutsenkoDenis » Пт фев 07, 2014 12:33 pm

Хм, прикольно.
Чтобы я поменял....тиб таблиц в InnoDB с добавлением форенкея, чтобы не получилось так что job action в таблицу записался а job id нет.
И логирование или отправка на почту о том что что-то не выполнилось.

Ну и добавить в маркет приложений. Чтоб устанавливалось одним нажатием кнопки :)
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Leks
Сообщения: 4
Зарегистрирован: Пт янв 31, 2014 1:14 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Выполнение команд по расписанию

Сообщение Leks » Пт фев 07, 2014 3:45 pm

Согласен, без форинкея как-то не по феншую
Добавил отправку на стандартную почту PROJECT_BUGTRACK, мне казалось админская почта только тут настраивается, поправьте, если ошибаюсь

А вот с установкой в один клик вопрос, я не совсем понимаю как маркет дополнений выполняет SQL, необходимый для установки модуля,
в самом модуле(взять любой стандартный в поставке) есть метод dbInstall, но там я не видел, чтоб прописывались форинкеи

если кто знает, расскажите
Ответить