Добрый день!
Как на реле WB-MR (в частности, WB-MR3LV/S и WB-MR6LV/S) рализовать следующее:
Одна кнопка последовательно перебирает все выходы (1 нажатие - включить первый канал, 2-ое нажатие - выключить 1-ый канал, 3-е нажатие - включить 2-ой канал, 4-е выключить 2-ой и т.д.)
0-й вход: если хоть что-то включено, отключить все. Если ничего не включено - включить только 1-ый канал. Экспериментировал с mapping-матрицей, но этот сценарий так и не получилось сделать. Запись в регистры значений -r440 12 4 4 делает что-то похожее, но корректно работает только если все включено, либо все выключено.
Управление выходами по двойному нажатию или удержанию.
mapping-матрица умеет делать только одно и то же действие при одинаковом действии на входах. То есть она никак не может знать, в какой части “цикла” мы находимся.
Всю сложную логику нужно писать на контроллере - например, в движке правил.
Сами WB-MR так не умеют, но можно реализовать скриптами. При этом если в скрипте завязываться на событие входа именно WB-MR - именно то что вы хотите нормально работать не будет. Это связано с тем, что с момента события в WB-MR до момента, когда о нём узнает контроллер могут пройти секунды, а не трудно догадаться, что за это время событие вновь может произойти и сменить состояние.
Ситуация решается, если использовать WBIO-DI-WD-14 на одной шине с контроллером. - у этого девайся сигнал изменяется практически мгновенно, и вот на изменение этого события - можно спокойно писать скрипты, которые вам будут отрабатывать практически любую логику.
Лично я делаю именно таким образом, и пока что - нареканий не возникало.
Спасибо, вариант интересный, но на сайте указано срок отгрузки 20 раб. дней. Т.е. их на складе нет, а в нынешних реалиях это означает, что купить его невозможно и неизвестно когда появится возможность. Я вот так уже с реле WB-MR6LV/S попал - нет их, производство остановлено и перспективы непонятны…
Здравствуйте! Как раз ищу подобное решение для WBIO-DI-WD-14. Не могу разобраться как написать скрипт, что бы кнопка при нажатии давала последовательно разные команды. Помогите пожалуйста с примером скрипта.
var Timer_kn_Podves_Balkon = null; // Таймер обнуления
var Count_kn_Podves_Balkon = 0;
defineRule(“Zal_Svet_Podves_Balkon”, { // Данное правило попеременно включает свет подвеса и балкона
whenChanged: “wb-gpio/EXT1_DR6”,
then: function (newValue, devName, cellName) {
if (newValue) {
Count_kn_Podves_Balkon++;
//Если таймер обнулен, а происходит включение - то выключим свет
if ((Count_kn_Podves_Balkon > 1) && (Timer_kn_Podves_Balkon == null)) {
dev["wb-gpio/EXT2_R3A2"] = 0; //Точечный свет балкон
dev["wb-mr6c_10/K1"] = 0; //Подвес кухня
Count_kn_Podves_Balkon = 0;
}
if (Count_kn_Podves_Balkon == 1) { //Включим подвес кухни
dev["wb-gpio/EXT2_R3A2"] = 0; //Точечный свет балкон
dev["wb-mr6c_10/K1"] = 1; //Подвес кухня
if (Timer_kn_Podves_Balkon) { //Если таймер был взведен - остановим
clearTimeout(Timer_kn_Podves_Balkon)
}
//Установим таймер
Timer_kn_Podves_Balkon = setTimeout(function () {
Timer_kn_Podves_Balkon = null;
//Count_kn_Podves_Balkon = 0;
}, 5000);
}
else if (Count_kn_Podves_Balkon == 2) { //Включим подвес балкона
dev["wb-gpio/EXT2_R3A2"] = 1; //Точечный свет балкон
dev["wb-mr6c_10/K1"] = 0; //Подвес кухня
}
else if (Count_kn_Podves_Balkon == 3) { //Включим оба светильника
dev["wb-gpio/EXT2_R3A2"] = 1; //Точечный свет балкон
dev["wb-mr6c_10/K1"] = 1; //Подвес кухня
}
else if (Count_kn_Podves_Balkon == 4) { //Выключим оба светильника
dev["wb-gpio/EXT2_R3A2"] = 0; //Точечный свет балкон
dev["wb-mr6c_10/K1"] = 0; //Подвес кухня
if (Timer_kn_Podves_Balkon) { //Если таймер был взведен - остановим
clearTimeout(Timer_kn_Podves_Balkon)
}
Timer_kn_Podves_Balkon = null;
Count_kn_Podves_Balkon = 0;
}
}
}