Виртуальное устройство

From Larnitech wiki page
Revision as of 14:30, 7 November 2025 by Sova (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
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 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}