Пример конфигурации потока
В этом примере показано, как настроить поток, который собирает данные с IoT-устройств, выполняет вычисления для получения бизнес-значимых метрик и пересылает обогащённые данные во внешнюю систему. В примере используется линейный шаблон потока, который можно адаптировать под различные отраслевые сценарии.
Бизнес-сценарий
В этом сценарии организация установила IoT-трекеры на своих активах и должна обрабатывать данные с этих устройств для бизнес-аналитики. Организация получает следующие параметры непосредственно от своих трекеров:
speed: Скорость транспортного средства в километрах в часtemperature: Температура окружающей среды в градусах Цельсияodometer: Пройденное расстояние в километрахignition: Статус зажигания двигателя (1 = включено, 0 = выключено)fuel_level: Текущее измерение уровня топливаpressure_psi: Показание давления в PSIvoltage: Напряжение батареи в вольтахthrottle: Положение педали акселератора с CAN-шины (0-255)fuel_level_1: Измерение уровня топлива в первом бакеfuel_level_2: Измерение уровня топлива во втором баке
Организации необходимо:
Собирать необработанные телеметрические данные с устройств для ведения полного журнала работы активов
Преобразовывать единицы измерения, чтобы соответствовать их стандартному формату отчётности (имперские единицы) для согласованности с существующими бизнес-системами
Вычислять метрики, основанные на времени, которые указывают шаблоны использования для оптимизации использования активов и графиков обслуживания
Создавать производные метрики для получения эксплуатационных инсайтов, которые не предоставляются напрямую оборудованием
Пересылать обогащённые данные во внешнюю аналитическую систему для интеграции с платформами бизнес-аналитики
Отправлять неизменённые необработанные данные в Navixy для мониторинга
Этот поток преобразует необработанные данные устройств в формат, который напрямую поддерживает принятие бизнес-решений, при этом сохраняя целостность исходных измерений.
Шаги настройки потока
Выполните следующие шаги, чтобы построить комплексный поток трансформации и пересылки данных:
Создать новый поток
Нажмите New flow кнопку в верхней части интерфейса IoT Logic
Введите Asset Telemetry Processing в качестве имени потока
Добавьте описание: "Собирает данные устройств, вычисляет производные метрики и пересылает их на аналитическую платформу."
Убедитесь, что переключатель Flow enabled включен
Нажмите Сохранить чтобы создать поток

Настройка источника данных
Перетащите Источник данных узел из левого меню на рабочее поле
Дважды щёлкните по узлу, чтобы открыть панель его конфигурации
В разделе Имя узла тип Asset Trackers
Выберите устройства, которые будут включены в этот поток, из отфильтрованного списка
Для этого примера выберите как минимум два устройства с похожими возможностями
Нажмите Применить чтобы сохранить конфигурацию узла

Настройте базовые преобразования данных
Перетащите ещё один Initiate Attribute узел из левого меню на рабочее поле
Подключите Источник данных узел к этому Initiate Attribute узлу
Дважды щёлкните по узлу, чтобы открыть его конфигурацию
В разделе Имя узла тип Преобразования единиц
Создайте следующие атрибуты для преобразования единиц (все примеры используют короткий синтаксис, ссылаясь на последние значения атрибутов без проверки валидности):
Добавьте новый атрибут для преобразования скорости (км/ч в миль/ч): 1. Имя атрибута: speed_mph 2. Значение:
speed/1.609Добавьте новый атрибут для преобразования температуры (Цельсий в Фаренгейт): 1. Имя атрибута: temperature_F 2. Значение:
temperature*1.8 + 32Добавьте новый атрибут для преобразования расстояния (километры в мили): 1. Имя атрибута: distance_miles 2. Значение:
odometer/1.609Добавьте новый атрибут для преобразования давления (PSI в бар): 1. Имя атрибута: pressure_bar 2. Значение:
pressure_psi * 0.06895
Нажмите Применить чтобы сохранить конфигурацию узла

