WB7 + MR6CU - последовательное включение реле по таймеру

Доброго времени суток!
Пытаюсь решить следующую задачу: последовательное включение реле К1-К6 с отложенным запуском после отключения питания. Функция MR6CU (запоминать последнее состояние реле) не совсем подходит, ибо нужен последовательный запуск с задержкой между замыканием реле в 120 сек.

Пересмотрев разные вариации реализации кодов, пересмотрев примеры - набросал следующее (пока работаю с реле К1):

var motion_timer_id = null;
var timeout_ms = 120000;

defineRule(“autorelay_switcher”, {
whenChanged: “autorelay_switcher/K1”,
then: function (newValue, devName, cellName) {
if (newValue === false) {
if (motion_timer_id) {
clearTimeout(motion_timer_id);
}

          motion_timer_id = setTimeout(function() {
              dev["autorelay_switcher"]["K1"] = true;
              motion_timer_id = null;
          }, timeout_ms);
           runRule(autorelay_switcher.js);
      }
  }

});

Данный код работает только при физической смене состояния autorelay_switcher/K1, т.е. скрипт начинает работу только после того, как я сменю value на false.
Последней функцией runRule хотел реализовать цикличный перезапуск скрипта, но видимо вариация с применением cron будет более правильная и самое главное рабочая.

К сожалению не имею фундаментальных знаний JS, посему прошу помощи в реализации. Хотел взять за основу триггер изменения значения Vin самого контроллера, но понимаю, что без внешнего аккумулятора - значение не успет обработаться и будет неизменным (+24V). Поэтому нужно как-то проверить состояние того или иного реле и если оно в состоянии false - запустить таймер в 120 сек. до вызова dev[“autorelay_switcher”][“K1”] = true;.

Добрый день.
К сожалению совершенно непонятен желаемый алгоритм…
Включить реле после чего? Точнее - после подачи питания на что?

Добрый день!
После подачи питания на WB7 и MR6CU, т.е. после банального включения устройств. На точке частенько пропадает питание и включение сразу всех реле приводит к терминальной нагрузке на фазы сети, последовательным включением можно это избежать.

Здравствуйте!
Если нужно выполнять после загрузки контроллера один раз какое-либо правило, то пример можно посмотреть здесь: Cron правило, после перезагрузки - #5 от пользователя BrainRoot

Возможно, придется увеличить таймаут для выполнения функции, так как нужно дождаться, пока запуститься драйвер опроса serial-устройств. В функции прописать алгоритм включения реле.

1 Like