Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот учебник Azure Digital Twins описывает, как создать комплексное решение, демонстрирующее функциональность этого сервиса. Чтобы настроить полное комплексное решение, управляемое живыми данными из вашего окружения, вы можете подключить ваш экземпляр Azure Digital Twins к другим службам Azure для управления устройствами и данными.
В этом руководстве вы...
- Настройте экземпляр Azure Digital Twins
- Узнайте о примерном сценарии построения и создайте предварительно написанные компоненты.
- Используйте приложение Azure Functions, чтобы направить данные симулированного устройства из устройства IoT Hub в свойства цифрового двойника.
- Распространяйте изменения через граф двойников, обрабатывая уведомления цифровых двойников с помощью Azure Functions, конечных точек и маршрутов.
Prerequisites
Прежде чем начать этот учебник, убедитесь, что выполнили следующие предварительные условия:
- Если у вас нет подписки Azure, создайте бесплатную учетную запись перед началом работы.
- This tutorial uses .NET. Вы можете скачать последнюю версию .NET SDK для нескольких платформ с Download .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. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете выполнять команды CLI справочника локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Для дополнительной информации см. How to run the Azure CLI in a Docker container.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login. Чтобы завершить процесс аутентификации, выполните шаги, отображаемые в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вам будет предложено, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Запустите az version, чтобы найти версию и установленные библиотеки зависимостей. Чтобы обновиться до последней версии, выполните команду az upgrade.
Настройка сеанса CLI
Чтобы начать работу с Azure Digital Twins в интерфейсе командной строки, первое, что необходимо сделать, — авторизоваться и установить контекст интерфейса командной строки для этой подписки на данный сеанс. Запустите эти команды в вашем CLI окне.
az login
az account set --subscription "<your-Azure-subscription-ID>"
Tip
Вы также можете использовать имя подписки вместо идентификатора в предыдущей команде.
Если вы впервые используете эту подписку с 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, см. Написание кода аутентификации приложения.
With DefaultAzureCredential
, the sample searches for credentials in your local environment, like an Azure sign-in in a local Azure CLI or in Visual Studio or Visual Studio Code. По этой причине вам следует войти в Azure локально через один из этих механизмов, чтобы настроить учетные данные для образца.
Если вы используете Visual Studio или Visual Studio Code для выполнения примеров кода, убедитесь, что вы вошли в этот редактор с теми же учетными данными Azure, которые хотите использовать для доступа к экземпляру Azure Digital Twins. Если вы используете локальное окно CLI, выполните команду az login
, чтобы войти в свою учетную запись Azure. После входа при запуске примера кода необходимо автоматически пройти проверку подлинности.
Начните с сценария строительства
В этом учебном пособии используется пример проекта, который представляет собой сценарий реального здания, содержащий пол, комнату и термостат. Эти компоненты цифровым образом представлены в экземпляре Azure Digital Twins, который подключен к IoT Hub, Event Grid и двум Azure functions для обеспечения перемещения данных.
Следующая диаграмма представляет полную ситуацию.
Сначала создайте экземпляр Azure Digital Twins (раздел A на диаграмме), затем настройте поток данных устройства в цифровые двойники (стрелка B), а затем настройте распространение данных через граф двойников (стрелка C).
Вы работаете со сценарием, взаимодействуя с компонентами заранее написанного примерного приложения, которое вы скачали ранее.
Вот компоненты, реализованные в сценарии построения приложения AdtSampleApp:
- Аутентификация устройства
- .NET (C#) SDK примеры использования (содержатся в CommandLoop.cs)
- Консольный интерфейс для вызова Azure Digital Twins API
- SampleClientApp - пример решения для Azure Digital Twins
- SampleFunctionsApp - Приложение Azure Functions, которое обновляет ваш граф Azure Digital Twins на основе данных устройств из IoT Hub и событий Azure Digital Twins.
Создайте экземпляр заранее созданного двойного графа
Сначала вы используете решение AdtSampleApp из примерного проекта, чтобы создать часть сценария от начала до конца для Azure Digital Twins (раздел А):
Откройте локальное окон консоли и перейдите в папку 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 Functions, которое будет использоваться на протяжении всего этого руководства для обработки данных. Приложение функции, SampleFunctionsApp, содержит две функции:
- ProcessHubToDTEvents: обрабатывает входящие данные IoT Hub и обновляет 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 CLI, это может быть то же окно) и перейдите в папку digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp внутри вашего загруженного проектного примера.
В консоли выполните следующую команду, чтобы опубликовать проект локально:
dotnet publish -c Release -o publish
Эта команда публикует проект в каталог digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish.
Используя предпочтительный вами метод, создайте zip-файл опубликованных файлов, которые находятся inside в каталоге digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish. Назовите заархивированную папку publish.zip.
Важно
Убедитесь, что в заархивированной папке нет дополнительного уровня для самой папки publish. Оно должно содержать только те материалы, которые находились в папке publish.
Вот изображение того, как может выглядеть содержимое zip-файла (оно может измениться в зависимости от вашей версии .NET).
Последний шаг выполняется в Azure CLI.
В Azure CLI выполните следующую команду, чтобы развернуть опубликованные и заархивированные функции в вашем приложении Azure Function.
az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
Tip
Если вы используете CLI Azure локально, вы можете получить доступ к 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
.
Обработка данных с симулированного устройства от устройства IoT Hub
Как правило, данные с устройств реальных устройств формируют граф Azure Digital Twins.
На этом этапе вы подключаете симулированное устройство термостата, зарегистрированное в IoT Hub, к цифровому двойнику, который представляет его в Azure Digital Twins. Когда имитируемое устройство передает данные, они направляются через функцию Azure ProcessHubToDTEvents, которая вызывает соответствующее обновление в цифровом двойнике. Таким образом, цифровой двойник всегда обновляется в соответствии с данными реального устройства. В Azure Digital Twins процесс направления данных событий из одного места в другое называется routing events.
Обработка данных с моделируемого устройства происходит на этой части сквозного сценария (стрелка B):
Вот действия, которые необходимо выполнять для настройки подключения этого устройства:
- Создайте центр управления IoT, который управляет симулированным устройством.
- Подключите центр IoT к соответствующей функции Azure, настроив подписку на события.
- Зарегистрируйте симулированное устройство в узле IoT
- Запустите смоделированное устройство и сгенерируйте данные устройства.
- Запросите Azure Digital Twins, чтобы увидеть результаты в реальном времени.
Создайте экземпляр IoT Hub
Azure Digital Twins предназначен для работы вместе с IoT Hub, службой Azure для управления устройствами и их данными. На этом этапе вы настраиваете центр IoT, который управляет тестовым устройством в данном руководстве.
В интерфейсе командной строки Azure используйте следующую команду, чтобы создать новую IoT-центр:
az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1
Вывод этой команды - информация о созданном центре IoT.
Сохраните имя вашего IoT-хаба для использования позже.
Подключите концентратор IoT к функции Azure
Затем подключите свой IoT-хаб к функции Azure ProcessHubToDTEvents в приложении функции, которое вы опубликовали ранее. Это соединение позволяет данным из устройства в IoT Hub проходить через функцию, которая обновляет Azure Digital Twins.
Чтобы сделать это, создайте подписку на событие в вашем IoT Hub с функцией Azure в качестве конечной точки. Это "подписывает" функцию на события, происходящие в IoT Hub.
Используйте следующую команду CLI, чтобы создать подписку на событие. В текстовом виде предусмотрено место для ввода имени подписки на событие, а также места для ввода идентификатора вашей подписки, группы ресурсов, имени концентратора IoT и имени вашего приложения функции.
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, чтобы добавить этого поставщика ресурсов к вашей подписке, следуя инструкциям в разделе Регистрация поставщика ресурсов.
Зарегистрируйте смоделированное устройство в IoT Hub
Этот раздел создаёт представление устройства в IoT Hub с идентификатором thermostat67. The simulated device connects to this representation, which is how device data flows from the device into IoT Hub. IoT-хаб — это место, где подписанная Azure функция из предыдущего шага ожидает, готовая принять события и продолжить обработку.
In the Azure CLI, create a device in IoT Hub with the following command:
az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>
Вывод — это информация об устройстве, которое было создано.
Configure and run the simulation
Важно
Эта статья содержит инструкции по подключению устройства с использованием общей подписи для доступа, также называемого аутентификацией по симметричному ключу. Этот метод аутентификации удобен для тестирования и оценки, но аутентификация устройства с использованием сертификатов X.509 является более безопасным подходом. Дополнительные сведения см. в разделе Лучшие методы обеспечения безопасности IoT-решений > Безопасность подключения.
Далее настройте симулятор устройства для отправки данных в вашу экземпляр IoT Hub.
Начните с получения строки подключения IoT-узла с помощью следующей команды. Значение строки подключения начинается с HostName=
.
az iot hub connection-string show --hub-name <your-IoT-hub-name>
Then, get the device connection string with this command:
az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>
Далее, вставьте эти значения в код симулятора устройства в вашем локальном проекте, чтобы подключить симулятор к этому IoT хабу и устройству IoT хаба.
Перейдите на вашем локальном компьютере в загруженную папку с образцом, а затем в папку 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, и одно из ранее открытых, которое всё ещё открыто в папке AdtSampleApp\SampleClientApp.
Используйте следующую команду dotnet, чтобы запустить проект симулятора устройства.
dotnet run
Проект начинает работу и начинает отображать сообщения с имитированными данными температуры устройства. Эти сообщения отправляются в IoT Hub, где они затем обрабатываются функцией Azure.
Вам не нужно больше ничего делать в этой консоли, но оставьте её запущенной, пока вы выполняете следующие шаги.
Посмотрите результаты в Azure Digital Twins
Функция ProcessHubToDTEvents, опубликованная вами ранее, отслеживает данные из IoT Hub и вызывает API Azure Digital Twins для обновления свойства Temperature
в двойнике thermostat67.
Чтобы увидеть данные со стороны Azure Digital Twins, переключитесь на другое окно консоли, открытое в папке AdtSampleApp\SampleClientApp. Запустите проект SampleClientApp с dotnet run
.
dotnet run
Как только проект запущен и готов принимать команды, выполните следующую команду, чтобы получить данные о температуре, предоставляемые цифровым двойником термостата67:
ObserveProperties thermostat67 Temperature
Вы должны видеть, как актуализированные температуры из вашего экземпляра Azure Digital Twins регистрируются в консоли каждые две секунды. Они должны отражать значения, которые генерирует симулятор данных (вы можете расположить окна консоли рядом, чтобы убедиться, что значения согласованы).
Примечание
Для передачи данных с устройства к двойнику может потребоваться несколько секунд. Первые несколько показаний температуры могут отображаться как 0, прежде чем начнут поступать данные.
После того как вы удостоверитесь, что ведение журнала температуры в реальном времени успешно работает, вы можете остановить выполнение обоих проектов. Оставьте окна консоли открытыми, так как вы будете использовать их снова позже в ходе руководства.
Передавайте события Azure Digital Twins через граф
На данный момент в этом руководстве показано, как можно обновлять Azure Digital Twins с помощью данных от внешних устройств. Далее вы увидите, как изменения в одном цифровом двойнике могут распространяться через граф Azure Digital Twins — другими словами, как обновлять двойники, используя данные, внутренние для сервиса.
Чтобы сделать это, используйте функцию Azure ProcessDTRoutedData для обновления двойника комнаты, когда обновляется связанный двойник термостата. Функциональность обновления реализуется в этой части сквозного сценария (стрелка C):
Вот действия, которые вы выполняете, чтобы настроить этот поток данных:
- Создайте тему Event Grid, чтобы обеспечить передачу данных между службами Azure
- Создайте конечную точку в Azure Digital Twins, которая соединяет экземпляр с темой Event Grid.
- Настройте маршрут в Azure Digital Twins так, чтобы события изменения свойств двойников отправлялись на конечный пункт назначения.
- Настройте функцию Azure, которая прослушивает тему Event Grid на конечной точке, получает события изменения свойств близнецов, которые туда отправлены, и соответственно обновляет другие близнецы в графе.
Создайте тему Event Grid
Event Grid — это служба Azure, которая помогает маршрутизировать и доставлять события от сервисов Azure в другие места в пределах Azure. Вы можете создать тему Event Grid, чтобы собирать определенные события из источника, а затем подписчики могут следить за темой, чтобы получать события по мере их поступления.
В Azure CLI выполните следующую команду, чтобы создать тему Event Grid:
az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>
Вывод этой команды содержит информацию о созданной вами теме Event Grid. Сохраните имя, которое вы дали своей теме Event Grid, так как оно понадобится вам позже.
Создайте конечную точку.
Затем создайте конечную точку Event Grid в Azure Digital Twins, которая подключит ваш экземпляр к вашей теме Event Grid. Используйте приведенную ниже команду, заполнив имя вашей темы Event Grid из предыдущего шага и другие поля-заполнители по мере необходимости.
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
не покажет "Успешно."
az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint>
Сохраните название вашей конечной точки, так как оно вам понадобится позже.
Создать маршрут
Далее создайте маршрут для Azure Digital Twins, который отправляет события на конечную точку Event Grid, которую вы создали.
Используйте следующую команду CLI, заполнив имя вашего конечного узла из предыдущего шага и другие поля-заглушки по мере необходимости. Эта команда перенаправляет все события, происходящие в двойном графе.
Tip
Вы можете ограничить события только конкретными, если хотите, с помощью фильтров.
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
Далее, подключите функцию Azure ProcessDTRoutedData к созданной вами ранее теме Event Grid. Эта подписка позволяет передавать данные имитируемых устройств от двойника thermostat67 через тему Event Grid к функции, которая возвращается в Azure Digital Twins и, соответственно, обновляет двойника room21.
Чтобы это сделать, вы создаете подписку Event Grid, которая отправляет данные из созданной вами ранее темы Event Grid в вашу функцию Azure ProcessDTRoutedData.
Используйте следующую команду CLI для создания подписки на событие. Для вас предусмотрены поля для ввода имени этой подписки на событие, а также поля для ввода идентификатора вашей подписки, группы ресурсов, имени вашей темы Event Grid и имени вашего приложения функции.
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
.
Подобно тому, как при первом запуске симулятора устройства, проект запускается и отображает сообщения с данными о температуре, созданными имитацией. Эти события проходят через поток, который вы настроили ранее, чтобы обновить близнеца термостата67, а затем проходят через поток, который вы настроили недавно, чтобы обновить близнеца комнаты21 в соответствии с настройками.
Вам не нужно ничего больше делать в этой консоли, просто оставьте её работающей, пока выполняете следующие шаги.
Чтобы увидеть данные со стороны Azure Digital Twins, откройте другое окно консоли, в котором открыта папка AdtSampleApp\SampleClientApp, и запустите проект SampleClientApp с dotnet run
.
Как только проект будет запущен и начнет принимать команды, выполните следующую команду, чтобы получить данные о температуре, сообщаемые цифровыми двойниками thermostat67 и room21.
ObserveProperties thermostat67 Temperature room21 Temperature
Вы должны видеть, как обновляемые в реальном времени температуры из вашей инстанции Azure Digital Twins регистрируются в консоли каждые две секунды. Обратите внимание, что температура для комнаты21 обновляется, чтобы соответствовать изменениям в термостате67.
После того как вы удостоверитесь, что запись текущих температур из вашего экземпляра работает успешно, вы можете остановить выполнение обоих проектов. Вы также можете закрыть оба окна консоли, так как руководство теперь завершено.
Обзор
Вот обзор сценария, который вы создали в этом учебном пособии.
- Экземпляр Azure Digital Twins цифровым образом представляет этаж, комнату и термостат (представленный как секция A на следующей диаграмме).
- Смоделированные данные устройства отправляются в IoT Hub, где функция Azure ProcessHubToDTEvents прослушивает события данных устройства. Функция Azure ProcessHubToDTEvents использует информацию в этих событиях, чтобы установить свойство
Temperature
на термостате67 (стрелка B на следующей диаграмме). - События изменения свойств в Azure Digital Twins направляются к теме Event Grid, где функция Azure ProcessDTRoutedData ожидает события. Функция Azure ProcessDTRoutedData использует информацию из этих событий, чтобы установить свойство
Temperature
для room21 (стрелка C на следующей диаграмме).
Освободить ресурсы
После завершения этого урока вы можете выбрать, какие ресурсы вы хотите удалить, в зависимости от того, что вы планируете сделать дальше.
Если вам не нужны какие-либо из ресурсов, созданных в рамках этого руководства, вы можете удалить экземпляр Azure Digital Twins и все другие ресурсы из этой статьи с помощью команды CLI az group delete. Это удаляет все ресурсы Azure в группе ресурсов, а также саму группу ресурсов.
Важно
Удаление группы ресурсов необратимо. Группа ресурсов и все содержащиеся в ней ресурсы будут навсегда удалены. Убедитесь, что вы случайно не удалили неправильную группу ресурсов или ресурсы.
Откройте Azure Cloud Shell или локальное окно CLI и выполните следующую команду, чтобы удалить группу ресурсов и все, что она содержит.
az group delete --name <your-resource-group>
Если вы хотите продолжить использовать экземпляр Azure Digital Twins, который вы настроили в этой статье, но очистить некоторые или все его модели, близнецы и связи, вы можете использовать команды CLI az dt для удаления элементов, которые хотите удалить.
Этот параметр не удаляет никакие другие ресурсы Azure, созданные в этом учебнике (IoT Hub, приложение Azure Functions и так далее). Вы можете удалить эти ресурсы по отдельности, используя dt команды, соответствующие каждому типу ресурса.
Вы также можете удалить папку проекта с вашего локального компьютера.
Следующие шаги
В этом руководстве вы создали сквозной сценарий, демонстрирующий Azure Digital Twins, управляемый данными от живых устройств.
Теперь начните изучать концептуальную документацию, чтобы узнать больше об элементах, с которыми вы работали в учебнике.