Так выглядит правило полностью. Проблема с функцией makeDimmerToRelay и remapRelayInput (остальные работают корректно)
// Переназначение Input → Output внутри реле
function remapRelayInput(relayId, inputNum, targetOutput) {
defineRule(“remap_relay_” + relayId + “input" + inputNum + “to” + targetOutput, {
whenChanged: "wb-mr6c” + relayId + "/Input " + inputNum,
then: function(newValue) {
// Управляем целевым выходом вместо стандартного
dev[“wb-mr6c_” + relayId + “/” + targetOutput] = newValue ? 1 : 0;
log("Реле " + relayId + ": Input " + inputNum + " → " + targetOutput + " = " + newValue);
}
});
}
// Переназначение Input → Channel внутри диммера
function remapDimmerInput(dimmerAddr, inputNum, targetChannel, brightnessLevel) {
defineRule(“remap_dimmer_” + dimmerAddr + “input" + inputNum + “to” + targetChannel, {
whenChanged: "wb-mrgbw-d-fw3” + dimmerAddr + “/Input " + inputNum,
then: function(newValue) {
if (newValue) {
// Включение с указанной яркостью
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/” + targetChannel] = 1;
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/” + targetChannel + " Brightness”] = brightnessLevel;
log("Диммер " + dimmerAddr + “: Input " + inputNum + " → " + targetChannel + " = " + brightnessLevel + “%”);
} else {
// Выключение
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/” + targetChannel] = 0;
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/” + targetChannel + " Brightness”] = 0;
}
}
});
}
// Ванная и душевая - умное управление
function makeSmartDimmerLevel(addr, mainInput, nightInput, mainLevel, nightLevel) {
var state = { main: false, night: false, both: false };
// Основной свет
defineRule(“smart_dimmer_” + addr + “main", {
whenChanged: "wb-mrgbw-d-fw3” + addr + "/Input " + mainInput,
then: function(newValue) {
state.main = newValue;
updateSmartDimmer(addr, state, mainLevel, nightLevel);
}
});
// Ночной свет
defineRule(“smart_dimmer_” + addr + “night", {
whenChanged: "wb-mrgbw-d-fw3” + addr + "/Input " + nightInput,
then: function(newValue) {
state.night = newValue;
updateSmartDimmer(addr, state, mainLevel, nightLevel);
}
});
}
function updateSmartDimmer(addr, state, mainLevel, nightLevel) {
state.both = state.main && state.night;
if (state.both) {
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B)”] = 1;
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B) Brightness”] = mainLevel;
} else if (state.main) {
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B)”] = 1;
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B) Brightness”] = mainLevel;
} else if (state.night) {
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B)”] = 1;
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B) Brightness”] = nightLevel;
} else {
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B)”] = 0;
dev[“wb-mrgbw-d-fw3_” + addr + “/Channel 1 (B) Brightness”] = 0;
}
}
// Функция для перенаправления Input Диммера → Реле
function makeDimmerToRelay(dimmerAddr, inputNum, relayId, channel) {
defineRule(“dimmer_to_relay_” + dimmerAddr + “input" + inputNum, {
whenChanged: "wb-mrgbw-d-fw3” + dimmerAddr + "/Input " + inputNum,
then: function(newValue) {
// Управляем реле (основной свет)
dev[“wb-mr6c_” + relayId + “/” + channel] = newValue ? 1 : 0;
}
});
}
// Функция для перенаправления Input Реле → Диммер
function makeRelayToDimmer(relayId, inputNum, dimmerAddr, level) {
defineRule(“relay_to_dimmer_” + relayId + “input" + inputNum, {
whenChanged: "wb-mr6c” + relayId + "/Input " + inputNum,
then: function(newValue) {
// Управляем диммером (подсветка)
if (newValue) {
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/Channel 1 (B)”] = 1;
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/Channel 1 (B) Brightness”] = level;
} else {
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/Channel 1 (B)”] = 0;
dev[“wb-mrgbw-d-fw3_” + dimmerAddr + “/Channel 1 (B) Brightness”] = 0;
}
}
});
}
// Ванная и душевая - умное управление
makeSmartDimmerLevel(“115”, 2, 1, 80, 2); // Ванная
makeSmartDimmerLevel(“104”, 1, 2, 80, 2); // Душевая
// Зал-Кухня - перенаправление управления
remapRelayInput(“167”, 5, “K4”); // Input 5 → K4
remapDimmerInput(“122”, 2, “Channel 1 (B)”, 20); // Input 2 → Channel 1
makeDimmerToRelay(“122”, 1, “167”, “K4”); // Input 1 Диммера 122 → Реле 167, K4
makeRelayToDimmer(“167”, 4, “122”, 20); // Input 4 Реле 167 → Диммер 122, 20%
// Коридор - перенаправление управления
remapRelayInput(“146”, 2, “K1”); // Input 2 → K1
remapDimmerInput(“246”, 2, “Channel 1 (B)”, 20); // Input 2 → Channel 1
makeDimmerToRelay(“246”, 3, “146”, “K1”); // Input 3 Диммера 246 → Реле 146, K1
makeRelayToDimmer(“146”, 3, “246”, 20); // Input 3 Реле 146 → Диммер 246, 20%
// Спальня - перенаправление управления
makeDimmerToRelay(“14”, 1, “167”, “K1”); // Input 1 Диммера 14 → Реле 167, K1
makeDimmerToRelay(“14”, 2, “167”, “K1”); // Input 2 Диммера 14 → Реле 167, K1
makeDimmerToRelay(“14”, 3, “167”, “K1”); // Input 3 Диммера 14 → Реле 167, K1
makeRelayToDimmer(“167”, 1, “14”, 20); // Input 1 Реле 167 → Диммер 14, 20%
makeRelayToDimmer(“167”, 2, “14”, 20); // Input 2 Реле 167 → Диммер 14, 20%
makeRelayToDimmer(“167”, 3, “14”, 20); // Input 3 Реле 167 → Диммер 14, 20%
// Детская - перенаправление управления
makeDimmerToRelay(“190”, 2, “155”, “K4”); // Input 2 Диммера 190 → Реле 155, K4
makeDimmerToRelay(“190”, 3, “155”, “K4”); // Input 3 Диммера 190 → Реле 155, K4
makeRelayToDimmer(“155”, 5, “190”, 20); // Input 5 Реле 155 → Диммер 190, 20%
makeRelayToDimmer(“155”, 6, “190”, 20); // Input 6 Реле 155 → Диммер 190, 20%
remapDimmerInput(“155”, 1, “Channel 1 (B)”, 20); // Input 1 → Channel 1