Упорядочение событий изменения состояния подключения устройства из Центра Интернета вещей Azure с использованием Azure Cosmos DB

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

С момента запуска устройства активируется порядок операций:

  1. Устройство Pi с помощью ключа устройства Центра Интернета вещей запускается, а затем останавливается.

  2. Событие Центр Интернета вещей фиксирует действия устройства, а затем отправляет HTTP-запрос в приложение логики.

  3. Приложение логики обрабатывает HTTP-запрос на основе заданного условия.

  4. Приложение логики регистрирует события подключения или отключения в новом документе в Cosmos DB.

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

Предварительные требования

Создание приложения логики

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

Создание ресурса приложения логики

  1. На портале Azure нажмите + Создать ресурс, выберите Интеграция, а затем — Приложение логики.

    Снимок экрана: поиск и выбор приложения логики в портал Azure.

  2. Заполните форму, чтобы создать новое приложение логики, которое включает в себя:

    • Ваша подписка

    • Ваша группа ресурсов (или создайте новую).

    • Имя приложения логики, уникальное в вашей подписке.

    • Регион центра Интернета вещей

    • Нет для включения Log Analytics.

    • Тип плана потребления

      Примечание

      Тип плана потребления — это параметр, который включает конструктор приложений логики в пользовательском интерфейсе. Если выбрать стандартный (по умолчанию), необходимо создать новый рабочий процесс, чтобы конструктор приложений логики стал доступным.

    Снимок экрана: создание приложения логики в портал Azure.

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

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

  5. В конструкторе приложений логики прокрутите страницу, пока не увидите раздел Шаблоны , а затем выберите Пустое приложение логики , чтобы создать приложение логики с нуля.

Выбор триггера

Триггер представляет собой определенное событие, которое запускает приложение логики. В этом руководстве триггер, который инициирует рабочий процесс, получает запрос через HTTP.

  1. На панели поиска триггеров и соединителей введите HTTP и нажмите клавишу ВВОД.

  2. Выберите запрос При получении HTTP-запроса в качестве триггера.

    Снимок экрана: поиск триггера HTTP-запроса.

  3. Выберите Использовать пример полезной нагрузки, чтобы создать схему.

    Снимок экрана: использование примера полезных данных для создания схемы.

  4. Вставьте следующий пример кода JSON в текстовое поле и нажмите кнопку Готово.

    Этот JSON используется только в качестве шаблона, поэтому точные значения не важны.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/DEMO5CDD-8DAB-4CF4-9B2F-C22E8A755472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Снимок экрана: пример полезных данных JSON, вставленный в текстовое поле в Azure.

Создание условия

Условия помогают выполнять определенные действия после передачи этого условия. Для этой статьи условием является проверка, подключено ли устройство eventType или устройство отключено. Действие, выполняемое при значении eventType true, — это создание документа в Azure Cosmos DB. Это условие создается в конструкторе приложений логики.

  1. Выберите + Новый шаг, затем вкладку Встроенные , а затем найдите и выберите элемент управления с именем Условие.

  2. В вашем условии измените значение И на Or, так как мы хотим записывать события подключения или отключения в одном синтаксическом анализе.

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

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

    • Сохраните значение , равное значению .

    • Введите Microsoft.Devices.DeviceConnected в качестве последнего значения этой строки.

    • Выберите + Добавить , чтобы добавить еще одну строку.

    • Эта вторая строка похожа на первую строку, за исключением того, что мы ищем события отключения.

      Используйте eventType, равно и Microsoft.Devices.DeviceDisconnected для значений строк.

      Снимок экрана: полное условие For Each.

  4. В диалоговом окне Если истинно щелкните Добавить действие.

    Снимок экрана: поле

  5. Выполните поиск по запросу Cosmos DB и выберите Azure Cosmos DB — создание или обновление документа (версия 3)

    Снимок экрана: поиск Azure Cosmos DB.

  6. Появится панель Создание или обновление документа (версия 3). Введите следующие значения для полей:

    Имя учетной записи Azure Cosmos DB: {Добавление имени учетной записи}

    Идентификатор базы данных: ToDoList

    Идентификатор коллекции: Items

    Документ: выбор Current item из списка параметров динамического содержимого

    Снимок экрана: элемент Выполнить хранимую процедуру (версия 3) с выбранным параметром

  7. Сохраните приложение логики.

Копирование URL-адреса HTTP

