Пример скриптика для работы с правилами:
var cronRuleNum = null;
//Создадим виртуальное устройство для датавремени:
defineVirtualDevice("timer_control", {
title: "TimerControl", //
cells: {
CronString : { //Просто текстовое поле
type : "text",
value : "5 * * * *",
readonly: false,
},
}
});
//И правило, срабатывающее на изменения поля CronString
defineRule("CronStrngChanged", {
whenChanged: "timer_control/CronString",
then: function (newValue, devName, cellName) {
log.info("CronStrngChanged", newValue)
if (cronRuleNum) {//Если правило уже есть - отключим
log.info("MakeCron disable", cronRuleNum)
disableRule(cronRuleNum)
}
MakeCron(newValue)
}
});
//Однократно запустим функцию для начального создания правила.
log.info(dev["timer_control"]["CronString"])
MakeCron(dev["timer_control"]["CronString"])
function MakeCron (CronString){
log.info("MakeCron enter", CronString)
//Правило с кроном - создадим, присвоим идентификатор правила переменной.
cronRuleNum = defineRule("CronRule", {
when: cron(CronString),
then: function (newValue, devName, cellName) {
log.info("CronRule executed")//Тут и вызывается то, что хотим запустить с помощью cron
}
});
log.info("MakeCron after", cronRuleNum)
}
Ну естественно это просто демонстрация. Возможно надо разделить поля ввода на часы-минуты и “собирать” строку для crod в правиле.