// place your rules here or add more .js files in this directory log("add your rules to /etc/wb-rules/"); var timerLast; var timerTime; defineRule("EXT1_DR15_clicker", { // turn on kitchen light & turn off kitchen bar hall lights whenChanged: "wb-gpio/EXT1_DR15", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR15"); if (dev["PowerRelay3"]["K4"] == 1) { dev["PowerRelay3"]["K4"] =0; } else{ dev["PowerRelay3"]["K4"] =1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR15"); dev["PowerRelay3"]["K4"] =0; dev["PowerRelay2"]["K5"] =0; dev["PowerRelay3"]["K3"] =0; } } } }); defineRule("EXT1_DR16_clicker", { // turn on & off tvroom light whenChanged: "wb-gpio/EXT1_DR16", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR16"); if (dev["PowerRelay3"]["K5"] == 1) { dev["PowerRelay3"]["K5"] =0; } else{ dev["PowerRelay3"]["K5"] =1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR16"); dev["PowerRelay3"]["K5"] = 0; } } } }); defineRule("EXT1_DR3_clicker", { // turn on & off bathroom light whenChanged: "wb-gpio/EXT1_DR3", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR3"); if (dev["PowerRelay1"]["K5"] == 1) { dev["PowerRelay1"]["K5"] =0; } else{ dev["PowerRelay1"]["K5"] = 1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR3"); if (dev["PowerRelay1"]["K5"] == 1) { dev["PowerRelay3"]["K6"] =0; dev["PowerRelay1"]["K5"] =0; } else{ dev["PowerRelay3"]["K6"] =1; dev["PowerRelay1"]["K5"] =1; } } } } }); defineRule("EXT1_DR5_clicker", { // turn on & off shower light whenChanged: "wb-gpio/EXT1_DR5", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR5"); if ((dev["PowerRelay3"]["K2"] == 1) && (dev["PowerRelay1"]["K6"] ==0)) { dev["PowerRelay3"]["K2"] =0; log("we are here"); } else if ((dev["PowerRelay3"]["K2"] == 0) && (dev["PowerRelay1"]["K6"] ==1)) { dev["PowerRelay1"]["K6"] =0; log("we are here 2"); } else if (dev["PowerRelay3"]["K2"] == 1) { dev["PowerRelay3"]["K2"] =0; log("we are here 3"); } else{ dev["PowerRelay3"]["K2"] = 1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR5"); if (dev["PowerRelay3"]["K2"] == 1) { dev["PowerRelay3"]["K2"] =0; dev["PowerRelay1"]["K6"] =0; } else{ dev["PowerRelay3"]["K2"] =1; dev["PowerRelay1"]["K6"] =1; } } } } }); defineRule("EXT1_DR1_clicker", { // turn on & off hall\livingroom light whenChanged: "wb-gpio/EXT1_DR1", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR1"); if (dev["PowerRelay2"]["K5"] == 1) { dev["PowerRelay2"]["K5"] =0; } else{ dev["PowerRelay2"]["K5"] =1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR1"); if (dev["PowerRelay2"]["K5"] == 1) { dev["PowerRelay2"]["K5"] =0; dev["PowerRelay3"]["K4"] =1; dev["PowerRelay3"]["K5"] =1; dev["PowerRelay3"]["K3"] =1; } else{ dev["PowerRelay2"]["K5"] =1; dev["PowerRelay3"]["K4"] =0; dev["PowerRelay3"]["K5"] =0; dev["PowerRelay3"]["K3"] =0; } } } } }); defineRule("EXT1_DR6_clicker", { // turn on & off hall whenChanged: "wb-gpio/EXT1_DR6", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR6"); if (dev["PowerRelay2"]["K5"] == 1) { dev["PowerRelay2"]["K5"] =0; } else{ dev["PowerRelay2"]["K5"] =1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR6"); dev["PowerRelay2"]["K1"] = 0; //dressroom dev["PowerRelay2"]["K2"] = 0; //badroom dev["PowerRelay2"]["K3"] = 0; //spot_right dev["PowerRelay2"]["K4"] = 0; //spot left dev["PowerRelay2"]["K5"] = 0; //hall dev["PowerRelay2"]["K6"] = 0; //balcony dev["PowerRelay3"]["K1"] = 0; //childroom dev["PowerRelay3"]["K2"] = 0; //shower dev["PowerRelay3"]["K3"] = 0; //bar dev["PowerRelay3"]["K4"] = 0; //kitchen dev["PowerRelay3"]["K5"] = 0; //tv dev["PowerRelay3"]["K6"] = 0; //bathroom fan dev["PowerRelay1"]["K5"] = 0; //bathroom dev["PowerRelay1"]["K5"] = 0; //shower fan } } } }); defineRule("EXT1_DR4_clicker", { // turn on & off left spot whenChanged: "wb-gpio/EXT1_DR4", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR4"); if (dev["PowerRelay2"]["K2"] == 1) { dev["PowerRelay2"]["K2"] =0; } else{ dev["PowerRelay2"]["K2"] =1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR4"); dev["PowerRelay2"]["K1"] = 0; //dressroom dev["PowerRelay2"]["K2"] = 0; //badroom dev["PowerRelay2"]["K3"] = 0; //spot_right dev["PowerRelay2"]["K4"] = 0; //spot left dev["PowerRelay2"]["K5"] = 0; //hall dev["PowerRelay2"]["K6"] = 0; //balcony dev["PowerRelay3"]["K1"] = 0; //childroom dev["PowerRelay3"]["K2"] = 0; //shower dev["PowerRelay3"]["K3"] = 0; //bar dev["PowerRelay3"]["K4"] = 0; //kitchen dev["PowerRelay3"]["K5"] = 0; //tv dev["PowerRelay3"]["K6"] = 0; //bathroom fan dev["PowerRelay1"]["K5"] = 0; //bathroom dev["PowerRelay1"]["K5"] = 0; //shower fan } } } }); defineRule("EXT1_DR2_clicker", { // turn on & off right spot whenChanged: "wb-gpio/EXT1_DR2", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now(); } else { timerTime = Date.now(); if ((timerTime - timerLast) <= 700) { log("Было короткое нажатие EXT1_DR2"); if (dev["PowerRelay2"]["K2"] == 1) { dev["PowerRelay2"]["K2"] =0; } else{ dev["PowerRelay2"]["K2"] =1; } } else if ((timerTime - timerLast) >= 700) { log("Было длинное нажатие EXT1_DR2"); dev["PowerRelay2"]["K1"] = 0; //dressroom dev["PowerRelay2"]["K2"] = 0; //badroom dev["PowerRelay2"]["K3"] = 0; //spot_right dev["PowerRelay2"]["K4"] = 0; //spot left dev["PowerRelay2"]["K5"] = 0; //hall dev["PowerRelay2"]["K6"] = 0; //balcony dev["PowerRelay3"]["K1"] = 0; //childroom dev["PowerRelay3"]["K2"] = 0; //shower dev["PowerRelay3"]["K3"] = 0; //bar dev["PowerRelay3"]["K4"] = 0; //kitchen dev["PowerRelay3"]["K5"] = 0; //tv dev["PowerRelay3"]["K6"] = 0; //bathroom fan dev["PowerRelay1"]["K5"] = 0; //bathroom dev["PowerRelay1"]["K5"] = 0; //shower fan } } } });