Добрый день! Подскажите пожалуйста, в чем может быть проблема?
У меня написан сценарий автомазизации. При отправке команды по заданию нового значения Tmax (Температура ВЫКЛ. тепловентилятора) с помощью MQTT, оно сохраняется и отображается на Веб-интерфейсе контроллера, но правила по регулированию температуры перестают работать. (По сценарию тепловентилятор должен отключиться по достижению определенной температуры) Если же задать значение Tmax (Температура ВЫКЛ. тепловентилятора) через Веб-интерфейс, то сценарий срабатывает.
Ниже прилагаю код автоматизации и скриншот с подпиской на топик и отправкой нового значения, а так же версией контроллера.
title: 'Автоматизация',
cells: {
Alarm1: {
type: 'switch',
title: 'Тепловентилятор',
value: false,
readonly: false,
order: 2,
},
Alarm2: {
type: 'switch',
title: 'Сплит-система',
value: false,
readonly: false,
order: 1,
},
Tmax: {
type: 'range',
title: 'Температура ВЫКЛ. тепловентилятора',
value: 9,
max: 50,
min: -30,
order: 3,
readonly: false,
},
Tmin: {
type: 'range',
title: 'Температура ВКЛ. тепловентилятора',
value: 4,
max: 40,
min: -30,
order: 4,
readonly: false,
},
Alarm3: {
type: 'switch',
title: 'Аварийное ВЫКЛ. тепловентилятора',
value: false,
readonly: false,
order: 5,
}
}
});
var timerId = null;
var timerActive = false;
var fanHeaterMainSensor = defineRule('fanHeaterMainSensor', {
whenChanged: ["wb-ms_112/Temperature"],
then: function () {
if (dev["wb-ms_112/Temperature"] < dev['Automation/Tmin'] && !timerActive) {
timerActive = true;
dev["wb-gpio/EXT1_K2"] = true;
timerId = setTimeout(function () {
dev["wb-gpio/EXT1_K2"] = false;
timerActive = false;
}, 1800000);
}
if (dev["wb-ms_112/Temperature"] > dev['Automation/Tmax']) {
dev["wb-gpio/EXT1_K2"] = false;
if (timerActive) {
clearTimeout(timerId);
timerActive = false;
}
}
},
});
var fanHeaterReservedSensor = defineRule('fanHeaterReservedSensor', {
whenChanged: ["wb-msw-v4_103/Temperature"],
then: function () {
if (dev["wb-msw-v4_103/Temperature"] < dev['Automation/Tmin'] && !timerActive) {
timerActive = true;
dev["wb-gpio/EXT1_K2"] = true;
timerId = setTimeout(function () {
dev["wb-gpio/EXT1_K2"] = false;
timerActive = false;
}, 1800000);
}
if (dev["wb-msw-v4_103/Temperature"] > dev['Automation/Tmax']) {
dev["wb-gpio/EXT1_K2"] = false;
if (timerActive) {
clearTimeout(timerId);
timerActive = false;
}
}
},
});
disableRule(fanHeaterReservedSensor);
trackMqtt("/devices/wb-ms_112/controls/Temperature/meta/error", function (message) {
log.info("name: {}, value: {}".format(message.topic, message.value))
if (message.value == "r") {
disableRule(fanHeaterMainSensor);
enableRule(fanHeaterReservedSensor);
}
if (message.value == "") {
enableRule(fanHeaterMainSensor);
disableRule(fanHeaterReservedSensor);
}
});
trackMqtt("/devices/Automation/controls/Alarm3", function (message) {
log.info("name: {}, value: {}".format(message.topic, message.value))
if (message.value == "1") {
dev["wb-gpio/EXT1_K2"] = false;
disableRule(fanHeaterMainSensor);
}
if (message.value == "0") {
enableRule(fanHeaterMainSensor);
dev["wb-gpio/EXT1_K2"] = true;
}
});
trackMqtt("/devices/wb-gpio/controls/A1_IN", function (message) {
log.info("name: {}, value: {}".format(message.topic, message.value))
if (message.value == "1") {
dev["wb-gpio/EXT1_K1"] = false;
dev["wb-gpio/EXT1_K2"] = false;
disableRule(fanHeaterMainSensor);
}
if (message.value == "0") {
enableRule(fanHeaterMainSensor);
}
});
defineRule("conditionerSwitch1", {
whenChanged: ["wb-gpio/EXT1_K1"],
then: function () {
dev["Automation/Alarm2"] = dev["wb-gpio/EXT1_K1"];
},
});
defineRule("conditionerSwitch2", {
whenChanged: ["Automation/Alarm2"],
then: function () {
dev["wb-gpio/EXT1_K1"] = dev["Automation/Alarm2"];
},
});
defineRule("fanHeaterSwitch1", {
whenChanged: ["Automation/Alarm1"],
then: function () {
dev["wb-gpio/EXT1_K2"] = dev["Automation/Alarm1"];
},
});
defineRule("fanHeaterSwitch2", {
whenChanged: ["wb-gpio/EXT1_K2"],
then: function () {
dev["Automation/Alarm1"] = dev["wb-gpio/EXT1_K2"];
},
});```