Wprowadzenie do tożsamości modułu IoT Hub i bliźniaczej reprezentacji modułu przy użyciu Azure Portal i urządzenia platformy .NET

Tożsamości modułów i bliźniacze reprezentacje modułów są podobne do tożsamości urządzenia i bliźniaczej reprezentacji urządzenia usługi Azure IoT Hub, ale zapewniają większy stopień szczegółowości. Podczas gdy Azure IoT Hub tożsamości urządzenia i bliźniaczej reprezentacji urządzenia umożliwiają aplikacji zaplecza skonfigurowanie urządzenia i zapewnienie widoczności warunków urządzenia, tożsamość modułu i bliźniacka reprezentacja modułu zapewniają te możliwości dla poszczególnych składników urządzenia. Na urządzeniach z obsługą wielu składników, takich jak urządzenia z systemem operacyjnym lub urządzenia układowe, tożsamości modułów i bliźniacze reprezentacje modułów umożliwiają izolowane konfiguracje i warunki dla każdego składnika.

Uwaga

Funkcje opisane w tym artykule są dostępne tylko w warstwie Standardowa IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowych i standardowych/bezpłatnych IoT Hub, zobacz Wybieranie odpowiedniej warstwy IoT Hub dla rozwiązania.

W tym artykule dowiesz się, jak wykonywać następujące działania:

  • Utwórz tożsamość modułu w portalu.

  • Użyj zestawu SDK urządzenia .NET, aby zaktualizować bliźniaczą reprezentację modułu z urządzenia.

Uwaga

Zobacz Zestawy SDK usługi Azure IoT, aby uzyskać więcej informacji na temat narzędzi zestawu SDK dostępnych do kompilowania aplikacji zarówno urządzeń, jak i zaplecza.

Wymagania wstępne

Uwierzytelnianie modułu

Do uwierzytelniania tożsamości modułów można użyć kluczy symetrycznych lub certyfikatów X.509. W przypadku uwierzytelniania certyfikatu X.509 certyfikat modułu musi mieć jego nazwę pospolitą (CN) sformatowaną na przykład CN=<deviceid>/<moduleid>. Na przykład:

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

Tworzenie tożsamości modułu w portalu

W ramach jednej tożsamości urządzenia możesz utworzyć maksymalnie 20 tożsamości modułu. Aby dodać tożsamość, wykonaj następujące kroki:

  1. Z istniejącego urządzenia w Azure Portal wybierz pozycję Dodaj tożsamość modułu, aby utworzyć pierwszą tożsamość modułu.

  2. Wprowadź nazwę myFirstModule. Zapisz tożsamość modułu.

    Zrzut ekranu przedstawiający stronę

    Nowa tożsamość modułu jest wyświetlana w dolnej części ekranu. Wybierz go, aby wyświetlić szczegóły tożsamości modułu.

    Zrzut ekranu przedstawiający menu Szczegóły tożsamości modułu.

Zapisz parametry połączenia (klucz podstawowy). Użyjesz go w następnej sekcji, aby skonfigurować moduł na urządzeniu w aplikacji konsolowej.

Aktualizowanie bliźniaczej reprezentacji modułu przy użyciu zestawu SDK urządzenia platformy .NET

Teraz przekażemy się do chmury z symulowanego urządzenia. Po utworzeniu tożsamości modułu w centrum IoT Hub jest niejawnie tworzona bliźniacza reprezentacja modułu. W tej sekcji tworzysz na urządzeniu symulowanym aplikację konsolową .NET, która aktualizuje zgłoszone właściwości bliźniaczej reprezentacji modułu.

Tworzenie projektu programu Visual Studio

Aby utworzyć aplikację, która aktualizuje bliźniaczą reprezentację modułu, zgłaszane właściwości, wykonaj następujące kroki:

  1. W programie Visual Studio wybierz pozycję Utwórz nowy projekt, a następnie wybierz pozycję Aplikacja konsolowa (.NET Framework), a następnie wybierz pozycję Dalej.

  2. W obszarze Konfigurowanie nowego projektu wprowadź wartość UpdateModuleTwinReportedProperties jako nazwę projektu. Wybierz przycisk Dalej, aby kontynuować.

    Zrzut ekranu przedstawiający wyskakujące okienko

  3. Zachowaj domyślną platformę .NET Framework, a następnie wybierz pozycję Utwórz.

Instalowanie najnowszego zestawu SDK urządzenia platformy Azure IoT Hub .NET

Tożsamość modułu i bliźniacza reprezentacja modułu są dostępne tylko w zestawach SDK urządzeń w wersji wstępnej IoT Hub. Aby go zainstalować, wykonaj następujące kroki:

  1. W programie Visual Studio otwórz kolejno pozycje Narzędzia>Menedżer> pakietówNuGet Zarządzanie pakietami NuGet dla rozwiązania.

  2. Wybierz pozycję Przeglądaj, a następnie wybierz pozycję Uwzględnij wersję wstępną. Wyszukaj ciąg Microsoft.Azure.Devices.Client. Wybierz najnowszą wersję i zainstaluj.

    Zrzut ekranu przedstawiający sposób instalowania aplikacji Microsoft.Azure.Devices.Client.

    Teraz masz dostęp do wszystkich funkcji modułu.

Tworzenie aplikacji konsolowej UpdateModuleTwinReportedProperties

Aby utworzyć aplikację, wykonaj następujące kroki:

  1. Dodaj następujące using instrukcje w górnej części pliku Program.cs :
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Dodaj następujące pola do klasy Program: Zastąp wartość symbolu zastępczego parametrami połączenia modułu zapisanymi wcześniej.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Dodaj następującą metodę OnDesiredPropertyChanged do klasy 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);
    }
  1. Na koniec zastąp metodę Main następującym kodem:
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}");
}

Tę aplikację można skompilować i uruchomić przy użyciu klawisza F5.

Teraz wiesz, jak pobrać bliźniaczą reprezentację modułu i zaktualizować zgłaszane właściwości przy użyciu protokołu AMQP.

Następne kroki

Aby kontynuować wprowadzenie do usługi IoT Hub i zapoznać się z innymi scenariuszami IoT, zobacz: