Плагин Formulas
Вычисления для полей моделей: назначение, включение, типы входов и проверка результата.
Что делает Formulas
Formulas вычисляет проверенные выражения для полей активных моделей: например, среднее двух показаний или логическое условие. Он не подключается к оборудованию и не запрашивает для вычислений прямой доступ к сети, брокеру или файлам. Модели без полей formula не требуют этого плагина.
Подготовьте экземпляр
Поле formula зависит от точного пакета и версии поставщика. Если нужный экземпляр остановлен, отсутствует, не прошёл проверку доверия или имеет другую версию, зависимое вычисление блокируется с диагностикой.
- Установите совместимый пакет Formulas и проверьте его версию, доверие и разрешение в лицензии.
- В «Экземпляры» создайте один экземпляр Formulas. Его глобальная форма настроек пустая: выражения и источники задаются не здесь.
- Запустите экземпляр и дождитесь рабочего состояния. Затем с нужными правами откройте «УСЕПИ» → «Формулы».
Настройте формулу
Выражение вводят в редакторе, а не загружают в пустые настройки экземпляра. У Formulas нет кнопки импорта карты Bridge. Скачиваемый TXT ниже — памятка для ввода; тестовый JSON в справочнике предназначен для разработчиков и не является файлом импорта формулы или устройства.
- В «УСЕПИ» → «Формулы» нажмите «Создать формулу», заполните заголовок и описание. Введите (A + B) / 2: переменные A и B появятся из выражения, отдельный список вручную не создаётся.
- Назначьте A и B тип number и выберите результат number. Нажмите «Проверить», исправьте ошибки и дождитесь успешного автоматического сохранения. Проверка выражения и сохранение — разные состояния.
- В шаблоне подготовьте поле formula. В редакторе устройства перетащите сохранённую формулу из правой панели в это поле, затем задайте каждый вход константой или источником подходящего типа.
Как устроена формула
Выражение задаёт вычисление, имена входов — его переменные, типы входов — допустимые значения, а тип результата — number или boolean. Заголовок служит подписью и не заменяет имя переменной. A и a — разные входы; используйте латинские буквы, цифры и подчёркивание, начиная с буквы или подчёркивания, до 64 символов.
В самой формуле нет MQTT-топика, адреса сервера или пути датчика. Их выбирают при привязке входов устройства. Один и тот же расчёт можно использовать с разными источниками без изменения выражения.
(A + B) / 2| Настройка | Для среднего двух показаний |
|---|---|
| Выражение | (A + B) / 2 |
| Вход A | Тип number; в устройстве тестовая константа 10. |
| Вход B | Тип number; в устройстве тестовая константа 20. |
| Результат | Тип number; ожидаемое значение 15. |
Готовые примеры
Сначала повторите пример с константами, затем назначьте живые источники. Типы и единицы измерения входов проверяйте отдельно: Formulas не угадывает физическую величину и не переводит единицы автоматически.
| Задача и выражение | Входы и тип результата | Проверка |
|---|---|---|
| Среднее: (A + B) / 2 | A, 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 после включения трансляции.
- Проверьте расчёт на известных входах: A = 10 и B = 20 должны дать 15. После привязки живых данных отдельно сравните источники и результат.
- Проверьте все входы и сохранение устройства. Для расчёта активной модели отдельно включите трансляцию; создание выражения само по себе не начинает сбор или публикацию.
- Измените A с 10 на 30 при B = 20: ожидаемый результат 25. Проверьте обновление поля и полной модели, а не только зелёный статус экземпляра.
Типы и ограничения
Входы поддерживают number, text и boolean; результат допускает number или boolean. Разрешены арифметика, сравнения, логические операторы, min, max, floor, ceil, round, abs и if. Циклы, присваивания и неизвестные функции не поддерживаются.
Тип входа должен совпадать с объявленным типом переменной. Для числового входа выбирайте number и явно передавайте число, не полагаясь на распознавание строк. Числа вычисляются с точностью binary64; целые больше 2^53 могут терять точность. Неконечный результат возвращает ошибку, а не корректное показание.
Изменение и повторное использование
Устройство хранит снимок выбранной формулы с выражением, типами и точной зависимостью от плагина. Правка общей формулы не меняет этот снимок незаметно: примените нужную ревизию к полю устройства явно и повторно проверьте входы и результат.
При импорте устройства с формулой нужны его точный совместимый пакет, доверие и работающий экземпляр. Экспорт устройства и тестовый JSON для разработчиков — разные файлы; не подменяйте один другим.
Ошибки и остановка
Остановка или удаление экземпляра не удаляет сохранённые формулы, но делает зависимые вычисления недоступными. Перед действием проверьте последствия для устройств и рабочих экранов; после восстановления подходящего экземпляра проверьте результат снова.
Удаление пакета из библиотеки является отдельным действием с проверкой зависимостей. Установка другого выпуска сама по себе не переносит формулы на новую версию.
| Симптом | Что проверить |
|---|---|
| Нет раздела «Формулы» | Пакет в библиотеке, доверие, запущенный экземпляр, лицензию и права пользователя. |
| Выражение не сохраняется | Синтаксис, типы всех входов и результата, допустимые функции и индикатор сохранения. |
| Нет нового результата | Все привязки входов, реальные значения, трансляцию устройства и диагностику вычисления. |
| Правка общей формулы не изменила устройство | Выбранный в устройстве снимок: новую ревизию применяют явно. |