Пример использования потока
Этот пример показывает, как настроить поток, который собирает данные с IoT-устройств, выполняет вычисления для получения бизнес-значимых метрик и передаёт обогащённые данные во внешнюю систему. В примере используется линейная схема потока, которую можно адаптировать под различные отраслевые сценарии использования.
Бизнес-сценарий
В этом сценарии организация развернула IoT-трекеры на своих активах и должна обрабатывать данные от этих устройств для бизнес-аналитики. Организация получает следующие параметры напрямую от своих трекинговых устройств:
speed: скорость транспортного средства в километрах в час
temperature: температура окружающей среды в градусах Цельсия
odometer: пройденное расстояние в километрах
ignition: состояние зажигания двигателя (1 = включено, 0 = выключено)
fuel_level: текущее значение уровня топлива
pressure_psi: значение давления в PSI
voltage: напряжение аккумулятора в вольтах
throttle: положение педали акселератора по CAN-шине (0–255)
fuel_level_1: значение уровня топлива в первом баке
fuel_level_2: значение уровня топлива во втором баке
Организации необходимо:
Собирать необработанные телеметрические данные с устройств, чтобы сохранять полную историю работы активов
Преобразовывать единицы измерения в соответствии со стандартным форматом отчётности организации (имперские единицы) для согласованности с существующими бизнес-системами
Вычислять временные метрики, отражающие шаблоны использования, чтобы оптимизировать использование активов и графики технического обслуживания
Создавать производные метрики, чтобы получать операционные инсайты, которые оборудование не предоставляет напрямую
Передавать обогащённые данные во внешнюю систему анализа для интеграции с платформами бизнес-аналитики
Отправлять неизменённые сырые данные в ГМ Телематика для мониторинга
Этот поток преобразует исходные данные устройств в формат, который напрямую поддерживает принятие бизнес-решений, при этом сохраняя целостность исходных измерений.
Шаги настройки потока
Выполните следующие шаги, чтобы создать комплексный поток преобразования и передачи данных:
Создайте новый поток
Нажмите кнопку Новый поток в верхней части интерфейса IoT Logic
Введите Asset Telemetry Processing в качестве имени потока
Добавьте описание: «Собирает данные устройств, вычисляет производные метрики и передаёт их на аналитическую платформу.»
Убедитесь, что переключатель Поток включён активирован
Нажмите Сохранить, чтобы создать поток
Настройте источник данных
Перетащите узел Источник данных из левого меню в рабочую область
Дважды щёлкните по узлу, чтобы открыть панель его настройки
В поле Имя узла введите Объекты
Выберите устройства, которые нужно включить в этот поток, из отфильтрованного списка
Для этого примера выберите как минимум два устройства с похожими возможностями
Нажмите Применить, чтобы сохранить конфигурацию узла
Настройте базовые преобразования данных
Перетащите узел Вычисление Атрибута из левого меню в рабочую область
Соедините узел Источник данных с этим узлом Вычисление Атрибута
Дважды щёлкните по узлу, чтобы открыть его настройки
В поле Имя узла введите Преобразование единиц
Создайте следующие атрибуты для преобразования единиц измерения (во всех примерах используется краткий синтаксис — со ссылкой на последние значения атрибутов без проверки валидности):
Добавьте новый атрибут для преобразования скорости (км/ч в мили/ч):
Имя атрибута:
speed_mphЗначение:
speed/1.609
Добавьте новый атрибут для преобразования температуры (градусы Цельсия в градусы Фаренгейта):
Имя атрибута:
temperature_FЗначение:
temperature*1.8 + 32
Добавьте новый атрибут для преобразования расстояния (километры в мили):
Имя атрибута:
distance_milesЗначение:
odometer/1.609
Добавьте новый атрибут для преобразования давления (PSI в бар):
Имя атрибута:
pressure_barЗначение:
pressure_psi * 0.06895
Нажмите Применить, чтобы сохранить конфигурацию узла
Пояснения к вычислениям, выполняемым на этом этапе, см. в разделе «Основные преобразования единиц измерения».
Создайте расширенные вычисляемые метрики
Перетащите ещё один узел Вычисление Атрибута из левого меню в рабочую область
Соедините первый узел Вычисление Атрибута с новым узлом
Дважды щёлкните по узлу, чтобы открыть его настройки
В поле Имя узла введите Расширенные вычисления
Создайте следующие атрибуты для расширенных метрик:
Добавьте атрибут для определения изменения температуры:
Имя атрибута: 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
Нажмите Применить, чтобы сохранить конфигурацию узла
Пояснения к вычислениям, выполняемым на этом этапе, см. в разделе «Вычисление расширенных метрик».
Настройте узел Передачи Данных
Перетащите узел узел Передачи Данных из левого меню в рабочую область
Соедините второй узел Вычисление Атрибута с этим узлом узел Передачи Данных
Нажмите на узел, чтобы открыть его настройки
Укажите следующие параметры:
Тип конечной точки: MQTT-конечная точка
Имя конечной точки: Analytics Platform
Протокол: 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: введите учётные данные, если это применимо
Нажмите Применить, чтобы сохранить конфигурацию узла
Добавьте конечную точку по умолчанию
Перетащите узел узел Передачи Данных из левого меню в рабочую область
В поле Тип конечной точки выберите Конечная точка по умолчанию
Нажмите Сохранить, чтобы применить конфигурацию узла
Соедините узел Asset Trackers (Источник данных) с ним
Это гарантирует, что сырые данные будут отправляться в ГМ Телематика напрямую с устройств, без каких-либо преобразований и обогащения.
Сохраните и протестируйте поток
Ваша итоговая конфигурация будет выглядеть так:

