Мастер выключатель

Добрый день. Скопировал ваш пример мастера выключателя, чуть подстроил под себя
defineVirtualDevice(“power_off”, {
title: “Мастер-выключатель”,
cells: {
power_off: {
type: “pushbutton”
},
}
});

var ps = new PersistentStorage(“power-storage”, { global: true });
var lights = [“wb-led_118/Channel 1”, “wb-led_118/Channel 2”, “wb-led_118/Channel 3”, “wb-led_118/Channel 4”];

var isPowerOff = true;

defineRule({
whenChanged: [“wb-gpio/A2_IN”, “power_off/power_off”],
then: function (newValue, devName, cellName) {
if (isPowerOff) {
lights.forEach(function (light) {
ps[light] = dev[light];
dev[light] = false;
});
} else {
lights.forEach(function (light) {
dev[light] = ps[light];
});
}
isPowerOff = !isPowerOff;
}
});

подскажите как сделать его от кнопки без фиксатора, и чтобы при коротком нажатии это был мастер выключатель, а при длинном функция отпуск но при коротком нажатии включалось все то что было выключено (мастер, отпуск). функция отпуск это мастер + контакт который управляет контактором (wb-mr6c_209/K6). Каналы я еще не все прописал пока экспериментирую

Добрый день.
Отслеживать длительность нажатия, если вы используете для выключателей вход A2, можно например так:

var buttonPressedTime;

defineRule("button_pressed", {
  whenChanged: "wb-gpio/A2_IN",
  then: function (newValue, devName, cellName) {
    if (newValue) { // кнопка нажата
      buttonPressedTime = Date.now();
    } else { // кнопка отпущена
      if (Date.now() - buttonPressedTime < 1000) { // короткое нажатие
        // Логика мастер-выключателя
      } else { // длинное нажатие
        // Логика для длинного нажатия (например, управление контактором)
      }
    }
  }
});

внутри каждой логики уже прописать структуру кода с использованием переменной isPowerOff и для режима “Отпуск” создать новый список отключаемых устройств с учетом устройств из сценария “Мастер”, например так:

var lights = ["wb-led_118/Channel 1", "wb-led_118/Channel 2", "wb-led_118/Channel 3", "wb-led_118/Channel 4"];
var vacationDevices = ["wb-mr6c_209/K6"];

var vacationLights = lights.concat(vacationDevices);

Максим спасибо за ответ но я ни чего не понял :slight_smile:
Я обычный электрик с функцией копировать и вставить ну и немножко смекалки
подскажите пожалуйста куда или вместо чего мне вставить то что вы мне написали, а выходы я сам пропишу
еще один вопрос каналы все в одной строке прописывать?
Думал что умный дом трудно собрать, а оказалось что это самое легкое. Вот настроить его вообще не реально для таких как я

Более полный код можно посмотреть тут: Нестандартные функции выключателей - #6 от пользователя BrainRoot
Описание встроенного движка правил тут: Движок правил wb-rules — Wiren Board