Udostępnij za pośrednictwem


Wprowadzenie do tożsamości modułu i bliźniaczej reprezentacji modułu usługi IoT Hub przy użyciu witryny 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 tożsamość urządzenia i bliźniacze reprezentacje urządzenia w usłudze Azure IoT Hub umożliwiają aplikacji zaplecza skonfigurowanie urządzenia i zapewnienie widoczności warunków urządzenia, tożsamość modułu i bliźniacze reprezentacje modułu zapewniają te możliwości dla poszczególnych składników urządzenia. Na urządzeniach obsługujących wiele składników, takich jak urządzenia z systemem operacyjnym lub urządzenia oprogramowania układowego, 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 usługi IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowej i standardowej/bezpłatnej usługi IoT Hub, zobacz Wybieranie odpowiedniej warstwy usługi IoT Hub dla rozwiązania.

Z tego artykułu dowiesz się, jak wykonywać następujące działania:

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

  • Użyj zestawu SDK urządzenia platformy .NET, aby zaktualizować bliźniacze reprezentacje 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 urządzeń i zaplecza.

Wymagania wstępne

  • Visual Studio.

  • Centrum IoT w ramach subskrypcji platformy Azure. Jeśli nie masz jeszcze centrum, możesz wykonać kroki opisane w temacie Tworzenie centrum IoT Hub.

  • Urządzenie zarejestrowane w centrum IoT Hub. Jeśli nie masz urządzenia w centrum IoT Hub, wykonaj kroki opisane w temacie Rejestrowanie urządzenia.

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) w formacie, 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 witrynie Azure Portal wybierz pozycję Dodaj tożsamość modułu, aby utworzyć swoją pierwszą tożsamość modułu.

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

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

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

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

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

Teraz przekażemy się do chmury z urządzenia symulowanego. 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źniacze reprezentacje modułu, zgłoszone 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) i wybierz przycisk 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ą strukturę .NET, a następnie wybierz pozycję Utwórz.

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

Funkcje tożsamości modułu i bliźniaczej reprezentacji modułu są dostępne tylko w zestawach SDK urządzeń wstępnych usługi IoT Hub. Aby go zainstalować, wykonaj następujące kroki:

  1. W programie Visual Studio otwórz pozycję Narzędzia>NuGet Menedżer pakietów> 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 klienta Microsoft.Azure.Devices.Client.

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

Tworzenie aplikacji konsolowej UpdateModuleTwinReportedProperties

Ważne

Ten artykuł zawiera kroki łączenia urządzenia przy użyciu sygnatury dostępu współdzielonego, nazywanej również uwierzytelnianiem klucza symetrycznego. Ta metoda uwierzytelniania jest wygodna do testowania i oceny, ale uwierzytelnianie urządzenia przy użyciu certyfikatów X.509 jest bardziej bezpieczne. Aby dowiedzieć się więcej, zobacz Zabezpieczenia najlepszych rozwiązań > zabezpieczeń Zabezpieczenia zabezpieczeń Zabezpieczenia zabezpieczeń.

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

  1. Dodaj następujące instrukcje using 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 wcześniej zapisanym modułem parametry połączenia.
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}");
}

Możesz skompilować i uruchomić tę aplikację przy użyciu F5.

Teraz wiesz, jak pobrać bliźniacze reprezentacje modułu i zaktualizować zgłaszane właściwości za pomocą protokołu AMQP.

Następne kroki

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