Нажмите на кнопку Сохранить поток на панели узлов, чтобы применить конфигурацию.
Используйте Анализ данных для мониторинга входящих данных, чтобы проверить:
Устройства отправляют данные в поток
Вычисления работают ожидаемым образом
Данные передаются в систему назначения
Например, давайте проверим, что преобразования скорости корректно рассчитываются для грузовика. Для этого в Анализе данных выберите устройство Volvo и атрибуты speed и speed_mph:

Всё в порядке! Данные поступают и успешно преобразуются.
Объяснение преобразований данных
Давайте рассмотрим ключевые вычисления, используемые в этом потоке.
Базовые преобразования единиц
Первый узел Вычисление Атрибута выполняет простые преобразования единиц измерения:
Скорость: преобразует км/ч в мили/ч путём деления на 1.609
Температура: преобразует градусы Цельсия в градусы Фаренгейта по формуле °F = °C × 1.8 + 32
Расстояние: преобразует километры в мили путём деления на 1.609
Давление: преобразует PSI в бар путём умножения на 0.06895, что делает данные совместимыми с международными стандартами измерения давления
Эти преобразования обеспечивают согласованность со стандартными форматами отчётности и делают данные сразу пригодными для анализа. Преобразование единиц особенно полезно для международных организаций, работающих в регионах с разными системами измерения.
Вычисление расширенных метрик
Второй узел Вычисление Атрибута выполняет более сложные вычисления:
Определение изменения температуры: вычисляет разницу между текущим и предыдущим значением температуры, чтобы выявлять резкие изменения. Это помогает обнаруживать проблемы с оборудованием, такие как отказ холодильной установки в транспортных средствах или неисправности 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:
Стандартизация: преобразует специфичные для устройства показания в стандартизированные бизнес-метрики
Обогащение: создаёт новые значимые метрики, которые недоступны напрямую с датчиков устройства
Преобразование: меняет единицы измерения в соответствии с требованиями бизнес-отчётности
Исторический контекст: использует предыдущие показания для вычисления метрик на основе трендов
Определение состояния: создаёт категориальные значения на основе нескольких входных данных от датчиков
Такое сочетание возможностей преобразует сырые данные устройств в прикладную бизнес-аналитику, напрямую поддерживая принятие операционных решений при сохранении целостности исходных измерений.