Управление атрибутами
Узел Вычисление атрибута позволяет создавать, редактировать и управлять атрибутами данных на протяжении всего потока IoT Logic. В этом руководстве рассматриваются основные действия по управлению атрибутами (создание, редактирование, удаление), а также ключевые операции, включая функцию автоподстановки для создания формул.
Создание атрибутов
Вот как создать новый атрибут в узле Вычисление атрибута:
Добавление нового атрибута
Нажмите кнопку Добавить атрибут
Задайте имя атрибута
Введите название атрибута (например, “Скорость мвч”). Это имя будет отображаться в Анализе Данных и использоваться как имя пользовательского датчика в ГдеМои
Задайте формулу
Определите выражение для расчёта значения
Для ускорения используйте автоподстановку.
Короткий синтаксис используется по умолчанию для автоподставляемых атрибутов и может применяться при ручном вводе формул. Если вы обращаетесь только к последнему корректному значению, можно не использовать полную форму value() и кавычки.
Например:temperature*1.8 + 32
вместоvalue('temperature', 0, 'valid')*1.8 + 32
Завершение настройки
Нажмите Применить, чтобы сохранить конфигурацию узла
Новый атрибут будет сохранён в узле, и вычисление начнёт применяться в потоке сразу после сохранения.
Настройки времени для атрибутов
Настройки времени позволяют управлять временными метками, связанными с атрибутами:
Generation time (время генерации) — когда данные были созданы
Используйте
now()для установки текущего времени в миллисекундахИспользуйте
genTime('parameter_name', 0, 'valid'), чтобы взять время генерации самого параметра
Server time (время сервера) — когда данные были получены IoT Logic
Используйте
now()для установки текущего времени в миллисекундахИспользуйте
srvTime('parameter_name', 0, 'valid'), чтобы использовать серверное время параметра
Вы можете добавлять смещения для учёта часовых поясов, например:srvTime('can_speed', 0, 'valid') + 120000 — добавляет 2 минуты
Настройки времени важны для анализа и синхронизации данных. Правильная конфигурация времени обеспечивает сохранение хронологической целостности данных на протяжении всего потока.
Автоподстановка имён атрибутов
При создании формул вычислений необходимо ссылаться на существующие атрибуты — как от физических устройств, так и на вычисленные атрибуты из других узлов. Чтобы упростить этот процесс и избежать ошибок в написании, в IoT Logic предусмотрена функция автоподстановки.
Чтобы использовать автоподстановку при создании формул:
Нажмите на иконку в поле Формула
Выберите нужный атрибут из появившегося списка (поддерживается поиск по тексту)
Нажмите на имя атрибута, чтобы вставить его в формулу
Выбранный атрибут автоматически вставляется в готовом виде с использованием краткого синтаксиса языка выражений ГМ Телематика. Это означает, что по умолчанию используется последнее значение выбранного атрибута.
Вы можете изменить параметры при необходимости — например, указать индекс для получения исторических значений или изменить флаг валидности. Для этого нужно использовать полный синтаксис с функцией value().
Список атрибутов фильтруется на основе источников данных вашего потока и соответствует тому, что отображается в Анализе Данных.
Список автоподстановки отображает только те атрибуты, которые одновременно соответствуют всем следующим условиям:
Поддерживаются устройствами — атрибут должен поддерживаться хотя бы одним устройством, добавленным в ваш поток
Фактически передаются — устройство должно реально отправлять данные по этому атрибуту (а не просто поддерживать его теоретически)
Доступны в потоке — сюда входят как параметры устройств, так и вычисленные атрибуты из других узлов Вычисление атрибута в рамках того же потока
Пример:
Если устройство поддерживает датчики скорости и температуры, но фактически передаёт только данные скорости (например, из-за неисправного датчика температуры), в списке автоподстановки будет отображаться атрибут speed, но не temperature. Атрибут температуры появится только после того, как устройство начнёт реально передавать данные температуры, даже если оно технически поддерживает этот параметр.
Индексируемые атрибуты в автоподстановке
Некоторые атрибуты данных содержат несколько значений, индексированных внутри одного атрибута, например показания с нескольких аналоговых датчиков, подключённых к одному телематическому устройству. Чтобы использовать такие атрибуты в вычислениях, необходимо указать конкретный индекс, соответствующий нужному датчику или входу.
Например, если вам нужно использовать данные напряжения с третьего аналогового входа устройства, они будут передаваться через атрибут analog_2 (используется нумерация с нуля, где первый вход имеет индекс 0). В формуле это будет выглядеть так:value('analog_2', 0, 'valid')
Автоподстановка также учитывает этот сценарий:
Индексируемые атрибуты помечаются специальной иконкой в списке автоподстановки
В таких записях отображается доступный диапазон индексов в квадратных скобках, например
analog_[1..4]для атрибутов с несколькими значениямиПри выборе индексируемого атрибута курсор автоматически устанавливается в конец имени атрибута в кавычках, чтобы вы могли сразу ввести нужный индекс
Язык выражений
Все формулы в IoT Logic соответствуют спецификации языка выражений ГМ Телематика IoT Logic. Ниже приведена краткая справка по синтаксису.
Короткий синтаксис
Короткий вариант записи формулы обращается к последнему значению атрибута без проверки его валидности. Он удобен, когда вам не нужны исторические значения и нет необходимости фильтровать null-значения.
Функция автоподстановки использует короткий синтаксис.
Синтаксис: attribute_name
Значения по умолчанию:
Index: 0 (текущее значение)
Validation:
'all'(включает null-значения)
Например, короткая запись temperature эквивалентна полной формулеvalue('temperature', 0, 'all').
Это означает, что вы можете создавать вычисления без явного указания параметров по умолчанию:
temperature * 1.8 + 32
Полный синтаксис
Использование полного синтаксиса формулы позволяет обращаться к историческим значениям и явно задавать режим проверки валидности. Это полезно, когда необходимо использовать не последние значения и корректно обрабатывать null.
В этом случае требуется полностью задать функцию value().
Функции: value(attribute_name, index, validation)
Параметры:
Параметр | Диапазон / значения | Описание |
|---|---|---|
attribute_name | Любой допустимый атрибут | Точное имя из телеметрии устройства (может быть подставлено автоматически) |
index | 0–12 | Позиция в истории: 0 — текущее значение, 1 — предыдущее, 12 — значение 12 измерений назад |
validation | 'all' или 'valid' | 'all' — включает null (точное значение по индексу), 'valid' — исключает null (N-е корректное значение) |
Примеры
Любое предыдущее значение:
value('temperature', 1, 'all')
5-е предыдущее корректное значение:
value('speed', 5, 'valid')
Изменение температуры (используются короткий и полный синтаксис в одной формуле):
temperature - value('temperature', 1, 'all')
Дополнительные примеры формул см. в разделе Примеры вычислений.
Редактирование существующих атрибутов
Чтобы изменить существующий атрибут:
Откройте окно настройки узла, наведя курсор на узел и выбрав быстрые действия, либо дважды кликнув по нему
Найдите нужный атрибут в списке атрибутов
Внесите необходимые изменения в поля свойств: Имя атрибута, Формула или настройки времени
При необходимости повторите предыдущий шаг для других атрибутов в этом узле
Нажмите Применить, чтобы применить изменения в конфигурации узла
При редактировании атрибута изменения будут применяться только к новым данным, полученным после сохранения. Уже собранные исторические данные пересчитаны не будут.
Удаление атрибутов
Чтобы удалить атрибут, который больше не нужен:
Откройте окно настройки узла, наведя курсор на узел и выбрав быстрые действия, либо дважды кликнув по нему
Найдите нужный атрибут и нажмите кнопку удаления
Нажмите Применить, чтобы подтвердить изменения в конфигурации узла
При удалении атрибута он больше не будет рассчитываться для новых данных, но исторические данные, содержащие этот атрибут, останутся неизменными в базе данных.