Difference between revisions of "Virtual/ru"

From Larnitech wiki page
Jump to navigation Jump to search
(Created page with "===Параметры===")
 
(6 intermediate revisions by the same user not shown)
Line 11: Line 11:
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
!Name!!type and variety!!description
+
!Название!!Тип и диапазон!!Описание
 
|-
 
|-
|sub-type||enum||sensor – virtual sensor<br><br>text – virtual sensor of text type (UTF8), length is to be equal to 0<br>long-text – virtual field of text type (UTF8), length is to be equal to 0<br>Devices that need script to track the status (see the example below the table):<br>lamp, dimer-lamp, rgb-lamp, jalousie, gate, gate120, jalousie120<br>prf – with formatted set of status, the description isbelow
+
|sub-type||перечисление||sensor – виртуальный датчик<br><br>text – виртуальный датчик текстового типа (UTF8), длина должна быть равна 0<br>long-text – виртуальное поле текстового типа (UTF8), длина должна быть равна 0<br>Устройства, которым нужен скрипт для отслеживания статуса (см. пример под таблицей):<br>лампа, лампа с диммированием, rgb-подсветка, жалюзи, ворота, ворота 120, жалюзи 120 <br>prf – с отформатированным набором статусов, описание ниже
 
|-
 
|-
|length*||number||status size, bytes<br>0 – dynamic size (obvious for the elements of "sub-type=text" type)
+
|length*||число||размер статуса, байт<br>0 – динамический размер (явный для элементов типа «sub-type=text»)
 
|-
 
|-
|dim||symbol||Symbol added to the end of virtual sensor value (for example, % or С)
+
|dim||символ||Символ, добавляемый в конце значения виртуального датчика (например, % или С)
 
|}
 
|}
<nowiki>*</nowiki> – required fields
+
<nowiki>*</nowiki> – обязательные поля
  
===Example of virtual device "lamp"===
+
===Пример виртуального устройства "лампа"===
  
 
<syntaxhighlight lang="xml" line>
 
<syntaxhighlight lang="xml" line>
Line 27: Line 27:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The processing of pressing in the script
+
Обработка нажатия в скрипте
  
 
<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){//pressing the element in the interface
+
     if (opt(0)==0xff){//нажатие элемента в интерфейсе
 
         if (state==0) state = 1;
 
         if (state==0) state = 1;
 
         else state = 0;
 
         else state = 0;
         setStatus(142:99,state);//for correct displaying in the interface
+
         setStatus(142:99,state);//для корректного отображения в интерфейсе
 
     }
 
     }
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===Example of virtual device "dimmable lamp"===
+
===Пример виртуального устройства "лампа с диммированием"===  
 
<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>
  
The script  processing of stroke
+
Скрипт обработки нажатия
 
<syntaxhighlight lang="cpp" line>
 
<syntaxhighlight lang="cpp" line>
 
u8 state[2] = {0,0};
 
u8 state[2] = {0,0};

Latest revision as of 13:24, 3 February 2022

Other languages:
English • ‎русский

Пример описания в 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 state[2] = {0,0};
 2V-ID/142:99
 3{
 4    if (opt(0)==0xff){
 5        if (state[0]==0) state[0] = 1;
 6        else state[0] = 0;
 7    }else (opt(0)==0xfe){
 8     state[0]=state[0];
 9    }else {
10     state[0]=opt(0);
11    }
12 
13    if(opt(1)==0xfe){
14     state[1]=state[1];
15    }else {
16  state[1]=opt(1);
17    }
18    setStatus(142:99,state);  
19}