Правило с временным промежутком

Добрый день! Требуется создать следующее правило.
Задача: Если сработало первое реле, то второе реле должно сработать на 10 минут раньше. Допустим в кроне я задаю включение первого реле на 7 часов утра, так вот второе реле должно включиться перед этим на 10 минут раньше. если я изменяю время включения первого реле, то второе всё-равно должно включаться на 10 минут раньше второго. Надеюсь объяснил, что мне нужно :slight_smile: Можно ли вообще реализовать такое в правилах?

Добрый день.
Можно написать функцию, реализующую перевод даты в формат cron и использовать её в правилах. А все манипуляции, например, вычитание времени выполнять с объектами Date().
Приведу простой пример:

function DateToCron(date) {
    var seconds = date.getSeconds();
    var minutes = date.getMinutes();
    var hours = date.getHours();
    var dayOfMonth = date.getDate();
    var month = date.getMonth() + 1;
    var dayOfWeek = date.getDay();
    return seconds + ' ' + minutes + ' ' + hours + ' ' + dayOfMonth + ' ' + month + ' ' + dayOfWeek;
}

var date_0 = new Date(2024, 3, 15, 12, 30, 00); // 2024 г, 4 месяц (в js месяцы идут с 0, т.е. 4-1=3), 15 число, 12 часов, 30 минут, 00 секунд
var date_1 = new Date(date_0.getTime());

date_1.setMinutes(date_1.getMinutes() - 10); // на 10 минут раньше

defineRule({
  when: cron(DateToCron(date_0)),
  then: function () {
    log(date_0);
  }
});

defineRule({
  when: cron(DateToCron(date_1)),
  then: function () {
    log(date_1);
  }
});

Можете доработать пример для себя, в частности добавив в функцию обработку:

*	any value
,	value list separator
-	range of values
/	step values
1 Like

Но на самом деле cron правила - не особо гибки, лучше так: Помогите пожалуйста с подбором и настройкой оборудования для теплиц - #347 от пользователя BrainRoot