Freigeben über


Erste Schritte mit der Modulidentität und dem Modulzwilling von IoT Hub unter Verwendung des Microsoft Azure-Portals und eines .NET-Geräts

Modulidentitäten und Modulzwillinge ähneln den Geräteidentitäten und Gerätezwillingen von Azure IoT Hub, ermöglichen jedoch eine feinere Granularität. Azure IoT Hub-Geräteidentitäten und -Gerätezwillinge ermöglichen der Back-End-Anwendung die Konfiguration eines Geräts und geben Aufschluss über den Gerätezustand. Modulidentitäten und Modulzwillinge bieten diese Funktionalität für einzelne Komponenten eines Geräts. Auf geeigneten Geräten mit mehreren Komponenten (beispielsweise auf Betriebssystem- oder Firmwaregeräten) ermöglichen Modulidentitäten und Modulzwillinge isolierte Konfiguration und Zustände für jede Komponente.

Hinweis

Die in diesem Artikel beschriebenen Features stehen nur im Standard-Tarif von IoT Hub zur Verfügung. Weitere Informationen zu den IoT Hub-Tarifen „Basic“ und „Standard/Free“ finden Sie unter Wählen des richtigen IoT Hub-Tarifs für Ihre Lösung.

In diesem Artikel wird Folgendes behandelt:

  • Erstellen einer Modulidentität im Portal

  • Aktualisieren des Modulzwillings auf Ihrem Gerät mithilfe eines .NET-Geräte-SDKs

Hinweis

Weitere Informationen zu den SDK-Tools zum Erstellen von Geräten und Back-End-Apps finden Sie unter Azure IoT SDKs.

Voraussetzungen

  • Visual Studio.

  • Ein IoT Hub in Ihrem Azure-Abonnement. Wenn Sie noch keinen Hub haben, können Sie die Schritte unter Erstellen eines IoT-Hubs ausführen.

  • Ein in Ihrem IoT-Hub registriertes Gerät. Wenn Sie nicht über ein Gerät in Ihrem IoT-Hub verfügen, führen Sie die Schritte unter Registrieren eines Geräts aus.

Modulauthentifizierung

Sie können symmetrische Schlüssel oder X.509-Zertifikate verwenden, um Modulidentitäten zu authentifizieren. Für die X.509-Zertifikatauthentifizierung muss das Zertifikat des Moduls seinen allgemeinen Namen (Common Name, CN) wie CN=<deviceid>/<moduleid> formatiert haben. Zum Beispiel:

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

Erstellen einer Modulidentität im Portal

Innerhalb einer Geräteidentität können Sie bis zu 20 Modulidentitäten erstellen. Führen Sie die folgenden Schritte aus, um eine Identität hinzufügen:

  1. Wählen Sie auf Ihrem vorhandenen Gerät im Azure-Portal die Option Modulidentität hinzufügen aus, um Ihre erste Modulidentität zu erstellen.

  2. Geben Sie den Namen myfirstmodule ein. Speichern Sie Ihre Modulidentität.

  3. Die neue Modulidentität wird unten auf dem Bildschirm angezeigt. Wählen Sie sie aus, um Details zur Modulidentität anzuzeigen.

  4. Speichern Sie die Verbindungszeichenfolge (Primärschlüssel). Sie verwenden sie im nächsten Abschnitt, um Ihr Modul auf dem Gerät in einer Konsolen-App einzurichten.

    Screenshot, der das Menü „Details zur Modulidentität“ zeigt.

Aktualisieren des Modulzwillings mithilfe des .NET-Geräte-SDKs

Kommunizieren Sie jetzt von Ihrem simulierten Gerät aus mit der Cloud. Sobald eine Modulidentität erstellt wurde, wird implizit ein Gerätezwilling in IoT Hub erstellt. In diesem Abschnitt erstellen Sie eine .NET-Konsolen-App auf Ihrem simulierten Gerät, die die vom Modulzwilling gemeldeten Eigenschaften aktualisiert.

Erstellen eines Visual Studio-Projekts

Führen Sie zum Erstellen einer App, die die vom Modulzwilling gemeldeten Eigenschaften aktualisiert, die folgenden Schritte aus:

  1. Wählen Sie in Visual Studio Neues Projekt erstellen, anschließend Konsolen-App (.NET Framework) und dann Weiter aus.

  2. Geben Sie in Neues Projekt konfigurieren die Zeichenfolge UpdateModuleTwinReportedProperties als Projektname ein. Klicken Sie auf Weiter, um fortzufahren.

    Screenshot, der das Popup „Neues Projekt konfigurieren“ zeigt.

  3. Behalten Sie das standardmäßige .NET Framework bei, und wählen Sie Erstellen aus.

Installieren des neuesten Azure IoT Hub-.NET-Geräte-SDKs

Die Modulidentität und Modulzwilling-Features sind nur in der Vorabversion der IoT Hub-Geräte-SDKs verfügbar. Führen Sie die folgenden Schritte aus, um sie zu installieren:

  1. Navigieren Sie in Visual Studio zu Tools>NuGet-Paket-Manager>NuGet-Pakete für Projektmappe verwalten.

  2. Wählen Sie Durchsuchen und dann Vorabversion einbeziehen aus. Suchen Sie nach Microsoft.Azure.Devices.Client. Wählen Sie die neueste Version aus, und installieren Sie sie.

    Screenshot, der zeigt, wie der Microsoft.Azure.Devices.Client installiert wird.

    Sie haben nun Zugriff auf alle Modulfeatures.

Erstellen der Konsolen-App „UpdateModuleTwinReportedProperties“

Wichtig

Dieser Artikel enthält Schritte zum Verbinden eines Geräts mithilfe einer Shared Access Signature, was auch als symmetrische Schlüsselauthentifizierung bezeichnet wird. Diese Authentifizierungsmethode eignet sich für Tests und Auswertungen, aber die Authentifizierung eines Geräts mit X.509-Zertifikaten ist ein sichererer Ansatz. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit von IoT-Lösungen > Verbindungssicherheit.

Führen Sie die folgenden Schritte aus, um Ihre App zu erstellen:

  1. Fügen Sie am Anfang der Datei Program.cs die folgenden using-Anweisungen hinzu:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Fügen Sie der Program -Klasse die folgenden Felder hinzu. Ersetzen Sie den Platzhalterwert durch die zuvor gespeicherte Modulverbindungszeichenfolge.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Fügen Sie die folgende Methode OnDesiredPropertyChanged der Klasse Program hinzu:
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);
    }
  1. Ersetzen Sie schließlich die Main-Methode durch den folgenden Code:
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}");
}

Sie können diese App mit F5 erstellen und ausführen.

Jetzt wissen Sie, wie Sie den Modulzwilling abrufen und gemeldete Eigenschaften mit dem AMQP-Protokoll aktualisieren können.

Nächste Schritte

Informationen zu den weiteren ersten Schritten mit IoT Hub und zum Kennenlernen anderer IoT-Szenarien finden Sie in den folgenden Artikeln: