Share via


Kom igång med enhetshantering (Azure CLI)

Serverdelsappar kan använda Azure IoT Hub primitiver, till exempel enhetstvillingar och direktmetoder, för att fjärrstarta och övervaka enhetshanteringsåtgärder på enheter. Den här artikeln visar hur Azure CLI och en enhet kan arbeta tillsammans för att anropa en direktmetod för en enhet med hjälp av IoT Hub.

Anteckning

Funktionerna som beskrivs i den här artikeln är endast tillgängliga på standardnivån för IoT Hub. Mer information om nivåerna basic och standard/kostnadsfri IoT Hub finns i Välja rätt IoT Hub nivå för din lösning.

Använd en direktmetod för att initiera åtgärder för enhetshantering (till exempel omstart, fabriksåterställning och uppdatering av inbyggd programvara) från en Azure CLI-session. Enheten ansvarar för:

  • Hantera metodbegäran som skickas från IoT Hub.

  • Initiera motsvarande enhetsspecifika åtgärd på enheten.

  • Tillhandahålla statusuppdateringar via rapporterade egenskaper för att IoT Hub.

Du kan använda Azure CLI för att köra frågor med enhetstvillingar för att rapportera om förloppet för dina enhetshanteringsåtgärder. Mer information om hur du använder direktmetoder finns i Vägledning för kommunikation från moln till enhet.

Den här artikeln visar hur du skapar två Azure CLI-sessioner:

  • En session som skapar en simulerad enhet. Den simulerade enheten är konfigurerad för att returnera en statuskod och JSON-nyttolast när en direktmetod anropas.

  • En session som anropar en direktmetod på den simulerade enheten som skapades i den andra sessionen.

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 finns i Installera Azure CLI.

  • En IoT-hubb. Skapa en med CLI eller Azure Portal.

  • Kontrollera att port 8883 är öppen i brandväggen. Enhetsexemplet 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).

Förbered Cloud Shell

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

  1. Välj ikonen Cloud Shell i sidhuvudet i Azure Portal.

    Skärmbild av de globala kontrollerna från sidhuvudet i Azure Portal med ikonen Cloud Shell markerad.

    Anteckning

    Om det här ä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 verktygsfältet Cloud Shell 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 .

    Anteckning

    Vissa kommandon kräver annan 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 två CLI-sessioner

Därefter måste du förbereda två Azure CLI-sessioner. Om du använder Cloud Shell kör du dessa sessioner i separata Cloud Shell flikar. Om du använder en lokal CLI-klient kör du separata CLI-instanser. Använd separata CLI-sessioner för följande uppgifter:

  • Den första sessionen simulerar en IoT-enhet som kommunicerar med din IoT-hubb.
  • Den andra sessionen anropar en direktmetod från din simulerade enhet med hjälp av din IoT-hubb.

Anteckning

Azure CLI kräver att du är inloggad på ditt Azure-konto. Om du använder Cloud Shell loggas du automatiskt in på ditt Azure-konto. Om du använder en lokal CLI-klient måste du logga in på varje CLI-session. All kommunikation mellan Azure CLI-gränssnittssessionen och din IoT-hubb autentiseras och krypteras. Därför behöver den här artikeln inte extra autentisering som du skulle använda med en riktig enhet, till exempel en anslutningssträng. Mer information om hur du loggar in med Azure CLI finns i Logga in med Azure CLI.

  1. I den första CLI-sessionen kör du kommandot az extension add . Kommandot lägger till Microsoft Azure IoT-tillägget för Azure CLI i CLI-gränssnittet. Tillägget lägger till kommandon som är specifika 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
    

    Anteckning

    Den här artikeln använder den senaste versionen av Azure IoT-tillägget, som kallas azure-iot. Den äldre versionen heter 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 som du har installerat använder az extension listdu .

  2. Öppna den andra CLI-sessionen. Om du använder Cloud Shell i en webbläsare väljer du ikonen Öppna ny session i verktygsfältet för din första CLI-session. Om du använder CLI lokalt öppnar du en andra CLI-instans.

    Skärmbild av ett Azure Cloud Shell-fönster med ikonen Öppna ny session markerad i verktygsfältet.

Skapa och simulera en enhet

I det här avsnittet skapar du en enhetsidentitet för din IoT-hubb i den första CLI-sessionen och simulerar sedan en enhet med den enhetsidentiteten. Den simulerade enheten svarar på de direktmetoder som du anropar i den andra CLI-sessionen.

