Добрый день, помогите с кодом. Есть виртуальная кнопка и допустим физический выключатель. Виртуальная кнопка работает, выключатель - тоже. Вопрос следующий, что нужно добавить в код, чтобы при нажатии физического выключателя переключалось положение виртуальной кнопки?
defineVirtualDevice("Light", {
title: "Light_room",// включение света
cells: {
enabled: {
type: "switch",
value: false
}
}
});
// Виртуальная кнопка
defineRule("Light_room_switch", {
whenChanged: "Light/enabled",
then: function (newValue, devName, cellName) {
dev["wb-mr6c_47/K1"] = newValue;
}
})
// Физический выключатель
defineRule("switch_1", {
whenChanged: "wb-mr6c_47/Input 1",
then: function (newValue, devName, cellName) {
dev["wb-mr6c_47/K1"] = newValue;
}
});
defineVirtualDevice("Light", {
title: "Light_room",// включение света
cells: {
enabled: {
type: "switch",
value: false
}
}
});
// Виртуальная кнопка
defineRule("Light_room_switch", {
whenChanged: "Light/enabled",
then: function (newValue, devName, cellName) {
dev["wb-mr6c_47/K1"] = newValue;
}
})
// Физический выключатель
defineRule("switch_1", {
whenChanged: "wb-mr6c_47/Input 1",
then: function (newValue, devName, cellName) {
dev["wb-mr6c_47/K1"] = newValue;
if(newValue){
dev["Light/enabled"] = !dev["Light/enabled"]
}
});
2 лайка
Добрый день.
Проще код будет выглядеть так:
// Физический выключатель
defineRule("switch_1", {
whenChanged: "wb-mr6c_47/Input 1",
then: function (newValue, devName, cellName) {
dev["wb-mr6c_47/K1"] = newValue;
dev["Light/enabled"] = newValue;
}
});
В таком случае состояние виртуального переключателя будет изменяться, при каждом изменении состоянии кнопки =D
Изначальное ТЗ было: “при нажатии физического выключателя переключалось положение виртуальной кнопки”
Немного не логично, но да, если нужно четко по ТЗ, то ваш вариант верен.
Добрый вечер всем! Может неправильно объяснил: физическая кнопка без фиксации, включение/выключение реле1 кратковременным сигналом на input1, при этом виртуальная кнопка должна фиксироваться и так же включать/выключать свет. И если виртуальная кнопка в выключенном состоянии, то нажатием физической она должна включаться как и реле1 и наоборот.
Добрый день.
Вы пробовали выполнить рекомендации, указанные выше?
Результат не соответствует ожиданиям?
Добрый день, пробовал, когда попеременно начинаешь использовать виртуальную кнопку и физическую - происходит рассинхрон, приходится потом вхолостую делать одно переключение виртуальной кнопкой.
Если я правильно понял, то вот так должно работать как ожидается:
defineRule("switch_1", {
whenChanged: ["wb-mr6c_47/Input 1", "Light/enabled"] ,
then: function (newValue, devName, cellName) {
dev["wb-mr6c_47/K1"] = newValue;
dev["Light/enabled"] = newValue
}
});
Сразу почему-то не сделал так.