Сделал скрипт для термостата. В нем создаётся виртуальное устройство в котором есть поле уставка и текущая температура.
При изменении уставки через web интерфейс все работает корректно. Но если я изменяю значение уставки с помощью публикации в топик MQTT извне, то происходит странное: В топике MQTT значение уставки меняется, в веб интерфейсе WB в поле “уставка” новое значение меняется, но сам термостат новое значение не получает.
Почему так происходит?
var t ="wb-msw-v4_79/Temperature";
var rele="wb-mr6c_175/K2";
var t_name="Thermostat";
var hyst=0.2;
var setpoint ="Thermostat/setpoint"
defineVirtualDevice(t_name, {
title: t_name,
cells: {
setpoint: {
type:"temperature",
value:"",
readonly:false
},
temperature: {
type:"temperature",
value:"",
forceDefault: false
}
}
});
defineRule("change_t", {
whenChanged: t,
then: function (newValue, devName, cellName) {
dev[t_name+"/temperature"] = newValue;
if ( newValue < dev[setpoint] - hyst) { //если температура датчика меньше уставки - гистерезис
dev[rele] = true;
}
if ( newValue > dev[setpoint] + hyst) { //если температура датчика больше виртуальной уставки + гистерезис
dev[rele] = false;
}
}
});
defineRule("change_sp", {
whenChanged: setpoint,
then: function (newValue, devName, cellName) {
dev[setpoint] = newValue;
if ( dev[t] < dev[setpoint]-hyst) { //если температура датчика меньше уставки - гистерезис
dev[rele] = true;
}
if ( dev[t] > dev[setpoint]+hyst) { //если температура датчика больше виртуальной уставки + гистерезис
dev[rele] = false;
}
}
});