Формула отображения — это JavaScript-выражение, которое преобразует значение параметра
устройства перед тем, как оно будет показано на рабочем поле. Датчик может присылать
число в одних единицах, а на экране вы увидите уже преобразованное значение в других.
Реальные данные в базе не изменяются.
Где задаётся формула
Формулу можно задать в панели свойств устройства:
- Для обычных датчиков/актуаторов — в панели «Свойства» найдите поле «Формула отображения» рядом с нужным параметром
- Для виртуальных устройств (VirtualNumber, VirtualToggle, VirtualGraph) — в попапе свойств, раздел «Формула»
- Для аналогового стрелочного прибора (analogArrow) — в его свойствах
Поле «Формула отображения» в панели свойств
Синтаксис формул
Формула — это JavaScript-выражение. Доступны три переменные:
| Переменная | Что содержит | Пример |
|---|---|---|
value |
Текущее значение параметра | 23.7, "on", true |
payloadData |
Объект со всеми параметрами устройства | { temperature: 23.7, humidity: 45 } |
paramName |
Имя параметра, к которому применяется формула | "temperature" |
⚠️ Правило точки с запятой
Система автоматически добавляет
✅ Правильно:
❌ Даст undefined:
Если в формуле есть
Система автоматически добавляет
return только для однострочных формул
без точки с запятой:✅ Правильно:
value * 1.8 + 32❌ Даст undefined:
value * 1.8 + 32;Если в формуле есть
; или несколько строк — напишите return явно:
return value * 1.8 + 32;
Максимальная длина формулы: 2000 символов. Синтаксические ошибки отображаются
рядом с полем ввода — используйте встроенный тестер для проверки.
Примеры формул
Округление до 1 знака после запятой
Math.round(value * 10) / 10
Датчик присылает 23.7412 → на экране 23.7
Перевод Цельсия в Фаренгейт
value * 1.8 + 32
Датчик присылает 23°C → на экране 73.4°F
Добавление единицы измерения к числу
value + " °C"
Датчик присылает 23 → на экране 23 °C
Перевод логического значения в текст
value > 0 ? "Включено" : "Выключено"
Датчик присылает 1 → на экране Включено
Перевод Вт в кВт с округлением
Math.round(value / 100) / 10 + " кВт"
Датчик присылает 2350 Вт → на экране 2.4 кВт
Комбинирование нескольких параметров
// Показываем температуру и влажность вместе return (payloadData.temperature || "?") + "°C / " + (payloadData.humidity || "?") + "%";
На экране: 23°C / 45% — одним значением под иконкой
Условное добавление контекста
if (payloadData.humidity) {
return value + "°C (влажность " + payloadData.humidity + "%)";
}
return value + "°C";
Если влажность есть — показывает оба значения, если нет — только температуру
Масштабирование давления (Па → кПа)
Math.round(value / 100) / 10 + " кПа"
Перевод уровня заряда батареи в процент
Math.min(100, Math.max(0, Math.round(value))) + "%"
Тестирование формулы
В поле ввода формулы есть встроенный тестер:
- Введите формулу
- Нажмите кнопку «Тест» (или «Проверить»)
- Система применит формулу к текущему значению устройства и покажет результат
- Если формула содержит синтаксическую ошибку, будет показано сообщение об ошибке
Тестируйте формулу перед сохранением. При ошибке выполнения формулы
система автоматически показывает исходное значение без изменений —
данные на рабочем поле не пропадут.
Важные особенности
- Только отображение — формула не изменяет данные в базе данных. Исторические графики строятся по исходным данным.
- Результат может быть строкой — вы можете вернуть текст, а не только число. Он отобразится под иконкой как обычное значение.
- Доступны все стандартные функции JavaScript — Math, String, Array, JSON и другие встроенные объекты работают в формуле.
- Ошибка не блокирует систему — при ошибке выполнения формулы система продолжает работу, показывая исходное значение.
Используйте формулы отображения для удобного представления данных датчиков: конвертации единиц, добавления подписей, комбинирования нескольких параметров в одну строку.