Partager via


Tutoriel : Créer une solution de bout en bout

Ce tutoriel Azure Digital Twins décrit comment créer une solution de bout en bout qui illustre les fonctionnalités du service. Pour configurer une solution de bout en bout complète basée sur les données réelles de votre environnement, vous pouvez connecter votre instance Azure Digital Twins à d’autres services Azure pour la gestion des appareils et des données.

Ce tutoriel présente les procédures suivantes :

  • Configurer une instance Azure Digital Twins
  • Découvrir l’exemple de scénario d’un bâtiment et instancier les composants pré-écrits
  • Utiliser une application Azure Functions pour router les données d’appareil simulé depuis un appareil IoT Hub vers les propriétés de jumeaux numériques
  • Propager les modifications par le biais du graphe de jumeaux, en traitant les notifications de jumeaux numériques avec Azure Functions, les points de terminaison et les routes

Prérequis

Avant de commencer ce tutoriel, configurez ces prérequis :

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Ce tutoriel utilise .NET. Vous pouvez télécharger la dernière version du SDK .NET pour plusieurs plateformes à partir de Télécharger .NET.

Ensuite, lisez le reste de cette section pour configurer les prérequis restants.

Obtenir des exemples de ressource

Ce tutoriel est piloté par un exemple de projet de bout en bout Azure Digital Twins écrit en C#. Pour obtenir l’exemple de projet sur votre machine, suivez le lien vers l’exemple, puis sélectionnez le bouton Parcourir le code sous le titre.

Cette action vous renvoie au dépôt GitHub d’exemples, que vous pouvez télécharger sous forme de fichier .zip en sélectionnant le bouton Code, puis Télécharger le ZIP.

Capture d’écran du dépôt digital-twins-samples sur GitHub, mettant en évidence les étapes permettant de le télécharger sous la forme d’un fichier zip.

Cette action télécharge un dossier .zip nommé digital-twins-samples-main.zip sur votre machine. Décompressez le dossier et extrayez les fichiers.

Préparer une instance Azure Digital Twins

Pour utiliser Azure Digital Twins dans cet article, vous devez disposer d’une instance Azure Digital Twins et des autorisations requises pour l’utiliser. Si vous disposez déjà d’une instance Azure Digital Twins configurée, vous pouvez utiliser cette instance et passer à la section suivante. Dans le cas contraire, suivez les instructions indiquées dans Configurer une instance et l’authentification. Les instructions contiennent des informations pour vous aider à vérifier que vous avez effectué chaque étape avec succès.

Une fois l’instance configurée, notez son nom d’hôte. Vous trouverez le nom d’hôte dans le portail Azure.

Préparation de votre environnement pour Azure CLI

Configurer une session CLI

Pour commencer à utiliser Azure Digital Twins dans l’interface CLI, vous devez d’abord vous connecter et définir votre abonnement en tant que contexte CLI pour cette session. Exécutez les commandes suivantes dans votre fenêtre CLI :

az login
az account set --subscription "<your-Azure-subscription-ID>"

Conseil

Vous pouvez également utiliser le nom de votre abonnement à la place de l’ID dans la commande ci-dessus.

Si vous utilisez cet abonnement avec Azure Digital Twins pour la première fois, exécutez cette commande pour vous inscrire auprès de l’espace de noms Azure Digital Twins. (En cas de doute, il est possible de la réexécuter même si vous l’avez fait par le passé.)

az provider register --namespace 'Microsoft.DigitalTwins'

Vous allez ensuite ajouter l’extension Microsoft Azure IoT pour Azure CLI afin d’activer les commandes permettant d’interagir avec Azure Digital Twins et d’autres services IoT. Exécutez cette commande pour vous assurer de disposer de la version la plus récente de l’extension :

az extension add --upgrade --name azure-iot

Vous êtes maintenant prêt à utiliser Azure Digital Twins dans Azure CLI.

Vous pouvez le vérifier en exécutant az dt --help à tout moment pour voir la liste des commandes Azure Digital Twins de niveau supérieur disponibles.

Configurer l’exemple de projet

Ensuite, configurez un exemple d’application cliente qui interagit avec votre instance Azure Digital Twins.

