Здравствуйте, подскажите пожалуйста, где взять информацию по задаче:
Есть датчик zigbee, установлен и работает, есть реле wbio-do-r10a-8, так же установлено и работает, создал правило для изменения состояния К1 реле по привышению темпиратуры от датчика:
defineRule("heater_control", { //название правила - "контроль обогревателя", может быть произвольным
whenChanged: "0x00158d00045b27a4/temperature", //при изменении состояния датчика zigbee с идентификатором 0x00158d00045b27a4
then: function (newValue, devName, cellName) { //выполняй следующие действия
if ( newValue > 25) { //если температура датчика больше 25 градусов
dev["wb-mio-gpio_97:1"]["K1"] =0; //установи Реле 1 модуля WBIO с адресом 97:1 в состояние "выключено"
} else {
dev["wb-mio-gpio_97:1"]["K1"] =1; //установи Реле 1 модуля WBIO с адресом 97:1 в состояние "включено"
}
}
});
```
Подскажите, как менять уставку по mqtt в этом правиле, и если кто нибудь понимает, как установить гистерезис, допустим +- 1 градус?
Спасибо товарищи!)
Разобрался, остался вопрос только с гистерезисом
Добрый день.
Гистререзис в данном случае означает отсутствие необходимости переключать в диапазоне уставка ±1С
То есть делим устловие на два:
if ( newValue > (25+1) { //если температура датчика больше 25 градусов + гистерезис
dev["wb-mio-gpio_97:1"]["K1"] =0; //установи Реле 1 модуля WBIO с адресом 97:1 в состояние "выключено"
}
if ( newValue < (25-1) { //если температура датчика меньше 25 градусов - гистерезис
dev["wb-mio-gpio_97:1"]["K1"] =1; //установи Реле 1 модуля WBIO с адресом 97:1 в состояние "включено"
}
сейчас правило выглядит так
defineVirtualDevice(“Tp1”, {
2
title:“Термостат 1”,
3
cells: {
4
“temperature”: {
5
type:“range”,
6
value: 20,
7
max: 32
8
},“Zima1”: {
9
type:“switch”,
10
value: 0,
11
}
12
}
13
});
14
defineRule(“Tpf1”, {
15
whenChanged: “0x00158d00044fc63b/temperature”,
16
then: function (newValue, devName, cellName) {
17
if (newValue>dev[“Tp1/temperature”]) {
18
dev[“wb-mio-gpio_97:1”][“K2”] = 0;log;
19
} else
20
dev[“wb-mio-gpio_97:1”][“K2”] = 1;log;
21
}
22
});
Теперь с ползунком для уставки, как сюда вставить гистерезис?)
Точно так же, условие делите на два и “ненужный диапазон” не используете.
if (newValue>(dev[“Tp1/temperature”]+[ЗНАЧЕНИЕ_ГИСТЕРЕЗИСА]) {
Применяйте для вставки кода
```
(три кавычки на русской букве “ё”)
Денис добрый день. получилось ли у Вас с правилом виртуального термостата? Не смогли бы Вы поделиться этим правилом? Спасибо.
День добрый, ну правило тупое до нельзя, без пид регулирования, но рабочее, 24 канала в доме держать температуру в пределах уставки
‘’‘defineVirtualDevice(“Tp9”, {
title:"Полы прихожей ",
cells: {
“temperature”: {
type:“range”,
value: 18,
max: 32
},
}
});
defineRule(“Tpf9”, {
whenChanged: “0x00158d00044a7219/temperature”,
then: function (newValue, devName, cellName) {
if (newValue>dev[“Tp9/temperature”]) {
dev[“POL”][“K1”] = true;log;
} {
if (newValue<dev[“Tp9/temperature”]) {
dev[“POL”][“K1”] = false;log;
} {
if (newValue>dev[“Tp9/temperature”]) {
dev[“POL”][“K2”] = true;log;
} {
if (newValue<dev[“Tp9/temperature”]) {
dev[“POL”][“K2”] = false;log;
}
}
}
}
}
});
‘’’