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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Группа ресурсов (или создание новой)

    • Уникальное имя приложения логики в подписке

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

    • No для включения 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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.

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

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

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

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

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

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

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

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

    • Нажмите кнопку +Добавить, чтобы добавить другую строку.

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

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

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

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

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

  5. Найдите Cosmos DB и выберите Azure Cosmos DB — создайте или обновите документ (V3)

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

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

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

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

    Идентификатор коллекции: элементы

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

    Снимок экрана: элемент execute stored procedure (V3) с выбранным параметром

  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. Документ отображается в коллекции "Элементы " при обновлении страницы. Каждое событие состояния подключения создает новый документ, назначаемый уникальным 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.

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