Schemalägga och sända jobb (Azure CLI)
Använd Azure IoT Hub för att schemalägga och spåra jobb som uppdaterar miljontals enheter. Använd jobb för att:
- Uppdatera önskade egenskaper
- Uppdatera taggar
- Anropa direktmetoder
Konceptuellt omsluter ett jobb en av dessa åtgärder och spårar körningens förlopp mot en uppsättning enheter. Den uppsättning enheter som ett jobb interagerar med definieras av en enhetstvillingfråga. En serverdelsapp kan till exempel använda ett jobb för att anropa en omstartsmetod på 10 000 enheter, som anges av en enhetstvillingfråga och schemaläggs vid en framtida tidpunkt. Programmet kan sedan spåra förloppet när var och en av dessa enheter tar emot och kör omstartsmetoden.
Läs mer om var och en av dessa funktioner i de här artiklarna:
Enhetstvillingar och egenskaper: Kom igång med enhetstvillingar och Förstå och använda enhetstvillingar i IoT Hub
Direktmetoder: Utvecklarguide för IoT Hub – direktmetoder
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 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 skapar två schemalagda jobb. Det första jobbet anropar en direktmetod och det andra jobbet uppdaterar en önskad enhetstvillingegenskap på den simulerade enhet 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 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. 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ö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 två CLI-sessioner .
Välj Cloud Shell-ikonen i sidhuvudet i Azure-portalen.
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.
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.
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 på separata Cloud Shell-flikar. Om du använder en lokal CLI-klient kör du separata CLI-instanser. Använd de separata CLI-sessionerna för följande uppgifter:
- Den första sessionen simulerar en IoT-enhet som kommunicerar med din IoT-hubb.
- Den andra sessionen schemalägger jobb för din simulerade enhet med din IoT-hubb.
Kommentar
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änssnittet 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.
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 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 kallasazure-cli-iot-ext
. Du bör bara ha en version installerad i taget. Du kan använda kommandotaz 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
.Ö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.
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 jobb som du schemalägger i den andra CLI-sessionen.
Så här skapar och startar du en simulerad enhet:
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}
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 den enhet 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"}'
Dricks
Som standard skickar kommandot az iot device simulate 100 enhet-till-moln-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.
Schemalägga ett jobb för att anropa en direktmetod
I det här avsnittet schemalägger du ett jobb i den andra CLI-sessionen för att anropa en direktmetod på den simulerade enhet som körs i den första CLI-sessionen.
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.
I den andra CLI-sessionen kör du kommandot az iot hub job create 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 schemalägger ett jobb som anropar ett exempelmetodnamn på den simulerade enheten, vilket ger ett null-värde för metodens nyttolast. Metoden innehåller en statuskod och nyttolast i svaret.
{HubName}. Namnet på din IoT-hubb.
{JobName}. Namnet på ditt schemalagda jobb. Jobbnamn är unika, så välj ett annat jobbnamn varje gång du kör det här kommandot.
{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.
{DeviceName}. Namnet på den simulerade enheten.
az iot hub job create --hub-name {HubName} --job-id {JobName} \ --job-type scheduleDeviceMethod \ --method-name {MethodName} --method-payload 'null' \ --query-condition "deviceId = '{DeviceName}'"
Dricks
När du schemalägger ett jobb az iot hub job create-kommando som anropar en direktmetod måste du ange värden för både och
--method-payload
--method-name
valfria parametrar. För direkta metoder som inte accepterar en nyttolast anger dunull
för parametern--method-payload
.I den första CLI-sessionen bekräftar du att utdata visar metodanropet. I följande skärmbild använde
SampleDevice
vi ochSampleMethod
för{DeviceName}
platshållarna respektive{MethodName}
iaz iot hub job create
CLI-kommandot från föregående steg.
Schemalägga ett jobb för att uppdatera en enhetstvillings egenskaper
I det här avsnittet schemalägger du ett jobb i den andra CLI-sessionen för att uppdatera en önskad enhetstvillingegenskap på den simulerade enhet som körs under den första CLI-sessionen.
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.
I den andra CLI-sessionen kör du kommandot az iot hub job create och ersätter följande platshållare med motsvarande värden. I det här exemplet schemalägger vi ett jobb för att ange värdet för den önskade tvillingegenskapen
BuildingNo
till 45 för vår simulerade enhet.{HubName}. Namnet på din IoT-hubb.
{JobName}. Namnet på ditt schemalagda jobb. Jobbnamn är unika, så välj ett annat jobbnamn varje gång du kör det här kommandot.
{DeviceName}. Namnet på den simulerade enheten.
az iot hub job create --hub-name {HubName} --job-id {JobName} \ --job-type scheduleUpdateTwin \ --twin-patch '{"properties":{"desired": {"BuildingNo": 45}}}' \ --query-condition "deviceId = '{DeviceName}'"
I den första CLI-sessionen bekräftar du att utdata visar den lyckade uppdateringen för den rapporterade enhetstvillingegenskapen, vilket indikerar att den önskade egenskapen för enhetstvilling också uppdaterades.
Nästa steg
I den här artikeln använde du Azure CLI för att simulera en enhet och schemalägga jobb för att köra en direktmetod och uppdatera enhetstvillingens egenskaper för den simulerade enheten.
Om du vill fortsätta utforska IoT-hubb- och enhetshanteringsmönster uppdaterar du en avbildning i självstudiekursen Enhetsuppdatering för Azure IoT Hub med hjälp av Raspberry Pi 3 B+-referensbilden.