К содержимому
BlueTraktor
BlueTraktor · Обзор и работа с системой

Плагин Formulas

Вычисления для полей моделей: назначение, включение, типы входов и проверка результата.

Что делает Formulas

Formulas вычисляет проверенные выражения для полей активных моделей: например, среднее двух показаний или логическое условие. Он не подключается к оборудованию и не запрашивает для вычислений прямой доступ к сети, брокеру или файлам. Модели без полей formula не требуют этого плагина.

Подготовьте экземпляр

Поле formula зависит от точного пакета и версии поставщика. Если нужный экземпляр остановлен, отсутствует, не прошёл проверку доверия или имеет другую версию, зависимое вычисление блокируется с диагностикой.

  1. Установите совместимый пакет Formulas и проверьте его версию, доверие и разрешение в лицензии.
  2. В «Экземпляры» создайте один экземпляр Formulas. Его глобальная форма настроек пустая: выражения и источники задаются не здесь.
  3. Запустите экземпляр и дождитесь рабочего состояния. Затем с нужными правами откройте «УСЕПИ» → «Формулы».

Настройте формулу

Выражение вводят в редакторе, а не загружают в пустые настройки экземпляра. У Formulas нет кнопки импорта карты Bridge. Скачиваемый TXT ниже — памятка для ввода; тестовый JSON в справочнике предназначен для разработчиков и не является файлом импорта формулы или устройства.

  1. В «УСЕПИ» → «Формулы» нажмите «Создать формулу», заполните заголовок и описание. Введите (A + B) / 2: переменные A и B появятся из выражения, отдельный список вручную не создаётся.
  2. Назначьте A и B тип number и выберите результат number. Нажмите «Проверить», исправьте ошибки и дождитесь успешного автоматического сохранения. Проверка выражения и сохранение — разные состояния.
  3. В шаблоне подготовьте поле formula. В редакторе устройства перетащите сохранённую формулу из правой панели в это поле, затем задайте каждый вход константой или источником подходящего типа.

Как устроена формула

Выражение задаёт вычисление, имена входов — его переменные, типы входов — допустимые значения, а тип результата — number или boolean. Заголовок служит подписью и не заменяет имя переменной. A и a — разные входы; используйте латинские буквы, цифры и подчёркивание, начиная с буквы или подчёркивания, до 64 символов.

В самой формуле нет MQTT-топика, адреса сервера или пути датчика. Их выбирают при привязке входов устройства. Один и тот же расчёт можно использовать с разными источниками без изменения выражения.

text
(A + B) / 2
НастройкаДля среднего двух показаний
Выражение(A + B) / 2
Вход AТип number; в устройстве тестовая константа 10.
Вход BТип number; в устройстве тестовая константа 20.
РезультатТип number; ожидаемое значение 15.

Готовые примеры

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

Задача и выражениеВходы и тип результатаПроверка
Среднее: (A + B) / 2A, B: number; результат number.10 и 20 → 15.
Масштаб: Raw * Scale + OffsetВсе входы number; результат number.125, 0.1 и 0 → 12.5.
Условие: Enabled && (Pressure >= Limit)Enabled: boolean; Pressure, Limit: number; результат boolean.true, 8 и 7 → true; Enabled = false → false.
Выбор по тексту: if(Status == "run", Power, 0)Status: text; Power: number; результат number.Status = "run", Power = 42 → 42; Status = "stop" → 0.
Константа: 5 / 2Входов нет; результат number.2.5, не целочисленное деление.

Проверьте результат

Проверка выражения не подтверждает наличие живых данных. Общая формула хранит выражение и типы, а конкретное устройство задаёт источники её входов.

Входящие измерения, вычисление полей и трансляция модели являются отдельными этапами. Общая инструкция MQTT объясняет, как передать данные в USEPI, связать поля устройства и получить полную модель в топике TRAKTOR после включения трансляции.

  1. Проверьте расчёт на известных входах: A = 10 и B = 20 должны дать 15. После привязки живых данных отдельно сравните источники и результат.
  2. Проверьте все входы и сохранение устройства. Для расчёта активной модели отдельно включите трансляцию; создание выражения само по себе не начинает сбор или публикацию.
  3. Измените A с 10 на 30 при B = 20: ожидаемый результат 25. Проверьте обновление поля и полной модели, а не только зелёный статус экземпляра.

Типы и ограничения

Входы поддерживают number, text и boolean; результат допускает number или boolean. Разрешены арифметика, сравнения, логические операторы, min, max, floor, ceil, round, abs и if. Циклы, присваивания и неизвестные функции не поддерживаются.

Тип входа должен совпадать с объявленным типом переменной. Для числового входа выбирайте number и явно передавайте число, не полагаясь на распознавание строк. Числа вычисляются с точностью binary64; целые больше 2^53 могут терять точность. Неконечный результат возвращает ошибку, а не корректное показание.

Изменение и повторное использование

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

При импорте устройства с формулой нужны его точный совместимый пакет, доверие и работающий экземпляр. Экспорт устройства и тестовый JSON для разработчиков — разные файлы; не подменяйте один другим.

Ошибки и остановка

Остановка или удаление экземпляра не удаляет сохранённые формулы, но делает зависимые вычисления недоступными. Перед действием проверьте последствия для устройств и рабочих экранов; после восстановления подходящего экземпляра проверьте результат снова.

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

СимптомЧто проверить
Нет раздела «Формулы»Пакет в библиотеке, доверие, запущенный экземпляр, лицензию и права пользователя.
Выражение не сохраняетсяСинтаксис, типы всех входов и результата, допустимые функции и индикатор сохранения.
Нет нового результатаВсе привязки входов, реальные значения, трансляцию устройства и диагностику вычисления.
Правка общей формулы не изменила устройствоВыбранный в устройстве снимок: новую ревизию применяют явно.