Руководство: Отправка данных устройства в службу хранилища Azure с помощью маршрутизации сообщений Центра Интернета вещей

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

Вот какие шаги выполняются в этом руководстве:

  • Создайте Центр Интернета вещей и отправьте в него сообщения об устройстве.
  • Создание учетной записи хранения.
  • Создайте пользовательскую конечную точку для учетной записи хранения и перенаправьте в него сообщения из Центра Интернета вещей.
  • Просмотр сообщений устройства в большом двоичном объекте учетной записи хранения.

Необходимые компоненты

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

  • Центр Интернета вещей в подписке Azure. Если у вас еще нет центра, выполните действия, описанные в разделе Создание центра Интернета вещей.

  • В этом руководстве используется пример кода из пакета SDK Интернета вещей Azure для C#.

    • Скачайте или клонируйте репозиторий ПАКЕТА SDK на компьютер разработки.
    • На компьютере, на котором ведется разработка, необходимо установить .NET Core версии 3.0.0 или более поздней. Проверьте версию, запустив dotnet --version и скачайте .NET при необходимости.
  • Убедитесь, что в брандмауэре открыт порт 8883. Пример в этом руководстве использует протокол MQTT, который передает данные через порт 8883. В некоторых корпоративных и академических сетях этот порт может быть заблокирован. Дополнительные сведения и способы устранения этой проблемы см. в разделе о подключении к Центру Интернета вещей по протоколу MQTT.

  • По желанию, установите Обозреватель Интернета вещей Azure. Это средство помогает отслеживать сообщения по мере их поступления в Центр Интернета вещей. В этой статье используется Обозреватель Интернета вещей Azure.

Для портала Azure нет других предварительных требований.

Зарегистрируйте устройство и отправьте сообщения в Центр Интернета вещей

Зарегистрируйте новое устройство в вашем Центре Интернета вещей.

  1. Войдите на портал Azure и перейдите к своему Центру Интернета вещей.

  2. Выберите Устройства в разделе Управление устройствами в меню.

  3. Выберите Добавить устройство.

    Screenshot that shows adding a new device in the Azure portal.

  4. Укажите идентификатор устройства и нажмите Сохранить.

  5. Новое устройство теперь должно появиться в списке устройств. Если оно не появилось, обновите страницу. Выберите идентификатор устройства, чтобы открыть страницу сведений об устройстве.

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

    Screenshot that shows copying the primary key from the device details page.

Теперь, когда у вас есть идентификатор устройства и ключ, используйте пример кода, чтобы начать отправку сообщений телеметрии устройства в Центр Интернета вещей.

Совет

Если вы выполняете действия Azure CLI для этого руководства, запустите пример кода в отдельном сеансе. Таким образом, вы можете разрешить примеру кода продолжать работу, пока вы выполняете остальные действия интерфейса командной строки.

  1. Если вы не были в рамках предварительных требований, скачайте или клонируйте пакет SDK Для Интернета вещей Azure для репозитория C# из GitHub.

  2. В папке, в которой вы скачали или клонировали пакет SDK, перейдите в папку azure-iot-sdk-csharp\iothub\device\samples\how to guides\HubRoutingSample .

  3. Установите пакет SDK для Интернета вещей Azure C# и необходимые средства поддержки зависимостей, указанные HubRoutingSample.csproj в файле:

    dotnet restore
    
  4. Откройте файл Parameters.cs в выбранном редакторе. В этом файле представлены параметры, поддерживаемые примером. PrimaryConnectionString При запуске примера будет использоваться только параметр в этой статье. Просмотрите код в этом файле. Изменения не требуются.

  5. Выполните сборку и запуск примера кода с помощью следующей команды:

    Замените <myDevicePrimaryConnectionString> основной строка подключения с устройства в Центре Интернета вещей.

    dotnet run --PrimaryConnectionString <myDevicePrimaryConnectionString>
    
  6. Вы увидите сообщения, распечатываемые для вывода по мере их отправки в Центр Интернета вещей. Оставьте эту программу запущенной во время руководства.

Настройка Обозревателя Интернета вещей для просмотра сообщений

Настройте Обозреватель Интернета вещей для подключения к центру Интернета вещей и чтения сообщений по мере их поступления в встроенную конечную точку.

Для начала получите строку подключения для вашего Центра Интернета вещей.

  1. Найдите нужный Центр Интернета вещей на портале Azure.

  2. Выберите Политики общего доступа в разделе Параметров безопасности в меню.

  3. Выберите политику iothubowner.

    Open the iothubowner shared access policy.

  4. Скопируйте основную строку подключения.

    Copy the iothubowner primary connection string.

