Руководство. Создание комплексного решения
В этом учебнике по Azure Digital Twins описано, как создать комплексное решение, демонстрирующее функциональность службы. Чтобы настроить полное готовое решение, управляемое динамическими данными из вашей среды, вы можете подключить свой экземпляр Azure Digital Twins к другим службам Azure, предназначенным для управления устройствами и данными.
В этом учебнике вам предстоит выполнить следующее.
- Настроить экземпляр Azure Digital Twins.
- Познакомиться с примером сценария сборки и узнать, как реализуются предварительно созданные компоненты.
- Использование приложения Функции Azure для маршрутизации имитированных данных устройства из Центр Интернета вещей устройства в свойства цифрового двойника
- Распространение изменений через граф двойников путем обработки уведомлений цифровых двойников с помощью Функции Azure, конечных точек и маршрутов
Необходимые компоненты
Перед началом работы с этим руководством начните с следующих предварительных требований:
- Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
- В этом руководстве используется .NET. Последняя версия пакета SDK для .NET для нескольких платформ можно скачать.
Затем перейдите к остальным разделам, чтобы настроить оставшиеся предварительные требования.
Получение примеров ресурсов
Это руководство основано на учебном проекте Azure Digital Twins, написанном на C#. Получите пример проекта на компьютере, перейдя по ссылке образца и нажав кнопку "Обзор кода " под заголовком.
Это действие делает вас в репозитории GitHub для примеров, которые можно скачать как .zip, нажав кнопку "Код ", а затем скачать ZIP- файл.
Это действие загружает папку .zip на компьютер как digital-twins-samples-main.zip. Распакуйте папку и извлеките файлы.
Подготовка экземпляра Azure Digital Twins
Для работы с Azure Digital Twins в этой статье требуется экземпляр Azure Digital Twins и необходимые разрешения для его использования. Если у вас уже настроен экземпляр Azure Digital Twins, этот экземпляр можно использовать и перейти к следующему разделу. В противном случае выполните инструкции по настройке экземпляра и аутентификации. Инструкции содержат сведения, помогающие убедиться, что каждый шаг выполнен успешно.
После настройки экземпляра запишите имя узла экземпляра. Вы можете найти имя хоста на портале Azure.
Подготовка среды к работе с Azure CLI
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Настройка сеанса CLI
Чтобы начать работу с Azure Digital Twins в ИНТЕРФЕЙСЕ командной строки, первое, что необходимо сделать, — войти в систему и задать контекст ИНТЕРФЕЙСА командной строки в подписке для этого сеанса. Выполните следующие команды в окне КОМАНДНОй строки:
az login
az account set --subscription "<your-Azure-subscription-ID>"
Совет
В команде выше вы также можете использовать имя подписки вместо идентификатора.
Если вы впервые используете эту подписку с Azure Digital Twins, выполните эту команду, чтобы зарегистрироваться в пространстве имен Azure Digital Twins. (Если вы не уверены, то можете запустить команду снова, даже если вы уже запускали ее.)
az provider register --namespace 'Microsoft.DigitalTwins'
Затем вы добавите расширение Интернета вещей Microsoft Azure для Azure CLI, чтобы включить команды для взаимодействия с Azure Digital Twins и другими службами Интернета вещей. Выполните следующую команду, чтобы убедиться, что используется последняя версия расширения:
az extension add --upgrade --name azure-iot
Теперь вы готовы к работе с Azure Digital Twins в Azure CLI.
Это можно проверить в любой момент, выполнив команду az dt --help
, чтобы вывести список доступных команд Azure Digital Twins верхнего уровня.
Настройка примера проекта
Затем настройте пример клиентского приложения, который будет взаимодействовать с вашим экземпляром Azure Digital Twins.
Перейдите на компьютер в папку, скачаемую ранее из комплексных примеров Azure Digital Twins (и распакуйте ее, если вы еще не сделали этого).
Перейдите в папку digital-twins-samples-main\AdtSampleApp\SampleClientApp и откройте файл appsettings.json . Этот JSON-файл содержит переменную конфигурации, необходимую для запуска проекта.
В тексте файла измените instanceUrl
URL-адрес имени узла экземпляра Azure Digital Twins (добавив https:// перед именем узла, как показано ниже).
{
"instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}
Сохранить и закрыть файл.
Настройка локальных учетных данных Azure
В этом примере используется DefaultAzureCredential (часть библиотеки Azure.Identity
) для аутентификации пользователей с помощью экземпляра Azure Digital Twins, запускаемого на локальном компьютере. Дополнительные сведения о различных способах аутентификации клиентского приложения в Azure Digital Twins см. в статье о записи кода аутентификации приложения.
При использовании DefaultAzureCredential
пример будет искать учетные данные в локальной среде, например имя для входа Azure в локальной версии Azure CLI, в Visual Studio либо Visual Studio Code. Поэтому вам нужно войти в Azure локально с помощью одного из этих механизмов, чтобы настроить учетные данные для примера.
Если вы используете Visual Studio или Visual Studio Code для выполнения примеров кода, убедитесь, что вы вошли в этот редактор с теми же учетными данными Azure, которые вы хотите использовать для доступа к экземпляру Azure Digital Twins. Если вы используете локальное окно CLI, выполните az login
команду, чтобы войти в учетную запись Azure. После этого при запуске примера кода необходимо автоматически пройти проверку подлинности.
Начало работы со сценарием сборки
Пример проекта, используемого в этом учебнике, представляет собой реальный строительный план, в котором есть этаж, комната и терморегулятор. Эти компоненты представлены в цифровом экземпляре Azure Digital Twins, который подключен к Центр Интернета вещей, сетке событий и двум функциям Azure для включения перемещения данных.
На следующей схеме представлен полный сценарий.
Сначала необходимо создать экземпляр Azure Digital Twins (раздел A на схеме), а затем настроить поток данных устройства в цифровые двойники (стрелка B), а затем настроить распространение данных через граф двойников (стрелка C).
Для работы с сценарием вы взаимодействуете с компонентами предварительно созданного примера приложения, скачаемого ранее.
Ниже перечислены компоненты, реализованные в примере приложения AdtSampleApp для сценария сборки.
- Проверка подлинности устройства
- Примеры использования пакета SDK .NET (C#) (находятся в CommandLoop.cs)
- Консольный интерфейс для вызова API Azure Digital Twins
- SampleClientApp — пример решения Azure Digital Twins
- SampleFunctionsApp — приложение Функции Azure, которое обновляет граф Azure Digital Twins на основе данных устройства из событий Центр Интернета вещей и Azure Digital Twins
Создание экземпляра предварительно созданного графа двойника
Во-первых, вы используете решение AdtSampleApp из примера проекта для создания части Azure Digital Twins комплексного сценария (раздел A):
Откройте локальное окно консоли и перейдите в папку digital-twins-samples-main\AdtSampleApp\SampleClientApp . Запустите проект SampleClientApp с помощью этой команды dotnet:
dotnet run
Проект запускается, выполняет проверку подлинности и ожидает выполнения команды. Создайте экземпляр примера решения Azure Digital Twins, выполнив в этой консоли следующую команду.
Внимание
Если у вас уже есть цифровые двойники и связи в экземпляре Azure Digital Twins, выполнение этой команды удаляет их и заменяет их двойниками и связями для примера сценария.
SetupBuildingScenario
В выходных данных этой команды отображается ряд подтверждающих сообщений о том, что в вашем экземпляре Azure Digital Twins созданы и подключены три цифровых двойника: этаж floor1, комната room21 и датчик температуры thermostat67. Эти цифровые двойники представляют сущности, которые присутствуют в реальной среде.
С помощью связей они подключаются к следующему графу двойников. Этот граф двойников представляет среду в целом, включая взаимодействие сущностей и их связи друг с другом.
Вы можете проверить созданные двойники, выполнив следующую команду, которая запрашивает все цифровые двойники, содержащиеся в подключенном экземпляре Azure Digital Twins:
Query
Теперь можно остановить выполнение проекта. Не закрывайте окно консоли в этом расположении, хотя используйте это приложение позже в руководстве.
Настройка примера приложения-функции
Теперь вам нужно настроить приложение Функций Azure , которое будет использоваться для обработки данных. Это приложение-функция SampleFunctionsApp содержит две функции:
- ProcessHubToDTEvents, которая обрабатывает поступающие данные Центра Интернета вещей и соответствующим образом обновляет Azure Digital Twins;
- ProcessDTRoutedData, которая обрабатывает данные из цифровых двойников и соответствующим образом обновляет родительские двойники в Azure Digital Twins.
В этом разделе описано, как опубликовать предварительно записываемое приложение-функцию и убедиться, что приложение-функция может получить доступ к Azure Digital Twins, назначив ему удостоверение Microsoft Entra.
Приложение-функция является частью загруженного примера проекта, расположенного в папке Digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp .
Публикация приложения
Чтобы опубликовать приложение-функцию в Azure, необходимо создать учетную запись хранения, а затем создать приложение-функцию в Azure и, наконец, опубликовать функции в приложении-функции Azure. Этот раздел завершает упомянутые действия с помощью Azure CLI. В каждой команде замените все заполнители в угловых скобках сведениями о собственных ресурсах.
Создайте учетную запись хранения Azure, выполнив следующую команду:
az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
Создайте приложение-функцию Azure, выполнив следующую команду:
az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --resource-group <resource-group>
Затем вы запакуете функции и опубликуете их в новом приложении-функции Azure.
Откройте окно консоли на компьютере (если вы используете локальный интерфейс командной строки Azure, это может быть то же окно) и перейдите в папку digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp в скачанный пример проекта.
В консоли выполните следующую команду, чтобы опубликовать проект локально:
dotnet publish -c Release -o publish
Эта команда публикует проект в каталоге digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish .
Используя предпочитаемый метод, создайте zip-файл опубликованных файлов, расположенных в каталоге digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish . Присвойте папке publish.zip имя.
Внимание
Убедитесь, что архивная папка не включает дополнительный слой для самой папки публикации. Он должен содержать только содержимое, которое находилось в папке публикации.
Вот изображение того, как может выглядеть zip-содержимое (оно может измениться в зависимости от вашей версии .NET).
Последний шаг выполняется в Azure CLI.
В Azure CLI выполните следующую команду, чтобы развернуть опубликованные и запакованные функции в приложении-функции Azure:
az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
Совет
Если вы используете Azure CLI локально, то можете получить доступ к ZIP-файлу на компьютере напрямую, используя его путь на компьютере.
Если вы используете Azure Cloud Shell, перед выполнением команды отправьте ZIP-файл в Cloud Shell с помощью этой кнопки:
В этом случае файл передается в корневой каталог хранилища Cloud Shell, чтобы вы могли ссылаться на файл непосредственно по имени
--src
параметра команды (как и).--src publish.zip
Успешное развертывание отвечает с кодом состояния 202 и выводит объект JSON, содержащий сведения о новой функции. Чтобы убедиться, что развертывание прошло успех, нужно найти это поле в результате:
"provisioningState": "Succeeded",
Теперь функции должны быть опубликованы в приложении-функции в Azure. Для успешной публикации обеих функций можно использовать следующие команды CLI. Каждая команда содержит заполнители для группы ресурсов и имя приложения-функции. Команды печатают сведения о опубликованных функциях ProcessDTRoutedData и ProcessHubToDTEvents .
az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessDTRoutedData
az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name ProcessHubToDTEvents
Затем приложение-функция должно иметь право на доступ к экземпляру Azure Digital Twins. Вы настраиваете этот доступ в следующем разделе.
Настройка разрешений для приложения-функции
Чтобы приложение-функция получило доступ к экземпляру Azure Digital Twins, необходимо задать два параметра. Это можно сделать с помощью Azure CLI.
Назначение роли доступа
Первый параметр предоставляет приложению-функции роль Владельца данных Azure Digital Twins в экземпляре Azure Digital Twins. Эта роль необходима для любого пользователя или функции, которым потребуется выполнять множество действий на плоскости данных в экземпляре. Дополнительные сведения о назначениях ролей и безопасности см. в статье Безопасность для решений Azure Digital Twins.
Используйте следующую команду, чтобы создать назначаемое системой удостоверение для функции. В выходных данных отображаются сведения об идентификаторе, назначаемом системой. Запишите поле principalId в выходных данных, используемое на следующем шаге.
az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
Используйте значение principalId в следующей команде, чтобы назначить удостоверение приложения-функции роли владельца Azure Digital Twins для вашего экземпляра Azure Digital Twins.
az dt role-assignment create --resource-group <your-resource-group> --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
Результат этой команды выводит сведения о созданном назначении ролей. Теперь приложение-функция имеет права доступа к вашему экземпляру Azure Digital Twins.
Настройка параметра приложения
Второй параметр создает переменную среды для функции с URL-адресом экземпляра Azure Digital Twins. Код функции использует значение этой переменной для ссылки на экземпляр. Дополнительные сведения о переменных среды см. в статье об управлении приложением-функцией.
Выполните следующую команду, заполнив заполнители сведениями о ресурсах.
az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"
Выходные данные — это список параметров для функции Azure, которая теперь должна содержать запись ADT_SERVICE_URL
.
Обработка имитированных данных устройства с устройства Центр Интернета вещей
Как правило, данные устройств с реальных устройств используют граф Azure Digital Twins.
На этом шаге вы подключаете имитированное устройство термостата, зарегистрированное в Центр Интернета вещей, к цифровому двойнику, представляющего его в Azure Digital Twins. По мере того как имитированное устройство выдает данные, данные направляются через функцию ProcessHubToDTEvents Azure, которая активирует соответствующее обновление в цифровом двойнике. Таким образом, цифровой двойник будет поддерживаться в полном соответствии с данными реального устройства. В Azure Digital Twins процесс направления данных событий из одного места в другое называется маршрутизацией событий.
Обработка имитированных данных устройства происходит в этой части комплексного сценария (стрелка B):
Ниже приведены действия, выполняемые для настройки подключения к устройству:
- Создание Центра Интернета вещей, который управляет имитируемым устройством
- Подключить Центр Интернета вещей к соответствующей функции Azure путем настройки подписки на события.
- Зарегистрировать имитированное устройство в Центре Интернета вещей.
- Запустите имитированное устройство и создайте данные устройства
- Выполнить запрос в Azure Digital Twins, чтобы просмотреть результаты в реальном времени.
Создание экземпляра Центра Интернета вещей
Служба Azure Digital Twins предназначена для работы параллельно с Центром Интернета вещей — службой Azure для управления устройствами и их данными. На этом шаге вы настроили Центр Интернета вещей, который управляет примером устройства в этом руководстве.
В Azure CLI используйте эту команду для создания нового Центра Интернета вещей:
az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1
В выходных данных этой команды содержатся сведения о созданном Центре Интернета вещей.
Сохраните имя центра Интернета вещей, чтобы использовать его позже.
Подключение Центра Интернета вещей к функции Azure
Затем подключите центр Интернета вещей к функции ProcessHubToDTEvents Azure в приложении-функции, опубликованной ранее. Это подключение позволяет передавать данные с устройства в Центр Интернета вещей через функцию, которая обновляет Azure Digital Twins.
Для этого вы создадите подписку на события в Центр Интернета вещей с функцией Azure в качестве конечной точки. Таким образом, функция "подписывается" на события, происходящие в Центре Интернета вещей.
Чтобы создать подписку на события, используйте следующую команду CLI. Существует заполнитель для ввода имени подписки на события, а также заполнители для ввода идентификатора подписки, группы ресурсов, имени центра Интернета вещей и имени приложения-функции.
az eventgrid event-subscription create --name <name-for-hub-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Devices/IotHubs/<your-IoT-hub> --included-event-types Microsoft.Devices.DeviceTelemetry --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessHubToDTEvents
В выходных данных отображаются сведения о созданной подписке на события. Вы можете убедиться, что операция выполнена успешно, проверив provisioningState
значение в результате:
"provisioningState": "Succeeded",
Совет
Если команда возвращает ошибку поставщика ресурсов, добавьте Microsoft.EventGrid в качестве поставщика ресурсов в подписку. Вы можете использовать портал Azure для добавления этого поставщика ресурсов в подписку, следуя инструкциям в разделе "Регистрация поставщика ресурсов".
Регистрация имитированного устройства в Центре Интернета вещей
В этом разделе создается представление устройства в Центре Интернета вещей с идентификатором thermostat67. Имитированное устройство подключается к этому представлению, то есть как данные устройства передаются с устройства в Центр Интернета вещей. Центр Интернета вещей прослушивается функцией Azure, на которую оформлена подписка в предыдущем шаге. Функция готова к приему событий и их последующей обработки.
В Azure CLI создайте устройство в Центр Интернета вещей с помощью следующей команды:
az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>
Выходные данные этой команды содержат сведения о созданном устройстве.
Настройка и запуск имитации
Внимание
В этой статье содержатся шаги по подключению устройства с помощью подписанного URL-адреса, также называемого проверкой подлинности симметричного ключа. Этот метод проверки подлинности удобнее для тестирования и оценки, но проверка подлинности устройства с помощью сертификатов X.509 является более безопасным подходом. Дополнительные сведения см. в разделе "Рекомендации > по обеспечению безопасности подключений".
Теперь настройте имитатор устройства для отправки данных в ваш экземпляр Центра Интернета вещей.
Начните с получения центра Интернета вещей строка подключения с помощью следующей команды. Значение строка подключения начинается с HostName=
.
az iot hub connection-string show --hub-name <your-IoT-hub-name>
Далее получите строку подключения к устройству с помощью следующей команды:
az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>
Затем подключите эти значения к коду симулятора устройства в локальном проекте, чтобы подключить симулятор к этому центру Интернета вещей и устройству Центра Интернета вещей.
Перейдите на локальный компьютер в скачаемую папку примера и в папку digital-twins-samples-main\DeviceSimulator\DeviceSimulator . Откройте файл AzureIoTHub.cs для редактирования. Измените следующие строка подключения значения на ранее собранные значения:
private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";
Сохраните файл.
Теперь, чтобы просмотреть результаты настроенного моделирования данных, откройте новое окно локальной консоли и перейдите к digital-twins-samples-main\DeviceSimulator\DeviceSimulator\DeviceSimulator.
Примечание.
Теперь у вас должно быть два открытых окна консоли: один из которых открыт в папке DeviceSimulator\DeviceSimulator , и один из предыдущих версий, который по-прежнему открыт для папки AdtSampleApp\SampleClientApp .
Используйте следующую команду dotnet для запуска проекта симулятора устройства:
dotnet run
Проект запускается и начинает отображать сообщения данных об имитированных данных устройства температуры. Они отправляются в Центр Интернета вещей, где функция Azure их собирает и обрабатывает.
В этой консоли больше ничего делать не нужно, но оставьте ее работающей для выполнения следующих шагов.
Просмотр результатов в Azure Digital Twins
Функция ProcessHubToDTEvents, опубликованная ранее, прослушивает данные Центр Интернета вещей и вызывает API Azure Digital Twins для обновления Temperature
свойства в двойнике термостат67.
Чтобы просмотреть данные из стороны Azure Digital Twins, перейдите в другое окно консоли, которое открыто в папке AdtSampleApp\SampleClientApp .
Запустите проект SampleClientApp с dotnet run
помощью .
dotnet run
После запуска проекта и принятия команд выполните следующую команду, чтобы получить температуры, сообщаемые термостатом цифрового двойника:
ObserveProperties thermostat67 Temperature
Вы должны увидеть обновления температуры в реальном времени из своего экземпляра Azure Digital Twins, которые регистрируются в консоли каждые 2 секунды. Они должны отражать значения, создаваемые симулятором данных (можно разместить окна консоли параллельно, чтобы убедиться, что координаты значений).
Примечание.
Для распространения данных с устройства на двойник может потребоваться несколько секунд. Первые несколько значений температуры могут показаться как 0 до начала поступления данных.
Убедившись, что ведение журнала динамической температуры работает успешно, можно остановить выполнение обоих проектов. Оставьте окна консоли открытыми, так как они будут использоваться позже в руководстве.
Распространение событий Azure Digital Twins с помощью графа
В этом руководстве вы узнаете, как Azure Digital Twins можно обновить из внешних данных устройства. Затем вы увидите, как изменения в одном цифровом двойнике могут распространяться с помощью графа Azure Digital Twins, иными словами, как обновлять двойники из внутренних данных службы.
Для этого вы используете функцию ProcessDTRoutedData Azure для обновления двойника комнаты при обновлении подключенного двойника Термостата. Обновление происходит в следующей части готового сценария (стрелка C):
Ниже приведены действия, выполняемые для настройки этого потока данных:
- Создание раздела сетки событий для включения перемещения данных между службами Azure
- Создание конечной точки в Azure Digital Twins, которая подключает экземпляр к разделу "Сетка событий"
- Настройка маршрута в Azure Digital Twins для отправки событий изменения свойств двойника в конечную точку.
- Настройка функции Azure, которая прослушивает раздел Сетки событий в конечной точке, получает события изменения свойства двойника, отправленные туда, и обновляет другие двойники в графе соответствующим образом.
Создание раздела "Сетка событий"
Сетка событий — это служба Azure, которая помогает маршрутизировать и доставлять события из служб Azure в другие места в Azure. Вы можете создать раздел Сетки событий для сбора определенных событий из источника, а затем подписчики могут прослушивать тему, чтобы получать события по мере их выполнения.
В Azure CLI выполните следующую команду, чтобы создать раздел сетки событий:
az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>
Выходные данные этой команды — это сведения о созданном разделе сетки событий. Сохраните имя , которое вы предоставили разделу "Сетка событий", так как вы будете использовать его позже.
Создание конечной точки
Затем создайте конечную точку сетки событий в Azure Digital Twins, которая подключит экземпляр к разделу "Сетка событий". Используйте приведенную ниже команду, заполнив имя раздела сетки событий из предыдущего шага и других полей заполнителей по мере необходимости.
az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>
Выходные данные этой команды содержат сведения о созданной конечной точке.
Найдите поле provisioningState
в выходных данных и убедитесь, что оно имеет значение Succeeded (Успешно).
Если отображается значение Provisioning (Подготовка), конечная точка все еще создается. Если это так, подождите несколько секунд и выполните указанную ниже команду, чтобы проверить состояние конечной точки. Выполняйте это, пока provisioningState
не отобразит значение Succeeded (Успешно).
az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint>
Сохраните имя конечной точки, так как оно понадобится вам позже.
Создание маршрута
Затем создайте маршрут Azure Digital Twins, который отправляет события в созданную конечную точку сетки событий.
Используйте следующую команду CLI, заполнив имя конечной точки на предыдущем шаге и другие поля заполнителей по мере необходимости. Эта команда переправляет все события, происходящие в графе двойника.
Совет
При необходимости с помощью фильтров можно ограничить список событий.
az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>
Выходные данные этой команды содержат сведения о созданном маршруте.
Примечание.
Конечные точки (из предыдущего шага) должны завершить подготовку до настройки маршрута события, в котором они используются. Если создание маршрута завершается сбоем из-за неготовности конечных точек, подождите несколько минут и повторите попытку.
Подключение функции Azure
Затем подпишитесь на функцию ProcessDTRoutedData Azure в разделе "Сетка событий", который вы ранее создали. Эта подписка позволяет имитировать данные устройства из двойника термостат67 через раздел Сетки событий в функцию, которая возвращается в Azure Digital Twins и обновляет двойник room21 соответствующим образом.
Для этого вы создадите подписку сетки событий, которая отправляет данные из раздела сетки событий, созданного ранее в функцию ProcessDTRoutedData Azure.
Чтобы создать подписку на события, используйте следующую команду CLI. Существует заполнитель для ввода имени этой подписки на события, а также заполнители для ввода идентификатора подписки, группы ресурсов, имени раздела "Сетка событий" и имени приложения-функции.
az eventgrid event-subscription create --name <name-for-topic-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessDTRoutedData
Запуск имитации и просмотр результатов
Теперь должна появиться возможность передачи событий из смоделированного устройства в Azure Digital Twins, а также обновления двойников в графе Azure Digital Twins. В этом разделе вы снова запустите симулятор устройства, чтобы запустить полный поток событий, который вы настроили, и запросите Azure Digital Twins, чтобы просмотреть динамические результаты.
Перейдите в окно консоли, открытое в папке DeviceSimulator\DeviceSimulator , и запустите проект симулятора устройства с dotnet run
помощью.
Как и при первом запуске симулятора устройства, проект запускается и отображает имитированные сообщения о данных устройства температуры. Эти события проходят по потоку, который вы настроили ранее, чтобы обновить двойник thermostat67, а затем по потоку, который вы только что настроили, чтобы обновить двойник room21.
В этой консоли больше ничего делать не нужно, но оставьте ее работающей для выполнения следующих шагов.
Чтобы просмотреть данные из стороны Azure Digital Twins, перейдите в другое окно консоли, открытое в папке AdtSampleApp\SampleClientApp, и запустите проект SampleClientApp с dotnet run
помощью .
После запуска проекта и принятия команд выполните следующую команду, чтобы получить температуры, сообщаемые как цифровым двойником термостат67, так и цифровым двойником room21.
ObserveProperties thermostat67 Temperature room21 Temperature
Вы должны увидеть обновления температуры в реальном времени из своего экземпляра Azure Digital Twins, которые регистрируются в консоли каждые 2 секунды. Обратите внимание, что температура для room21 обновляется в соответствии с обновлениями в thermostat67.
Убедившись, что ведение журнала динамической температуры из экземпляра работает успешно, можно остановить выполнение обоих проектов. Вы также можете закрыть оба окна консоли, так как руководство завершено.
Отзыв
Ниже приведен обзор сценария, созданного в этом руководстве.
- Экземпляр Azure Digital Twins цифрово представляет пол, комнату и термостат (представлен разделом A на следующей схеме).
- Имитированные данные устройства отправляются в Центр Интернета вещей, где функция ProcessHubToDTEvents Azure прослушивает события данных устройства. Функция ProcessHubToDTEvents Azure использует сведения в этих событиях для задания
Temperature
свойства термостат67 (стрелка B на следующей схеме). - События изменения свойств в Azure Digital Twins направляются в раздел "Сетка событий", где функция Azure ProcessDTRoutedData прослушивает события. Функция Azure ProcessDTRoutedData использует сведения в этих событиях для задания
Temperature
свойства в room21 (стрелка C на следующей схеме).
Очистка ресурсов
По завершении работы с этим руководством вы можете выбрать ресурсы, которые нужно удалить, в зависимости от планируемых действий.
Если вам не нужен какой-либо из ресурсов, созданных в этом руководстве, можно удалить экземпляр Azure Digital Twins и все остальные ресурсы из этой статьи с помощью команды az group delete CLI. При этом будут удалены все ресурсы Azure в группе ресурсов, а также сама группа.
Внимание
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы.
Откройте Azure Cloud Shell или локальное окно CLI и выполните следующую команду, чтобы удалить группу ресурсов и все, что она содержит.
az group delete --name <your-resource-group>
Если вы хотите продолжить использование экземпляра Azure Digital Twins, настроенного в этой статье, но удалите некоторые или все его модели, двойники и связи, можно использовать команды az dt CLI для удаления элементов, которые вы хотите удалить.
Этот параметр не удаляет другие ресурсы Azure, созданные в этом руководстве (Центр Интернета вещей, Функции Azure приложения и т. д.). Эти ресурсы можно удалить по отдельности с помощью команд dt, соответствующих каждому типу ресурса.
Вы также можете удалить папку проекта с локального компьютера.
Следующие шаги
В этом руководстве вы создали комплексный сценарий, показывающий Azure Digital Twins, управляемый данными динамического устройства.
Далее ознакомьтесь со следующей документацией по основным понятиям, чтобы больше узнать об элементах, с которыми вы работали в этом учебнике.