Пример конфигурации потока

В этом примере показано, как настроить поток, который собирает данные с IoT-устройств, выполняет вычисления для получения бизнес-значимых метрик и пересылает обогащённые данные во внешнюю систему. В примере используется линейный шаблон потока, который можно адаптировать под различные отраслевые сценарии.

Бизнес-сценарий

В этом сценарии организация установила IoT-трекеры на своих активах и должна обрабатывать данные с этих устройств для бизнес-аналитики. Организация получает следующие параметры непосредственно от своих трекеров:

  • speed: Скорость транспортного средства в километрах в час

  • temperature: Температура окружающей среды в градусах Цельсия

  • odometer: Пройденное расстояние в километрах

  • ignition: Статус зажигания двигателя (1 = включено, 0 = выключено)

  • fuel_level: Текущее измерение уровня топлива

  • pressure_psi: Показание давления в PSI

  • voltage: Напряжение батареи в вольтах

  • throttle: Положение педали акселератора с CAN-шины (0-255)

  • fuel_level_1: Измерение уровня топлива в первом баке

  • fuel_level_2: Измерение уровня топлива во втором баке

Организации необходимо:

  1. Собирать необработанные телеметрические данные с устройств для ведения полного журнала работы активов

  2. Преобразовывать единицы измерения, чтобы соответствовать их стандартному формату отчётности (имперские единицы) для согласованности с существующими бизнес-системами

  3. Вычислять метрики, основанные на времени, которые указывают шаблоны использования для оптимизации использования активов и графиков обслуживания

  4. Создавать производные метрики для получения эксплуатационных инсайтов, которые не предоставляются напрямую оборудованием

  5. Пересылать обогащённые данные во внешнюю аналитическую систему для интеграции с платформами бизнес-аналитики

  6. Отправлять неизменённые необработанные данные в Navixy для мониторинга

Этот поток преобразует необработанные данные устройств в формат, который напрямую поддерживает принятие бизнес-решений, при этом сохраняя целостность исходных измерений.

Шаги настройки потока

Выполните следующие шаги, чтобы построить комплексный поток трансформации и пересылки данных:

1

Создать новый поток

  1. Нажмите New flow кнопку в верхней части интерфейса IoT Logic

  2. Введите Asset Telemetry Processing в качестве имени потока

  3. Добавьте описание: "Собирает данные устройств, вычисляет производные метрики и пересылает их на аналитическую платформу."

  4. Убедитесь, что переключатель Flow enabled включен

  5. Нажмите Сохранить чтобы создать поток

Create flow dialog with filled-in name and description, Flow enabled toggle on
2

Настройка источника данных

  1. Перетащите Источник данных узел из левого меню на рабочее поле

  2. Дважды щёлкните по узлу, чтобы открыть панель его конфигурации

  3. В разделе Имя узла тип Asset Trackers

  4. Выберите устройства, которые будут включены в этот поток, из отфильтрованного списка

  • Для этого примера выберите как минимум два устройства с похожими возможностями

  1. Нажмите Применить чтобы сохранить конфигурацию узла

Data source node configuration with selected devices
3

Настройте базовые преобразования данных

  1. Перетащите ещё один Initiate Attribute узел из левого меню на рабочее поле

  2. Подключите Источник данных узел к этому Initiate Attribute узлу

  3. Дважды щёлкните по узлу, чтобы открыть его конфигурацию

  4. В разделе Имя узла тип Преобразования единиц

  5. Создайте следующие атрибуты для преобразования единиц (все примеры используют короткий синтаксис, ссылаясь на последние значения атрибутов без проверки валидности):

    1. Добавьте новый атрибут для преобразования скорости (км/ч в миль/ч): 1. Имя атрибута: speed_mph 2. Значение: speed/1.609

    2. Добавьте новый атрибут для преобразования температуры (Цельсий в Фаренгейт): 1. Имя атрибута: temperature_F 2. Значение: temperature*1.8 + 32

    3. Добавьте новый атрибут для преобразования расстояния (километры в мили): 1. Имя атрибута: distance_miles 2. Значение: odometer/1.609

    4. Добавьте новый атрибут для преобразования давления (PSI в бар): 1. Имя атрибута: pressure_bar 2. Значение: pressure_psi * 0.06895

  6. Нажмите Применить чтобы сохранить конфигурацию узла

First Initiate attribute node showing the unit conversion attributes

Для объяснений вычислений, введённых на этом шаге, см. Basic unit conversions

4

