Rule Examples/en: различия между версиями

Новая страница: «Termostat("R01-TS16-1", "A60-M1W3/External Sensor 1", "Termostat/R01-TS16-1-setpoint", "wb-gpio/EXT4_R3A1", "Termostat/R01-TS16-1-onoff"); // Hallway underfloor heating»
(Новая страница: «== Thermostat == An example of a simple thermostat from the [https://support.wirenboard.com/t/novaya-versiya-dvizhka-pravil/4196/158 topic on the support portal].»)
(Новая страница: «Termostat("R01-TS16-1", "A60-M1W3/External Sensor 1", "Termostat/R01-TS16-1-setpoint", "wb-gpio/EXT4_R3A1", "Termostat/R01-TS16-1-onoff"); // Hallway underfloor heating»)
Строка 634: Строка 634:
    },.......
    },.......


<div lang="ru" dir="ltr" class="mw-content-ltr">
var hysteresis = 0.5;
var hysteresis = 0.5;
function Termostat(name, temp, setpoint, TS, TS_onoff) {
function Termostat(name, temp, setpoint, TS, TS_onoff) {
defineRule(name, {  
defineRule(name, {
   whenChanged: temp, //при изменении состояния датчика
   whenChanged: temp, //when the sensor state changes
   then: function (newValue, devName, cellName) { //выполняй следующие действия
   then: function (newValue, devName, cellName) { // do the following
     if (dev[TS_onoff]) {
     if (dev[TS_onoff]) {
    if ( newValue < dev[setpoint] - hysteresis) { //если температура датчика меньше уставки - гистерезис
    if ( newValue < dev[setpoint] - hysteresis) { //if the sensor temperature is less than the setpoint - hysteresis
      dev[TS] = true;
      dev[TS] = true;
    }
    }
    if ( newValue > dev[setpoint] + hysteresis) { //если температура датчика больше виртуальной уставки + гистерезис
    if ( newValue > dev[setpoint] + hysteresis) { //if the sensor temperature is greater than the virtual setpoint + hysteresis
      dev[TS] = false;
      dev[TS] = false;
    }
    }
     }
     }
     else dev[TS] = false;
     else dev[TS] = false;
Строка 652: Строка 651:
});
});
}
}
</div>


<div lang="ru" dir="ltr" class="mw-content-ltr">
Termostat("R01-TS16-1", "A60-M1W3/External Sensor 1", "Termostat/R01-TS16-1-setpoint", "wb-gpio/EXT4_R3A1", "Termostat/R01-TS16-1-onoff"); //  
Termostat("R01-TS16-1", "A60-M1W3/External Sensor 1", "Termostat/R01-TS16-1-setpoint", "wb-gpio/EXT4_R3A1", "Termostat/R01-TS16-1-onoff"); // Прихожая теплый пол
Hallway underfloor heating
</div>






<div lang="ru" dir="ltr" class="mw-content-ltr">
</syntaxhighlight>
</syntaxhighlight>
== Отправка команд по RS-485 ==
== Sending commands via RS-485 ==
</div>


<div lang="ru" dir="ltr" class="mw-content-ltr">
For example, send a command to the device on the port /dev/ttys0 (corresponds to the hardware port RS-485-ISO on the [[Special:MyLanguage/Wiren Board 4|Wiren Board 4]]). To do this, we will use the rules engine and the ability to execute arbitrary shell commands. See [https://github.com/contactless/wb-rules#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5 documentation] for details.
Для примера отправим команду устройству на порт ''/dev/ttyNSC0'' (соответствует аппаратному порту RS-485-ISO на [[Special:MyLanguage/Wiren Board 4|Wiren Board 4]]).
Для этого будем использовать движок правил и возможность выполнения произвольных shell-команд. Подробнее см. [https://github.com/contactless/wb-rules#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5 в документации].
</div>


<div lang="ru" dir="ltr" class="mw-content-ltr">
<div lang="ru" dir="ltr" class="mw-content-ltr">
translator, wb_editors
4265

правок