Теперь используйте строку подключения, чтобы настроить Обозреватель Интернета вещей для Центра Интернета вещей.

  1. Откройте Обозреватель Центра Интернета вещей на компьютере, на котором ведется разработка.

  2. Выберите Добавить подключение.

    Screenshot that shows adding an IoT hub connection in IoT Explorer.

  3. Вставьте строку подключения центра в текстовое поле.

  4. Выберите Сохранить.

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

  6. Выберите Телеметрия.

  7. При выполнении устройства нажмите кнопку "Пуск". Если устройство не запущено, вы не увидите данные телеметрии.

    Start monitoring device telemetry in IoT Explorer.

  8. Вы увидите сообщения, поступающие с устройства, с последними отображаемыми в верхней части экрана.

    View messages arriving at IoT hub on the built-in endpoint.

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

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

Настройка маршрутизации сообщений

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

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

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

Создание учетной записи хранилища

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

  1. На портале Azure найдите раздел Учетные записи хранения.

  2. Нажмите кнопку создания.

  3. Чтобы создать учетную запись хранения, введите следующие значения:

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

    Screenshot that shows creating a storage account.

  4. Вы можете принять все остальные значения по умолчанию, выбрав Просмотреть и создать.

  5. После завершения проверки щелкните Создать.

  6. По завершении развертывания выберите элемент Перейти к ресурсу.

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

  8. Выберите + Контейнер, чтобы создать контейнер.

    Screenshot that shows creating a storage container

  9. Введите имя контейнера и выберите Создать.

Маршрутизация в учетную запись хранения

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

Примечание.

Данные можно записывать в хранилище BLOB-объектов либо в формате Apache Avro, который выбран по умолчанию, либо в формате JSON.

Формат кодирования можно указать только во время настройки конечной точки хранилища BLOB-объектов. Для уже настроенной конечной точки формат изменить нельзя. Если используется кодирование JSON, в свойствах системы обмена сообщениями нужно установить для параметра contentType значение JSON, а для параметра contentEncoding — значение UTF-8.

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

  1. Найдите нужный Центр Интернета вещей на портале Azure.

  2. В меню ресурсов в разделе "Параметры Центра" выберите маршрутизацию сообщений и нажмите кнопку "Добавить".

    Screenshot that shows location of the Add button, to add a new route in your IoT hub.

  3. На вкладке "Конечная точка" создайте конечную точку служба хранилища, указав следующие сведения:

    Параметр Значение
    Тип конечной точки Выберите Хранилище.
    Имя конечной точки Укажите уникальное имя для этой конечной точки.
    Контейнер хранилища Azure Щелкните Выберите контейнер. Следуйте инструкциям, чтобы выбрать учетную запись хранения и контейнер, созданный в предыдущем разделе.
    Кодирование Выберите JSON. Если это поле неактивно, регион вашей учетной записи хранения не поддерживает JSON. В этом случае продолжайте использовать AVRO по умолчанию.

    Screenshot that shows the Add a storage endpoint pane with the correct options selected.

  4. Примите значения по умолчанию для остальных параметров и нажмите кнопку "Создать+ далее".

  5. На вкладке "Маршрут" укажите следующие сведения, чтобы создать маршрут, указывающий на созданную конечную точку служба хранилища:

    Параметр Значение
    Имя Создайте имя маршрута.
    Источник данных Убедитесь, что в раскрывающемся списке выбраны Сообщения телеметрии устройства.
    Включить маршрут Убедитесь, что это поле проверка.
    Маршрутизация запроса Введите level="storage" как строку запроса.

    Screenshot that shows adding a route with a routing query.

  6. Выберите "Создать и пропустить обогащения".

Просмотр перенаправленных сообщений

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

Мониторинг встроенной конечной точки с помощью Обозревателя Интернета вещей

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

Запустите пример еще раз, выполнив код. Просмотрите входящие сообщения в течение нескольких секунд, и вы увидите только сообщения, для которых level задано значение normal или critical.

Просмотр сообщений в контейнере хранилища

Убедитесь, что сообщения поступают в контейнер хранилища.

  1. Войдите в свою учетную запись хранения на портале Azure.

  2. Выберите Контейнеры в разделе Хранилище данных в меню.

  3. Выберите контейнер, созданный для этого руководства.

  4. Там должна быть папка с именем Центра Интернета вещей. Детализируйте структуру файлов до тех пор, пока не получите json-файл.

    Screenshot that shows finding routed messages in storage.

  5. Выберите JSON-файл, а затем нажмите кнопку "Скачать ", чтобы скачать JSON-файл. Убедитесь, что файл содержит сообщения с устройства, для которых задано level свойство storage.

  6. Остановите выполнение примера.

Очистка ресурсов

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

Если вы планируете продолжить работу со следующим руководством, сохраните созданные здесь ресурсы.

  1. В портале Azure перейдите к группе ресурсов, содержащей Центр Интернета вещей и учетную запись хранения для этого руководства.
  2. Просмотрите все ресурсы, которые находятся в группе ресурсов, чтобы определить, какие ресурсы необходимо очистить.
    • Если вы хотите удалить ресурс, щелкните Удалить группу ресурсов.
    • Если требуется удалить только определенный ресурс, установите флажки рядом с каждым именем ресурса, чтобы выбрать те, которые требуется удалить. Затем выберите Удалить.

Следующие шаги

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