Форматирование виртуального устройства
Пример описания в XML
1<item addr="100:245" back-rgba="0xff7100ff" iw-="1" length="5" name="aa" prf="prf('A: %d\10B: %ds dhjhfg hdfj dfhdfh', device(100, 247).status(0) $ 7, status(1))" sub-type="prf" text-rgb="0xffffff" title-rgb="0xff00" type="virtual"/>
Параметры
Название | Тип и диапазон | Описание |
---|---|---|
iw | число; 1, 2, 3.. |
Ширина текстового поля |
back-rgba | число; 0xRRGGBBAA |
Настройка фона текстового поля. RR – насыщенность красного, 0..0хFF; GG – насыщенность зеленого, 0..0xFF; BB – насыщенность синего, 0..0xFF; AA – насыщенность фона, 0..0xFF |
text-rgb | число; 0xRRGGBB |
Настройка цвета текста. RR – насыщенность красного, 0..0хFF; GG – насыщенность зеленого, 0..0xFF; BB – насыщенность синего, 0..0xFF. |
title-rgb | число; 0xRRGGBB |
RR – насыщенность красного, 0..0хFF; GG – насыщенность зеленого, 0..0xFF; BB – насыщенность синего, 0..0xFF |
prf | строка; | Описание статуса устройства. Статус имеет формат sprintf. Размер статуса не должен превышать 256 байт. В устройстве хранятся только указанные данные, текст не сохраняется в статус. Подробное описание ниже. |
описание атрибута prf
prf="prf('TEXT %[flags][wigth][.precision]type', STATUS)"
- TEXT – отображаемый неизменяемый текст;
- flags, with, precision, type — описание форматирования статуса, см. sprintf.
- STATUS – описание статуса
- id() – идентификатор устройства, u16
- subId() — subId устройства, u8
- addr() — адрес устройства, u32
- addrString() – текстовый адрес устройства
- statusStringHex() – строка состояния устройства в шестнадцатеричном виде.
- statusString() – строка со статусом устройства
- statusString(u32 byteOffset = 0) – строка со статусом устройства со смещением byteOffset
- statusString(u32 byteOffset=0, u32 len=0) – строка со статусом устройства со смещением byteOffset и длиной len
- status() — статус устройства, i8
- status(u32 byteOffset = 0) — статус устройства со смещением byteOffset, i8
- statusU() — статус устройства, u8
- statusBit1Count() – количество бит состояния(?)
- statusRgb() — статус RGB, 0xRRGGBB
- statusU16(u32 byteOffset=0) – статус устройства, u16
- statusU32(u32 byteOffset=0) – статус устройства, u32
- statusBit(u32 byteOffset=0, u32 bitOffset=0) – состояние бита состояния со смещением bitOffset, с байтовым смещением byteOffset,
- statusBit(u32 bitOffset=0) – состояние бита состояния со смещением bitOffset
- statusBits(u32 byteOffset=0, u32 bitOffset=0, u32 len=0) – статус бита len, начиная с bitOffset байта byteOffset
- statusBits(u32 bitOffset=0, u32 len=0) – статус бита len, начиная с bitOffset
- statusFloat() — дробный статус (status/250)
- statusFloat() – беззнаковая дробная часть состояния (status/250)
- statusFloat2(u32 byteOffset=0) – статус дробный (status/256)
- statusFloat2U(u32 byteOffset=0) – беззнаковая дробь состояния (status/256) со смещением byteOffset
- statusFloat(u32 byteOffset=0) – дробный статус (status/250) со смещением byteOffset
- statusLevel() — уровень (например, диммер)
- statusFloatString() – строка с дробным статусом (status/250)
- statusFloatString(u32 byteOffset = 0) — строка с дробным статусом (status/250) со смещением byteOffset
- statusFloatString2() – строка с дробным статусом (status/256)
- statusFloatString2(u32 byteOffset=0) – строка с дробным статусом (status/256) со смещением byteOffset
Также можно указать условия, например:
prf=" prf('Text%s', status(0)?'Yes':'No')
если статус (0) равен true, будет отображаться "Text Yes", в противном случае отображается "Text No"
Или получить статус устройств. Например, есть штора 343:22 и лампа 299:1:
1prf="string a[] ={'Closed', 'Open', 'Is closing', 'Is opening'}; prf('Curtain%s\10Data %d \10Status: %s\10 String%s',a[device(343:22)->status(0)], status(0), (device(299:21)->status(0) $7)?'On':'Off',statusString(1))"
Установка статуса для такого элемента следующая: setStatus(299:201,{134,"Text"});
После установки статуса в текстовом поле будет отображаться следующее:
"Curtain is opening Data 134 Status On String Text"
"Curtain" will depend on curtain status,
"Status" will be "Off" if 0 byte with mask of 7 status 299:21 equals to zero, otherwise "Status" will be "On"