Здравствуйте. Есть задача с одной кнопки управлять включением светодиодной лентой через WB-LED и бра на 220в через WB-MR6C v.2. Реально ли это?
Если есть контроллер, то однозначно можно сделать через правила - один модуль будет ведущий, другой ведомый: скрипт такой написать.
Если сами по себе без контроллера, то не знаю. Во всяком случае лично я бы не разрешил параллельное подключение двух входов модулей. Если сильно надо через независимые входы, то сигнал можно размножить через промежуточное реле с двумя группами контактов, питание всё равно в щите есть для модулей.
Контроллер будет. Идея понятна. Вот только программист из меня так себе. где можно посмотреть шаблон для такого скрипта?
defineRule("track_and_change", {
whenChanged: "wb-mr6c_1/Input 1",
then: function() {
if (dev['wb-mr6c_1']['K1'] == true) dev['wb-led_1']['Channel 1'] = true;
if (dev['wb-mr6c_1']['K1'] == false) dev['wb-led_1']['Channel 1'] = false;
}
});
День добрый!
Конечно, так как вы описываете сделать можно. С помощью правил.
Например:
- Откройте файл конфигурации правил, например,
/etc/wb-rules/my_rules.js
. - Добавьте следующее правило:
defineRule("toggle_led_and_bra", {
whenChanged: "wb-gpio/EXT1_IN1", // кнопка подключена к EXT1_IN1
then: function (newValue, devName, cellName) {
var ledState = dev["wb-led"]["LED_1"] ? 0 : 1;
var braState = dev["wb-mr6c_1"]["K1"] ? 0 : 1;
// Переключаем состояние LED и бра
dev["wb-led"]["LED_1"] = ledState;
dev["wb-mr6c_1"]["K1"] = braState;
}
});
- Сохраните изменения в файле и перезапустите службу правил:
service wb-rules restart
А по-моему, у вас нельзя сейчас в правилах писать 0 или 1, должны быть false, true.
Ну или вообще не парится
dev[‘wb-mr6c_1’][‘K1’] = dev[‘wb-led_1’][‘Channel 1’] = !dev[‘wb-led_1’][‘Channel 1’];
Или кто там ведущий.
-
Сработка будет 2 раза: при нажатии и отпускании кнопки.
-
Добавлять условие на 0 и 1 смысла нет, логическое значение дальше передать не проблема.
Здравствуйте.
Подскажите пожалуйста: удалось ли решить данный вопрос?