Страница 1 из 2
Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 8:24 am
workpage
Через раз запускаются сценарии по расписанию. Вручную всё отрабатывает отлично. Сценарии простейшие. Без ветвлений. Включить свет утром/вечером. В чём может быть дело?
В ближайшее время под крон переделаю, но хочется пользоваться родным интерфейсом.
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 6:41 pm
Vovix
workpage писал(а):Через раз запускаются сценарии по расписанию. Вручную всё отрабатывает отлично. Сценарии простейшие. Без ветвлений. Включить свет утром/вечером. В чём может быть дело?
В ближайшее время под крон переделаю, но хочется пользоваться родным интерфейсом.
как показывала практика в прошлом, основной причиной неотработки сценариев могло становиться ограничение времени для исполнения скриптов, установленное в web-сервере (вернее наверно в php)!
один из выходов из ситуации это запуск скриптов не на прямую, а через таймер, например у меня в методе
onNewMinute:
Код: Выделить всё
setTimeOut('AlarmClock_check','runScript("AlarmClock_check");',2);
хотя в вашем случае, надо бы уточнить: по расписанию из чего (откуда)?
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 9:02 pm
workpage
Vovix писал(а):workpage писал(а):Через раз запускаются сценарии по расписанию. Вручную всё отрабатывает отлично. Сценарии простейшие. Без ветвлений. Включить свет утром/вечером. В чём может быть дело?
В ближайшее время под крон переделаю, но хочется пользоваться родным интерфейсом.
как показывала практика в прошлом, основной причиной неотработки сценариев могло становиться ограничение времени для исполнения скриптов, установленное в web-сервере (вернее наверно в php)!
один из выходов из ситуации это запуск скриптов не на прямую, а через таймер, например у меня в методе
onNewMinute:
Код: Выделить всё
setTimeOut('AlarmClock_check','runScript("AlarmClock_check");',2);
хотя в вашем случае, надо бы уточнить: по расписанию из чего (откуда)?
В редактировании сценария можно нажать галку "выполнять переодически". Вот она работает раз от раза.
Все сценарии перетащил в onNewMinute.
Выглядит всё это примерно так:
if (timeIs('00:00'))
{
runScript('Выключаю весь свет в полночь');
}
Понаблюдаю. Отпишу.
p.s. Можете расшифровать вашу строку. Не всё ещё понимаю.
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 9:29 pm
Vovix
workpage писал(а):.....
p.s. Можете расшифровать вашу строку. Не всё ещё понимаю.
Код: Выделить всё
setTimeOut('AlarmClock_check','runScript("AlarmClock_check");',2);
всё просто:
setTimeOut - функция вызова таймера
AlarmClock_check - имя для таймера, для того чтобы их различать и управлять при необходимости, задаем сами
runScript("AlarmClock_check"); - собственно, скрипт который мы хотим запустить в этом таймере, даже не так - это строка которая будет выполнена движком MDM
2 - кол-во секунд, через которые нужно запустить
Идея походу проста... Особенно метод таймера MDM, часто забивали большим количеством исполняемого кода
и при его выполнении счетчик, допустимого времени выполнения, стремительно приближался к максимуму,
а передавая запуск в другой процесс (таймера в данном случае), вроде как сам метод успевает закончить свою работу вовремя.
Кроме того, если в запускаемом скрипте были ошибки, то с ними "разбирается" уже таймер, а не основной скрипт!
Так я понимаю механизм работы такого способа!!!
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 9:54 pm
workpage
Vovix писал(а):workpage писал(а):.....
p.s. Можете расшифровать вашу строку. Не всё ещё понимаю.
Код: Выделить всё
setTimeOut('AlarmClock_check','runScript("AlarmClock_check");',2);
всё просто:
setTimeOut - функция вызова таймера
AlarmClock_check - имя для таймера, для того чтобы их различать и управлять при необходимости, задаем сами
runScript("AlarmClock_check"); - собственно, скрипт который мы хотим запустить в этом таймере, даже не так - это строка которая будет выполнена движком MDM
2 - кол-во секунд, через которые нужно запустить
Идея походу проста... Особенно метод таймера MDM, часто забивали большим количеством исполняемого кода
и при его выполнении счетчик, допустимого времени выполнения, стремительно приближался к максимуму,
а передавая запуск в другой процесс (таймера в данном случае), вроде как сам метод успевает закончить свою работу вовремя.
Кроме того, если в запускаемом скрипте были ошибки, то с ними "разбирается" уже таймер, а не основной скрипт!
Так я понимаю механизм работы такого способа!!!
Имя таймера локальное? Его где-то надо первоначально задавать? Понятно, что для каждой задачи надо оформить свой таймер с уникальным именем... Есть ограничение на кол-во таймеров?
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 10:12 pm
Chainik
workpage писал(а):Имя таймера локальное? Его где-то надо первоначально задавать? Понятно, что для каждой задачи надо оформить свой таймер с уникальным именем... Есть ограничение на кол-во таймеров?
Имя таймера "глобальное". Т.е. во всем MDM в один и тот же момент времени может существовать ("тикать" в системе) только один таймер с одним и тем же именем. Если попытаться запустить другой таймер с тем же именем (пока текущий таймер не завершился), он не запустится.
УТОЧНЕНИЕ.
Запуск таймера с тем же именем отменяет предыдущий таймер, и запущенный таймер начинает течь заново.
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 10:23 pm
workpage
Chainik писал(а):workpage писал(а):Имя таймера локальное? Его где-то надо первоначально задавать? Понятно, что для каждой задачи надо оформить свой таймер с уникальным именем... Есть ограничение на кол-во таймеров?
Имя таймера "глобальное". Т.е. во всем MDM в один и тот же момент времени может существовать ("тикать" в системе) только один таймер с одним и тем же именем. Если попытаться запустить другой таймер с тем же именем (пока текущий таймер не завершился), он не запустится.
Не работает(
Строка вот такая:
setTimeOut('ClockChime','runScript('Включить свет в холле 2 этажа верхний');',2);
Имя таймера где задавать? В объектах есть Timer/ClockChime. Это оно?
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 10:35 pm
Chainik
Попробуйте имя скрипта взять в двойные кавычки. Затем заменить имя скрипта на латиницу без пробелов (например, "turn_on_thе_light_in_the_lobby_of_the_2nd_floor_top"). К сожалению большинство языков программирования не разделяют наши патриотические устремления и "противятся" кириллице.
Ну т.е., попробуйте так
setTimeOut('ClockChime','runScript("turn_on_thе_light_in_the_lobby_of_the_2nd_floor_top");',2);
Имя таймера у вас ClockChime (то что указано в первых одинарных кавычках).
Re: Сценарии по расписанию. Проблема.
Добавлено: Пн дек 25, 2017 10:51 pm
workpage
Chainik писал(а):Попробуйте имя скрипта взять в двойные кавычки. Затем заменить имя скрипта на латиницу без пробелов (например, "turn_on_thе_light_in_the_lobby_of_the_2nd_floor_top"). К сожалению большинство языков программирования не разделяют наши патриотические устремления и "противятся" кириллице.
Ну т.е., попробуйте так
setTimeOut('ClockChime','runScript("turn_on_thе_light_in_the_lobby_of_the_2nd_floor_top");',2);
Имя таймера у вас ClockChime (то что указано в первых одинарных кавычках).
Двойные Кавычки помогли. Кирилица не при чём. Спасибо за помощь.
Re: Сценарии по расписанию. Проблема.
Добавлено: Ср дек 27, 2017 11:34 am
webms
Chainik писал(а):он не запустится.
он перезапишется и начнет отчет заново