How to write rules: различия между версиями

Нет описания правки
Строка 2: Строка 2:
<translate>
<translate>
{{DISPLAYTITLE: Как писать правила}}
{{DISPLAYTITLE: Как писать правила}}
== Виртуальное устройство defineVirtualDevice ==
Правила делятся на два типа: непосредственно правила (defineRule) и виртуальные устройства (defineVirtualDevice).
Виртуальные устройства - это появляющиеся в веб-интерфейсе новые элементы управления - например, кнопка-выключатель, которая на самом деле выключает два устройства одновременно. Она не привязана напрямую ни к какому физическому устройству, а действия при её нажатии определяются написанным вами скриптом.
При написании скрипта вы можете создать виртуальное устройство для включения/выключения тех или иных управляющих алгоритмов и установки их параметров.
<!--T:20-->
<syntaxhighlight lang="ecmascript">
defineVirtualDevice("wb-1", {
  title: "Отопление",
  cells: {
    "Температура": {
    type: "range",
    max: 24,
    value: 20,
    },
    "Вкл.": {
    type: "switch",
    value: false,
    }
  }
});
</syntaxhighlight>
=== Типы устройств (type): ===
'''switch''' — переключатель. Может принимать значения true или false. По-умолчанию доступен для изменения пользователем.
<!--T:21-->
'''wo-switch''' — переключатель, аналог switch. Может принимать значения true или false. По-умолчанию не доступен для изменения пользователем.
<!--T:22-->
'''pushbutton''' — кнопка. Может принимать значения true. По-умолчанию доступна для нажатия.
<!--T:23-->
'''range''' — ползунок. Может принимать значения от 0 до max. По-умолчанию доступен для изменения пользователем.
<!--T:24-->
'''rgb''' — специальный тип для задания цвета. Кодируется 3 числами от 0 до 255, разделенными точкой с запятой. Например „255;0;0“ задает красный цвет. По-умолчанию доступен для изменения пользователем.
<!--T:25-->
'''alarm''' — индикатор. Может принимать значения true или false.
<!--T:26-->
'''text''' — текстовое поле. По-умолчанию не доступно для редактирования пользователем.
<!--T:27-->
'''value''' — значение с плавающей точкой. По-умолчанию не доступно для редактирования пользователем.
<!--T:28-->
Так же существуют еще 14 специальных типов. Все они аналогичны value, но имеют соответствующие подписи в интерфейсе.
<!--T:29-->
{| class="wikitable"
! Type
! meta/type
! units
!value format
|-
| Temperature
| temperature
| °C
| float
|-
| Relative humidity
| rel_humidity
| %, RH
| float, 0 - 100
|-
| Atmospheric pressure
| atmospheric_pressure
| millibar (100 Pa)
| float
|-
| Precipitation rate (rainfall rate)
| rainfall
| mm per hour
| float
|-
| Wind speed
| wind_speed
| m/s
| float
|-
| Power
| power
| watt
| float
|-
| Power consumption
| power_consumption
| kWh
| float
|-
| Voltage
| voltage
| volts
| float
|-
| Water flow
| water_flow
| m^3 / hour
| float
|-
| Water total consumption
| water_consumption
| m^3
| float
|-
| Resistance
| resistance
| resistance
| float
|-
| Gas concentration
| concentration
| ppm
| float (unsigned)
|-
| Heat power
| heat_power
| Gcal / hour
| float
|-
| Heat energy
| heat_energy
| Gcal
| float
|}
<!--T:29-->
=== value: ===
Обязательное поле. При создании устройства в первый раз его значение будет установлено в значение по-умолчанию. В дальнейшем значения сохраняются в специальное хранилище в постоянной памяти и восстанавливаются при загрузке сценария.
<!--T:31-->
=== forceDefault: ===
Если необходимо каждый раз при перезагрузке скрипта восстанавливать строго определённое значение (т.е. не восстанавливать предыдущее сохранённое), нужно добавить в описание контрола поле '''forceDefault: true'''
<!--T:33-->


=== max: ===
Для параметра типа '''range''' может задавать его максимально допустимое значение.
<!--T:35-->
=== readonly: ===
Когда задано истинное значение — устройство становится не доступным для редактирования пользователем. Если надо предоставить пользователю возможность редактировать значение, следует добавить в описание '''readonly: false'''
== Типы правил defineRule  ==
== Типы правил defineRule  ==


=== whenChanged ===  
=== whenChanged ===  
Строка 180: Строка 33:
   }
   }
});
});
</syntaxhighlight>
</syntaxhighlight>


Строка 371: Строка 223:
</syntaxhighlight>
</syntaxhighlight>
<!--T:67-->
<!--T:67-->
== Виртуальное устройство defineVirtualDevice ==
Правила делятся на два типа: непосредственно правила (defineRule) и виртуальные устройства (defineVirtualDevice).
Виртуальные устройства - это появляющиеся в веб-интерфейсе новые элементы управления - например, кнопка-выключатель, которая на самом деле выключает два устройства одновременно. Она не привязана напрямую ни к какому физическому устройству, а действия при её нажатии определяются написанным вами скриптом.
При написании скрипта вы можете создать виртуальное устройство для включения/выключения тех или иных управляющих алгоритмов и установки их параметров.
<!--T:20-->
<syntaxhighlight lang="ecmascript">
defineVirtualDevice("wb-1", {
  title: "Отопление",
  cells: {
    "Температура": {
    type: "range",
    max: 24,
    value: 20,
    },
    "Вкл.": {
    type: "switch",
    value: false,
    }
  }
});
</syntaxhighlight>
=== Типы устройств (type): ===
'''switch''' — переключатель. Может принимать значения true или false. По-умолчанию доступен для изменения пользователем.
<!--T:21-->
'''wo-switch''' — переключатель, аналог switch. Может принимать значения true или false. По-умолчанию не доступен для изменения пользователем.
<!--T:22-->
'''pushbutton''' — кнопка. Может принимать значения true. По-умолчанию доступна для нажатия.
<!--T:23-->
'''range''' — ползунок. Может принимать значения от 0 до max. По-умолчанию доступен для изменения пользователем.
<!--T:24-->
'''rgb''' — специальный тип для задания цвета. Кодируется 3 числами от 0 до 255, разделенными точкой с запятой. Например „255;0;0“ задает красный цвет. По-умолчанию доступен для изменения пользователем.
<!--T:25-->
'''alarm''' — индикатор. Может принимать значения true или false.
<!--T:26-->
'''text''' — текстовое поле. По-умолчанию не доступно для редактирования пользователем.
<!--T:27-->
'''value''' — значение с плавающей точкой. По-умолчанию не доступно для редактирования пользователем.
<!--T:28-->
Так же существуют еще 14 специальных типов. Все они аналогичны value, но имеют соответствующие подписи в интерфейсе.
<!--T:29-->
{| class="wikitable"
! Type
! meta/type
! units
!value format
|-
| Temperature
| temperature
| °C
| float
|-
| Relative humidity
| rel_humidity
| %, RH
| float, 0 - 100
|-
| Atmospheric pressure
| atmospheric_pressure
| millibar (100 Pa)
| float
|-
| Precipitation rate (rainfall rate)
| rainfall
| mm per hour
| float
|-
| Wind speed
| wind_speed
| m/s
| float
|-
| Power
| power
| watt
| float
|-
| Power consumption
| power_consumption
| kWh
| float
|-
| Voltage
| voltage
| volts
| float
|-
| Water flow
| water_flow
| m^3 / hour
| float
|-
| Water total consumption
| water_consumption
| m^3
| float
|-
| Resistance
| resistance
| resistance
| float
|-
| Gas concentration
| concentration
| ppm
| float (unsigned)
|-
| Heat power
| heat_power
| Gcal / hour
| float
|-
| Heat energy
| heat_energy
| Gcal
| float
|}
<!--T:29-->
=== value: ===
Обязательное поле. При создании устройства в первый раз его значение будет установлено в значение по-умолчанию. В дальнейшем значения сохраняются в специальное хранилище в постоянной памяти и восстанавливаются при загрузке сценария.
<!--T:31-->
=== forceDefault: ===
Если необходимо каждый раз при перезагрузке скрипта восстанавливать строго определённое значение (т.е. не восстанавливать предыдущее сохранённое), нужно добавить в описание контрола поле '''forceDefault: true'''
<!--T:33-->
=== max: ===
Для параметра типа '''range''' может задавать его максимально допустимое значение.
<!--T:35-->
=== readonly: ===
Когда задано истинное значение — устройство становится не доступным для редактирования пользователем. Если надо предоставить пользователю возможность редактировать значение, следует добавить в описание '''readonly: false'''


== Сообщения в лог ==  
== Сообщения в лог ==