Добрый день!
Есть код термостата. Отрабатывает включение и выключение правильно.
Данные в mqtt меняются (считываются нормально), но в веб интерфейсе(не меняются как будто один раз считались и все), хотя сам цикл включения и выключения термостата при изменение температуры работает.
Посмотрите, что я не правильно сделал.
defineVirtualDevice("Termostat", {
title: "Управление теплом",
cells: {
// =============== Прихожая теплый пол
"Рубильник": {//режим 0-выключить 1-включить отопление
type: "switch",
value: false,
},
"Терморегулятор": {//регулятор температуры
type: "range",
value: 20,
max: 30,
min: -10,
readonly: false
},
"DHT21": {//данные с nodemcu DHT21
type: "text",
value: dev["node-rele-dht/room_temperature"],
},
"Zigbee": {//данные с zigbee temper
type: "temperature",
value: dev["temper/temperature"]
}
}
}
);
var DHT = "node-rele-dht/room_temperature"; // данные температуры DHT21
var hysteresis = 1.5; // разница температуры для предотвращения щелканья реле из за изменения каждого градуса
var rubilnik = "Termostat/Рубильник"; // статус выключателя вкл иои выкл
var status_rele = "Button_left/Ночник"; // статус реле вкл иои выкл
defineRule( {
whenChanged: DHT,
then: function (newValue, devName, cellName) {
//SendTelegramMsg(dev[DHT]);
// если рубильник включен и реле выключено то проверить температуру
if (dev[status_rele] == false && dev[rubilnik] == true ){
// Если температура датчика ниже чем на терморугуляторе то включить реле
if (dev[DHT] < dev["Termostat/Терморегулятор"]-hysteresis ) {
publish("zigbee2mqtt/0x00158d0002a18ff7/set", JSON.stringify({ state_right: "ON" }), 2, false);
SendTelegramMsg("отопление включено" +"__" + dev[DHT] + " " + dev["actual_date/date"] );
// dev["Button_left/Спальня"] = true;
log.info(newValue);
}
// Если температура датчика выше чем на терморугуляторе то выключить реле
if (dev[DHT] > dev["Termostat/Терморегулятор"]+hysteresis ) {
publish("zigbee2mqtt/0x00158d0002a18ff7/set", JSON.stringify({ state_right: "OFF" }), 2, false);
SendTelegramMsg("отопление выключено" +" " + dev[DHT] + "__" + dev["actual_date/date"]);
// dev["Button_left/Спальня"] = true;
}
};
// если рубильник включен и реле включено то проверить температуру
if (dev[status_rele] == true && dev[rubilnik] == true ){
// Если температура датчика выше чем на терморугуляторе то выключить реле
if (dev[DHT] > dev["Termostat/Терморегулятор"]+hysteresis ) {
publish("zigbee2mqtt/0x00158d0002a18ff7/set", JSON.stringify({ state_right: "OFF" }), 2, false);
SendTelegramMsg("отопление выключено" +"__" + dev[DHT] + "__" + dev["actual_date/date"]);
// dev["Button_left/Спальня"] = true;
}
};
}
}
)};
`Данные выведенные на термостат
![image|586x301](upload://4H9azAOlUKLAT4JQkeQEuzgyNNP.png)
Данные с температурных датчиков
![image|690x263](upload://kKRrsKYMxZ1raMmmeyp4PUQqFIq.png)