Kom igång med IoT Hub-modulidentitet och modultvilling med hjälp av Azure Portal och en .NET-enhet
Modulidentiteter och modultvillingar liknar enhetsidentitet och enhetstvilling i Azure IoT Hub, men har en större detaljnivå. Även om Azure IoT Hub-enhetsidentiteten och enhetstvillingen gör det möjligt för serverdelsprogrammet att konfigurera en enhet och ge insyn i enhetens villkor, ger en modulidentitet och modultvilling dessa funktioner för enskilda komponenter på en enhet. På kompatibla enheter med flera komponenter, till exempel operativsystemenheter eller enheter för inbyggd programvara, tillåter modulidentiteter och modultvillingar isolerade konfigurationer och villkor för varje komponent.
Kommentar
De funktioner som beskrivs i den här artikeln är endast tillgängliga på standardnivån för IoT Hub. Mer information om de grundläggande och standard-/kostnadsfria IoT Hub-nivåerna finns i Välj rätt IoT Hub-nivå för din lösning.
I den här artikeln får du lära dig att:
Skapa en modulidentitet i portalen.
Använd en .NET-enhets-SDK för att uppdatera modultvillingen från enheten.
Kommentar
Förutsättningar
Visual Studio.
En IoT-hubb i din Azure-prenumeration. Om du inte har någon hubb ännu kan du följa stegen i Skapa en IoT-hubb.
En enhet som är registrerad i din IoT-hubb. Om du inte har en enhet i din IoT-hubb följer du stegen i Registrera en enhet.
Modulautentisering
Du kan använda symmetriska nycklar eller X.509-certifikat för att autentisera modulidentiteter. För X.509-certifikatautentisering måste modulens certifikat ha sitt gemensamma namn (CN) formaterat som CN=<deviceid>/<moduleid>
. Till exempel:
openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"
Skapa en modulidentitet i portalen
Inom en enhetsidentitet kan du skapa upp till 20 modulidentiteter. Följ dessa steg för att lägga till en identitet:
Från din befintliga enhet i Azure Portal väljer du Lägg till modulidentitet för att skapa din första modulidentitet.
Ange namnet myFirstModule. Spara din modulidentitet.
Den nya modulidentiteten visas längst ned på skärmen. Välj den om du vill se information om modulidentitet.
Spara anslutningssträngen (primärnyckeln). Du använder den i nästa avsnitt för att konfigurera modulen på enheten i en konsolapp.
Uppdatera modultvillingen med SDK för .NET-enheter
Nu ska vi kommunicera med molnet från din simulerade enhet. När en modulidentitet har skapats skapas en modultvilling implicit i IoT Hub. I det här avsnittet skapar du en .NET-konsolapp på din simulerade enhet som uppdaterar modultvillingens rapporterade egenskaper.
Skapa ett Visual Studio-projekt
Följ dessa steg för att skapa en app som uppdaterar modultvillingen, rapporterade egenskaper:
I Visual Studio väljer du Skapa ett nytt projekt, sedan Konsolapp (.NET Framework) och sedan Nästa.
I Konfigurera det nya projektet anger du UpdateModuleTwinReportedProperties som projektnamn. Klicka på Nästa när du vill fortsätta.
Behåll .NET-standardramverket och välj sedan Skapa.
Installera den senaste Azure IoT Hub .NET-enhets-SDK:n
Funktionerna för modulidentitet och modultvillingar är endast tillgängliga i IoT Hub-förversionen av enhets-SDK:er. Följ dessa steg för att installera det:
Öppna Verktyg>NuGet Package Manager>Hantera NuGet-paket för lösning i Visual Studio.
Välj Bläddra och välj sedan Inkludera förhandsversion. Sök efter Microsoft.Azure.Devices.Client. Välj den senaste versionen och installera.
Nu har du åtkomst till alla modulfunktioner.
Skapa UpdateModuleTwinReportedProperties-konsolappen
Viktigt!
Den här artikeln innehåller steg för att ansluta en enhet med en signatur för delad åtkomst, även kallad symmetrisk nyckelautentisering. Den här autentiseringsmetoden är praktisk för testning och utvärdering, men att autentisera en enhet med X.509-certifikat är en säkrare metod. Mer information finns i Metodtips > för säkerhet Anslutningssäkerhet.
Följ dessa steg för att skapa din app:
- Lägg till följande
using
-uttryck överst i Program.cs-filen:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
- Lägg till följande fält i klassen Program. Ersätt platshållarvärdet med modulen anslutningssträng du sparade tidigare.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
- Lägg till följande metod OnDesiredPropertyChanged till klassen 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);
}
- Ersätt slutligen main-metoden med följande kod:
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}");
}
Du kan skapa och köra den här appen med hjälp av F5.
Nu vet du hur du hämtar modultvillingen och uppdaterar rapporterade egenskaper med AMQP-protokollet.
Nästa steg
Mer information om hur du kan komma igång med IoT Hub och utforska andra IoT-scenarier finns här: