Правило с датчиком zigbee

defineVirtualDevice("Tp1", {
title:"TP1",
cells: {
"temperature": {
type:"range",  
value: 18,
max: 32  
},
}
});



defineRule("Tpf1", {
whenChanged: ["0xa4c13880d46d7c67/temperature", "Tp1/temperature"],
then: function (newValue, devName, cellName) {
if ((newValue<dev["Tp1/temperature"]) && (dev["wb-w1/28-00000ddf53d0"]<38)) {
dev["wb-gpio"]["EXT1_K12"] = true;
dev["wb-gpio"]["EXT1_K14"] = true;
} {
if (newValue>dev["Tp1/temperature"] && (dev["wb-w1/28-00000ddf53d0"]>25)) {
dev["wb-gpio"]["EXT1_K12"] = false;
dev["wb-gpio"]["EXT1_K14"] = false;
}
}
}
});	

Добавил еще условие по датчику 1 wire, по идее реле должно быть включено пока 1 wire не будет больше 25 градусов, но на нем сейчас 19 и реле выключается

Так просто это не сработает из-за того, что в newValue передается значение изменившегося параметра: при изменении уставки в newValue попадет значение уставки.

Предполагаю, что в условии нужно заменить newValue на явное указание канала, например, так:

if (( dev["0xa4c13880d46d7c67/temperature"] < dev["Tp1/temperature"]) && (dev["wb-w1/28-00000ddf53d0"] < 38)) {
1 лайк

Да, это помогло!) превелико благодарен вам за помощь!))

1 лайк

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.