Руководство. Создание комплексного решения

В этом учебнике по Azure Digital Twins описано, как создать комплексное решение, демонстрирующее функциональность службы. Чтобы настроить полное готовое решение, управляемое динамическими данными из вашей среды, вы можете подключить свой экземпляр Azure Digital Twins к другим службам Azure, предназначенным для управления устройствами и данными.

В этом учебнике вам предстоит выполнить следующее.

  • Настроить экземпляр Azure Digital Twins.
  • Познакомиться с примером сценария сборки и узнать, как реализуются предварительно созданные компоненты.
  • Использовать приложение Функции Azure для маршрутизации имитированных данных телеметрии из устройства Центра Интернета вещей в свойства цифрового двойника.
  • Распространение изменений через граф двойников путем обработки уведомлений цифровых двойников с помощью Функции Azure, конечных точек и маршрутов

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

Перед началом работы с этим руководством начните с следующих предварительных требований:

Затем перейдите к остальным разделам, чтобы настроить оставшиеся предварительные требования.

Получение примеров ресурсов

Это руководство основано на учебном проекте Azure Digital Twins, написанном на C#. Получите пример проекта на компьютере, перейдя по ссылке образца и нажав кнопку "Обзор кода " под заголовком.

Вы попадете в репозиторий GitHub с примерами, которые можно скачать в виде ZIP-архива, нажав кнопку Код и выбрав Скачать ZIP-архив.

Screenshot of the digital-twins-samples repo on GitHub, highlighting the steps to download it as a 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).

Diagram of the full building scenario, which shows the data flowing from a device into and out of Azure Digital Twins through various Azure services.

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

Ниже перечислены компоненты, реализованные в примере приложения 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):

Diagram of an excerpt from the full building scenario diagram highlighting the Azure Digital Twins instance section.

Откройте локальное окно консоли и перейдите в папку digital-twins-samples-main\AdtSampleApp\SampleClientApp . Запустите проект SampleClientApp с помощью этой команды dotnet:

dotnet run

Проект запустится, выполняет проверку подлинности и ожидает выполнения команды. Создайте экземпляр примера решения Azure Digital Twins, выполнив в этой консоли следующую команду.

Важно!

Если в вашем экземпляре Azure Digital Twins уже есть цифровые двойники и связи, при выполнении этой команды они будут удалены и заменены на двойники и связи для данного примера сценария.

SetupBuildingScenario

В выходных данных этой команды отображается ряд подтверждающих сообщений о том, что в вашем экземпляре Azure Digital Twins созданы и подключены три цифровых двойника: этаж floor1, комната room21 и датчик температуры thermostat67. Эти цифровые двойники представляют сущности, которые присутствуют в реальной среде.

С помощью связей они подключаются к следующему графу двойников. Этот граф двойников представляет среду в целом, включая взаимодействие сущностей и их связи друг с другом.

Diagram showing that floor1 contains room21, and room21 contains 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. В каждой команде замените все заполнители в угловых скобках сведениями о собственных ресурсах.

  1. Создайте учетную запись хранения Azure, выполнив следующую команду:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Создайте приложение-функцию 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 --runtime-version 7 --resource-group <resource-group>
    
  3. Затем запакуйте функции и опубликуйте их в новом приложении-функции Azure.

    1. Откройте окно консоли на компьютере и перейдите в папку digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp в скачанный пример проекта.

    2. В консоли выполните следующую команду, чтобы опубликовать проект локально:

      dotnet publish -c Release -o publish
      

      Эта команда публикует проект в каталоге digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish .

    3. Используя предпочитаемый метод, создайте zip-файл опубликованных файлов, расположенных в каталоге digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish . Назовите zippped folder publish.zip.

      Важно!

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

      Вот изображение того, как может выглядеть zip-содержимое (оно может измениться в зависимости от вашей версии .NET).

      Screenshot of File Explorer in Windows showing the contents of the publish zip folder.

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

  4. В 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 с помощью этой кнопки:

    Screenshot of the Azure Cloud Shell highlighting how to upload files.

    В этом случае файл будет передан в корневой каталог хранилища 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.

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

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Используйте значение 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. Как только имитированное устройство выпускает телеметрию, эти данные направляются в функцию Azure ProcessHubToDTEvents, которая запускает соответствующее обновление в цифровом двойнике. Таким образом, цифровой двойник будет поддерживаться в полном соответствии с данными реального устройства. В Azure Digital Twins процесс направления данных событий из одного места в другое называется маршрутизацией событий.

