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

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 12:07 am
Divan
Ну я так и понял, у меня так и будет работать, раз в неделю Week будет менять значение с 1 на 0 или наоборот. Я пока настрочил такой код, но если можно написать короче и грамотнее, то покажите как нужно это написать, буду благодарен.

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

if (getGlobal("Divan.Week") == 0) {	//Если Week=0, то запускается сценарий "График работы 2-2-3: 2 выходных и 5 рабочих дней"
  if (getGlobal("Day.Понедельник") == 1) {			//По графику в понедельник у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Вторник") == 1) {		//По графику во вторник у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Среда") == 1) {			//По графику в среду у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Четверг") == 1) {		//По графику в четверг у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Пятница") == 1) {		//По графику в пятницу у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Суббота") == 1) {		//По графику в субботу у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Воскресенье") == 1) {	//По графику в воскресенье у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  }
  runScript('Оповещение, рабочий или выходной день', array());
} else if (getGlobal("Divan.Week") == 1) {	//Если Week=1, то запускается сценарий "График работы 2-2-3: 5 выходных и 2 рабочих дня"
  if (getGlobal("Day.Понедельник") == 1) {			//По графику в понедельник у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Вторник") == 1) {		//По графику во вторник у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Среда") == 1) {			//По графику в среду у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Четверг") == 1) {		//По графику в четверг у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Пятница") == 1) {		//По графику в пятницу у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Суббота") == 1) {		//По графику в субботу у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Воскресенье") == 1) {	//По графику в воскресенье у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0  			
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  }
  runScript('Оповещение, рабочий или выходной день', array());
}
Создал у объекта Divan свойства WeekendDay\WorkingDay\Week
SPOILERSPOILER_SHOW
Безымянный.jpg
Безымянный.jpg (30.04 КБ) 5878 просмотров

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 12:16 am
xor
Divan писал(а): Пт окт 04, 2019 12:07 am Ну я так и понял, у меня так и будет работать, раз в неделю Week будет менять значение с 1 на 0 или наоборот. Я пока настрочил такой код, но если можно написать короче и грамотнее, то покажите как нужно это написать, буду благодарен.

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

if (getGlobal("Divan.Week") == 0) {	//Если Week=0, то запускается сценарий "График работы 2-2-3: 2 выходных и 5 рабочих дней"
  if (getGlobal("Day.Понедельник") == 1) {			//По графику в понедельник у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Вторник") == 1) {		//По графику во вторник у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Среда") == 1) {			//По графику в среду у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Четверг") == 1) {		//По графику в четверг у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Пятница") == 1) {		//По графику в пятницу у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Суббота") == 1) {		//По графику в субботу у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Воскресенье") == 1) {	//По графику в воскресенье у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  }
  runScript('Оповещение, рабочий или выходной день', array());
} else if (getGlobal("Divan.Week") == 1) {	//Если Week=1, то запускается сценарий "График работы 2-2-3: 5 выходных и 2 рабочих дня"
  if (getGlobal("Day.Понедельник") == 1) {			//По графику в понедельник у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Вторник") == 1) {		//По графику во вторник у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Среда") == 1) {			//По графику в среду у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Четверг") == 1) {		//По графику в четверг у меня рабочий день
    setGlobal('Divan.WorkingDay', '1');				//В рабочий день ставим 1
    setGlobal('Divan.WeekendDay', '0');				//В выходной день ставим 0
  } else if (getGlobal("Day.Пятница") == 1) {		//По графику в пятницу у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Суббота") == 1) {		//По графику в субботу у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  } else if (getGlobal("Day.Воскресенье") == 1) {	//По графику в воскресенье у меня выходной день
    setGlobal('Divan.WorkingDay', '0');				//В рабочий день ставим 0  			
    setGlobal('Divan.WeekendDay', '1');				//В выходной день ставим 1
  }
  runScript('Оповещение, рабочий или выходной день', array());
}
Создал у объекта Divan свойства WeekendDay\WorkingDay\Week
SPOILERSPOILER_SHOW
Безымянный.jpg
при чём тут модуль Крон?

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 12:20 am
Divan
Я хотел чтобы это работало в кроне, думал, что там есть такая возможность разбивать по неделям, а пока ждал ответа, я придумал такой вариант, но мне кажется, что он слишком запутанный, а через крон было бы проще.

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 12:34 am
Logrus
xor писал(а): Пт окт 04, 2019 12:16 am при чём тут модуль Крон?
ну эту ветку же еще не заспамили портянками, при решении не относящихся к ней задач, которые решаются в одну строчку кода

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 1:11 am
Divan
а можете показать как написать код в одну строчку для графика 2/2/3? Разумеется это лучше обсудить в соответствующей ветке Функция рабочий/выходной день, я не программист и пишу код как могу.

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 12:28 pm
Divan
Можно в крон добавить функцию разделение по неделям? Например запускать 2 или 3 неделю, а потом не запускать или запускать каждую вторую или третью неделю?

Re: [Модуль] Cron (cron)

Добавлено: Пт окт 04, 2019 12:43 pm
SmoKE_xDDD
Divan писал(а): Пт окт 04, 2019 12:28 pm Можно в крон добавить функцию разделение по неделям? Например запускать 2 или 3 неделю, а потом не запускать или запускать каждую вторую или третью неделю?
Покапайтесь тут - https://crontab-generator.org/

Re: [Модуль] Cron (cron)

Добавлено: Вт ноя 19, 2019 4:01 pm
Mixman
А как из метода кодом php можно включать и выключать задачу?
Скажем, в методе NobodyHomeMode.activate я хотел бы добавить код, который отключал бы определённое задание.
Например, по крону у меня каждые 5 минут делается снапшот с камер и распознаётся на наличие людей. Вот когда никого нет дома, то нужно деативировать эту задачу.

Re: [Модуль] Cron (cron)

Добавлено: Вт ноя 19, 2019 4:16 pm
Eraser
Mixman писал(а): Вт ноя 19, 2019 4:01 pm А как из метода кодом php можно включать и выключать задачу?
Скажем, в методе NobodyHomeMode.activate я хотел бы добавить код, который отключал бы определённое задание.
Например, по крону у меня каждые 5 минут делается снапшот с камер и распознаётся на наличие людей. Вот когда никого нет дома, то нужно деативировать эту задачу.
sg("TaskName.Enable", 0); - выключить
sg("TaskName.Enable", 1); - включить

Re: [Модуль] Cron (cron)

Добавлено: Вт ноя 19, 2019 4:22 pm
Mixman
Eraser писал(а): Вт ноя 19, 2019 4:16 pm
Mixman писал(а): Вт ноя 19, 2019 4:01 pm А как из метода кодом php можно включать и выключать задачу?
Скажем, в методе NobodyHomeMode.activate я хотел бы добавить код, который отключал бы определённое задание.
Например, по крону у меня каждые 5 минут делается снапшот с камер и распознаётся на наличие людей. Вот когда никого нет дома, то нужно деативировать эту задачу.
sg("TaskName.Enable", 0); - выключить
sg("TaskName.Enable", 1); - включить
Вместо TaskName можно использовать ID задачи? У меня некоторые имена задач на русском языке.