Движок правил wb-rules: различия между версиями

Строка 192: Строка 192:




3. Создадим в движке правил новый файл с правилами
3. Создадим в движке правил новый файл с правилами <code>/etc/wb-rules/rs485_cmd.js</code>
<pre>
/etc/wb-rules/rs485_cmd.js
</pre>


Файл можно редактировать с помощью vim, nano или mcedit в сеансе ssh на устройстве, либо залить его с помощью SCP.
Файл можно редактировать с помощью vim, nano или mcedit в сеансе ssh на устройстве, либо залить его с помощью SCP.
Строка 206: Строка 203:
4. Описываем в файле виртуальный девайс
4. Описываем в файле виртуальный девайс


<pre>
<syntaxhighlight lang="ecmascript">
defineVirtualDevice("rs485_cmd", {
defineVirtualDevice("rs485_cmd", {
     title: "Send custom command to RS-485 port",
     title: "Send custom command to RS-485 port",
Строка 216: Строка 213:
     }
     }
});
});
</pre>
</syntaxhighlight>
 


5. Перезапускаем wb-rules и проверяем работу
5. Перезапускаем wb-rules и проверяем работу
Строка 234: Строка 232:




<pre>
<syntaxhighlight lang="ecmascript">
function setup_port() {
function setup_port() {
     runShellCommand("stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8");
     runShellCommand("stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8");
}
}


</pre>
</syntaxhighlight>




7. Опишем правила на вклчение и выключение переключателя
7. Опишем правила на включение и выключение переключателя


<pre>
<syntaxhighlight lang="ecmascript">
defineRule("_rs485_switch_on", {
defineRule("_rs485_switch_on", {
   asSoonAs: function () {
   asSoonAs: function () {
Строка 263: Строка 261:
});
});


</pre>
</syntaxhighlight lang="ecmascript">
 


Обратите внимание на двойное экранирование.
Обратите внимание на двойное экранирование.
Строка 274: Строка 273:
Полное содержимое файла с правилами:
Полное содержимое файла с правилами:


<pre>
<syntaxhighlight lang="ecmascript">
root@wirenboard:~# cat  /etc/wb-rules/rs485_cmd.js
defineVirtualDevice("rs485_cmd", {
defineVirtualDevice("rs485_cmd", {
     title: "Send custom command to RS-485 port",
     title: "Send custom command to RS-485 port",
Строка 308: Строка 306:
   }
   }
});
});
</pre>
 
setTimeout(setup_port, 1000); // запланировать выполненеи setup_port() через 1 секунду после старта правил.
 
</syntaxhighlight>