Обработка смоделированной телеметрии происходит в этой части комплексного сценария (стрелка B).

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows elements before Azure Digital Twins.

Для настройки этого подключения устройства необходимо выполнить следующие действия.

  1. Создать Центр Интернета вещей, который будет управлять имитированным устройством.
  2. Подключить Центр Интернета вещей к соответствующей функции Azure путем настройки подписки на события.
  3. Зарегистрировать имитированное устройство в Центре Интернета вещей.
  4. Запустить имитированное устройство и создать данные телеметрии.
  5. Выполнить запрос в 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

Теперь подключите свой Центр Интернета вещей к функции Azure ProcessHubToDTEvents в приложении-функции, опубликованном ранее, чтобы данные могли передаваться с устройства в Центре Интернета вещей через эту функцию, которая обновляет 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>

Выходные данные этой команды содержат сведения о созданном устройстве.

Настройка и запуск имитации

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

Начните с получения центра Интернета вещей строка подключения с помощью следующей команды. Значение строка подключения начинается с 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 их собирает и обрабатывает.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

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

Просмотр результатов в 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 секунды. Они должны отражать значения, создаваемые симулятором данных (можно разместить окна консоли параллельно, чтобы убедиться, что координаты значений).

Примечание.

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

Screenshot of the console output showing log of temperature messages from digital twin thermostat67.

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

Распространение событий Azure Digital Twins с помощью графа

Пока из этого учебника вы узнали, как можно обновлять Azure Digital Twins данными из внешних устройств. Теперь будет показано, как изменения в одном цифровом двойнике могут распространяться через граф Azure Digital Twins — иными словами, как обновлять двойники из внутренних данных службы.

Чтобы выполнить это, вы будете использовать функцию Azure ProcessDTRoutedData для обновления двойника комнаты при обновлении двойника терморегулятора. Обновление происходит в следующей части готового сценария (стрелка C):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows the elements after Azure Digital Twins.

Для настройки этого потока данных необходимо выполнить следующие действия.

  1. Создание раздела сетки событий для включения перемещения данных между службами Azure
  2. Создание конечной точки в Azure Digital Twins, которая подключает экземпляр к разделу "Сетка событий"
  3. Настройка маршрута в Azure Digital Twins для отправки событий изменения свойств двойника в конечную точку.
  4. Настройка функции 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 (Успешно).

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of 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 и обновляет двойник комнаты 21 соответствующим образом.

Для этого вы создадите подписку сетки событий, которая отправляет данные из раздела сетки событий, созданного ранее в функцию 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.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

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

Чтобы просмотреть данные из стороны Azure Digital Twins, перейдите в другое окно консоли, открытое в папке AdtSampleApp\SampleClientApp, и запустите проект SampleClientApp с dotnet runпомощью .

После запуска и принятия команд выполните следующую команду, чтобы получить температуры, сообщаемые термостатом цифрового двойника и цифровым двойником room21.

ObserveProperties thermostat67 Temperature room21 Temperature

Вы должны увидеть обновления температуры в реальном времени из своего экземпляра Azure Digital Twins, которые регистрируются в консоли каждые 2 секунды. Обратите внимание, что температура для room21 обновляется в соответствии с обновлениями в thermostat67.

Screenshot of the console output showing a log of temperature messages, from a thermostat and a room.

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

Отзыв

Ниже приведен обзор сценария, созданного в этом руководстве.

  1. Экземпляр Azure Digital Twins имеет цифровые двойники этажа, комнаты и терморегулятора (представленные областью A на схеме ниже).
  2. Данные телеметрии имитированного устройства отправляются в Центр Интернета вещей, где функция Azure ProcessHubToDTEvents прослушивает события телеметрии. Функция ProcessHubToDTEvents Azure использует сведения в этих событиях для задания Temperature свойства термостат67 (стрелка B на схеме).
  3. События изменения свойств в Azure Digital Twins направляются в раздел "Сетка событий", где функция Azure ProcessDTRoutedData прослушивает события. Функция ProcessDTRoutedData Azure использует сведения в этих событиях для задания Temperature свойства в room21 (стрелка C на схеме).

Diagram from the beginning of the article showing the full building scenario.

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

По завершении работы с этим руководством вы можете выбрать ресурсы, которые нужно удалить, в зависимости от планируемых действий.

  • Если вам не нужен какой-либо из ресурсов, созданных в этом руководстве, можно удалить экземпляр 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 в реальном времени.

Далее ознакомьтесь со следующей документацией по основным понятиям, чтобы больше узнать об элементах, с которыми вы работали в этом учебнике.