Как на WB5/WB6 создать поле для ввода уставок и передать значение в правила

Предупреждение: способ предполагает жесткий рестарт правил при смене уставок, который в целом нежелателен. Инструкция не проверялась на движке 2.0.

Значения уставок сохраняются в файл .conf в постоянную память контроллера и будут доступны даже после перезагрузки.

Вот так выглядит конфигурация с возможностью сохранения значений в веб-интерфейсе:

Что для этого делать:

  1. Создать описание структуры странички
    здесь: /usr/share/wb-mqtt-confed/schemas/new-config.schema.json

  2. Создать файл со значениями переменных
    здесь: /etc/new-config.conf

  3. Загрузить конфигурацию в правилах и извлечь переменные.
    правила тут: /mnt/data/etc/wb-rules или http://<ip контроллера>/#/scripts

Примеры конфигураций
Просто поместите эти файлы в нужном месте контроллера и проверьте результат в веб-интерфейсе:
п.1 greenhouse-config-room1.schema.json (2,6 КБ)
п.2 greenhouse-config-room1.conf (376 Байты)

Комментарии к схемам
Во-первых, чтобы не ошибиться со скобочками, желательно проверять схемы в редакторе json с подсветкой. Можно таким: https://jsoneditoronline.org/

Пункт 1: структура конфигурации

{
"type": "object",
"title": "Уставки: Комната 1",
"description": "лучше не менять уставки без большой необходимости",

*Можно подключить свои стили css, не обязательно*
"css":"greenhouse-css",

"configFile": {
*Путь к файлу со значениями пользователя, обязательно*
"path": "/etc/greenhouse-config-room1.conf",

*Что будет подвешено на кнопку Save - в данном случае, рестарт правил*
"service": "wb-rules"
},

*Перечислим уставки, блоки разделяются запятыми*
"properties": {

*Название переменной.  По этому имени потом обратимся к ней из правил.*
"temperature_setpoint_up_1": { 

*number, string и тп - тип переменной, обязательно*
"type": "number", 

*Подпись к уставке, которую видит оператор, не обязательно*
"title": "Температура - верхняя граница (Градусы C)", 

*Значение по умолчанию*
"default": 25, 

*Порядок вывода на экран, важно если на схеме много всего*
"propertyOrder": 2, 

*Валидация вводимых значений*
"minimum": 5, 
"maximum": 40
},
"lights_on_1": {
"type": "string",
"title": "Время включения света (24ч-формат)",

*Можно задать шаблон поля ввода с помощью регулярного выражения. Не получится ввести что-то отличающееся от шаблона, в данном случае это строка вида 99:99.*
"pattern": "[0-9][0-9]:[0-9][0-9]$",
"default": "10:00",
"propertyOrder": 7
}
},
*Перечислим все переменные, без которых нельзя сохранить конфигурацию. Лучше все делать обязательными.*
"required": [
"temperature_setpoint_up_1",
"lights_on_1"
]
}

Пункт 2: содержание конфигурации
На старте вписать значения по умолчанию. При изменении из веб-интерфейса, значения в этом файле будут меняться. Если названия переменных здесь и в п.1 не совпадают, конфиг не загрузится.

{
    "lights_on_1": "06:05",
    "temperature_setpoint_up_1": 20
}

Пункт 3: вызов из правил
В веб-интерфейсе в разделе Scripts нужно создать файл и назвать Имя.js . Без указания расширения не будет работать.

Файл начать со строк:

var config_1 = readConfig("/etc/greenhouse-config-room1.conf");
T = config_1.temperature_setpoint_up_1;
L = config_1.lights_on_1;

Все, переменными T и L можно пользоваться.

5 Likes

Узнал новое для себя слово “уставка”. Спасибо )

SetPoint - аналог “Уставки”

Добрый вечер. Расскажите, пожалуйста, какие модули прописать в css, чтобы изменить расположение/ширину поля задаваемого параметра? :slight_smile:

Правой кнопкой по элементу -> Просмотреть код


Затем наводите на имя файла и видите путь.

3 Likes