Примеры вычислений
Узел атрибута Initiate в IoT Logic поддерживает широкий спектр вычислений через Navixy IoT Logic Expression Language. Это руководство содержит практические примеры распространённых вычислений, которые помогут вам извлечь максимальную ценность из ваших данных IoT.
Важные замечания
При создании вычислений учитывайте следующие моменты:
Корректность имён атрибутов: Убедитесь, что вы используете правильные имена атрибутов в вычислениях. Вы можете найти существующие имена атрибутов с помощью Data Stream Analyzer, или вставлять их с помощью gУправление атрибутами используя автозаполнение.
Корректность данных: Убедитесь, что ваши выражения корректно обрабатывают возможные значения null или недействительные показания
Влияние на производительность: Сложные вычисления с большим количеством вложенных функций могут повлиять на скорость обработки при данных с высокой частотой
Математические ограничения: Функции, такие как логарифм и квадратный корень, требуют положительных входных значений
Обращения к истории: При использовании индексированных значений (например,
value('param', 1, 'valid')), убедитесь, что у вас достаточно исторических данных и используйте полный синтаксис выражения
Базовые вычисления
Преобразования единиц
Преобразование измерений между разными единицами — одна из наиболее распространённых операций в обработке данных IoT.
Преобразование скорости (км/ч в mph)
can_speed/1.609Практическое применение: Это преобразование стандартизирует данные о скорости транспортного средства для регионов, использующих имперскую систему мер. Выполняя это вычисление в IoT Logic, а не в последующих приложениях, вы обеспечиваете согласованность во всех системах, потребляющих данные.
Преобразование температуры (Цельсий в Фаренгейты)
temperature * 1.8 + 32Практическое применение: Это преобразование делает показания температуры понятными для пользователей, более привыкших к шкале Фаренгейта. Особенно полезно для многонациональных организаций, работающих в регионах с разными стандартами измерений.
Вычисление разностей
Сравнение текущих показаний с предыдущими значениями помогает выявлять изменения и тренды в ваших данных.
Обнаружение изменения температуры
temperature - value('temperature', 1, 'valid')Практическое применение: Это вычисление помогает обнаруживать резкие колебания температуры, которые могут указывать на проблемы с оборудованием или изменения условий окружающей среды. Создав отдельный атрибут для этой разности, вы можете настроить оповещения о внезапных изменениях без сложной обработки на стороне потребителей данных.
Временные вычисления
Временные вычисления помогают понять поведение устройства во времени и измерять операционные паттерны.
Нахождение времени, прошедшего между последними валидными показаниями
srvTime('avl_25', 0, 'valid') - srvTime('avl_25', 1, 'valid')Практическое применение: Это вычисление измеряет интервал между последовательными передачами данных, что может помочь выявить проблемы с коммуникацией или проверить, что устройства передают данные с ожидаемой частотой. Этот пример показывает вычисление между двумя последними валидными показаниями, но может быть настроен для работы с любыми двумя историческими значениями.
Преобразование временной метки в читаемый формат
dtFormat(genTime('can_fuel_1', 0, 'all'))Практическое применение: Преобразование Unix-временных меток в формат ISO 8601 делает данные более читабельными в журналах и отчетах. Этот формат широко поддерживается инструментами анализа и базами данных, что упрощает интеграцию с другими системами.
Продвинутые математические функции
IoT Logic поддерживает сложные математические операции посредством встроенных математических функций.
Округление значений
Округлить температуру до ближайшего целого
math:round(value('temperature_2', 0, 'valid'))Практическое применение: Округление полезно, когда точная точность не требуется или когда нужно снизить шум в показаниях датчиков. Например, округление данных окружающей среды может быть достаточным для общего мониторинга климата и при этом снижать требования к хранению. Эта функция также полезна при создании категорий или диапазонов значений (например, группировка показаний температуры по 5-градусным интервалам).
Логарифмические вычисления
Натуральный логарифм значения
math:log(value('temperature_2', 0, 'valid'))Практическое применение: Логарифмические преобразования особенно полезны для:
Сжатия данных, охватывающих несколько порядков величины, в более управляемый диапазон
Преобразования экспоненциальных зависимостей в линейные для облегчения анализа
Работы с определёнными типами датчиков, имеющими логарифмическую характеристику отклика
Вычислений уровней звука, где децибелы являются логарифмическими единицами
Измерений pH при экологическом мониторинге
Операции квадратного корня
Вычислить квадратный корень показания
math:sqrt(value('temperature_2', 0, 'valid'))Практическое применение: Функции квадратного корня полезны для:
Преобразования между мощностью и амплитудой в электрических измерениях
Вычисления стандартных отклонений в статистическом анализе данных датчиков
Определения значений среднеквадратичного отклонения (RMS) для электрических параметров
Вычисления расстояний в многомерном пространстве (например, трилатерация для позиционирования)
Нормализации определённых типов данных датчиков
Комбинированные операции
Вы можете создавать ещё более сложные вычисления, комбинируя несколько функций и операций.
Геометрическое среднее с округлением
math:round(math:sqrt(value('temperature_1', 0, 'valid') * value('temperature_2', 0, 'valid')))Практическое применение: Это вычисление рассчитывает геометрическое среднее показаний двух температурных датчиков и округляет результат для получения более аккуратного значения. Геометрическое среднее часто более уместно, чем арифметическое, при работе с темпами, отношениями или измерениями, где естественным способом объединения значений является умножение.
Стандартизированное вычисление значения
(value('sensor_reading', 0, 'valid') - value('sensor_min', 0, 'valid')) / (value('sensor_max', 0, 'valid') - value('sensor_min', 0, 'valid')) * 100Практическое применение: Это нормализует показание датчика в процентную шкалу от 0 до 100%, что позволяет проводить стандартизированные сравнения между разными датчиками с различными диапазонами. Это особенно полезно для создания унифицированных дашбордов или настройки оповещений на основе относительных значений, а не абсолютных измерений.
Последнее обновление
Это было полезно?