Создание продвинутых вычисляемых метрик
Перетащите ещё один Initiate Attribute узел из левого меню на рабочее поле
Подключите первый Initiate Attribute узел к этому новому
Дважды щёлкните по узлу, чтобы открыть его конфигурацию
В разделе Имя узла тип Advanced calculations
Создайте следующие атрибуты для продвинутых метрик:
Добавьте атрибут для обнаружения изменения температуры:
Имя атрибута: temperature_change
Значение:
value('temperature', 0, 'valid') - value('temperature', 1, 'valid')genTime('temperature', 0, 'valid')
Добавьте атрибут для определения времени, прошедшего между двумя последними считываниями:
Имя атрибута: time_between_readings_ms
Значение:
srvTime('speed', 0, 'valid') - srvTime('speed', 1, 'valid')Время генерации:
genTime('speed', 0, 'valid')
Добавьте атрибут для округления температуры до ближайшего целого:
Имя атрибута: temperature_rounded
Значение:
math:round(value('temperature', 0, 'valid'))
Добавьте атрибут для расчёта стандартизированного значения (нормализация уровня топлива в 0-100%):
Имя атрибута: fuel_level_percent
Значение:
(value('fuel_level', 0, 'valid') - 0) / (100 - 0) * 100
Добавьте атрибут для расчёта процента заряда батареи:
Имя атрибута: battery_percentage
Значение:
(value('voltage', 0, 'valid') - 11) / (14 - 11) * 100
Добавьте атрибут для расчёта положения дроссельной заслонки:
Имя атрибута: throttle_percentage
Значение:
value('throttle', 0, 'valid') / 255 * 100
Добавьте атрибут для среднего уровня топлива с нескольких датчиков:
Имя атрибута: avg_fuel_level
Значение:
(value('fuel_level_1', 0, 'valid') + value('fuel_level_2', 0, 'valid')) / 2
Нажмите Применить чтобы сохранить конфигурацию узла

Настройте конечную точку вывода
Перетащите ещё один Выходной конечной точке узел из левого меню на рабочее поле
Подключите второй Initiate Attribute узел к этому Выходной конечной точке узлу
Щёлкните по узлу, чтобы открыть его конфигурацию
Настройте следующие параметры:
Тип конечной точки: MQTT endpoint
Имя конечной точки: Analytics Platform
Протокол: по умолчанию Navixy Generic Protocol (JSON)
IP/Домен: Введите адрес целевой системы (например, "analytics.example.com")
Порт: 8883 (по умолчанию для MQTT, можно оставить пустым)
Включить SSL: включите переключатель
Версия MQTT: 5.0
MQTT Client ID: asset-telemetry-client
Топик: telemetry/assets/raw
QoS: 1
Аутентификация MQTT: Да (если требуется целевой системой)
Логин и пароль MQTT: Введите учётные данные, если применимо
Нажмите Создавать чтобы сохранить конфигурацию узла

Добавить Default Output endpoint
Перетащите ещё один Выходной конечной точке узел из левого меню на рабочее поле
В разделе Тип конечной точки выберите Default Endpoint
Нажмите Сохранить чтобы применить конфигурацию узла
Подключите Asset Trackers (Источник данных) узел к нему
Это гарантирует, что необработанные данные отправляются в Navixy непосредственно с устройств без каких-либо преобразований и обогащений.
Используйте Data Stream Analyzer (DSA) чтобы контролировать входящие данные и проверить:
Устройства отправляют данные в поток
Вычисления работают как ожидалось
Данные пересылаются в целевую систему Например, давайте проверим, что преобразования скорости рассчитываются правильно для грузовика. Для этого в DSA выберите Volvo устройство и атрибуты speed и speed_mph:

