Prise en main de l’identité de module et du jumeau de module IoT Hub à l’aide du Portail Azure et d’un appareil .NET
Les identités de module et les jumeaux de module sont similaires aux identités d’appareil et aux jumeaux d’appareil Azure IoT Hub, mais offrent un plus grand niveau de détail. Contrairement à l’identité d’appareil et au jumeau d’appareil Azure IoT Hub qui permettent à l’application back-end de configurer un appareil et d’obtenir une visibilité sur les conditions de l’appareil, une identité de module et un jumeau de module fournissent ces capacités pour les composants individuels d’un appareil. Sur les appareils compatibles qui intègrent plusieurs composants, par exemple des appareils basés sur un système d’exploitation ou des appareils avec un microprogramme, les identités de module et les jumeaux de module permettent d’isoler la configuration et les conditions de chacun de ces composants.
Notes
Les fonctionnalités décrites dans cet article sont uniquement disponibles au niveau Standard d’IoT Hub. Pour plus d’informations sur les niveaux de base et standard/gratuit d’IoT Hub, consultez Choisir le niveau IoT Hub correspondant à votre solution.
Dans cet article, vous allez apprendre à :
Créer une identité de module dans le portail.
Utiliser un SDK d’appareil .NET pour mettre à jour le jumeau de module à partir de votre appareil.
Notes
Pour plus d’informations sur les outils SDK disponibles pour créer des applications d’appareil et de back-end, consultez les SDK Azure IoT.
Prérequis
Visual Studio.
Un hub IoT dans votre abonnement Azure. Si vous n’avez pas encore de hub, vous pouvez suivre les étapes décrites dans Créer un hub IoT.
Un appareil inscrit dans votre hub IoT. Si vous n’avez pas d’appareil dans votre hub IoT, suivez les étapes décrites dans Inscrire un appareil.
Authentification Module
Vous pouvez utiliser des clés symétriques ou des certificats X.509 pour authentifier les identités de module. Pour l’authentification par certificat X.509, le certificat du module doit avoir son nom commun (Common Name/CN) formaté comme CN=<deviceid>/<moduleid>
. Par exemple :
openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"
Créer une identité de module dans le portail
Vous pouvez créer jusqu’à 20 identités de module dans une même identité d’appareil. Pour ajouter une identité, effectuez les étapes suivantes :
Depuis votre appareil existant dans le portail Azure, sélectionnez Ajouter une identité de module pour créer votre première identité de module.
Entrez le nom myFirstModule. Enregistrez votre identité de module.
Votre nouvelle identité de module s’affiche en bas de l’écran. Sélectionnez-la pour voir les détails de l’identité de module.
Enregistrez la Chaîne de connexion (clé primaire). Vous l’utiliserez dans la section suivante pour configurer votre module sur l’appareil dans une application de console.
Mettre à jour le jumeau de module à l’aide du SDK d’appareil .NET
Nous allons maintenant tenter d’établir une communication entre votre appareil simulé et le cloud. Une fois que vous avez créé une identité de module, un jumeau de module est implicitement créé dans IoT Hub. Dans cette section, vous allez créer sur votre appareil simulé une application de console .NET qui met à jour les propriétés déclarées du jumeau de module.
Créer un projet Visual Studio
Pour créer une application qui met à jour les propriétés signalées du jumeau de module, effectuez les étapes suivantes :
Dans Visual Studio, sélectionnez Créer un nouveau projet, choisissez Application console (.NET Framework) , pus sélectionnez Suivant.
Dans Configurer votre nouveau projet, entrez UpdateModuleTwinReportedProperties comme Nom du projet. Sélectionnez Suivant pour continuer.
Conservez l’infrastructure .NET Framework par défaut, puis sélectionnez Créer.
Installer le dernier SDK d’appareil .NET Azure IoT Hub
Les fonctionnalités d’identité de module et de jumeau de module sont disponibles uniquement dans les kits de développement logiciel (SDK) d’appareil de pré-publication IoT Hub. Pour installer le SDK, effectuez les étapes suivantes :
Dans Visual Studio, ouvrez Outils>Gestionnaire de package NuGet>Gérer les packages NuGet pour la solution.
Sélectionnez Parcourir, puis Inclure la préversion. Recherchez Microsoft.Azure.Devices.Client. Sélectionnez la version la plus récente et installez-la.
Vous avez maintenant accès à toutes les fonctionnalités de module.
Créer l’application de console UpdateModuleTwinReportedProperties
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é des connexions.
Pour créer votre application, effectuez les étapes suivantes :
- Ajoutez les instructions
using
suivantes en haut du fichier Program.cs :
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
- Ajoutez les champs suivants à la classe Program . Remplacez la valeur d’espace réservé par la chaîne de connexion du module enregistrée précédemment.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
- Ajoutez la méthode suivante OnDesiredPropertyChanged à la classe Program :
private static async Task OnDesiredPropertyChanged(TwinCollection desiredProperties, object userContext)
{
Console.WriteLine("desired property change:");
Console.WriteLine(JsonConvert.SerializeObject(desiredProperties));
Console.WriteLine("Sending current time as reported property");
TwinCollection reportedProperties = new TwinCollection
{
["DateTimeLastDesiredPropertyChangeReceived"] = DateTime.Now
};
await Client.UpdateReportedPropertiesAsync(reportedProperties).ConfigureAwait(false);
}
- Enfin, remplacez la méthode Main par le code suivant :
static void Main(string[] args)
{
Microsoft.Azure.Devices.Client.TransportType transport = Microsoft.Azure.Devices.Client.TransportType.Amqp;
try
{
Client = ModuleClient.CreateFromConnectionString(ModuleConnectionString, transport);
Client.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);
Client.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChanged, null).Wait();
Console.WriteLine("Retrieving twin");
var twinTask = Client.GetTwinAsync();
twinTask.Wait();
var twin = twinTask.Result;
Console.WriteLine(JsonConvert.SerializeObject(twin));
Console.WriteLine("Sending app start time as reported property");
TwinCollection reportedProperties = new TwinCollection();
reportedProperties["DateTimeLastAppLaunch"] = DateTime.Now;
Client.UpdateReportedPropertiesAsync(reportedProperties);
}
catch (AggregateException ex)
{
Console.WriteLine("Error in sample: {0}", ex);
}
Console.WriteLine("Waiting for Events. Press enter to exit...");
Console.ReadKey();
Client.CloseAsync().Wait();
}
private static void ConnectionStatusChangeHandler(ConnectionStatus status, ConnectionStatusChangeReason reason)
{
Console.WriteLine($"Status {status} changed: {reason}");
}
Vous pouvez générer et exécuter cette application à l’aide de la touche F5.
Maintenant, vous savez comment récupérer le jumeau de module et mettre à jour les propriétés déclarées avec le protocole AMQP.
Étapes suivantes
Pour continuer la prise en main de IoT Hub et explorer les autres scénarios IoT, consultez les articles suivants :