🔢

Формулы отображения

JavaScript-выражения для преобразования значений перед показом на экране
Формула отображения — это JavaScript-выражение, которое преобразует значение параметра устройства перед тем, как оно будет показано на рабочем поле. Датчик может присылать число в одних единицах, а на экране вы увидите уже преобразованное значение в других. Реальные данные в базе не изменяются.

Где задаётся формула

Формулу можно задать в панели свойств устройства:

  • Для обычных датчиков/актуаторов — в панели «Свойства» найдите поле «Формула отображения» рядом с нужным параметром
  • Для виртуальных устройств (VirtualNumber, VirtualToggle, VirtualGraph) — в попапе свойств, раздел «Формула»
  • Для аналогового стрелочного прибора (analogArrow) — в его свойствах
Поле формулы отображения в свойствах устройства
Поле «Формула отображения» в панели свойств

Синтаксис формул

Формула — это JavaScript-выражение. Доступны три переменные:

ПеременнаяЧто содержитПример
value Текущее значение параметра 23.7, "on", true
payloadData Объект со всеми параметрами устройства { temperature: 23.7, humidity: 45 }
paramName Имя параметра, к которому применяется формула "temperature"
⚠️ Правило точки с запятой
Система автоматически добавляет 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))) + "%"

Тестирование формулы

В поле ввода формулы есть встроенный тестер:

  1. Введите формулу
  2. Нажмите кнопку «Тест» (или «Проверить»)
  3. Система применит формулу к текущему значению устройства и покажет результат
  4. Если формула содержит синтаксическую ошибку, будет показано сообщение об ошибке
Тестируйте формулу перед сохранением. При ошибке выполнения формулы система автоматически показывает исходное значение без изменений — данные на рабочем поле не пропадут.

Важные особенности

  • Только отображение — формула не изменяет данные в базе данных. Исторические графики строятся по исходным данным.
  • Результат может быть строкой — вы можете вернуть текст, а не только число. Он отобразится под иконкой как обычное значение.
  • Доступны все стандартные функции JavaScript — Math, String, Array, JSON и другие встроенные объекты работают в формуле.
  • Ошибка не блокирует систему — при ошибке выполнения формулы система продолжает работу, показывая исходное значение.

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

← Назад к справке