Sur votre ordinateur, accédez au dossier que vous avez téléchargé précédemment à partir des Exemples Azure Digital Twins de bout en bout (et décompressez-le si vous ne l’avez pas déjà fait).

Une fois dans le dossier, accédez au fichier digital-twins-samples-main\AdtSampleApp\SampleClientApp et ouvrez le fichier appsettings.json. Ce fichier JSON contient une variable de configuration nécessaire pour exécuter le projet.

Dans le corps du fichier, remplacez instanceUrl par l’URL de nom d’hôte de votre instance Azure Digital Twins (en ajoutant https:// devant le nom d’hôte, comme indiqué ci-dessous).

{
  "instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}

Enregistrez et fermez le fichier.

Configurer les informations d’identification Azure locales

Cet exemple utilise DefaultAzureCredential (qui fait partie de la bibliothèque Azure.Identity) pour authentifier les utilisateurs auprès de l’instance Azure Digital Twins quand vous l’exécutez sur votre ordinateur local. Pour plus d’informations sur les différentes façons dont une application cliente peut s’authentifier auprès d’Azure Digital Twins, consultez Écrire le code d’authentification de l’application.

Avec DefaultAzureCredential, l’exemple recherche les informations d’identification dans votre environnement local, comme une connexion Azure dans une interface de ligne de commande Azure locale ou dans Visual Studio ou Visual Studio Code. C’est la raison pour laquelle vous devez vous connecter à Azure localement via l’un de ces mécanismes afin de configurer les informations d’identification pour l’exemple.

Si vous utilisez Visual Studio ou Visual Studio Code pour exécuter des exemples de code, vérifiez que vous êtes connecté à cet éditeur avec les mêmes informations d’identification Azure que celles que vous souhaitez utiliser pour accéder à votre instance Azure Digital Twins. Si vous utilisez une fenêtre CLI locale, exécutez la commande az login pour vous connecter à votre compte Azure. Après cela, lorsque vous exécutez votre échantillon de code, vous devriez être authentifié automatiquement.

Démarrer avec le scénario d’un bâtiment

L’exemple de projet utilisé dans ce tutoriel représente un scénario de bâtiment concret, comportant un étage, une pièce et un thermostat. Ces composants sont représentés numériquement dans une instance Azure Digital Twins, qui est connectée à IoT Hub, Event Grid et à deux fonctions Azure pour permettre le déplacement des données.

Le diagramme suivant représente le scénario complet.

Vous créez d’abord l’instance Azure Digital Twins (section A dans le diagramme), puis configurez le flux de données d’appareil dans les jumeaux numériques (flèche B), et enfin configurez la propagation des données via le graphe de jumeaux (flèche C).

Diagramme du scénario de construction complet, qui montre les données circulant à partir d’un appareil vers et depuis Azure Digital Twins à travers différents services Azure.

Pour suivre le scénario, vous interagissez avec les composants de l’exemple d’application préécrite que vous avez téléchargés précédemment.

Voici les composants implémentés par l’exemple d’application AdtSampleApp du scénario d’un bâtiment :

  • Authentification des appareils
  • Exemples d’utilisation du SDK .NET (C#) (disponibles dans CommandLoop.cs)
  • Interface de la console pour appeler l’API Azure Digital Twins
  • SampleClientApp : exemple de solution Azure Digital Twins
  • SampleFunctionsApp : application Azure Functions qui met à jour votre graphe Azure Digital Twins en fonction des données d’appareil venant des événements IoT Hub et Azure Digital Twins

Instancier le graphe de jumeaux pré-créé

Tout d’abord, vous utilisez la solution AdtSampleApp de l’exemple de projet pour créer la partie Azure Digital Twins du scénario complet (section A) :

Diagramme d’une partie du diagramme du scénario de construction complet soulignant la section de l’instance Azure Digital Twins.

Ouvrez une fenêtre de console locale et accédez au dossier digital-twins-samples-main\AdtSampleApp\SampleClientApp. Exécutez le projet SampleClientApp avec cette commande dotnet :

dotnet run

Le projet commence à s’exécuter, effectue l’authentification, puis attend une commande. Dans cette console, exécutez la commande suivante pour instancier l’exemple de solution Azure Digital Twins.

Important

Si vous avez déjà des jumeaux numériques et des relations dans votre instance Azure Digital Twins, l’exécution de cette commande les supprime et les remplace par les jumeaux et les relations de l’exemple de scénario.

SetupBuildingScenario

Cette commande génère une série de messages confirmant la création et la connexion de trois jumeaux numériques dans votre instance d’Azure Digital Twins : un étage nommé floor1, une pièce nommée room21 et un capteur de température nommé thermostat67. Ces jumeaux numériques représentent les entités qui existeraient dans un environnement réel.

Ces entités sont connectées par le biais de relations dans le graphe de jumeaux. Le graphe de jumeaux représente l’environnement dans son ensemble, y compris les interactions et les liens entre les entités.

Diagramme montrant que floor1 contient room21 et que room21 contient thermostat67.

Vous pouvez vérifier les jumeaux qui ont été créées en exécutant la commande suivante, qui interroge l’instance Azure Digital Twins connectée afin de déterminer tous les jumeaux numériques qu’elle contient :

Query

Vous pouvez maintenant arrêter l’exécution du projet. Gardez toutefois la fenêtre de console ouverte à cet emplacement, car vous réutiliserez cette application plus loin dans le tutoriel.

Configurer l’exemple d’application de fonction

L’étape suivante consiste à configurer une application Azure Functions qui sera utilisée tout au long de ce tutoriel pour traiter les données. L’application de fonction, SampleFunctionsApp, contient deux fonctions :

  • ProcessHubToDTEvents : traite les données IoT Hub entrantes et met à jour Azure Digital Twins en conséquence
  • ProcessDTRoutedData : traite les données provenant des jumeaux numériques et met à jour les jumeaux parents dans Azure Digital Twins en conséquence

Dans cette section, vous publiez l’application de fonction préécrite et lui attribuez une identité Microsoft Entra pour qu’elle puisse accéder à Azure Digital Twins.

L’application de fonction fait partie de l’exemple de projet que vous avez téléchargé, situé dans le dossier digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp.

Publier l’application

Pour publier l’application de fonction sur Azure, vous devez créer un compte de stockage, puis créer l’application de fonction dans Azure et enfin publier les fonctions dans l’application de fonction Azure. Cette section complète ces actions à l’aide d’Azure CLI. Dans chaque commande, remplacez tous les espaces réservés entre crochets par les détails de vos propres ressources.

  1. Créez un compte de stockage Azure en exécutant la commande suivante :

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Créez une application de fonction Azure en exécutant la commande suivante :

    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>
    
  3. Ensuite, vous compressez les fonctions et les publiez dans votre nouvelle application de fonction Azure.

    1. Ouvrez une fenêtre de console sur votre ordinateur (si vous utilisez l’interface CLI locale, il peut s’agir de la même fenêtre), puis accédez au dossier digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp dans votre exemple de projet téléchargé.

    2. Dans la console, exécutez la commande suivante pour publier le projet localement :

      dotnet publish -c Release -o publish
      

      Cette commande publie le projet dans le répertoire digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish.

    3. En utilisant la méthode de votre choix, créez un zip des fichiers publiés qui se trouvent dans le répertoire digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish. Nommez le dossier zippé publish.zip.

      Important

      Assurez-vous que le dossier compressé n’inclut pas de couche supplémentaire pour le dossier publié lui-même. Il doit contenir uniquement le contenu qui se trouvait à l’intérieur du dossier publié.

      Voici à quoi devrait ressembler le contenu du zip (cela peut varier en fonction de votre version de .NET).

      Capture d’écran de l’explorateur de fichiers dans Windows affichant le contenu du dossier zip de publication.

    La dernière étape est effectuée dans Azure CLI.

  4. Dans Azure CLI, exécutez la commande suivante pour déployer les fonctions publiées et compressées dans votre application de fonction Azure :

    az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
    

    Conseil

    Si vous utilisez Azure CLI localement, vous pouvez accéder au fichier ZIP sur votre ordinateur directement à l’aide de son chemin d’accès sur votre machine.

    Si vous utilisez Azure Cloud Shell, chargez le fichier ZIP sur Cloud Shell à l’aide de ce bouton avant d’exécuter la commande :

    Capture d’écran d’Azure Cloud Shell avec mise en évidence la méthode de chargement des fichiers.

    Dans ce cas, le fichier est téléchargé dans le répertoire racine de votre stockage Cloud Shell, de sorte que vous pouvez faire référence au fichier directement par son nom pour le paramètre --src de la commande (par exemple, --src publish.zip).

    Un déploiement réussi répond avec le code d’état 202 et génère un objet JSON contenant les détails de votre nouvelle fonction. Vous pouvez vérifier que le déploiement a réussi en recherchant ce champ dans le résultat :

    "provisioningState": "Succeeded",
    

Les fonctions doivent maintenant être publiées dans une application de fonction dans Azure. Vous pouvez utiliser les commandes CLI suivantes pour vérifier que les deux fonctions ont été publiées avec succès. Chaque commande a des espaces réservés pour votre groupe de ressources, et le nom de votre application de fonction. Les commandes affichent des informations sur les fonctions ProcessDTRoutedData et ProcessHubToDTEvents que vous avez publiées.

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

Par ailleurs, pour que votre application de fonction puisse accéder à Azure Digital Twins, elle doit avoir l’autorisation d’accéder à votre instance Azure Digital Twins. Vous configurez cet accès dans la section suivante.

Configurer des autorisations pour l’application de fonction

Deux paramètres doivent être définis pour que l’application de fonction ait accès à votre instance Azure Digital Twins. Vous pouvez les définir à l’aide d’Azure CLI.

Attribuer le rôle d’accès

Le premier paramètre donne à l’application de fonction le rôle de Propriétaire des données Azure Digital Twins dans l’instance Azure Digital Twins. Ce rôle est requis pour tout utilisateur ou fonction souhaitant effectuer de nombreuses activités de plan de données sur l’instance. Vous pouvez en savoir plus sur la sécurité et les attributions de rôles dans Sécurité pour les solutions Azure Digital Twins.

  1. Utilisez la commande suivante pour créer une identité attribuée par le système pour la fonction. La sortie affiche les détails de l’identité affectée par le système. Notez le champ principalId dans la sortie, pour l’utiliser à l’étape suivante.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Utilisez la valeur principalId dans la commande suivante afin d’attribuer l’identité de l’application de fonction au rôle Propriétaire des données Azure Digital Twins pour votre instance 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"
    

Les résultats de cette commande décrivent l’attribution de rôle que vous avez créée. L’application de fonction dispose maintenant des autorisations nécessaires pour accéder aux données dans votre instance Azure Digital Twins.

Configurer le paramètre d’application

Le deuxième paramètre crée une variable d’environnement pour la fonction avec l’URL de votre instance Azure Digital Twins. Le code de fonction utilise la valeur de cette variable pour référencer votre instance. Pour plus d’informations sur les variables d’environnement, consultez Gérer votre application de fonction.

Exécutez la commande suivante en remplissant les espaces réservés avec les détails de vos ressources.

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>"

La sortie est la liste des paramètres de la fonction Azure, qui doit maintenant contenir une entrée appelée ADT_SERVICE_URL.

Traiter les données d’appareil simulé d’un appareil IoT Hub

En règle générale, les données d’appareil provenant de vrais appareils actionnent un graphe Azure Digital Twins.

Au cours de cette étape, vous connectez un thermostat simulé inscrit sur IoT Hub au jumeau numérique qui le représente dans Azure Digital Twins. À mesure que l’appareil simulé émet des données, celles-ci sont acheminées via la fonction Azure ProcessHubToDTEvents qui déclenche une mise à jour correspondante dans le jumeau numérique. De cette façon, le jumeau numérique reste à jour avec les données de l’appareil réel. Dans Azure Digital Twins, le processus de redirection des données d’événements est appelé événements de routage.

Le traitement des données d’appareil simulé a lieu dans cette partie du scénario complet (flèche B) :

Diagramme d’une partie du diagramme du scénario de construction complet soulignant la section qui montre les éléments avant Azure Digital Twins.

Voici les actions que vous effectuez pour configurer la connexion de cet appareil :

  1. Créer un hub IoT qui gère l’appareil simulé
  2. Connecter le hub IoT à la fonction Azure appropriée en configurant un abonnement aux événements
  3. Inscrire l’appareil simulé dans le hub IoT
  4. Exécuter l’appareil simulé et générer les données d’appareil
  5. Interroger Azure Digital Twins pour voir les résultats réels

Créer une instance IoT Hub

Azure Digital Twins est conçu pour fonctionner avec IoT Hub, service Azure de gestion des appareils et de leurs données. Dans cette étape, vous configurez un hub IoT qui gère l’appareil utilisé en exemple dans ce tutoriel.

Dans Azure CLI, utilisez cette commande pour créer un hub IoT :

az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1

Les informations générées par cette commande décrivent le hub IoT qui a été créé.

Enregistrez le nom de votre hub IoT à utiliser ultérieurement.

Connecter le hub IoT à la fonction Azure

Ensuite, connectez votre hub IoT à la fonction Azure ProcessHubToDTEvents dans l’application de fonction que vous avez publiée précédemment. Cette connexion permet aux données de circuler de l’appareil dans IoT Hub via la fonction, qui met à jour Azure Digital Twins.

Pour ce faire, vous créez un abonnement aux événements sur votre hub IoT, avec la fonction Azure comme point de terminaison. Cette opération « abonne » la fonction aux événements qui se produisent dans IoT Hub.

Utilisez la commande CLI suivante pour créer l’abonnement aux événements. Un espace réservé vous permet de saisir un nom pour l'abonnement à l'événement, ainsi que l'ID de l'abonnement, le groupe de ressources, le nom du hub IoT et le nom de votre application de fonction.

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

La sortie affiche des informations sur l’abonnement aux événements que vous avez créé. Vous pouvez confirmer que l’opération s’est terminée correctement en vérifiant la valeur provisioningState dans le résultat :

"provisioningState": "Succeeded",

Conseil

Si la commande retourne une erreur de fournisseur de ressources, ajoutez Microsoft.EventGrid comme fournisseur de ressources pour votre abonnement. Vous pouvez utiliser le portail Azure pour ajouter ce fournisseur de ressources à votre abonnement en suivant les instructions dans Inscrire le fournisseur de ressources.

Inscrire l’appareil simulé auprès d’IoT Hub

Dans cette section, vous allez créer une représentation d’appareil dans IoT Hub avec l’ID thermostat67. L’appareil simulé se connecte à cette représentation, qui décrit comment les données de l’appareil circulent de l’appareil vers IoT Hub. IoT Hub est l’endroit où la fonction Azure souscrite à l’étape précédente est à l’écoute, prête à récupérer les événements et à continuer le traitement.

Dans Azure CLI, créez un appareil dans IoT Hub à l’aide de la commande suivante :

az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>

Les informations générées décrivent l’appareil qui a été créé.

Configurer et démarrer la simulation

Important

Cet article comprend les étapes à suivre pour connecter un appareil en utilisant une signature d’accès partagé, également appelée « authentification par clé symétrique ». Cette méthode d’authentification est pratique pour les tests et les évaluations, mais l’authentification d’un appareil en utilisant des certificats X.509 est une approche plus sécurisée. Pour plus d’informations, consultez Meilleures pratiques de sécurité > Sécurité de la connexion.

Ensuite, configurez le simulateur d’appareil pour envoyer des données à votre instance IoT Hub.

Commencez par obtenir la chaîne de connexion IoT Hub à l’aide de la commande suivante. La valeur de la chaîne de connexion commence par HostName=.

az iot hub connection-string show --hub-name <your-IoT-hub-name>

Ensuite, récupérez la chaîne de connexion de l’appareil à l’aide de la commande suivante :

az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>

Ensuite, intégrez ces valeurs au code du simulateur d’appareil de votre projet local pour connecter le simulateur à ce hub IoT et à l’appareil IoT Hub.

Accédez à votre ordinateur local vers l’exemple de dossier téléchargé, puis accédez au dossier digital-twins-samples-main\DeviceSimulator\DeviceSimulator. Ouvrez le fichier AzureIoTHub.cs pour le modifier. Remplacez les valeurs de chaîne de connexion suivantes par les valeurs que vous avez collectées précédemment :

private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";

Enregistrez le fichier.

À présent, pour voir les résultats de la simulation de données que vous avez configurée, ouvrez une nouvelle fenêtre de console locale et accédez à digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Remarque

Vous devez maintenant avoir deux fenêtres de console ouvertes : une ouverte sur le dossier DeviceSimulator\DeviceSimulator et l’autre ouverte précédemment dans le dossier AdtSampleApp\SampleClientApp.

Utilisez la commande dotnet suivante pour exécuter le projet de simulateur d’appareil :

dotnet run

Le projet commence à s’exécuter et à afficher des messages de données du capteur de température simulé. Ces messages sont envoyés à IoT Hub, avant d’être récupérés et traités par la fonction Azure.

Capture d’écran de la sortie de la console du simulateur d’appareil montrant les données du capteur de température en cours d’envoi.

Vous n’avez rien d’autre à faire dans cette console, mais laissez-la s’exécuter pendant que vous effectuez les étapes suivantes.

Voir les résultats dans Azure Digital Twins

La fonction ProcessHubToDTEvents que vous avez publiée écoute les données IoT Hub et appelle une API Azure Digital Twins pour mettre à jour la propriété Temperature sur le jumeau thermostat67.

Pour afficher les données du côté Azure Digital Twins, basculez vers votre autre fenêtre de console ouverte dans le dossier AdtSampleApp\SampleClientApp. Exécutez le projet SampleClientApp avec dotnet run.

dotnet run

Une fois que le projet est en cours d’exécution et accepte les commandes, exécutez la commande suivante pour obtenir les températures indiquées par le jumeau numérique thermostat67 :

ObserveProperties thermostat67 Temperature

Les températures mises à jour réelles issues de votre instance Azure Digital Twins doivent normalement être journalisées dans la console toutes les deux secondes. Elles doivent refléter les valeurs générées par le simulateur de données (vous pouvez placer les fenêtres de console côte à côte pour vérifier que les valeurs sont coordonnées).

Remarque

La propagation des données de l’appareil vers le jumeau risque de prendre quelques secondes. Les premières valeurs de température peuvent indiquer 0 avant l’arrivée des données.

Capture d’écran de la sortie de la console montrant le journal des messages de température issus du jumeau numérique thermostat67.

Une fois que vous avez vérifié le bon fonctionnement de la journalisation des températures réelles, vous pouvez arrêter l’exécution des deux projets. Laissez les fenêtres de console ouvertes, car vous les réutiliserez plus loin dans le tutoriel.

Propager des événements Azure Digital Twins à travers le graphe

À ce stade du tutoriel, vous avez vu comment Azure Digital Twins peut être mis à jour à partir de données d’appareil externes. Vous allez à présent voir comment les modifications apportées à un seul jumeau numérique peuvent se propager dans le graphe Azure Digital Twins, en d’autres termes, comment mettre à jour les jumeaux à partir des données internes au service.

Pour ce faire, vous utilisez la fonction Azure ProcessDTRoutedData afin de mettre à jour un jumeau Room quand le jumeau Thermostat connecté est mis à jour. Cette fonctionnalité de mise à jour est exécutée dans cette partie du scénario de bout en bout (flèche C) :

Diagramme d’une partie du diagramme du scénario de construction complet soulignant la section qui montre les éléments après Azure Digital Twins.

Voici les actions à effectuer pour configurer ce flux de données :

  1. Créer une rubrique Event Grid pour permettre le déplacement de données entre les services Azure
  2. Créer un point de terminaison dans Azure Digital Twins qui connecte l’instance à la rubrique Event Grid
  3. Configurer une route dans Azure Digital Twins qui envoie les événements de modification de propriété de jumeau au point de terminaison
  4. Configurer une fonction Azure qui écoute la rubrique Event Grid sur le point de terminaison, reçoit les événements de modification de propriété de jumeau qui y sont envoyés et met à jour les autres jumeaux dans le graphe en conséquence

Créer la rubrique Event Grid

Event Grid est un service Azure qui permet de router et de remettre les événements des services Azure à d’autres emplacements au sein d’Azure. Vous pouvez créer une rubrique Event Grid pour collecter certains événements d’une source ; les abonnés peuvent ensuite écouter la rubrique pour recevoir les événements au fur et à mesure de leur arrivée.

Dans Azure CLI, exécutez la commande suivante pour créer une rubrique Event Grid :

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

Les informations générées par cette commande décrivent la rubrique Event Grid que vous avez créée. Enregistrez le nom que vous avez donné à votre rubrique Event Grid, car vous l’utiliserez plus tard.

Créer le point de terminaison

Ensuite, créez un point de terminaison Event Grid dans Azure Digital Twins, qui connectera votre instance à votre rubrique Event Grid. Utilisez la commande ci-dessous, en indiquant le nom de votre rubrique Event Grid de l’étape précédente ainsi que les autres champs d’espace réservé selon les besoins.

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>

Les informations générées par cette commande décrivent le point de terminaison que vous avez créé.

Recherchez le champ provisioningState dans la sortie, puis vérifiez que sa valeur est « Succeeded ».

Capture d’écran du résultat de la requête de point de terminaison dans le Cloud Shell du portail Azure, montrant le point de terminaison avec un état provisioningState Réussi.

Il peut également indiquer « Approvisionnement », ce qui signifie que le point de terminaison est toujours en cours de création. Si tel est le cas, attendez quelques secondes, puis exécutez la commande suivante pour vérifier l’état du point de terminaison. Répétez l’opération jusqu’à ce que provisioningState indique « Succeeded ».

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

Enregistrez le nom de votre point de terminaison, car vous l’utiliserez plus tard.

Créer la route

Vous allez à présent créer une route Azure Digital Twins qui envoie les événements au point de terminaison Event Grid que vous avez créé.

Utilisez la commande CLI suivante, en remplissant le nom de votre point de terminaison à partir de l’étape précédente et les autres champs d’espace réservé selon les besoins. Cette commande transfère tous les événements qui se produisent dans le graphe de jumeaux.

Conseil

Vous pouvez limiter les événements à des événements spécifiques si vous le souhaitez, à l’aide de filtres.

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>

Les informations générées par cette commande décrivent la route que vous avez créé.

Notes

L’approvisionnement des points de terminaison (de l’étape précédente) doit être terminé pour que vous puissiez configurer un itinéraire des événements qui les utilise. Si la création d’itinéraires échoue parce que les points de terminaison ne sont pas prêts, patientez quelques minutes, puis réessayez.

Connexion à la fonction Azure

Inscrivez ensuite la fonction Azure ProcessDTRoutedData dans la rubrique Event Grid que vous avez créée précédemment. Cet abonnement permet aux données de l’appareil simulé de circuler du jumeau thermostat67 via la rubrique Event Grid vers la fonction, qui retourne dans Azure Digital Twins et met à jour le jumeau room21 en conséquence.

Pour ce faire, vous créez un abonnement Event Grid qui envoie des données à partir de la rubrique Event Grid que vous avez créée précédemment à votre fonction Azure ProcessDTRoutedData.

Utilisez la commande CLI suivante pour créer l’abonnement aux événements. Un espace réservé vous permet de saisir un nom pour l'abonnement à l'événement, ainsi que l'ID de l'abonnement, le groupe de ressources, le nom de votre rubrique Event Grid et le nom de votre application de fonction.

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

Exécuter la simulation et afficher les résultats

À présent, les événements doivent pouvoir passer de l’appareil simulé vers Azure Digital Twins et, à travers le graphe Azure Digital Twins, mettre à jour les jumeaux selon les besoins. Dans cette section, vous réexécutez le simulateur d’appareil pour lancer le flux d’événements complet que vous avez configuré, puis interroger Azure Digital Twins pour voir les résultats en direct

Accédez à votre fenêtre de console ouverte dans le dossier DeviceSimulator\DeviceSimulator, puis exécutez le projet de simulateur d’appareil avec dotnet run.

Comme la première fois que vous avez exécuté le simulateur d’appareil, le projet commence à s’exécuter et affiche des messages de données du capteur de température simulé. Ces événements empruntent le flux que vous avez configuré plus haut pour mettre à jour le jumeau thermostat67, puis le flux que vous avez configuré récemment pour mettre à jour le jumeau Room21 en conséquence.

Capture d’écran de la sortie de la console du simulateur d’appareil montrant les données du capteur de température en cours d’envoi.

Vous n’avez rien d’autre à faire dans cette console, mais laissez-la s’exécuter pendant que vous effectuez les étapes suivantes.

Pour afficher les données du côté Azure Digital Twins, accédez à votre autre fenêtre de console ouverte dans le dossier AdtSampleApp\SampleClientApp, puis exécutez le projet SampleClientApp avec dotnet run.

Une fois que le projet est en cours d’exécution et accepte les commandes, exécutez la commande suivante pour obtenir les températures indiquées par le jumeau numérique thermostat67 et le jumeau numérique room21.

ObserveProperties thermostat67 Temperature room21 Temperature

Les températures mises à jour réelles issues de votre instance Azure Digital Twins doivent normalement être journalisées dans la console toutes les deux secondes. Notez que la température de Room21 est mise à jour pour correspondre aux mises à jour apportées à thermostat67.

Capture d’écran de la sortie de la console montrant le journal des messages de température entre un thermostat et une pièce.

Une fois que vous avez vérifié le bon fonctionnement de la journalisation des températures réelles à partir de votre instance, vous pouvez arrêter l’exécution des deux projets. Vous pouvez également fermer les fenêtres de Visual Studio, car le tutoriel est maintenant terminé.

Révision

Voici une revue du scénario que vous avez créé au cours de ce tutoriel.

  1. Une instance Azure Digital Twins représente numériquement un étage, une pièce et un thermostat (représentés par la section A du diagramme suivant)
  2. Les données de l’appareil simulé sont envoyées à IoT Hub, où la fonction Azure ProcessHubToDTEvents écoute les événements de données de l’appareil. La fonction Azure ProcessHubToDTEvents utilise les informations contenues dans ces événements pour définir la propriété Temperature sur thermostat67 (flèche B du diagramme suivant).
  3. Les événements de modification de propriété dans Azure Digital Twins sont routés vers une rubrique Event Grid, où la fonction Azure ProcessDTRoutedData écoute les événements. La fonction Azure ProcessDTRoutedData utilise les informations contenues dans ces événements pour définir la propriété Temperature sur room21 (flèche C du diagramme suivant).

Diagramme du début de l’article montrant le scénario de développement complet.

Nettoyer les ressources

À l’issue de ce tutoriel, vous pourrez choisir les ressources à supprimer, en fonction de ce que vous souhaitez faire ensuite.

  • Si vous n’avez besoin d’aucune des ressources que vous avez créées dans ce tutoriel, vous pouvez supprimer l’instance Azure Digital Twins et toutes les autres ressources de cet article à l’aide de la commande CLI az group delete. Cette opération supprime toutes les ressources Azure d’un groupe de ressources ainsi que ce dernier.

    Important

    La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources.

    Ouvrez Azure Cloud Shell ou une fenêtre CLI locale, puis exécutez la commande suivante pour supprimer le groupe de ressources et tout ce qu’il contient.

    az group delete --name <your-resource-group>
    
  • Si vous souhaitez continuer à utiliser l’instance d’Azure Digital Twins que vous avez configurée dans cet article, tout en effaçant complètement ou partiellement ses modèles, jumeaux et relations, vous pouvez utiliser les commandes CLI az dt pour supprimer les éléments à enlever.

    Cette option ne supprime pas les autres ressources Azure créées dans ce tutoriel (hub IoT, application Azure Functions, etc.). Vous pouvez supprimer ces ressources individuellement à l’aide des commandes dt appropriées pour chaque type de ressource.

Vous pouvez également supprimer le dossier du projet de votre ordinateur local.

Étapes suivantes

Dans ce tutoriel, vous avez créé un scénario complet qui montre comment utiliser Azure Digital Twins à l’aide de données d’appareil en direct.

Vous pouvez à présent commencer à consulter la documentation de concept pour en savoir plus sur les éléments avec lesquels vous avez travaillé dans le tutoriel :