Поделиться через


Реагирование на события Центра Интернета вещей с помощью сетки событий для активации действий

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

Azure Event Grid — это полностью управляемая служба, которая использует модель публикации и подписки для маршрутизации событий. Эта служба поддерживает такие службы Azure, как Функции Azure и Azure Logic Apps, и может доставлять оповещения о событиях в службы за пределами Azure с помощью веб-перехватчиков. Полный список обработчиков событий, поддерживаемых сеткой событий, см. в статье "Что такое Сетка событий Azure?".

Чтобы просмотреть видео об этой интеграции, ознакомьтесь с интеграцией Центра Интернета вещей Azure с Сеткой событий Azure.

Схема, демонстрирующая архитектуру сетки событий Azure.

Региональная доступность

Интеграция со службой "Сетка событий" доступна для центров IoT, расположенных в регионах, где поддерживается эта служба. Список последних регионов см. в разделе "Продукты", доступные по регионам.

Типы событий

Центр Интернета вещей публикует следующие типы событий:

Тип события Описание
Microsoft.Devices.DeviceCreated Публикуется при регистрации устройства в Центре Интернета вещей.
Microsoft.Devices.УстройствоУдалено Публикуется при удалении устройства из Центра Интернета вещей.
Microsoft.Devices.DeviceConnected Публикуется при подключении устройства к Центру Интернета вещей.
Microsoft.Devices.DeviceDisconnected Публикуется при отключении устройства от Центра Интернета вещей.
Microsoft.Devices.DeviceTelemetry Опубликовано при отправке сообщения телеметрии устройства в Центр Интернета вещей

Чтобы настроить события, которые будут публиковаться в каждом Центре Интернета вещей, используйте портал Azure или Azure CLI. Например, ознакомьтесь с руководством по отправке уведомлений по электронной почте о событиях Центра Интернета вещей Azure с помощью сетки событий и Logic Apps.

Схема событий

События Центра Интернета вещей содержат все сведения, необходимые для реагирования на изменения в жизненном цикле устройства. Чтобы определить событие Центра Интернета вещей, проверьте, начинается ли свойство eventType с Microsoft.Devices. Дополнительные сведения об использовании свойств событий Сетки событий см. в схеме событий Сетки событий Azure.

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

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

[{  
  "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceConnected",
  "eventTime": "2018-06-02T19:17:44.4383997Z",
  "data": {
      "deviceConnectionStateEventInfo": {
        "sequenceNumber":
          "000000000000000001D4132452F67CE200000002000000000000000000000001"
      },
    "hubName": "egtesthub1",
    "deviceId": "LogicAppTestDevice",
    "moduleId" : "DeviceModuleID",
  }, 
  "dataVersion": "1",
  "metadataVersion": "1"
}]

Схема телеметрии устройств

Сообщения телеметрии устройства должны находиться в корректном формате JSON с параметром contentType, установленным на application/json, и с параметром contentEncoding, установленным на UTF-8, в системных свойствах сообщений. В обоих свойствах регистр символов не имеет значения. Если кодировка содержимого не задана, Центр Интернета вещей записывает сообщения в кодировке base 64.

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

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

[{  
  "id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceTelemetry",
  "eventTime": "2019-01-07T20:58:30.48Z",
  "data": {
      "body": {
          "Weather": {
              "Temperature": 900
            },
            "Location": "USA"
        },
        "properties": {
            "Status": "Active"
        },
        "systemProperties": {
          "iothub-content-type": "application/json",
          "iothub-content-encoding": "utf-8",
          "iothub-connection-device-id": "d1",
          "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
          "iothub-connection-auth-generation-id": "123455432199234570",
          "iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
          "iothub-message-source": "Telemetry"
        }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

Схема, созданная устройством

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

[{
  "id": "56afc886-767b-d359-d59e-0da7877166b2",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceCreated",
  "eventTime": "2018-01-02T19:17:44.4383997Z",
  "data": {
    "twin": {
      "deviceId": "LogicAppTestDevice",
      "etag": "AAAAAAAAAAE=",
      "deviceEtag":"null",
      "status": "enabled",
      "statusUpdateTime": "0001-01-01T00:00:00",
      "connectionState": "Disconnected",
      "lastActivityTime": "0001-01-01T00:00:00",
      "cloudToDeviceMessageCount": 0,
      "authenticationType": "sas",
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      },
      "version": 2,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
          },
          "$version": 1
        }
      }
    },
    "hubName": "egtesthub1",
    "deviceId": "LogicAppTestDevice"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

Предупреждение

Данные двойника , связанные с событием создания устройства, являются конфигурацией по умолчанию и не должны полагаться на фактические authenticationType и другие свойства устройства в созданном устройстве. Для authenticationType и других свойств устройства в вновь созданном устройстве используйте API менеджера регистрации, предоставляемый в SDK Azure IoT.

Подробное описание каждого свойства см. в разделе Центр Интернета вещей Azure в качестве источника сетки событий.

Фильтровать события

Сетка событий позволяет фильтровать типы событий, субъекты и содержимое данных. При создании подписки на службу "Сетка событий" можно выбрать подписку на выбранные события Интернета вещей.

  • Тип события: список типов событий Центра Интернета вещей см. в разделе "Типы событий".
  • Тема. Для событий Центра Интернета вещей тема — это имя устройства. Тема принимает формат devices/{deviceId}. Вы можете фильтровать темы на основе совпадений с Begins With (префикс) и Ends With (суффикс). В фильтре используется оператор AND, чтобы события с темой, которая соответствует и префиксу, и суффиксу, доставлялись подписчику.
  • Содержимое данных: Центр Интернета вещей заполняет содержимое данных с помощью формата сообщения. Вы можете выбрать, какие события отправляются на основе содержимого телеметрического сообщения. Примеры см. в разделе "Расширенная фильтрация". Для фильтрации в тексте сообщения телеметрии необходимо задать для contentType значение application/json и contentEncoding значение UTF-8 в свойствах системы сообщений. Оба этих свойства регистронезависимы.

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

Ограничения для событий состояния подключения устройства

События подключения и отключения устройства доступны для устройств, подключающихся через протоколы MQTT или AMQP, либо через WebSockets с использованием этих протоколов. Запросы, сделанные только с помощью HTTPS, не активируют уведомления о состоянии подключения устройства.

Дополнительные сведения о мониторинге состояния устройства с помощью сетки событий см. в разделе "Мониторинг состояния подключения устройства".

Интервал состояния подключения устройства

Центр Интернета вещей пытается сообщить о каждом событии изменения состояния подключения устройства, но некоторые из них могут быть пропущены. Как минимум, Центр Интернета вещей сообщает о событиях изменения состояния подключения, которые происходят 60 секунд друг от друга. Это поведение может привести к таким результатам, как несколько зарегистрированных событий подключения устройств без событий отключения между ними.

Советы по обработке событий

Приложения, обрабатывающие события Центра Интернета вещей, должны следовать приведенным ниже рекомендациям.

  • Несколько подписок можно настроить для маршрутизации событий в один обработчик событий, поэтому не следует думать, что события происходят из определенного источника. Всегда проверяйте тему сообщения, чтобы убедиться, что оно поступило из предполагаемого Центра Интернета вещей.
  • Не следует думать, что все полученные события являются предполагаемыми вами типами. Всегда проверяйте значение eventType перед обработкой сообщения.
  • Сообщения могут приступать не по порядку или после некоторой задержки. Используйте поле etag, чтобы проверить актуальность информации об объектах для событий, созданных устройством или удаленных им.

Дальнейшие действия