Перейти к содержанию

Навигация

Rule Examples: различия между версиями

Нет описания правки
Строка 747: Строка 747:
== Пользовательские поля в интерфейсе == <!--T:135-->
== Пользовательские поля в интерфейсе == <!--T:135-->


<!--T:136-->
Чтобы дать пользователю возможность вводить точные значения параметров (уставки) из интерфейса, можно воспользоваться [[Создание_редактируемых_пользовательских_полей_в_веб-интерфейсе| инструкцией]].


<!--T:137-->
[[File:Sample-custom-config-1.png|300px|thumb|right|Пример конфигурации]]
Более подробно и с примером - в [https://support.wirenboard.com/t/kak-na-wb5-wb6-sozdat-pole-dlya-vvoda-ustavok-i-peredat-znachenie-v-pravila/2180 теме на портале техподдержки].
[[File:Sample-custom-config-2.png|300px|thumb|right|Пример скрипта]]
Задача - надо в интерфейсе контроллера Wiren Board вводить уставки  температуры и влажности.
 
<!--T:3-->
Простой способ, это сделать в defineVirtualDevice() поле, ему сделать readonly: false. И оно появится в веб-интерфейсе в Devices как редактируемое, а значение будет сохраняться в движке правил.
Но сложную настройку с менюшками и вариантами так не сделать.
 
Правильный, но сложный способ — создать новую вкладку в разделе Configs с редактируемыми полями параметров установок .
 
Потребуются три файла:
 
1. Схема вывода html странички в разделе Configs : /usr/share/wb-mqtt-confed/schemas/test-config.schema.json
<syntaxhighlight lang="bash">
{
"type":"object",
"title":"Test configuration",
"description":"Long description configuration",
 
"configFile": {
"path":"/etc/test-config.conf",
"service":"wb-rules"
},
 
"properties": {
"temperature_setpoint": {
"type":"number",
"title":"Temperature Setpoint (Degrees C)",
"default": 25,
"propertyOrder": 1,
"minimum": 5,
"maximum": 40
},
 
"humidity_setpoint": {
"type":"number",
"title":"Humidity Setpoint (RH, %)",
"default": 60,
"propertyOrder": 2,
"minimum": 10,
"maximum": 95
}
},
"required": ["temperature_setpoint", "humidity_setpoint"]
}
</syntaxhighlight>
 
2. Описание конфигурации по умолчанию (при сохранении формы в веб интерфейсе, значения запишутся в этот файл) : /etc/test-config.conf
<syntaxhighlight lang="bash">
{
"temperature_setpoint": 60,
"humidity_setpoint": 14
}
</syntaxhighlight>
 
3. Скрипт, обновляющий конфиг : /mnt/data/etc/wb-rules/test-config-script.js
 
<syntaxhighlight lang="bash">
var config = readConfig("/etc/test-config.conf");
 
log("temperature setpoint is: {}".format(config.temperature_setpoint));
</syntaxhighlight>
 
Последний файл можно в том числе редактировать из веб-интерфейса на вкладке Scripts.
 
В json файлах описаны схемы вывода html странички браузером, по общепринятому стандарту отображения. Описание ключей тут: json-schema.org.
 
После создания файлов, нужно выполнить рестарт сервисов
 
<syntaxhighlight lang="bash">
service wb-mqtt-confed restart
 
service wb-rules restart
</syntaxhighlight>
 
При нажатии кнопки Save в веб-интерфейсе, будет перезапускаться сервис wb-rules, а значения установок - записываться в правила.


== Сложные правила с расписаниями == <!--T:138-->
== Сложные правила с расписаниями == <!--T:138-->