Rule Examples: различия между версиями
Строка 675: | Строка 675: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Термостат == | |||
Пример простого термостата из [https://support.wirenboard.com/t/novaya-versiya-dvizhka-pravil/4196/158 темы на портале поддержки]. | |||
<syntaxhighlight lang="js"> | |||
defineVirtualDevice("Termostat", { | |||
title: "Termostat", | |||
cells: { | |||
// =============== Прихожая теплый пол | |||
"R01-TS16-1-mode": {//режим 0-ручной 1-по расписанию | |||
type: "switch", | |||
value: false, | |||
}, | |||
"R01-TS16-1-setpoint": {//уставка | |||
type: "range", | |||
value: 25, | |||
max: 30, | |||
readonly: false | |||
}, | |||
"R01-TS16-1-lock": {//блокировка в визуализации 0-снята 1-заблокирована | |||
type: "switch", | |||
value: false, | |||
},....... | |||
var hysteresis = 0.5; | |||
function Termostat(name, temp, setpoint, TS, TS_onoff) { | |||
defineRule(name, { | |||
whenChanged: temp, //при изменении состояния датчика | |||
then: function (newValue, devName, cellName) { //выполняй следующие действия | |||
if (dev[TS_onoff]) { | |||
if ( newValue < dev[setpoint] - hysteresis) { //если температура датчика меньше уставки - гистерезис | |||
dev[TS] = true; | |||
} | |||
if ( newValue > dev[setpoint] + hysteresis) { //если температура датчика больше виртуальной уставки + гистерезис | |||
dev[TS] = false; | |||
} | |||
} | |||
else dev[TS] = false; | |||
} | |||
}); | |||
} | |||
Termostat("R01-TS16-1", "A60-M1W3/External Sensor 1", "Termostat/R01-TS16-1-setpoint", "wb-gpio/EXT4_R3A1", "Termostat/R01-TS16-1-onoff"); // Прихожая теплый пол | |||
</syntaxhighlight> | |||
== Отправка команд по RS-485 == <!--T:99--> | == Отправка команд по RS-485 == <!--T:99--> | ||