Rozpoczynanie pracy z tożsamościami modułów IoT Hub i bliźniaczymi reprezentacjami modułów przy użyciu interfejsu wiersza polecenia platformy Azure

Tożsamości modułów i bliźniacze reprezentacje modułów są podobne do tożsamości urządzeń Azure IoT Hub i bliźniaczych reprezentacji urządzeń, ale zapewniają bardziej szczegółowość. Podobnie jak Azure IoT Hub tożsamości urządzeń i bliźniacze reprezentacje urządzeń umożliwiają aplikacji zaplecza skonfigurowanie urządzenia i zapewnienie wglądu w warunki urządzenia, tożsamości 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 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 o warstwach podstawowa i Standardowa/Bezpłatna IoT Hub, zobacz Wybieranie odpowiedniej warstwy IoT Hub dla rozwiązania.

W tym artykule pokazano, jak utworzyć sesję interfejsu wiersza polecenia platformy Azure, w której wykonasz następujące działania:

  • Utwórz tożsamość urządzenia, a następnie utwórz tożsamość modułu dla tego urządzenia.

  • Zaktualizuj zestaw żądanych właściwości dla bliźniaczej reprezentacji modułu skojarzonej z tożsamością modułu.

Wymagania wstępne

  • Interfejs wiersza polecenia platformy Azure. Możesz również uruchomić polecenia w tym artykule przy użyciu usługi Azure Cloud Shell, interaktywnej powłoki interfejsu wiersza polecenia działającej w przeglądarce lub w aplikacji, takiej jak Terminal systemu Windows. Jeśli używasz Cloud Shell, nie musisz niczego instalować. Jeśli wolisz używać interfejsu wiersza polecenia lokalnie, ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.36 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Aby zainstalować lub uaktualnić interfejs wiersza polecenia platformy Azure lokalnie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  • Centrum IoT. Utwórz go przy użyciu interfejsu wiersza polecenia lub Azure Portal.

  • Upewnij się, że port 8883 jest otwarty w zaporze. Przykłady w tym artykule korzystają z protokołu MQTT, który komunikuje się za pośrednictwem portu 8883. Ten port można zablokować w niektórych środowiskach sieci firmowych i edukacyjnych. Aby uzyskać więcej informacji i sposobów obejścia tego problemu, zobacz Connecting to IoT Hub (MQTT) (Nawiązywanie połączenia z IoT Hub (MQTT).

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"

Przygotowywanie Cloud Shell

Jeśli chcesz użyć usługi Azure Cloud Shell, musisz najpierw uruchomić ją i skonfigurować. Jeśli używasz interfejsu wiersza polecenia lokalnie, przejdź do sekcji Przygotowywanie sesji interfejsu wiersza polecenia .

  1. Wybierz ikonę Cloud Shell z nagłówka strony w Azure Portal.

    Zrzut ekranu przedstawiający kontrolki globalne z nagłówka strony Azure Portal z wyróżnioną ikoną Cloud Shell.

    Uwaga

    Jeśli po raz pierwszy użyto Cloud Shell, zostanie wyświetlony monit o utworzenie magazynu, który jest wymagany do korzystania z Cloud Shell. Wybierz subskrypcję, aby utworzyć konto magazynu i udział usługi Microsoft Azure Files.

  2. Użyj selektora środowiska na pasku narzędzi Cloud Shell, aby wybrać preferowane środowisko interfejsu wiersza polecenia. W tym artykule jest używane środowisko powłoki Bash . Możesz również użyć środowiska programu PowerShell .

    Uwaga

    Niektóre polecenia wymagają innej składni lub formatowania w środowiskach powłoki Bash i programu PowerShell . Aby uzyskać więcej informacji, zobacz Porady dotyczące pomyślnego korzystania z interfejsu wiersza polecenia platformy Azure.

    Zrzut ekranu przedstawiający okno usługi Azure Cloud Shell z wyróżnionym selektorem środowiska na pasku narzędzi.

Przygotowywanie sesji interfejsu wiersza polecenia

Następnie należy przygotować sesję interfejsu wiersza polecenia platformy Azure. Jeśli używasz Cloud Shell, uruchom sesję na karcie Cloud Shell. W przypadku korzystania z lokalnego klienta interfejsu wiersza polecenia należy uruchomić sesję w wystąpieniu interfejsu wiersza polecenia.

  1. Jeśli używasz Cloud Shell, przejdź do następnego kroku. W przeciwnym razie uruchom polecenie az login w sesji interfejsu wiersza polecenia, aby zalogować się do konta platformy Azure.

    Jeśli używasz Cloud Shell, automatycznie logujesz się do konta platformy Azure. Cała komunikacja między sesją interfejsu wiersza polecenia platformy Azure a centrum IoT jest uwierzytelniana i szyfrowana. W związku z tym ten artykuł nie wymaga dodatkowego uwierzytelniania, które będzie używane z rzeczywistym urządzeniem, takim jak parametry połączenia. Aby uzyskać więcej informacji na temat logowania za pomocą interfejsu wiersza polecenia platformy Azure, zobacz Logowanie się za pomocą interfejsu wiersza polecenia platformy Azure.

    az login
    
  2. W sesji interfejsu wiersza polecenia uruchom polecenie az extension add . Polecenie dodaje rozszerzenie usługi Microsoft Azure IoT dla interfejsu wiersza polecenia platformy Azure do powłoki interfejsu wiersza polecenia. Rozszerzenie dodaje polecenia specyficzne dla usługi IoT Hub, IoT Edge i IoT Device Provisioning Service (DPS) do interfejsu wiersza polecenia platformy Azure. Po zainstalowaniu rozszerzenia nie trzeba go ponownie instalować w żadnej sesji Cloud Shell.

    az extension add --name azure-iot
    

    Uwaga

    W tym artykule jest używana najnowsza wersja rozszerzenia usługi Azure IoT o nazwie azure-iot. Starsza wersja nosi nazwę azure-cli-iot-ext. Jednocześnie powinna być zainstalowana tylko jedna wersja. Możesz użyć polecenia az extension list , aby zweryfikować aktualnie zainstalowane rozszerzenia.

    Użyj az extension remove --name azure-cli-iot-ext polecenia , aby usunąć starszą wersję rozszerzenia.

    Użyj polecenia az extension add --name azure-iot , aby dodać nową wersję rozszerzenia.

    Aby zobaczyć, jakie rozszerzenia zostały zainstalowane, użyj polecenia az extension list.

Tworzenie tożsamości urządzenia i tożsamości modułu

W tej sekcji utworzysz tożsamość urządzenia dla centrum IoT w sesji interfejsu wiersza polecenia, a następnie utworzysz tożsamość modułu przy użyciu tej tożsamości urządzenia. W ramach każdej tożsamości urządzenia można utworzyć maksymalnie 50 tożsamości modułów.

Aby utworzyć tożsamość urządzenia i tożsamość modułu:

  1. W sesji interfejsu wiersza polecenia uruchom polecenie az iot hub device-identity create , zastępując następujące symbole zastępcze odpowiednimi wartościami. To polecenie tworzy tożsamość urządzenia dla modułu.

    {DeviceName}. Nazwa urządzenia.

    {HubName}. Nazwa centrum IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. W sesji interfejsu wiersza polecenia uruchom polecenie az iot hub module-identity create , zastępując następujące symbole zastępcze odpowiednimi wartościami. To polecenie tworzy tożsamość modułu dla modułu w ramach tożsamości urządzenia utworzonej w poprzednim kroku.

    {DeviceName}. Nazwa urządzenia.

    {HubName}. Nazwa centrum IoT.

    {ModuleName}. Nazwa modułu urządzenia.

    az iot hub module-identity create --device-id {DeviceName} --hub-name {HubName} \
                                      --module-id {ModuleName}
    

Aktualizowanie bliźniaczej reprezentacji modułu

Po utworzeniu tożsamości modułu w centrum IoT Hub jest niejawnie tworzona bliźniacza reprezentacja modułu. W tej sekcji użyjesz sesji interfejsu wiersza polecenia, aby zaktualizować zestaw żądanych właściwości w bliźniaczej reprezentacji modułu skojarzonej z tożsamością modułu utworzoną w poprzedniej sekcji.

  1. W sesji interfejsu wiersza polecenia uruchom polecenie az iot hub module-twin update , zastępując następujące symbole zastępcze odpowiednimi wartościami. W tym przykładzie aktualizujemy wiele żądanych właściwości w bliźniaczej reprezentacji modułu dla tożsamości modułu utworzonej w poprzedniej sekcji.

    {DeviceName}. Nazwa urządzenia.

    {HubName}. Nazwa centrum IoT.

    {ModuleName}. Nazwa modułu urządzenia.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. W sesji interfejsu wiersza polecenia upewnij się, że odpowiedź JSON pokazuje wyniki operacji aktualizacji. W poniższym przykładzie odpowiedzi JSON użyliśmy SampleDevice odpowiednio symboli zastępczych i SampleModule{DeviceName} i {ModuleName} w poleceniu interfejsu az iot hub module-twin update wiersza polecenia.

    {
      "authenticationType": "sas",
      "capabilities": null,
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Disconnected",
      "deviceEtag": "Mzg0OEN1NzW=",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": "SampleModule",
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
            "$lastUpdatedVersion": 2,
            "conditions": {
              "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
              "$lastUpdatedVersion": 2,
              "temperature": {
                "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                "$lastUpdatedVersion": 2,
                "critical": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                },
                "warning": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                }
              }
            }
          },
          "$version": 2,
          "conditions": {
            "temperature": {
              "critical": 100,
              "warning": 75
            }
          }
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "0001-01-01T00:00:00Z"
          },
          "$version": 1
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": null,
      "version": 3,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

Następne kroki

Aby dowiedzieć się, jak za pomocą interfejsu wiersza polecenia platformy Azure rozszerzyć rozwiązanie IoT i zaplanować aktualizacje na urządzeniach, zobacz Planowanie i emisja zadań.

Aby kontynuować rozpoczynanie pracy z wzorcami zarządzania IoT Hub i urządzeniami, takimi jak kompleksowa aktualizacja obrazu, zobacz artykuł Device Update for Azure IoT Hub using the Raspberry Pi 3 B+ Reference Image (Aktualizacja urządzenia dla Azure IoT Hub przy użyciu obrazu referencyjnego urządzenia Raspberry Pi 3 B+).