Создание продвинутых вычисляемых метрик

  1. Перетащите ещё один Initiate Attribute узел из левого меню на рабочее поле

  2. Подключите первый Initiate Attribute узел к этому новому

  3. Дважды щёлкните по узлу, чтобы открыть его конфигурацию

  4. В разделе Имя узла тип Advanced calculations

  5. Создайте следующие атрибуты для продвинутых метрик:

    1. Добавьте атрибут для обнаружения изменения температуры:

      1. Имя атрибута: temperature_change

      2. Значение: value('temperature', 0, 'valid') - value('temperature', 1, 'valid')

      3. genTime('temperature', 0, 'valid')

    2. Добавьте атрибут для определения времени, прошедшего между двумя последними считываниями:

      1. Имя атрибута: time_between_readings_ms

      2. Значение: srvTime('speed', 0, 'valid') - srvTime('speed', 1, 'valid')

      3. Время генерации: genTime('speed', 0, 'valid')

    3. Добавьте атрибут для округления температуры до ближайшего целого:

      1. Имя атрибута: temperature_rounded

      2. Значение: math:round(value('temperature', 0, 'valid'))

    4. Добавьте атрибут для расчёта стандартизированного значения (нормализация уровня топлива в 0-100%):

      1. Имя атрибута: fuel_level_percent

      2. Значение: (value('fuel_level', 0, 'valid') - 0) / (100 - 0) * 100

    5. Добавьте атрибут для расчёта процента заряда батареи:

      1. Имя атрибута: battery_percentage

      2. Значение: (value('voltage', 0, 'valid') - 11) / (14 - 11) * 100

    6. Добавьте атрибут для расчёта положения дроссельной заслонки:

      1. Имя атрибута: throttle_percentage

      2. Значение: value('throttle', 0, 'valid') / 255 * 100

    7. Добавьте атрибут для среднего уровня топлива с нескольких датчиков:

      1. Имя атрибута: avg_fuel_level

      2. Значение: (value('fuel_level_1', 0, 'valid') + value('fuel_level_2', 0, 'valid')) / 2

  6. Нажмите Применить чтобы сохранить конфигурацию узла

Second Initiate attribute node showing the advanced calculated metrics

Для объяснений вычислений, введённых на этом шаге, см. Вычисления продвинутых метрик.

5

Настройте конечную точку вывода

  1. Перетащите ещё один Выходной конечной точке узел из левого меню на рабочее поле

  2. Подключите второй Initiate Attribute узел к этому Выходной конечной точке узлу

  3. Щёлкните по узлу, чтобы открыть его конфигурацию

  4. Настройте следующие параметры:

    1. Тип конечной точки: MQTT endpoint

    2. Имя конечной точки: Analytics Platform

    3. Протокол: по умолчанию Navixy Generic Protocol (JSON)

    4. IP/Домен: Введите адрес целевой системы (например, "analytics.example.com")

    5. Порт: 8883 (по умолчанию для MQTT, можно оставить пустым)

    6. Включить SSL: включите переключатель

    7. Версия MQTT: 5.0

    8. MQTT Client ID: asset-telemetry-client

    9. Топик: telemetry/assets/raw

    10. QoS: 1

    11. Аутентификация MQTT: Да (если требуется целевой системой)

    12. Логин и пароль MQTT: Введите учётные данные, если применимо

  5. Нажмите Создавать чтобы сохранить конфигурацию узла

Output endpoint node configuration with filled-in connection settings
6

Добавить Default Output endpoint

  1. Перетащите ещё один Выходной конечной точке узел из левого меню на рабочее поле

  2. В разделе Тип конечной точки выберите Default Endpoint

  3. Нажмите Сохранить чтобы применить конфигурацию узла

  4. Подключите Asset Trackers (Источник данных) узел к нему

Это гарантирует, что необработанные данные отправляются в Navixy непосредственно с устройств без каких-либо преобразований и обогащений.

7

Сохраните и протестируйте поток

Ваша конечная конфигурация будет выглядеть так:

Complete flow configuration with all nodes connected in IoT Logic workspace

Нажмите Сохранить поток кнопка на Панели узлов чтобы сохранить конфигурацию потока.

Объяснение преобразований данных

Рассмотрим ключевые вычисления, используемые в этом потоке.

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:

  1. Стандартизация: Преобразует специфичные для устройств показания в стандартизированные бизнес-метрики

  2. Обогащение: Создаёт новые, значимые метрики, которые недоступны напрямую от датчиков устройства

  3. Трансформация: Меняет единицы измерения в соответствии с требованиями бизнес-отчётности

  4. Исторический контекст: Использует предыдущие показания для расчёта метрик на основе трендов

  5. Определение статуса: Создаёт категориальные значения на основе нескольких входных данных датчиков

Это сочетание возможностей преобразует необработанные данные устройств в практическую бизнес-аналитику, напрямую поддерживая операционные решения при сохранении целостности исходных измерений.

Последнее обновление

Это было полезно?