Здравствуйте!
Хочу настроить управление электрическим тёплым полом с помощью скрипта. Написал следующий код:
// Настройки
var relay = "wb-gpio/EXT1_R3A5"; // MQTT-канал реле
var minTemp = 30.0; // температура для включения
var maxTemp = 34.0; // температура для выключения
var tempSensor = "wb-w1/28-062370f5bcd8"; // ID датчика температуры
// Правило управления реле
defineRule("floor_heating_control", {
whenChanged: tempSensor, // Срабатывает при изменении температуры
then: function (newValue, devName, cellName) {
var currentTemp = parseFloat(newValue); // Преобразуем значение в число
if (currentTemp < minTemp) {
dev[relay] = 1; // Включаем реле
log.info("Реле включено. Температура: " + currentTemp + "°C");
} else if (currentTemp > maxTemp) {
dev[relay] = 0; // Выключаем реле
log.info("Реле выключено. Температура: " + currentTemp + "°C");
}
}
});
// Логирование при старте
log.info("Скрипт управления реле загружен. Используется канал: " + relay);
Проблема: скрипт не может включить/выключить реле, хотя реле работает нормально при ручном управлении, например, через web UI или с помощью команды:
mosquitto_pub -t "/devices/wb-gpio/controls/EXT1_R3A5/on" -m "1"
mosquitto_pub -t "/devices/wb-gpio/controls/EXT1_R3A5/on" -m "0"
Реле меняет состояние на включено/выключено через эти команды, но скрипт не включает/выключает реле
Может быть, правило не имеет доступа к WBIO-DO-R10A-8 или к каналу wb-gpio/EXT1_R3A5? и другим. Почему скрипт не включает и не выключает реле?
Вот что пишут логи:
defineRule: floor_heating_control
Скрипт управления реле загружен. Используется канал: wb-gpio/EXT1_R3A5
Реле включено. Температура: 29.5°C
Реле включено. Температура: 29.562°C
Контроллер: Wirenboard 6.7.2
Версия прошивки: wb-2410