Виртуальное устройство
Пример описания в 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}