В 2501 обнаружил две ошибки.
/*------------------------------------------------------------------------
// Основные виртуальные устройства с контролами управления обогревателями и вентиляторами в доме
------------------------------------------------------------------------*/
// Обогреватель отопления на кухне 1
defineVirtualDevice("HeaterControlKitchen1", {
title:"Регулятор температуры на кухне",
cells: {
"SetPoint": {
title: "Температура",
type:"range",
value: 25,
precision: 1,
max: 25,
min: 0,
readonly: true
},
"Hest": {
title: "Гистерезис",
type:"range",
value: 2,
precision: 1,
max: 10,
readonly: true
},
"Enable": {
title: "Управление",
type:"switch",
value: 0
},
"EcoMode": {
title: "Эко-режим",
type:"switch",
value: 0
},
"Work": {
title: "Работа",
type:"switch",
value: 0,
readonly: true
},
"WorkDisableDelay": {
title: "Таймер отключения (часов)",
type:"range",
value: 48,
max: 96,
min: 0,
units: "часы",
readonly: true
},
"Temperature": {
title: "Текущая температура",
type:"value",
value: 0,
readonly: true
}
}
});
// Обогреватель отопления в маленькой комнате 2
defineVirtualDevice("HeaterControlRoom2", {
title:"Регулятор температуры в маленькой комнате",
cells: {
"SetPoint": {
title: "Температура",
type:"range",
value: 25,
precision: 1,
max: 25,
min: 0,
readonly: true
},
"Hest": {
title: "Гистерезис",
type:"range",
value: 2,
precision: 1,
max: 10,
readonly: true
},
"Enable": {
title: "Управление",
type:"switch",
value: 0
},
"EcoMode": {
title: "Эко-режим",
type:"switch",
value: 0
},
"Work": {
title: "Работа",
type:"switch",
value: 0,
readonly: true
},
"WorkDisableDelay": {
title: "Таймер отключения (часов)",
type:"range",
value: 48,
max: 96,
min: 0,
units: "часы",
readonly: true
},
"Temperature": {
title: "Текущая температура",
type:"value",
value: 0,
readonly: true
}
}
});
// Освещение и отопление в погребе с овощами
defineVirtualDevice("HeaterControlPogreb3", {
title:"Регулятор температуры в погребе с овощами",
cells: {
"SetPoint": {
title: "Температура",
type:"range",
value: 5,
precision: 1,
max: 10,
min: -5,
readonly: true
},
"Hest": {
title: "Гистерезис",
type:"range",
value: 2,
precision: 1,
max: 10,
readonly: true
},
"Enable": {
title: "Управление",
type:"switch",
value: 0,
readonly: true
},
"Work": {
title: "Работа",
type:"switch",
value: 0,
readonly: true
},
"On": {
title: "Освещение",
type:"switch",
value: 0
},
"Temperature": {
title: "Текущая температура",
type:"value",
value: 0,
readonly: true
}
}
});
// Освещение и отопление в погребе с овощами
defineVirtualDevice("HeaterControlPogreb1", {
title:"Регулятор температуры в погребе водоснабжения",
cells: {
"SetPoint": {
title: "Температура",
type:"range",
value: 5,
precision: 1,
max: 10,
min: -5,
readonly: true
},
"Hest": {
title: "Гистерезис",
type:"range",
value: 2,
precision: 1,
max: 10,
readonly: true
},
"Enable": {
title: "Управление",
type:"switch",
value: 0,
readonly: true
},
"Work": {
title: "Работа",
type:"switch",
value: 0,
readonly: true
},
"On": {
title: "Освещение",
type:"switch",
value: 0
},
"Temperature": {
title: "Текущая температура",
type:"value",
value: 0,
readonly: true
}
}
});
// Расширенные параметры управления отоплением и охлаждением
defineVirtualDevice("HeaterAdvanceControl", {
title:"Расширенные параметры управления отоплением и охлаждением",
cells: {
"AllowControl": {
title: "Разрешить управление",
type:"switch",
value: 0,
//forceDefault: true
},
"PogrebP1LowTemperature": {
title: "Низкая температура погреба водоснабжения",
type:"range",
value: 1,
precision: 1,
max: 5,
min: -5,
readonly: true
},
"PogrebP3LowTemperature": {
title: "Низкая температура погреба с овощами",
type:"range",
value: 1,
precision: 1,
max: 10,
min: -10,
readonly: true
},
}
});
/*------------------------------------------------------------------------
// Реакция на кнопку разрешения управлением
------------------------------------------------------------------------*/
defineRule({
whenChanged: ["HeaterAdvanceControl/AllowControl"],
then: function (newValue, devName, cellName) {
log("Переключение управления");
if (newValue) {
getControl("HeaterControlKitchen1/SetPoint").setReadonly(false);
getControl("HeaterControlKitchen1/WorkDisableDelay").setReadonly(false);
getControl("HeaterControlKitchen1/Hest").setReadonly(false);
getControl("HeaterControlRoom2/SetPoint").setReadonly(false);
getControl("HeaterControlRoom2/WorkDisableDelay").setReadonly(false);
getControl("HeaterControlRoom2/Hest").setReadonly(false);
getControl("HeaterControlPogreb3/Enable").setReadonly(false);
getControl("HeaterControlPogreb3/SetPoint").setReadonly(false);
getControl("HeaterControlPogreb3/Hest").setReadonly(false);
getControl("HeaterControlPogreb1/Enable").setReadonly(false);
getControl("HeaterControlPogreb1/SetPoint").setReadonly(false);
getControl("HeaterControlPogreb1/Hest").setReadonly(false);
getControl("HeaterAdvanceControl/PogrebP3LowTemperature").setReadonly(false);
getControl("HeaterAdvanceControl/PogrebP1LowTemperature").setReadonly(false);
log("Переключение управления: разрешено");
} else {
getControl("HeaterControlKitchen1/SetPoint").setReadonly(true);
getControl("HeaterControlKitchen1/WorkDisableDelay").setReadonly(true);
getControl("HeaterControlKitchen1/Hest").setReadonly(true);
getControl("HeaterControlRoom2/SetPoint").setReadonly(true);
getControl("HeaterControlRoom2/WorkDisableDelay").setReadonly(true);
getControl("HeaterControlRoom2/Hest").setReadonly(true);
getControl("HeaterControlPogreb3/Enable").setReadonly(true);
getControl("HeaterControlPogreb3/SetPoint").setReadonly(true);
getControl("HeaterControlPogreb3/Hest").setReadonly(true);
getControl("HeaterControlPogreb1/Enable").setReadonly(true);
getControl("HeaterControlPogreb1/SetPoint").setReadonly(true);
getControl("HeaterControlPogreb1/Hest").setReadonly(true);
getControl("HeaterAdvanceControl/PogrebP3LowTemperature").setReadonly(true);
getControl("HeaterAdvanceControl/PogrebP1LowTemperature").setReadonly(true);
log("Переключение управления: запрещено");
}
}
});
-
Не срабатывает precision. Пробовал туда 1, 2, 0.1 писать - range только единицы меняет. Страницу обновлял.
-
Есть контрол HeaterAdvanceControl/AllowControl. Если установлен forceDefault: true, то правило, привязанное к контролу - не срабатывает. Не знаю воспроизведется ли у вас, но у меня не работает именно в том коде, что приложен выше. Раньше работало точно, я часто этим выключателем пользовался.