Понятно. Поэтому - можно переработать функцию из
function changeSetting(){
log.info("Enter function");
stringRGB = dev[dimmNumber +"mrgbw-d/RLine"].toString() +";"+ dev[dimmNumber +"mrgbw-d/GLine"].toString() +";"+ dev[dimmNumber +"mrgbw-d/BLine"].toString();
//log.info("stringRGB=",stringRGB);
dev[devDimmer +"/RGB"] = stringRGB;
dev[devDimmer +"/White"] = dev[dimmNumber +"mrgbw-d/WLine"];
}
так:
//01_29_test_04.js
var devDimmer = "wb-mrgbw-d_189" // For name REAL MRGBW-D device #ChangeMe!#
function changeSettingRGB(num, newSetiing){
//log.info("Enter function");
//log.info("dev[devDimmer +/RGB]=",dev[devDimmer +"/RGB"]);
//Получим строку с текущими значениями цвета.
//ну и надо ее разобрать
arrayOfRGB = dev[devDimmer +"/RGB"].split(";");
//Тут - присваиваем ЭЛЕМНТУ массива НОВОЕ значение
arrayOfRGB[num] = newSetiing;
//log.info("arrayOfRGB=",arrayOfRGB[0],arrayOfRGB[1],arrayOfRGB[2]);
stringRGB = arrayOfRGB[0].toString() +";"+ arrayOfRGB[1].toString() +";"+ arrayOfRGB[2].toString();
//log.info("stringRGB=",stringRGB);
dev[devDimmer +"/RGB"] = stringRGB;
}
//использование:
changeSettingRGB(0,25); //для канала R -25
changeSettingRGB(1,42); //для канала G -42
changeSettingRGB(2,200); //для канала B -200
белый канал обработки не требует.
В коде реализована готовая функция, которая создает правила под обработку разных “нажатий”.
Туда (в функцию), как видно, передается кроме утроройства, за которысм “следим” еще и вызовы (имена) функций, которые вызываются при событиях. События - короткое нажатие, длинное, …
Менять надо именно эти функции. То есть скелет - готов, надо только реализовать алгоритм.
Для включения по короткому нажатию, например:
...
singlePress: {
func: OnOff,
prop: ["SomeDimmer", "SomeOutput", 100]
},
...
и описать саму функцию-хелпер:
function OnOff(dimmerName, outputName, dimmerValue){
if (dev[dimmerName][outputName]) { //Если не ноль
dev[dimmerName][outputName] = 0; //Выключаем
}
else {
dev[dimmerName][outputName] = dimmerValue; //Включаем на заданное значение
}
}