Проблема с виртуальными термостатами

У меня на wirenboard 7 есть 6-ти канальное реле, 4 из которых управляют клапанами тёплого пола, и ещё несколько месяцев назад они работали, так, как и задумывалось:
При уставке ниже, чем комнатная температура, реле выключало канал, а при уставке выше, канал включался.
Затем на время тёплого сезона я выключил эти термостаты за ненадобностью, и сейчас при включении происходит непонятная мне вещь: один термостат работает как надо, а три других включают реле, а при понижении уставки канал остаётся включённым, при том что скрипты одинаковые, меняются только id каналов и датчиков температуры 1-wire;
Вот пример того термостата, который работает корректно:

// Переменная для хранения значения температуры
var currentTemperature = 22;

defineVirtualDevice('up_down_K4', {
    title: 'Термостат K4',
    cells: {
        Value: {
            title: 'Value',
            type: 'temperature',
            value: currentTemperature,
            order: 1,
        },
        Up: {
            title: 'Up',
            type: 'pushbutton',
            order: 2,
        },
        Down: {
            title: 'Down',
            type: 'pushbutton',
            order: 3,
        },
    },
});

defineRule('test_up_down_K4_buttons', {
    whenChanged: ['up_down_K4/Up', 'up_down_K4/Down'],
    then: function (newValue, devName, cellName) {
        if (devName === 'up_down_K4' && (cellName === 'Up' || cellName === 'Down')) {
            var oldValue = currentTemperature;
            var newValue = cellName === 'Up' ? oldValue + 0.5 : oldValue - 0.5;

            // Ограничиваем значение в диапазоне от 15 до 35
            newValue = Math.max(15, Math.min(35, newValue));

            currentTemperature = newValue; // Обновляем текущее значение температуры
            dev['up_down_K4/Value'] = newValue; // Обновляем значение виртуального устройства
        }
    },
});



defineRule("control_K4", {
    whenChanged: ["wb-w1/28-00000fabbe76", "up_down_K4/Value"],
    then: function (newValue, devName, cellName) {
        var sensorTemperature = dev["wb-w1/28-00000fabbe76"]; // Текущая температура с датчика
        var setPointTemperature = dev["up_down_K4/Value"]; // Уставка температуры

        // Температура для выключения реле
        var turnOffTemperature = setPointTemperature + 1;

        // Температура для включения реле
        var turnOnTemperature = setPointTemperature - 1;

        // Проверяем, нужно ли включить или выключить реле
        if (sensorTemperature > turnOffTemperature) {
            dev["wb-mr6cu_177/K4"] = false; // Выключаем реле
        } else if (sensorTemperature < turnOnTemperature) {
            dev["wb-mr6cu_177/K4"] = true; // Включаем реле
        }
        // Если температура находится в диапазоне, не меняем состояние реле
    }
});

А вот пример того, который только включает, но не выключает:

// Переменная для хранения значения температуры
var currentTemperature = 22;

defineVirtualDevice('up_down_K2', {
    title: 'Термостат K2',
    cells: {
        Value: {
            title: 'Value',
            type: 'temperature',
            value: currentTemperature,
            order: 1,
        },
        Up: {
            title: 'Up',
            type: 'pushbutton',
            order: 2,
        },
        Down: {
            title: 'Down',
            type: 'pushbutton',
            order: 3,
        },
    },
});

defineRule('test_up_down_K2_buttons', {
    whenChanged: ['up_down_K2/Up', 'up_down_K2/Down'],
    then: function (newValue, devName, cellName) {
        if (devName === 'up_down_K2' && (cellName === 'Up' || cellName === 'Down')) {
            var oldValue = currentTemperature;
            var newValue = cellName === 'Up' ? oldValue + 0.5 : oldValue - 0.5;

            // Ограничиваем значение в диапазоне от 15 до 35
            newValue = Math.max(15, Math.min(35, newValue));

            currentTemperature = newValue; // Обновляем текущее значение температуры
            dev['up_down_K2/Value'] = newValue; // Обновляем значение виртуального устройства
        }
    },
});



defineRule("control_K2", {
    whenChanged: ["wb-w1/28-00000dcdf8e4", "up_down_K2/Value"],
    then: function (newValue, devName, cellName) {
        var sensorTemperature = dev["wb-w1/28-00000dcdf8e4"]; // Текущая температура с датчика
        var setPointTemperature = dev["up_down_K2/Value"]; // Уставка температуры

        // Температура для выключения реле
        var turnOffTemperature = setPointTemperature + 1;

        // Температура для включения реле
        var turnOnTemperature = setPointTemperature - 1;

        // Проверяем, нужно ли включить или выключить реле
        if (sensorTemperature > turnOffTemperature) {
            dev["wb-mr6cu_177/K2"] = false; // Выключаем реле
        } else if (sensorTemperature < turnOnTemperature) {
            dev["wb-mr6cu_177/K2"] = true; // Включаем реле
        }
        // Если температура находится в диапазоне, не меняем состояние реле
    }
});

В чём может быть проблема? Ещё несколько месяцев назад всё работало корректно, из изменений я разве что обновлял wirenboard через SSH

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

Архив

приложен диагностический архив, доступен только сотрудникам поддержки
(485.8 KB)

По какой-то причине и другой скрипт отвечающий за автоматизацию освещения тоже не выполняется
Может ли быть проблема в самом wb-rules?

Попробуйте выполнить команду при выявлении не стандартной работы реле

systemctl restart wb-rules

Восстанавливается работа?

Да, восстановилась! Спасибо! А как-то можно избежать этого в будущем? По-крайней мере что-бы этого в ручную не делать?

Просто я несколько раз перезагружал сам контроллер через sudo reboot, но проблема сохранялась - получается что при перезагрузке wb-rules не запускается заново?

Да, sudo reboot не срабатывает при данной проблеме.
Данную проблему исправят в следующем релизе, ожидайте новостей о выходе нового релиза.

systemctl restart wb-rules нужно будет чаще всего после перезагрузки контроллера делать.