7809
правок
Fizikdaos (обсуждение | вклад) |
Fizikdaos (обсуждение | вклад) |
||
Строка 747: | Строка 747: | ||
== Пользовательские поля в интерфейсе == <!--T:135--> | == Пользовательские поля в интерфейсе == <!--T:135--> | ||
<!--T: | [[File:Sample-custom-config-1.png|300px|thumb|right|Пример конфигурации]] | ||
[[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--> |