Всё в порядке! Данные получены и успешно преобразованы.
Объяснение преобразований данных
Рассмотрим ключевые вычисления, используемые в этом потоке.
Basic unit conversions
Первый Initiate attribute node выполняет простые преобразования единиц:
Скорость: Преобразует км/ч в миль/ч делением на 1.609
Температура: Преобразует Цельсий в Фаренгейт по формуле °F = °C × 1.8 + 32
Расстояние: Преобразует километры в мили делением на 1.609
Давление: Преобразует PSI в бар умножением на 0.06895, делая его совместимым с международными стандартами измерения давления
Эти преобразования обеспечивают согласованность со стандартными форматами отчётности и делают данные сразу готовыми для анализа. Преобразования единиц особенно полезны для многонациональных организаций, работающих в регионах с разными стандартами измерений.
Вычисления продвинутых метрик
Второй Initiate attribute node выполняет более сложные вычисления:
Обнаружение изменения температуры: Вычисляет разницу между текущим и предыдущим значениями температуры для выявления резких изменений. Это помогает обнаруживать неисправности оборудования, такие как сбои в системе охлаждения транспортных средств или проблемы с HVAC в зданиях. Например, резкий рост температуры на 5°C в рефрижераторном контейнере может указывать на отказ системы охлаждения, требующий немедленного вмешательства.
Время генерации: Использование
genTime('temperature', 0, 'valid')здесь критично, потому что сохраняет точную метку времени, когда показание температуры было сгенерировано устройством, обеспечивая точный временной анализ изменений температуры.Время сервера: Значение по умолчанию
now()автоматически фиксирует момент, когда сервер получил данные. Поскольку нам не требуется изменять эту метку времени, мы можем оставить это поле пустым при конфигурации.
Время между считываниями: Измеряет интервал между последовательными передачами данных, сравнивая серверные метки времени. Это вычисление помогает выявлять проблемы с коммуникацией или подтверждать, что устройства отчитываются с ожидаемой частотой. Нерегулярные интервалы могут указывать на проблемы с подключением, тогда как стабильные задержки могут свидетельствовать о перегрузке сети или проблемах конфигурации устройства.
Округление значений: Применяет математическое округление к показаниям температуры, сокращая десятичную точность до целых чисел. Это упрощает визуализацию данных и составление отчётов, одновременно снижая требования к хранению исторических данных. Округлённые значения особенно полезны для отображения на панелях и пороговых оповещений, где десятичная точность не требуется.
Время генерации: Указание
genTime('speed', 0, 'valid')привязывает эти метаданные непосредственно к метке времени исходного показания, что делает возможным анализ как временного интервала, так и момента его возникновения.Время сервера: Значение по умолчанию
now()автоматически фиксирует момент, когда сервер получил данные. Поскольку нам не требуется изменять эту метку времени, мы можем оставить это поле пустым при конфигурации.
Расчёт стандартизированного значения: Нормализует необработанные показания датчиков до процентной шкалы (0-100%). Эта стандартизация облегчает сравнение показаний между различными типами датчиков и моделями транспортных средств. Для управления парком это позволяет единообразно отчётывать уровень топлива независимо от конкретной реализации датчика в каждой модели, обеспечивая единые оповещения о низком уровне топлива и анализ расхода.
Расчёт процента заряда батареи: Нормализует показания напряжения батареи (диапазон 11В–14В) до шкалы 0–100% для упрощения мониторинга. Например, показание 12.5В будет нормализовано до 50%, предоставляя интуитивно понятный индикатор состояния батареи для разных типов транспортных средств.
Расчёт положения дроссельной заслонки: Преобразует необработанные данные положения дроссельной заслонки (диапазон 0–255) с CAN-шины транспортного средства в процентную шкалу. Эта стандартизация помогает операторам быстро оценивать поведение водителя и производительность транспортного средства без необходимости интерпретировать необработанные значения датчика.
Средний уровень топлива с нескольких датчиков: Объединяет показания двух отдельных датчиков топлива для получения более точной общей оценки уровня топлива. Это особенно ценно для транспортных средств со сложной формой баков или с несколькими баками, где один датчик может давать ненадёжные показания из‑за перелива топлива при движении.
Краткое описание примера потока
Эта конфигурация потока демонстрирует несколько ключевых возможностей IoT Logic:
Стандартизация: Преобразует специфичные для устройств показания в стандартизированные бизнес-метрики
Обогащение: Создаёт новые, значимые метрики, которые недоступны напрямую от датчиков устройства
Трансформация: Меняет единицы измерения в соответствии с требованиями бизнес-отчётности
Исторический контекст: Использует предыдущие показания для расчёта метрик на основе трендов
Определение статуса: Создаёт категориальные значения на основе нескольких входных данных датчиков
Это сочетание возможностей преобразует необработанные данные устройств в практическую бизнес-аналитику, напрямую поддерживая операционные решения при сохранении целостности исходных измерений.
Последнее обновление
Это было полезно?
