Виртуальные устройства

Здравствуйте. Есть такой скрипт:

// --- Управление теплыми полами ---//

// Виртуальное устройство выставления желаемой температуры
var deviceName1 = 'hot-floor-1';
defineVirtualDevice(deviceName1, {
    title: 'Теплый пол гостиная',
    cells: {
        value: {
            title: 'Температура, °С',
            type: 'range',
            value: 22,
            max: 40,
            min: 1,
            readonly: false
        },
        mode: {
            title: 'Режим',
            type: 'text',
            value: 'off',
            readonly: false
        },
        temp: { // Тестовые данные
            title: 'Температура',
            type: 'text',
            value: '20',
            readonly: false
        }
    }
});

// Открытие/закрытие сервоприводов на гребенке
defineRule('temperature_control', {
    whenChanged: ['hot-floor-1/temp', 'hot-floor-1/value', 'hot-floor-1/mode'],
    then: function () {
        var servoRelay = 'wb-mr6c_14/K2'; // Контрол управляемого реле, смотреть Настройки->Каналы MQTT
        var currentTemp = dev['hot-floor-1/temp']; // Контрол датчика температуры
        var targetTemp = dev['hot-floor-1/value']; // Контрол желаемой температуры
        var mode = dev['hot-floor-1/mode']; // Контрол режима работы обогрев (обогрев/выкл)

        // Режим выключен → реле всегда выключено
        if (mode === 'off') {
            dev[servoRelay] = false;
            mode = 'off';
            return;
        }

        if (currentTemp >= targetTemp) { // Размыкание реле, если измеряемая температура больше или равна заданной
            dev[servoRelay] = false;
        } else { // Замыкание реле, если мзмеряемая температура меньше заданной
            dev[servoRelay] = true;
        }
    }
});

В консоли отправляю mosquitto_pub -t "/devices/hot-floor-1/controls/value" -m 25
но реле не срабатывает, после обновления страницы Устройства данные в hot-floor-1/value слетают до выставленных ранее. В чем может быть проблема?

/devices/hot-floor-1/controls/value - это "текущее значение “устройства” ". Иными словами - устройство публикует туда свое состояние (от устройства к вам), но не читает этот контрол “обратно”. Все что вы туда запишите будет проигнорировано и “перетерто” очередной публикацией устройства своего текущего состояния.
Вам необходимо использовать
/devices/hot-floor-1/controls/value/on - для передачи “просьбы” от вас устройству (выполнить команду) установить указанный контрол в указанное вами состояние/значение.

1 Like

Спасибо