Взялся я наконец-то за составление правил и сразу споткнулся о то, что из движка правил не могу повлиять на устройство. Правило реагирует на изменение CO2, видно по логам – срабатывает, но светодиоды не включаются. Причём, со вкладки devices вручную всё работает.
Что я делаю не так?
defineRule("lr_co2_indicator", {
whenChanged: "wb-msw-v3_73/CO2",
then: function (newValue, devName, cellName) {
adjustLedIndicatorForCo2Value(devName, newValue);
}
});
defineRule("br1_co2_indicator", {
whenChanged: "wb-msw-v3_17/CO2",
then: function (newValue, devName, cellName) {
adjustLedIndicatorForCo2Value(devName, newValue);
}
});
defineRule("br2_co2_indicator", {
whenChanged: "wb-msw-v3_12/CO2",
then: function (newValue, devName, cellName) {
adjustLedIndicatorForCo2Value(devName, newValue);
}
});
function adjustLedIndicatorForCo2Value(devName, co2Value) {
if (co2Value < 500) {
log(devName + " below 500")
dev[devName]["Green LED"] = 0;
dev[devName]["Red LED"] = 0;
dev[devName]["Buzzer"] = 0;
return;
}
if (co2Value < 700) {
log(devName + " below 700")
dev[devName]["Green LED"] = 1;
dev[devName]["Red LED"] = 0;
dev[devName]["Buzzer"] = 0;
return;
}
if (co2Value < 900) {
log(devName + " below 900")
dev[devName]["Green LED"] = 0;
dev[devName]["Red LED"] = 1;
dev[devName]["Buzzer"] = 0;
return;
}
dev[devName]["Green LED"] = 0;
dev[devName]["Red LED"] = 1;
dev[devName]["Buzzer"] = 1;
}
В логах выводится (пример)
2020-10-18 07:40:48 defineRule: lr_co2_indicator
2020-10-18 07:40:48 defineRule: br1_co2_indicator
2020-10-18 07:40:48 defineRule: br2_co2_indicator
2020-10-18 07:40:53 wb-msw-v3_73 below 500
2020-10-18 07:40:53 wb-msw-v3_12 below 500
2020-10-18 07:40:55 wb-msw-v3_73 below 500
2020-10-18 07:40:55 wb-msw-v3_12 below 500
2020-10-18 07:40:57 wb-msw-v3_17 below 700
Т.е. по логике 17-ый (wb-msw-v3_17) должен был начать мигать зелёным. Но не начал.