Så här skapar och startar du en simulerad enhet:

  1. I den första 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 den simulerade enheten.

    {DeviceName}. Namnet på den simulerade enheten.

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

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. I den första CLI-sessionen kör du kommandot az iot device simulate och ersätter följande platshållare med motsvarande värden. Det här kommandot simulerar en enhet med den enhetsidentitet som du skapade i föregående steg. Den simulerade enheten är konfigurerad för att returnera en statuskod och nyttolast när en direktmetod anropas.

    {DeviceName}. Namnet på den simulerade enheten.

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

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    Tips

    Som standard skickar kommandot az iot device simulate 100 "enhet till molnet"-meddelanden med ett intervall på 3 sekunder mellan meddelanden. Simuleringen avslutas när alla meddelanden har skickats. Om du vill att simuleringen ska köras längre kan du använda parametern --msg-count för att ange fler meddelanden eller parametern --msg-interval för att ange ett längre intervall mellan meddelanden. Du kan också köra kommandot igen för att starta om den simulerade enheten.

Anropa en direktmetod

I det här avsnittet använder du den andra CLI-sessionen för att anropa en direktmetod på den simulerade enheten som körs i den första CLI-sessionen.

  1. Bekräfta att den simulerade enheten i den första CLI-sessionen körs. Annars startar du om det genom att köra kommandot az iot device simulate igen från Skapa och simulera en enhet.

  2. I den andra CLI-sessionen kör du kommandot az iot hub invoke-device-method och ersätter följande platshållare med motsvarande värden. I det här exemplet finns det ingen befintlig metod för enheten. Kommandot anropar ett exempelmetodnamn på den simulerade enheten. Metoden innehåller en statuskod och en nyttolast i svaret.

    {DeviceName}. Namnet på den simulerade enheten.

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

    {MethodName}. Namnet på din direktmetod. Den simulerade enheten har ingen befintlig metod, så du kan välja vilket namn du vill för det här kommandot.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. I den första CLI-sessionen bekräftar du att utdata visar metodanropet. I följande skärmbild använde SampleDevice vi och SampleMethod för {DeviceName} platshållarna och {MethodName} i az iot hub invoke-device-method CLI-kommandot.

    Skärmbild av en simulerad enhet som visar utdata efter att en metod anropades.

  4. I den andra CLI-sessionen bekräftar du att utdata visar statuskoden och nyttolasten som tagits emot från den anropade metoden.

    Skärmbild av ett Azure Cloud Shell-fönster som visar statuskoden och nyttolasten för en anropad direktmetod.

Anropa en direktmetod med en nyttolast

I det här avsnittet använder du den andra CLI-sessionen för att anropa en direktmetod och tillhandahålla en nyttolast till den simulerade enheten som körs i den första CLI-sessionen.

  1. Bekräfta att den simulerade enheten i den första CLI-sessionen körs. Annars startar du om det genom att köra kommandot az iot device simulate igen från Skapa och simulera en enhet.

  2. I den andra CLI-sessionen kör du kommandot az iot hub invoke-device-method och ersätter följande platshållare med motsvarande värden. I det här exemplet finns det ingen befintlig metod för enheten. Kommandot anropar ett exempelmetodnamn på den simulerade enheten och tillhandahåller en nyttolast för den metoden. Metoden innehåller en statuskod och en nyttolast i svaret.

    {DeviceName}. Namnet på den simulerade enheten.

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

    {MethodName}. Namnet på din direktmetod. Den simulerade enheten har ingen befintlig metod, så du kan välja vilket namn du vill för det här kommandot.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. I den första CLI-sessionen bekräftar du att utdata visar metodanropet. I följande skärmbild använde SampleDevice vi och SampleMethod för {DeviceName} platshållarna och {MethodName} i az iot hub invoke-device-method CLI-kommandot.

    Skärmbild av en simulerad enhet som visar utdata efter att en metod anropades med en nyttolast.

  4. I den andra CLI-sessionen bekräftar du att utdata visar statuskoden och nyttolasten som tagits emot från den anropade metoden.

    Skärmbild av ett Azure Cloud Shell-fönster som visar statuskoden och nyttolasten för en anropad direktmetod.

Nästa steg

Information om hur du använder Azure CLI för att utöka IoT-lösningen och schemalägga metodanrop 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.