Difference between revisions of "Virtual/ru"
(Created page with "Виртуальное устройство") |
|||
| (9 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
| − | === | + | ===Пример описания в XML=== |
<syntaxhighlight lang="xml" line> | <syntaxhighlight lang="xml" line> | ||
| Line 7: | Line 7: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | === | + | ===Параметры=== |
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
| − | ! | + | !Название!!Тип и диапазон!!Описание |
|- | |- | ||
| − | |sub-type|| | + | |sub-type||перечисление||sensor – виртуальный датчик<br><br>text – виртуальный датчик текстового типа (UTF8), длина должна быть равна 0<br>long-text – виртуальное поле текстового типа (UTF8), длина должна быть равна 0<br>Устройства, которым нужен скрипт для отслеживания статуса (см. пример под таблицей):<br>лампа, лампа с диммированием, rgb-подсветка, жалюзи, ворота, ворота 120, жалюзи 120 <br>prf – с отформатированным набором статусов, описание ниже |
|- | |- | ||
| − | |length*|| | + | |length*||число||размер статуса, байт<br>0 – динамический размер (явный для элементов типа «sub-type=text») |
|- | |- | ||
| − | |dim|| | + | |dim||символ||Символ, добавляемый в конце значения виртуального датчика (например, % или С) |
|} | |} | ||
| − | <nowiki>*</nowiki> – | + | <nowiki>*</nowiki> – обязательные поля |
| − | === | + | ===Пример виртуального устройства "лампа"=== |
<syntaxhighlight lang="xml" line> | <syntaxhighlight lang="xml" line> | ||
| Line 27: | Line 27: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | Обработка нажатия в скрипте | |
<syntaxhighlight lang="cpp" line> | <syntaxhighlight lang="cpp" line> | ||
u8 state = 0; | u8 state = 0; | ||
V-ID/142:99 { | V-ID/142:99 { | ||
| − | if (opt(0)==0xff){// | + | if (opt(0)==0xff){//нажатие элемента в интерфейсе |
if (state==0) state = 1; | if (state==0) state = 1; | ||
else state = 0; | else state = 0; | ||
| − | setStatus(142:99,state);// | + | setStatus(142:99,state);//для корректного отображения в интерфейсе |
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | === | + | ===Пример виртуального устройства "лампа с диммированием"=== |
<syntaxhighlight lang="xml" line> | <syntaxhighlight lang="xml" line> | ||
<item addr="142:99" length="2" name="Lamp" sub-type="dimer-lamp" type="virtual"/> | <item addr="142:99" length="2" name="Lamp" sub-type="dimer-lamp" type="virtual"/> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | Скрипт обработки нажатия | |
<syntaxhighlight lang="cpp" line> | <syntaxhighlight lang="cpp" line> | ||
| − | u8 | + | u8 dim = 0; |
| − | V-ID/ | + | |
| − | { | + | V-ID/Dimmer{ |
| − | + | if (opt(0)==0xff) | |
| − | + | setStatus(Dimmer,{1,dim}); | |
| − | + | else if (opt(0)==0xfe){ | |
| − | + | dim=opt(1); | |
| − | + | setStatus(Dimmer,{1,dim}); | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 14:30, 7 November 2025
Пример описания в XML
1<item addr="333:132" name="sensor" type="virtual" sub-type="sensor" dim="%" length="2"/>
2<item addr="333:145" name="Text" type="virtual" sub-type="text" length="0"/>
Параметры
| Название | Тип и диапазон | Описание |
|---|---|---|
| sub-type | перечисление | sensor – виртуальный датчик text – виртуальный датчик текстового типа (UTF8), длина должна быть равна 0 long-text – виртуальное поле текстового типа (UTF8), длина должна быть равна 0 Устройства, которым нужен скрипт для отслеживания статуса (см. пример под таблицей): лампа, лампа с диммированием, rgb-подсветка, жалюзи, ворота, ворота 120, жалюзи 120 prf – с отформатированным набором статусов, описание ниже |
| length* | число | размер статуса, байт 0 – динамический размер (явный для элементов типа «sub-type=text») |
| dim | символ | Символ, добавляемый в конце значения виртуального датчика (например, % или С) |
* – обязательные поля
Пример виртуального устройства "лампа"
1<item addr="142:99" length="1" name="Lamp" sub-type="lamp" type="virtual"/>
Обработка нажатия в скрипте
1u8 state = 0;
2V-ID/142:99 {
3 if (opt(0)==0xff){//нажатие элемента в интерфейсе
4 if (state==0) state = 1;
5 else state = 0;
6 setStatus(142:99,state);//для корректного отображения в интерфейсе
7 }
8}
Пример виртуального устройства "лампа с диммированием"
1<item addr="142:99" length="2" name="Lamp" sub-type="dimer-lamp" type="virtual"/>
Скрипт обработки нажатия
1u8 dim = 0;
2
3V-ID/Dimmer{
4 if (opt(0)==0xff)
5 setStatus(Dimmer,{1,dim});
6 else if (opt(0)==0xfe){
7 dim=opt(1);
8 setStatus(Dimmer,{1,dim});
9 }
10}