Упорядочение событий изменения состояния подключения устройства из Центра Интернета вещей Azure с использованием Azure Cosmos DB
Сетка событий Azure помогает создавать приложения на основе событий и легко интегрировать события Интернета вещей в бизнес-решения. В этой статье описывается настройка с помощью Cosmos DB, приложения логики, событий Центр Интернета вещей и имитированного устройства Raspberry Pi для сбора и хранения событий подключения и отключения устройства.
С момента запуска устройства активируется порядок операций:
Устройство Pi с помощью ключа устройства Центра Интернета вещей запускается, а затем останавливается.
Событие Центр Интернета вещей фиксирует действия устройства, а затем отправляет HTTP-запрос в приложение логики.
Приложение логики обрабатывает HTTP-запрос на основе заданного условия.
Приложение логики регистрирует события подключения или отключения в новом документе в Cosmos DB.
Предварительные требования
Активная учетная запись Azure Cosmos DB для NoSQL. Если вы ее еще не создали, ознакомьтесь с соответствующими инструкциями в разделе Создание учетной записи базы данных.
Коллекция в базе данных. Пошаговое руководство см. в разделе Добавление коллекции. При создании коллекции используйте
/id
для ключа секции.Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Центр Интернета вещей в подписке Azure. Создайте его с помощью CLI или портал Azure.
Создание приложения логики
Давайте создадим приложение логики и добавим триггер Сетки событий, который отслеживает группу ресурсов для виртуальной машины.
Создание ресурса приложения логики
На портале Azure нажмите + Создать ресурс, выберите Интеграция, а затем — Приложение логики.
Заполните форму, чтобы создать новое приложение логики, которое включает в себя:
Ваша подписка
Ваша группа ресурсов (или создайте новую).
Имя приложения логики, уникальное в вашей подписке.
Регион центра Интернета вещей
Нет для включения Log Analytics.
Тип плана потребления
Примечание
Тип плана потребления — это параметр, который включает конструктор приложений логики в пользовательском интерфейсе. Если выбрать стандартный (по умолчанию), необходимо создать новый рабочий процесс, чтобы конструктор приложений логики стал доступным.
Выберите Просмотр и создание , чтобы проверить конфигурацию, а затем нажмите кнопку Создать , чтобы создать приложение логики.
Вы создали ресурс Azure для приложения логики. Когда Azure развернет ваше приложение логики, выберите Перейти к ресурсу. В конструкторе приложений логики отображаются шаблоны для распространенных шаблонов, которые позволяют быстрее приступить к работе.
В конструкторе приложений логики прокрутите страницу, пока не увидите раздел Шаблоны , а затем выберите Пустое приложение логики , чтобы создать приложение логики с нуля.
Выбор триггера
Триггер представляет собой определенное событие, которое запускает приложение логики. В этом руководстве триггер, который инициирует рабочий процесс, получает запрос через HTTP.
На панели поиска триггеров и соединителей введите HTTP и нажмите клавишу ВВОД.
Выберите запрос При получении HTTP-запроса в качестве триггера.
Выберите Использовать пример полезной нагрузки, чтобы создать схему.
Вставьте следующий пример кода 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" }]
Создание условия
Условия помогают выполнять определенные действия после передачи этого условия. Для этой статьи условием является проверка, подключено ли устройство eventType или устройство отключено. Действие, выполняемое при значении eventType true, — это создание документа в Azure Cosmos DB. Это условие создается в конструкторе приложений логики.
Выберите + Новый шаг, затем вкладку Встроенные , а затем найдите и выберите элемент управления с именем Условие.
В вашем условии измените значение И на Or, так как мы хотим записывать события подключения или отключения в одном синтаксическом анализе.
Выберите внутри поля Выберите значение , и появится всплывающее окно с динамическим содержимым — полями, которые можно выбрать.
Выберите eventType. Всплывающее окно закроется, и вы увидите , что текст автоматически отображается в разделе Выбор выходных данных из предыдущих шагов. Выберите Условие , чтобы снова открыть условный оператор.
Сохраните значение , равное значению .
Введите Microsoft.Devices.DeviceConnected в качестве последнего значения этой строки.
Выберите + Добавить , чтобы добавить еще одну строку.
Эта вторая строка похожа на первую строку, за исключением того, что мы ищем события отключения.
Используйте eventType, равно и Microsoft.Devices.DeviceDisconnected для значений строк.
В диалоговом окне Если истинно щелкните Добавить действие.
Выполните поиск по запросу Cosmos DB и выберите Azure Cosmos DB — создание или обновление документа (версия 3)
Появится панель Создание или обновление документа (версия 3). Введите следующие значения для полей:
Имя учетной записи Azure Cosmos DB: {Добавление имени учетной записи}
Идентификатор базы данных: ToDoList
Идентификатор коллекции: Items
Документ: выбор
Current item
из списка параметров динамического содержимогоСохраните приложение логики.
Копирование URL-адреса HTTP
Скопируйте для триггера URL-адрес, с которого приложение логики ожидает передачи данных, а затем закройте конструктор Logic Apps. Этот URL-адрес вы используете для настройки сетки событий.
Разверните поле При получении HTTP-запроса триггера, выбрав его.
Скопируйте значение URL-адрес HTTP POST, нажав кнопку копирования рядом с этим параметром.
Сохраните этот URL-адрес, чтобы использовать его в следующем разделе.
Настройка подписки на события Центра Интернета вещей
В этом разделе вы настроите Центр Интернета вещей для публикации событий по мере их появления.
Найдите нужный Центр Интернета вещей на портале Azure.
Выберите События.
Выберите + Подписка на события.
Заполните сведения о подписке на события: укажите описательное имя и выберите Схема сетки событий в качестве схемы событий.
Создайте имя системного раздела для ресурса Центра Интернета вещей.
Заполните поля Типы событий. В раскрывающемся списке в меню выберите только Устройство подключено и Устройство отключено. Щелкните в любом месте экрана, чтобы закрыть список и сохранить настройки.
Сведения о конечной точке: выберите для типа конечной точки значение Веб-перехватчик, щелкните выбранную конечную точку, вставьте URL-адрес, скопированный из приложения логики, и подтвердите выбор.
Теперь форма должна выглядеть как в показанном ниже примере:
Нажмите Создать, чтобы сохранить подписку на события.
Важно!
Подождите несколько минут, пока событие будет обработано, прежде чем запускать устройство. Каждый раз, когда службы Azure создаются или изменяются, запуск следующего шага в конвейере слишком скоро может привести к ненужным ошибкам. Например, если центр Интернета вещей не находится в активном состоянии, он не будет готов к получению событий. Проверьте страницу Обзор Центра Интернета вещей, чтобы узнать, находится ли центр Интернета вещей в активном состоянии. В противном случае в верхней части страницы появится предупреждение.
Запуск устройства и наблюдение за событиями
Теперь, когда ваша подписка на события настроена, давайте протестируем, подключив устройство.
Регистрация устройства в Центре Интернета вещей
В Центре Интернета вещей выберите Устройства.
Выберите + Добавить устройство в верхней части панели.
Для идентификатора устройства введите
Demo-Device-1
.Щелкните Сохранить.
Щелкните устройство еще раз. Теперь строки подключения и ключи будут заполнены. Скопируйте и сохраните основную строку подключения для последующего использования.
Запуск симулятора Raspberry Pi
Давайте используем веб-симулятор Raspberry Pi для имитации подключения устройства.
Запустить симулятор Raspberry Pi
Запуск примера приложения в веб-симуляторе Raspberry Pi
Этот пример приложения активирует событие подключения устройства.
В области кода замените заполнитель в строке 15 на строку подключения устройства Центра Интернета вещей Azure, сохраненную в конце предыдущего раздела.
Запустите приложение, выбрав Запустить.
Должны отобразиться результаты, аналогичные следующему, которые содержат данные датчика и сообщения, отправляемые в Центр Интернета вещей.
Вы можете проверка страницу Обзора приложения логики, чтобы проверка, активируется ли логика. В нем будет указано Успешно или Сбой. Проверка здесь позволяет узнать состояние приложения логики, если требуется устранение неполадок. Ожидайте задержку в 15–30 секунд с момента запуска триггера. Если вам нужно устранить неполадки в приложении логики, просмотрите эту статью Устранение ошибок .
Выберите Остановить , чтобы остановить симулятор, который активирует событие "Устройство отключено ". Это событие будет зарегистрировано на странице Обзор приложения логики так же, как и событие подключения.
Теперь вы запустите пример приложения для сбора событий подключения и отключения устройства, которые отправляются в Центр Интернета вещей.
Наблюдение за событиями в Azure Cosmos DB
Результаты выполнения приложения логики можно просмотреть в документе Cosmos DB. Документ появляется в коллекции Items при обновлении страницы. Каждое событие состояния подключения создает новый документ, которому назначается уникальный id
. На следующем рисунке показан документ, созданный при запуске (подключенном) устройстве. Тип подключенного события указан в выходных данных JSON.
Использование командной строки Azure CLI
Вместо того чтобы использовать портал Azure, шаги для работы с Центром Интернета вещей можно выполнить с помощью Azure CLI. С дополнительными сведениями можно ознакомиться в статьях, посвященных созданию подписки на события и устройств Интернета вещей с использованием Azure CLI.
Очистка ресурсов
В этом руководстве используются ресурсы, за которые в подписке Azure предусмотрена плата. По завершении работы с этим учебником и тестирования результатов отключите или удалите ресурсы, которые больше не нужны.
Приложение логики
Чтобы не потерять работу, проделанную в приложении логики, мы рекомендуем отключить ресурсы, а не удалять их.
Перейдите в приложение логики.
В колонке Обзор выберите Удалить или Отключить.
В подписке может быть только один бесплатный Центр Интернета вещей. Если для работы с этим руководством вы создали бесплатный Центр Интернета вещей, его можно не удалять, так как никакая плата взиматься не будет.
Центр Интернета вещей или Сетка событий
Перейдите в Центр Интернета вещей.
В колонке Обзор выберите Удалить.
Даже если вы не удалите свой Центр Интернета вещей, вы можете удалить созданную подписку на события. В Центре Интернета вещей выберите Сетка событий.
Выберите подписку на события, которую требуется удалить, а затем нажмите кнопку Удалить.
Cosmos DB
Чтобы удалить учетную запись Azure Cosmos DB из портал Azure, перейдите к ресурсу и выберите Удалить учетную запись в верхней строке меню. Подробные инструкции см. в разделе Удаление учетной записи Azure Cosmos DB.
Дальнейшие действия
Узнайте больше о реагировании на события в Центре Интернета вещей, используя службу "Сетка событий" для запуска действий.
Send email notifications about Azure IoT Hub events using Logic Apps (Отправка уведомлений электронной почты о событиях в Центре Интернета вещей Azure с помощью Logic Apps)
Узнайте о дополнительных возможностях службы Сетка событий.
Узнайте, как использовать Сетку событий и Azure Monitor для мониторинга, диагностики и устранения неполадок подключения устройств к Центру Интернета вещей.