Обогащение сообщений для передачи данных с устройств в облако через центр Интернета вещей

Обогащение сообщений — это возможность Центра Интернета вещей помечать сообщения дополнительными сведениями перед отправкой их в назначенную конечную точку. Одной из причин для использования обогащений сообщений является включение данных, с помощью которых можно упростить последующую обработку. Например, обогащение сообщений телеметрии устройства тегом двойника может снизить нагрузку на клиентов, вызванную вызовами API двойника для получения этой информации.

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

Обогащение сообщения содержит три ключевых элемента:

  • Имя или ключ обогащения

  • Значение

  • Одна или несколько конечных точек , для которых необходимо применить обогащение.

Ключ является строкой. Ключ может содержать только буквенно-цифровые символы или эти специальные символы: дефис (-), подчеркивание (_) и период (.).

Значение может быть любым из следующих примеров:

  • Любая статическая строка. Динамические значения, такие как условия, логика, операции и функции, не допускаются. Например, если вы разрабатываете приложение SaaS, используемое несколькими клиентами, можно назначить идентификатор каждому клиенту и сделать его доступным в приложении. Когда приложение запускается, Центр Интернета вещей метит сообщения телеметрии устройства с идентификатором клиента, что позволяет обрабатывать сообщения по-разному для каждого клиента.

  • Имя Центра Интернета вещей, отправляющего сообщение. Это значение $iothubname.

  • Сведения из двойника устройства, например его путь. Примерами будут $twin.tags.field и $twin.tags.latitude.

    Замечание

    В настоящее время поддерживаются только переменные $iothubname, $twin.tags, $twin.properties.desired и $twin.properties.reported для обогащения сообщений. Кроме того, для обогащения поддерживаются только примитивные типы. Сообщения не могут быть обогащены типами объектов.

Обогащения сообщений добавляются в качестве свойств приложения в сообщения, отправленные выбранным конечным точкам.

Применение обогащений

Сообщения могут поступать из любого источника данных, поддерживаемого маршрутизацией сообщений Центра Интернета вещей, включая следующие примеры:

  • данные телеметрии устройства, такие как температура или давление
  • Уведомления об изменении двойника устройства [изменения в двойнике устройства]
  • События жизненного цикла устройства, например при создании или удалении устройства

Вы можете добавить улучшения к сообщениям, которые отправляются во встроенную конечную точку Центра Интернета вещей, или к сообщениям, которые направляются в пользовательские конечные точки, такие как хранилище BLOB-объектов Azure, очередь служебной шины или тема служебной шины.

Вы также можете добавить обогащения в сообщения, которые публикуются в Event Grid, сначала создав подписку с типом сообщений телеметрии устройства. На основе этой подписки мы создадим маршрут по умолчанию в Центре Интернета вещей Azure для телеметрии. Этот маршрут может обрабатывать все ваши подписки на Event Grid. Затем можно настроить обогащения для конечной точки с помощью вкладки Обогащение сообщений в разделе маршрутизации сообщений центра Интернета вещей. Сведения о реагировании на события с помощью Event Grid см. в разделе Реагирование на события IoT Hub с использованием Event Grid для запуска действий.

Обогащения применяются для каждой конечной точки. Если указать пять обогащений для определенной конечной точки, все сообщения, поступающие в эту конечную точку, помечены одинаковыми пятью обогащениями.

Обогащения можно настроить с помощью следующих методов:

Метод Команда
Портал Портал Azure
Дополнительные сведения см. в руководстве по использованию обогащения сообщений Центра Интернета вещей Azure.
Azure CLI (Интерфейс командной строки для Azure) az iot hub: обогащение сообщений
Azure PowerShell Add-AzIotHubMessageEnrichment

Добавление обогащений в сообщения не добавляет задержки в маршрутизации сообщений.

Чтобы протестировать обогащения сообщений, см. Руководство: Использование обогащений сообщений в Azure IoT Hub

Ограничения

  • Вы можете добавить до 10 обогащений на центр Интернета вещей для этих центров в стандартном или базовом уровне. Для центров Интернета вещей на бесплатном уровне можно добавить до двух обогащений.

  • В некоторых случаях значение помечается указанным путем в двойнике устройства, если вы дополняете сообщение значением, связанным с тегом или свойством в двойнике устройства. Например, если для значения обогащения задано значение $twin.tags.field, сообщения помечены строкой "$twin.tags.field", а не значением этого поля из двойника. Это поведение происходит в следующих случаях:

    • Центр Интернета вещей находится на базовом уровне. Центры Интернета вещей уровня "Базовый" не поддерживают двойники устройств.

    • Ваш центр Интернета вещей на стандартном уровне, но путь к двойнику устройства, используемый для вычисления обогащения, не существует. Например, если в качестве значения обогащения указано $twin.tags.location, а двойник не имеет свойства location в тегах, то сообщение помечено строкой "$twin.tags.location".

    • Ваш IoT-хаб находится на стандартном уровне, но путь двойника устройства, используемый для значения обогащения, разрешается в объект, а не простое свойство. Например, если для значения обогащения задано значение $twin.tags.location, а свойство расположения под тегами — это объект, содержащий дочерние свойства, например {"building": 43, "room": 503}, сообщение помечено строкой "$twin.tags.location".

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

  • Общий размер сообщения, включая обогащения, не может превышать 256 КБ. Если размер сообщения превышает 256 КБ, центр Интернета вещей удаляет сообщение. Метрики Центра Интернета Вещей можно использовать для выявления и устранения ошибок при потере сообщений. Например, можно отслеживать несовместимые сообщения телеметрии (d2c.telemetry.egress.invalid) в метриках маршрутизации. Дополнительные сведения см. в статье "Мониторинг Центра Интернета вещей Azure".

  • Обогащения сообщений не применяются к событиям изменения цифровых двойников.

  • Модули не наследуют теги двойников от соответствующих устройств. Обогащения сообщений, поступающих из модулей устройств (например, из модулей IoT Edge), должны использовать теги двойников, заданные в двойнике модуля.

Ценообразование

Обогащения сообщений доступны без дополнительной платы. В настоящее время плата взимается при отправке сообщения в Центр Интернета вещей. Плата взимается только один раз за это сообщение, даже если оно отправляется на разные конечные точки.

Дальнейшие шаги

Дополнительные сведения о маршрутизации сообщений в Центр Интернета вещей см. в следующих статьях: