Приветствую, уже видел подобный вопрос тут, но совсем не понял какой скрипт нужен для этого модуля. В том ответе ссылка ведет сюда
Как я понимаю это для модуля WB-MCM8. Есть ли готовый скрипт для чайника, конкретно для обработки типов нажатий для модуля WBIO-DI-WD-14 ?
Добрый день.
Приведенные примеры рассматривают обработку счетчиков нажатий. В WBIO-DI-WD-14 подобного нет.
Для обработки типов нажатий посмотрите данный вариант реализации.
То есть эти правила нужно залить в контроллер и он будет понимать типы нажатий от дискретных модулей?
Скопировать модуль module_ActionButtons.js
на контроллер и написать ваше правило по примеру rules_Buttons.js
.
Загрузил, в том числе и rules_Buttons.js, чтобы его сразу редактировать подставив мои модули
Но при сохранении возникает ошибка Error: error error (rc -100) anon native strict preventsyield require native strict preventsyield F /etc/wb-rules/rules_Buttons.js:1 preventsyield
И у module_ActionButtons.js тоже имеется ошибка ReferenceError: identifier ‘exports’ undefined duk_js_var.c:1232 F /etc/wb-rules/module_ActionButtons.js:175 preventsyield
Код rules_Buttons.js
var room = require(“module_ActionButtons”);
/**
-
Helper Functions
/
function switchRelay(device, control) {
dev[device+“/”+control] = !dev[device + “/” + control];
}
function switchRelayWithAutoOn(device, control) {
dev[device+“/”+control] = !dev[device + “/” + control];
dev[device+“/”+control+“_auto_on”] = !dev[device + “/” + control];
}
function switchRelayWithAutoOff(device, control) {
dev[device+“/”+control] = !dev[device + “/” + control];
dev[device+“/”+control+“_auto_off”] = !dev[device + “/” + control];
}
function switchDimmerRGB(relayDevice, relayControl, dimmerDevice) {
dev[relayDevice+“/”+relayControl] = true;
if (dev[dimmerDevice+“/RGB”] !== “0;0;0”) {
dev[dimmerDevice+“/RGB”] = “0;0;0”;
}
else {
// log(dev[relayDevice+“/RGB”]);
dev[dimmerDevice+“/RGB”] = dev[relayDevice + “/RGB”];
}
}
function setRandomRGB(relayDevice, relayControl, dimmerDevice) {
dev[relayDevice+“/”+relayControl] = true;
dev[relayDevice + “/RGB”] = “” + Math.floor(Math.random() * 255) + “;” + Math.floor(Math.random() * 255) + “;” + Math.floor(Math.random() * 255);
// log(relayDevice, “/RGB: “, dev[relayDevice + “/RGB”]);
dev[dimmerDevice+”/RGB”] = dev[relayDevice + “/RGB”];
}
function getRandColor(brightness) {
// Six levels of brightness from 0 to 5, 0 being the darkest
var rgb = [Math.random() * 256, Math.random() * 256, Math.random() * 256];
var mix = [brightness51, brightness51, brightness51]; //51 => 255/5
var mixedrgb = [rgb[0] + mix[0], rgb[1] + mix[1], rgb[2] + mix[2]].map(function(x){ return Math.round(x/2.0)})
return mixedrgb.join(“;”);
}
function runPermanentAction(func, prop) {if (typeof func === “function”) {
func.apply(this, prop);
}
}
function disalarmLeakage(leakage, sensor) {
// leakage.forEach(leakageDevice => {
// if (dev[leakageDevice+“/”+“Alarm”]) {// }
// });
}
////////////////////////////////////
room.ActionButtons.onButtonPress(
“wb-gpio/EXT1_IN1”,
{
singlePress: {
func: switchRelay,
prop: [“wb-mr6cu_42”, “K1”]
},
doublePress: {
func: switchRelayWithAutoOff,
prop: [“wb-mr6cu_42”, “K2”]
},
longPress: {
func: switchRelayWithAutoOff,
prop: [“wb-mr6cu_42”, “K3”]
}
}
);
room.ActionButtons.onButtonPress(
“wb-gpio/EXT1_IN2”,
{
longPress: {
func: switchRelay,
prop: [“wb-mr6cu_42”, “K4”]
}
},
300, 800
);