// Глобальные переменные
var SETPOINT = 22;
var HYST = 1;
var enabled = true;
// Виртуальное устройство для термостата
defineVirtualDevice(‘vdForThermostat’, {
title: ‘Virtual device for Thermostat’,
cells: {
btnStartStop: {
title: ‘Start/Stop’,
type: ‘pushbutton’
},
setpoint: {
title: ‘Уставка’,
type: ‘range’,
value: 27,
max: 35,
min: 20
},
enabled: {
title: ‘Разрешено’,
type: ‘switch’,
value: true
},
ReadOnlySwitch: {
title: “Read-Only Switch”,
type: “switch”,
value: false,
readonly: true
},
}
});
// Обработчик изменения уставки
defineRule(‘updateSetpoint’, {
whenChanged: ‘vdForThermostat/setpoint’,
then: function(newValue, devName, cellName) {
SETPOINT = parseInt(newValue); // Обновляем глобальную переменную SETPOINT
// dev[“virtualDevice”][“ReadOnlySwitch”] = newValue;
debug(‘Новая уставка ТП Лоджия: {}’, SETPOINT);
}
});
// Правило управления термостатом
var thermostatRule = defineRule(‘thermostat’, {
whenChanged: ‘wb-w1/28-00000fabb48a’,
then: function(newValue, devName, callName) {
debug(‘Температура ТП лоджия = {}’, newValue);
// Проверяем температуру
if (newValue <= SETPOINT - HYST) {
if (!dev['wb-mr6c_236/K5']) { // Включаем нагрев
dev['wb-mr6c_236/K5'] = true;
log('Нагрев ТП лоджия включен');
}
} else if (newValue >= SETPOINT + HYST) {
if (dev['wb-mr6c_236/K5']) { // Выключаем нагрев
dev['wb-mr6c_236/K5'] = false;
log('Нагрев ТП лоджия выключен');
}
}
}
});
debug(‘Термостат Лоджия включен авторун’)
// Правило обработки кнопки Start/Stop
defineRule(‘buttonTrigger’, {
whenChanged: [‘wb-grio/A1_IN’, ‘vdForThermostat/btnStartStop’],
then: function(newValue, devName, cellName) {
if (devName === ‘wb-grio’ && !newValue) {
return;
}
if (enabled) {
disableRule(thermostatRule);
// disableRule(cronStopRule);
// disableRule(cronStartRule);
enabled = false;
dev[‘wb-mr6c_236/K5’] = false;
enabled = false;
dev[“vdForThermostat”][“ReadOnlySwitch”] = false;
debug(‘Термостат Лоджия выключен’);
}
else {
enableRule(thermostatRule);
// enableRule(cronStopRule);
// enableRule(cronStartRule);
enabled = true;
dev[“vdForThermostat”][“ReadOnlySwitch”] = true;
debug(‘Термостат Лоджия включен’);
}
}
})
// Правило автоматического включения термостата
//var cronStartRule = defineRule(‘cronStartThermostatTrigger’, {
// when: cron(‘0 7 * * *’), // Включается каждый день в 07:00
// then: function() {
// enableRule(thermostatRule);
// dev[‘vdForThermostat/enabled’] = true;
// debug(‘Термостат cron лоджия включен’);
// }
//});
// Правило автоматического выключения термостата
//var cronStopRule = defineRule(‘cronStopThermostatTrigger’, {
// when: cron(‘0 1 * * *’), // Выключается каждый день в 01:00
// then: function() {
// disableRule(thermostatRule);
// dev[‘vdForThermostat/enabled’] = false;
// dev[‘wb-mr6c_236/K5’] = false;
// debug(‘Термостат cron лоджия выключен’);
// }
//})