Добрый день! Требуется создать следующее правило.
Задача: Если сработало первое реле, то второе реле должно сработать на 10 минут раньше. Допустим в кроне я задаю включение первого реле на 7 часов утра, так вот второе реле должно включиться перед этим на 10 минут раньше. если я изменяю время включения первого реле, то второе всё-равно должно включаться на 10 минут раньше второго. Надеюсь объяснил, что мне нужно Можно ли вообще реализовать такое в правилах?
Добрый день.
Можно написать функцию, реализующую перевод даты в формат 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 лайк
Но на самом деле cron правила - не особо гибки, лучше так: Помогите пожалуйста с подбором и настройкой оборудования для теплиц - #347 от пользователя BrainRoot