Блокировка сухих контактов или реле

Здравствуйте! Подскажите, пожалуйста, как реализовать данную функцию:

Есть WirenBoard 7.3.4, есть два модуля по шесть реле и по семь сухих контактов. Каждый контакт управляет своим реле, но один контакт - это кардхолдер. Нужно сделать так, что если контакт разомкнут (карточка не вставлена) управлять реле нельзя, если контакт сомкнут (карточка вставлена), сухие контакты управляют реле.

Добрый день.
Можно сделать правилом на контроллере. Матрица в модулях реализовать подобное не позволит.
И да, кстати, а какое поведение планируется если контакт разомкнется при включенном канале реле?

В NodeRed сделала логику, если карточку вытащить - все реле выключаются.

Пока не могу понять, как там же сделать такую логику?

Ещё я не могу найти ни одну Ноду, где было бы два входа для сравнения значений. Даже в Ноде function можно сделать два выхода, но нельзя сделать два входа.

var topicIn = "wb-mr3_36/Input 1 counter";
var topicBlock = "wb-mr3_36/Input 2";
var outRelay = "wb-mr3_36/K1";

defineRule(topicIn + '-trigger', {
    whenChanged: topicIn,
    then: function(newValue, device, control) {
      if (topicBlock){
       dev[outRelay] = !dev[outRelay]
      }
    }
});

Не работает:

var topicIn = "wb-mr6c_117/Input 1 counter";    // Выключатель
var topicBlock = "wb-mr6c_115/Input 2";           // Кардхолдер
var outRelay = "wb-mr6c_117/K1";                    // Реле

defineRule(topicIn + '-trigger', {
    whenChanged: topicIn,
    then: function(newValue, device, control) {
      if (topicBlock){
       dev[outRelay] = !dev[outRelay]
      }
    }
});

И что такое ‘-trigger’?

Да, верно.

      if dev[topicBlock]){

Что верно?))) Что такое ‘-trigger’?

Всё равно не работает! Это очень срочный вопрос. Делаем демонстрационный номер на WirenBoard. В перспективе целый отель…

Написала самый простой код, отключения каналов при размыкании контакта и то не работает:

var card = "wb-mr6c_115/Input 2";
var light1 = "wb-mr6c_117/K1";
var light2 = "wb-mr6c_117/K2";
var light3 = "wb-mr6c_117/K3";
var light4 = "wb-mr6c_117/K4";
var light5 = "wb-mr6c_117/K5";
var light6 = "wb-mr6c_117/K6";
var light7 = "wb-mr6c_115/K1";

defineRule({
    whenChanged: card,
    then: function(value, device, control) {
      if (value == 0){
       		dev[light1] = 0;
       		dev[light2] = 0;
       		dev[light3] = 0;
       		dev[light4] = 0;
       		dev[light5] = 0;
       		dev[light6] = 0;
       		dev[light7] = 0;
      	}    
    }
});

пишется как

if (!value)

Ну и присваивать устройствам числа - неверно.

следует записать как

       		dev[light1] = false;

Ну и для отладки целесообразно пользоваться логом.

Здравствуйте! Я сделала всё управление через JS, если карточка вставлена выключатели работают, если нет - то нет. Функция:

function mySwitch(input, relay){
	defineRule({
		whenChanged: input,
    	then: function(value, device, control){
			if (dev[card]){
       			if (value){
            		if (dev[relay]) dev[relay] = false;
              		else dev[relay] = true;
            	}
			}
    	}
	});
}

Проблема теперь в том, что если на клавишу нормально нажимать - всё работает, если очень быстро (сильно кратковременное нажатие), команда не срабатывает.

Какой топик используете для детекции нажатий?

Input, если это имеется ввиду. Просто не очень поняла что такое топик? Кнопки без фиксаций.

var input1 = "wb-mr6c_117/Input 1";
...
var input7 = "wb-mr6c_115/Input 1";

var relay1 = "wb-mr6c_117/K1";
...
var relay7 = "wb-mr6c_115/K1";

var card = "wb-mr6c_115/Input 2";

Всё, я поняла. Надо было counter использовать. Просто странно, counter всегда проходит, а просто input через раз. Хотя по идее, если у input не было смены положения, почему тогда counter считает как было.

Всё) осталась последняя проблема: на случай если сервер зависнет, чтобы блоки реле работали в автономном режиме и все сухие контакты соответствовали своему реле.

В настройках входов, режим работы указала - кнопка без фиксации.

В настройках безопасного режима поставила галочки - разрешить только в безопасном режиме. Действия в безопасном режиме функция не нужна, но пробовала и ставить галочки и нет.

В итоге это всё не работает. Как только отключаем от шины сервер, правило перестаёт работать и соответственно управлять реле напрямую через сухие контакты уже не получается. В чём проблема?

Input - текущее состояние входа. Если оно меняется дважды между опросами - то естественно в каждом опросе будет неизменное.

Да, советую настроить управление от входов выходами - только в безопасном режиме.
Входы, естественно - в режиме матрицы должны быть.

В режиме матрице также не работает:


Я не очень понимаю, честно говоря.
Настраиваю вход на управление выходом:

Включаю прямое управление только для безопасного режима:

Все, управляется аппаратно только в безопасном режиме.