Dela via


Kom igång med IoT Hub-modulidentiteter och modultvillingar med Hjälp av Azure CLI

Modulidentiteter och modultvillingar liknar Enhetsidentiteter och enhetstvillingar i Azure IoT Hub, men ger finare kornighet. Precis som Azure IoT Hub-enhetsidentiteter och enhetstvillingar gör det möjligt för ett serverdelsprogram att konfigurera en enhet och ge insyn i enhetens villkor ger modulidentiteter och modultvillingar dessa funktioner för enskilda komponenter i 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.

Den här artikeln visar hur du skapar en Azure CLI-session där du:

  • Skapa en enhetsidentitet och skapa sedan en modulidentitet för den enheten.

  • Uppdatera en uppsättning önskade egenskaper för modultvillingen som är associerad med modulidentiteten.

Förutsättningar

  • Azure CLI. Du kan också köra kommandona i den här artikeln med hjälp av Azure Cloud Shell, ett interaktivt CLI-gränssnitt som körs i webbläsaren eller i en app som Windows Terminal. Om du använder Cloud Shell behöver du inte installera något. Om du föredrar att använda CLI lokalt kräver den här artikeln Azure CLI version 2.36 eller senare. Kör az --version för att hitta versionen. Information om hur du installerar eller uppgraderar Azure CLI lokalt finns i Installera Azure CLI.

  • 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.

  • Kontrollera att port 8883 är öppen i brandväggen. Exemplen i den här artikeln använder MQTT-protokollet, som kommunicerar via port 8883. Den här porten kan blockeras i vissa företags- och utbildningsnätverksmiljöer. Mer information och sätt att kringgå det här problemet finns i Ansluta till IoT Hub (MQTT).

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"

Förbereda Cloud Shell

Om du vill använda Azure Cloud Shell måste du först starta och konfigurera det. Om du använder CLI lokalt går du vidare till avsnittet Förbered en CLI-session .

  1. Välj Cloud Shell-ikonen i sidhuvudet i Azure-portalen.

    Skärmbild av de globala kontrollerna från sidhuvudet i Azure-portalen och markera Cloud Shell-ikonen.

    Kommentar

    Om det är första gången du använder Cloud Shell uppmanas du att skapa lagring, vilket krävs för att använda Cloud Shell. Välj en prenumeration för att skapa ett lagringskonto och en Microsoft Azure Files-resurs.

  2. Använd miljöväljaren i Cloud Shell-verktygsfältet för att välja önskad CLI-miljö. Den här artikeln använder Bash-miljön. Du kan också använda PowerShell-miljön.

    Kommentar

    Vissa kommandon kräver olika syntax eller formatering i Bash- och PowerShell-miljöerna. Mer information finns i Tips för att använda Azure CLI.

    Skärmbild av ett Azure Cloud Shell-fönster som markerar miljöväljaren i verktygsfältet.

Förbereda en CLI-session

Därefter måste du förbereda en Azure CLI-session. Om du använder Cloud Shell kör du sessionen på en Cloud Shell-flik. Om du använder en lokal CLI-klient kör du sessionen i en CLI-instans.

  1. Om du använder Cloud Shell går du vidare till nästa steg. Annars kör du kommandot az login i CLI-sessionen för att logga in på ditt Azure-konto.

    Om du använder Cloud Shell loggas du automatiskt in på ditt Azure-konto. All kommunikation mellan Azure CLI-sessionen och din IoT-hubb autentiseras och krypteras. Därför behöver den här artikeln inte extra autentisering som du använder med en riktig enhet, till exempel en niska veze. Mer information om hur du loggar in med Azure CLI finns i Logga in med Azure CLI.

    az login
    
  2. Kör kommandot az extension add i CLI-sessionen. Kommandot lägger till Microsoft Azure IoT-tillägget för Azure CLI i CLI-gränssnittet. Tillägget lägger till specifika kommandon för IoT Hub, IoT Edge och IoT Device Provisioning Service (DPS) i Azure CLI. När du har installerat tillägget behöver du inte installera det igen i någon Cloud Shell-session.

    az extension add --name azure-iot
    

    Kommentar

    Den här artikeln använder den senaste versionen av Azure IoT-tillägget med namnet azure-iot. Den äldre versionen kallas azure-cli-iot-ext. Du bör bara ha en version installerad i taget. Du kan använda kommandot az extension list för att verifiera de tillägg som är installerade.

    Använd az extension remove --name azure-cli-iot-ext för att ta bort den äldre versionen av tillägget.

    Använd az extension add --name azure-iot för att lägga till den nya versionen av tillägget.

    Om du vill se vilka tillägg du har installerat använder du az extension list.

Skapa en enhetsidentitet och modulidentitet

I det här avsnittet skapar du en enhetsidentitet för din IoT-hubb i CLI-sessionen och skapar sedan en modulidentitet med den enhetsidentiteten. Du kan skapa upp till 50 modulidentiteter under varje enhetsidentitet.

Så här skapar du en enhetsidentitet och modulidentitet:

  1. I CLI-sessionen kör du kommandot az iot hub device-identity create och ersätter följande platshållare med motsvarande värden. Det här kommandot skapar enhetsidentiteten för modulen.

    {DeviceName}. Namnet på enheten.

    {HubName}. Namnet på din IoT-hubb.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. I CLI-sessionen kör du kommandot az iot hub module-identity create och ersätter följande platshållare med motsvarande värden. Det här kommandot skapar modulidentiteten för modulen under den enhetsidentitet som du skapade i föregående steg.

    {DeviceName}. Namnet på enheten.

    {HubName}. Namnet på din IoT-hubb.

    {ModuleName}. Namnet på enhetens modul.

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

Uppdatera modultvillingen

När en modulidentitet har skapats skapas en modultvilling implicit i IoT Hub. I det här avsnittet använder du CLI-sessionen för att uppdatera en uppsättning önskade egenskaper på modultvillingen som är associerad med modulidentiteten som du skapade i föregående avsnitt.

  1. I CLI-sessionen kör du kommandot az iot hub module-twin update och ersätter följande platshållare med motsvarande värden. I det här exemplet uppdaterar vi flera önskade egenskaper på modultvillingen för modulidentiteten som vi skapade i föregående avsnitt.

    {DeviceName}. Namnet på enheten.

    {HubName}. Namnet på din IoT-hubb.

    {ModuleName}. Namnet på enhetens modul.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. I CLI-sessionen bekräftar du att JSON-svaret visar resultatet av uppdateringsåtgärden. I följande JSON-svarsexempel använde SampleDevice vi och SampleModule för {DeviceName} platshållarna och {ModuleName} i az iot hub module-twin update CLI-kommandot.

    {
      "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
      }
    }
    

Nästa steg

Information om hur du använder Azure CLI för att utöka din IoT-lösning och schemalägga uppdateringar på enheter finns i Schemalägga och sända jobb.

Om du vill fortsätta komma igång med IoT Hub- och enhetshanteringsmönster, till exempel bildbaserad uppdatering från slutpunkt till slutpunkt, kan du läsa artikeln Enhetsuppdatering för Azure IoT Hub med hjälp av Raspberry Pi 3 B+-referensbilden.