Скопируйте для триггера URL-адрес, с которого приложение логики ожидает передачи данных, а затем закройте конструктор Logic Apps. Этот URL-адрес вы используете для настройки сетки событий.

  1. Разверните поле При получении HTTP-запроса триггера, выбрав его.

  2. Скопируйте значение URL-адрес HTTP POST, нажав кнопку копирования рядом с этим параметром.

    Снимок экрана: где найти URL-адрес HTTP для копирования.

  3. Сохраните этот URL-адрес, чтобы использовать его в следующем разделе.

Настройка подписки на события Центра Интернета вещей

В этом разделе вы настроите Центр Интернета вещей для публикации событий по мере их появления.

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

  2. Выберите События.

    Снимок экрана: расположение кнопки

  3. Выберите + Подписка на события.

    Создание подписки на события

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

  5. Создайте имя системного раздела для ресурса Центра Интернета вещей.

  6. Заполните поля Типы событий. В раскрывающемся списке в меню выберите только Устройство подключено и Устройство отключено. Щелкните в любом месте экрана, чтобы закрыть список и сохранить настройки.

    Задание типов событий для поиска

  7. Сведения о конечной точке: выберите для типа конечной точки значение Веб-перехватчик, щелкните выбранную конечную точку, вставьте URL-адрес, скопированный из приложения логики, и подтвердите выбор.

    Выбор URL-адреса конечной точки

  8. Теперь форма должна выглядеть как в показанном ниже примере:

    Снимок экрана: форма для создания подписки на события.

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

    Важно!

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

    Снимок экрана: Центр Интернета вещей ошибка с сообщением о том, что находится не в активном состоянии.

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

Теперь, когда ваша подписка на события настроена, давайте протестируем, подключив устройство.

Регистрация устройства в Центре Интернета вещей

  1. В Центре Интернета вещей выберите Устройства.

  2. Выберите + Добавить устройство в верхней части панели.

  3. Для идентификатора устройства введите Demo-Device-1.

  4. Щелкните Сохранить.

    Снимок экрана: расположение кнопки

  5. Щелкните устройство еще раз. Теперь строки подключения и ключи будут заполнены. Скопируйте и сохраните основную строку подключения для последующего использования.

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

Запуск симулятора Raspberry Pi

Давайте используем веб-симулятор Raspberry Pi для имитации подключения устройства.

Запустить симулятор Raspberry Pi

Запуск примера приложения в веб-симуляторе Raspberry Pi

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

  1. В области кода замените заполнитель в строке 15 на строку подключения устройства Центра Интернета вещей Azure, сохраненную в конце предыдущего раздела.

    Снимок экрана: место добавления основной строки подключения в скрипт Raspberry Pi.

  2. Запустите приложение, выбрав Запустить.

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

    Снимок экрана: что следует ожидать в консоли вывода при запуске Raspberry Pi.

  3. Вы можете проверка страницу Обзора приложения логики, чтобы проверка, активируется ли логика. В нем будет указано Успешно или Сбой. Проверка здесь позволяет узнать состояние приложения логики, если требуется устранение неполадок. Ожидайте задержку в 15–30 секунд с момента запуска триггера. Если вам нужно устранить неполадки в приложении логики, просмотрите эту статью Устранение ошибок .

    Снимок экрана: обновления состояния на странице обзора приложения логики.

  4. Выберите Остановить , чтобы остановить симулятор, который активирует событие "Устройство отключено ". Это событие будет зарегистрировано на странице Обзор приложения логики так же, как и событие подключения.

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

Наблюдение за событиями в Azure Cosmos DB

Результаты выполнения приложения логики можно просмотреть в документе Cosmos DB. Документ появляется в коллекции Items при обновлении страницы. Каждое событие состояния подключения создает новый документ, которому назначается уникальный id. На следующем рисунке показан документ, созданный при запуске (подключенном) устройстве. Тип подключенного события указан в выходных данных JSON.

Снимок экрана: созданное событие состояния подключения в коллекции Cosmos DB.

Использование командной строки Azure CLI

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

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

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

Приложение логики

Чтобы не потерять работу, проделанную в приложении логики, мы рекомендуем отключить ресурсы, а не удалять их.

  1. Перейдите в приложение логики.

  2. В колонке Обзор выберите Удалить или Отключить.

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

Центр Интернета вещей или Сетка событий

  1. Перейдите в Центр Интернета вещей.

  2. В колонке Обзор выберите Удалить.

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

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

Cosmos DB

Чтобы удалить учетную запись Azure Cosmos DB из портал Azure, перейдите к ресурсу и выберите Удалить учетную запись в верхней строке меню. Подробные инструкции см. в разделе Удаление учетной записи Azure Cosmos DB.

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