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 de télémétrie simulées 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.

Vous accédez alors 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.

Cela entraîne le téléchargement d’un fichier 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 avez besoin 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 qui vous aideront à vérifier que vous avez correctement effectué chaque étape.

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 ensuite connectée à IoT Hub, Event Grid et à deux fonctions Azure pour permettre le déplacement des données.

Voici un diagramme représentant le scénario complet.

Vous allez créer l’instance Azure Digital Twins (section A dans le diagramme), puis configurer le flux de données de télémétrie de l’appareil (flèche B), enfin configurer la propagation des données via le graphique 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é.

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 graphique Azure Digital Twins en fonction des données de télémétrie de l’appareil à partir des événements IoT Hub et Azure Digital Twins

Instancier le graphe de jumeaux pré-créé

Tout d’abord, vous allez utiliser la solution AdtSampleApp à partir de l’exemple de projet pour créer la partie Azure Digital Twins du scénario de bout en bout (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, à effectuer l’authentification et à attendre 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 utiliserez à nouveau 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 allez publier l’application de fonction pré-écrite et lui attribuer 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 allez compresser les fonctions au format zip et les publier 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 une image de l’apparence du contenu zip (il peut changer 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 sera 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 sera 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 impriment des informations sur les fonctions ProcessDTRoutedData et ProcessHubToDTEvents qui ont été 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 allez configurer 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é créée. 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 informations générées par 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 utilisera 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 ci-dessous, 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 de télémétrie simulées provenant d’un appareil IoT Hub

Un graphe Azure Digital Twins repose sur les données de télémétrie provenant d’appareils réels.

Au cours de cette étape, vous allez connecter 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 de télémétrie, 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 de la télémétrie simulée a lieu dans cette partie du scénario de bout en bout (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 allez effectuer pour configurer la connexion de l’appareil :

  1. Créer un hub IoT qui gérera 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 de télémétrie
  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 allez configurer un hub IoT qui gérera 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 que vous avez donné à votre hub IoT. Vous le réutiliserez ultérieurement.

Connecter le hub IoT à la fonction Azure

Connectez ensuite votre hub IoT à la fonction Azure ProcessHubToDTEvents dans l’application de fonction que vous avez publiée, afin que les données puissent passer de l’appareil dans IoT Hub à 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 qui a été 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 le faire dans le portail Azure en suivant les instructions fournies dans Inscrire un 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 événements de télémétrie sont envoyés 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 venez de collecter :

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 commence à afficher des messages de télémétrie de température simulés. 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 de télémétrie de température envoyées.

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 signalé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).

Notes

La propagation des données de l’appareil vers le jumeau peut 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 utiliserez à nouveau plus loin dans le tutoriel.

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

Jusqu’à 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 de 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

Vous allez à présent abonner la fonction Azure ProcessDTRoutedData à la rubrique Event Grid que vous avez créée, afin que les données de télémétrie puissent aller du jumeau thermostat67, via la rubrique Event Grid, à la fonction, qui, une fois dans Azure Digital Twins, met à jour le jumeau Room21.

Pour ce faire, vous allez créer un abonnement Event Grid qui envoie des données à partir de la rubrique Event Grid 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 allez réexécuter 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 réels

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 à afficher les messages de télémétrie de température simulés. 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 de télémétrie de température envoyées.

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 signalé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 ci-dessous)
  2. La télémétrie des appareils simulés est envoyée à IoT Hub, où la fonction Azure ProcessHubToDTEvents écoute les événements de télémétrie. 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).
  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).

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 les supprimer individuellement à l’aide des commande dt appropriées pour chaque type de ressource.

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

Étapes suivantes

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

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 :