Automatisk IoT-enhets- och modulhantering

Automatisk enhetshantering i Azure IoT Hub effektiviserar processen med att hantera stora enhetsflottor genom att automatisera repetitiva och komplexa uppgifter. Med automatiska enhets- och modulkonfigurationer kan du rikta enheter baserat på deras egenskaper, ange önskade inställningar och låta IoT Hub tillämpa uppdateringar när enheter uppfyller de definierade kriterierna. Med den här metoden kan du övervaka konfigurationsstatus, lösa konflikter och distribuera ändringar i faser för bättre kontroll och efterlevnad.

Anmärkning

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å och storlek för din lösning.

Översikt över automatisk enhetshantering

Automatisk enhetshantering fungerar genom att använda önskade egenskaper för grupper av enhetstvillingar eller modultvillingar och sammanfatta resultat med hjälp av rapporterade egenskaper. Den här processen använder ett specialiserat JSON-dokument som kallas konfiguration, som består av tre huvudkomponenter:

  • Det målvillkoret definierar omfånget för enhetstvillingar eller modultvillingar som ska uppdateras. Målvillkoret definieras som en fråga om dubbla taggar och/eller rapporterade egenskaper.

  • Den måldata definierar de önskade egenskaper som ska läggas till eller uppdateras i enhetstvillingar eller modultvillingar. Innehållet innehåller en sökväg till avsnittet med önskade egenskaper som ska ändras.

  • Måttkomponenten innehåller sammanfattningsantal för konfigurationstillstånd som Success, In Progress och Error. Du kan definiera anpassade mått med hjälp av frågor på rapporterade egenskaper hos tvillingar, medan systemmått automatiskt spårar uppdateringsstatus, inklusive hur många tvillingar som riktas in på och hur många som har uppdaterats framgångsrikt.

Automatiska konfigurationer körs för första gången kort efter att konfigurationen har skapats och sedan med fem minuters intervall. Måttfrågor körs varje gång den automatiska konfigurationen körs. Högst 100 automatiska konfigurationer stöds på IoT-hubbar på standardnivå. tio på IoT-hubbar på den kostnadsfria nivån. Begränsningar av hastigheten gäller också. Mer information finns i Kvoter och begränsningar.

Förutsättningar

  • En aktiv Azure-prenumeration. Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.

  • Ett IoT-nav i din prenumeration av Azure. Om du inte har någon hubb ännu kan du följa stegen i Skapa en IoT-hubb.

Implementera tvillingkonceptet

Automatiska enhetskonfigurationer kräver användning av enhetstvillingar för att synkronisera tillstånd mellan molnet och enheterna. Mer information finns i Understand and use device twins in IoT Hub (Förstå och använda enhetstvillingar i IoT Hub).

Automatiska modulkonfigurationer kräver användning av modultvillingar för att synkronisera tillstånd mellan molnet och modulerna. Mer information finns i Förstå och använda modultvillingar i IoT Hub.

Använda taggar för att rikta in sig på tvillingar

Innan du skapar en konfiguration måste du ange vilka enheter eller moduler du vill påverka. Azure IoT Hub identifierar enheter med taggar i enhetstvillingen och identifierar moduler med taggar i modultvillingen. Varje enhet eller moduler kan ha flera taggar och du kan definiera dem på alla sätt som passar din lösning. Om du till exempel hanterar enheter på olika platser lägger du till följande taggar i en enhetstvilling:

"tags": {
    "location": {
        "state": "Washington",
        "city": "Tacoma"
    }
},

Skapa en konfiguration

Du kan skapa högst 100 automatiska konfigurationer på IoT-hubbar på standardnivå. tio på IoT-hubbar på den kostnadsfria nivån. Mer information finns i Kvoter och begränsningar.

  1. I Azure Portal går du till din IoT-hubb.

  2. Välj Konfigurationer + distributioner i det vänstra navigeringsfönstret.

  3. Välj Lägg till och välj sedan Konfiguration av enhetstvillingar eller Konfiguration av modultvillingar från rullgardinsmenyn.

    Skärmbild som visar hur du lägger till en konfiguration.

Det finns fem steg för att skapa en konfiguration. Följande avsnitt går igenom var och en.

Namn och etikett

  1. Ange ett unikt namn för konfigurationen. Namnet kan innehålla upp till 128 tecken och kan innehålla gemener och följande specialtecken: -+%_*!'. Mellanslag tillåts inte.
  2. Lägg till etiketter för att organisera och beskriva konfigurationen. Etiketter är nyckel/värde-par, till exempel HostPlatform, Linux eller Version, 3.0.1.
  3. Klicka på Nästa när du vill fortsätta.

Tvillinginställningar

Ange innehållet i önskade egenskaper för enhetstvillingen eller modultvillingen genom att ange två indata för varje inställning. Först ange tvillingsökvägen, som pekar på JSON-avsnittet i de önskade egenskaperna som ska uppdateras. Ange sedan JSON-innehållet som ska infogas på den platsen.

Du kan till exempel ange tvillingsökvägen till properties.desired.chiller-water och sedan ange följande JSON-innehåll:

{
  "temperature": 66,
  "pressure": 28
}

Skärmbild av hur du ställer in enhetens eller modulens två- eller tvillingegenskap och json-innehåll.

Du kan också ställa in individuella inställningar genom att specificera hela tvillingsökvägen och ange värdet utan hakparenteser. Till exempel, med tvillingsökvägen properties.desired.chiller-water.temperature, ställ in innehållet till 66. Skapa sedan en ny tvillinginställning för tryckegenskapen.

Om två eller flera konfigurationer riktar sig mot samma tvillingsökväg gäller innehållet från konfigurationen med högst prioritet (prioritet definieras i steg 4).

Om du vill ta bort en befintlig egenskap, ange egenskapsvärdet till null.

Du kan lägga till ytterligare inställningar genom att välja Lägg till enhetstvillinginställning eller Lägg till modultvillinginställning.

Mål-enheter eller moduler

Använd egenskapen taggar från dina tvillingar för att rikta in dig på de specifika enheter eller moduler som ska ta emot den här konfigurationen. Du kan också rikta in dig på rapporterade egenskaper för tvilling.

Automatiska enhetskonfigurationer kan bara rikta sig mot enhetstvillingtaggar, och automatiska modulkonfigurationer kan bara rikta sig mot modultvillingtaggar.

Eftersom flera konfigurationer kan riktas mot samma enhet eller modul behöver varje konfiguration ett prioritetsnummer. Om det någonsin uppstår en konflikt vinner konfigurationen med högsta prioritet.

  1. Ange ett positivt heltal för konfigurationen Priority. Det högsta numeriska värdet anses vara den högsta prioriteten. Om två konfigurationer har samma prioritetsnummer vinner den som skapades senast.

  2. Ange ett målvillkor för att avgöra vilka enheter eller moduler som är mål för den här konfigurationen. Villkoret baseras på dubbeltaggar eller dubbelrapporterade egenskaper och ska matcha uttryckets format.

    • För automatisk enhetskonfiguration kan du bara ange taggen eller den rapporterade egenskapen som mål. Till exempel tags.environment='test' eller properties.reported.chillerProperties.model='4000x'. Du kan ange * som ska riktas mot alla enheter.

    • För automatisk modulkonfiguration använder du en fråga för att ange taggar eller rapporterade egenskaper från de moduler som är registrerade i IoT-hubben. Till exempel from devices.modules where tags.environment='test' eller from devices.modules where properties.reported.chillerProperties.model='4000x'. Jokertecknet kan inte användas för att rikta in sig på alla moduler.

Mätvärden

Mätvärden ger sammanfattande antal av de olika tillstånd som en enhet eller modul kan återrapportera efter att konfigurationsinnehållet har tillämpats. Du kan till exempel skapa ett mått för väntande inställningar, ett mått för fel och ett mått för lyckade inställningar.

Varje konfiguration kan ha upp till fem anpassade mått.

  1. Ange ett namn för måttnamn.

  2. Ange en sökning för måttkriterium. Frågan baseras på rapporterade egenskaper hos enhetens tvilling. Måttet representerar antalet rader som returneras av frågan.

    Till exempel:

    SELECT deviceId FROM devices 
      WHERE properties.reported.chillerWaterSettings.status='pending'
    

    Du kan inkludera en klausul om att konfigurationen tillämpades, till exempel:

    /* Include the double brackets. */
    SELECT deviceId FROM devices 
      WHERE configurations.[[yourconfigname]].status='Applied'
    

    Om du skapar ett mått för att rapportera om konfigurerade moduler väljer du moduleId från devices.modules. Till exempel:

    SELECT deviceId, moduleId FROM devices.modules
      WHERE properties.reported.lastDesiredStatus.code = 200
    

Granska konfiguration

Granska konfigurationsinformationen och välj sedan Skicka.

Övervaka en konfiguration

Om du vill visa information om en konfiguration och övervaka enheterna som kör den använder du följande steg:

  1. I Azure Portal går du till din IoT-hubb.

  2. Välj Konfigurationer i Enhetshantering.

  3. Granska konfigurationslistan. För varje konfiguration kan du visa följande information:

    • ID – namnet på konfigurationen.

    • Målvillkor – frågan som används för att definiera målenheter eller moduler.

    • Priority – det prioritetsnummer som tilldelats konfigurationen.

    • Skapandetid – tidsstämpeln från när konfigurationen skapades. Den här tidsstämpeln används för att bryta banden när två konfigurationer har samma prioritet.

    • Systemmått – mått som beräknas av IoT Hub och inte kan anpassas av utvecklare. Mål anger antalet enhetstvillingar som matchar målvillkoret. Anger antalet enhetstvillingar som har ändrats genom konfigurationen, vilket kan inkludera partiella förändringar ifall en separat konfiguration med högre prioritet också gör ändringar.

    • Anpassade mått – mått som utvecklaren har specificerat som sökfrågor mot rapporterade egenskaper. Upp till fem anpassade mått kan definieras per konfiguration.

  4. Välj den konfiguration som du vill övervaka.

  5. Granska konfigurationsinformationen. Du kan använda flikar för att visa specifik information om de enheter som tog emot konfigurationen.

    • Målenheter eller målmoduler – de enheter eller moduler som matchar målvillkoret.

    • Mått – en lista över systemmått och anpassade mått. Du kan visa en lista över enheter eller moduler som räknas för varje mått genom att välja måttet i listrutan och sedan välja Visa enheter eller Visa moduler.

    • Etiketter – nyckel/värde-par som används för att beskriva en konfiguration. Etiketter har ingen inverkan på funktionaliteten.

    • Inställningar för enhetstvillingar eller Inställningar för modultvillingar – de tvillinginställningar som anges av konfigurationen, om några.

Ändra en konfiguration

När du ändrar en konfiguration replikeras ändringarna omedelbart till alla målenheter eller moduler.

Om du uppdaterar målvillkoret sker följande uppdateringar:

  • Om en tvilling inte uppfyllde det gamla målvillkoret, men uppfyller det nya målvillkoret och den här konfigurationen är den högsta prioriteten för den tvillingen, tillämpas den här konfigurationen.

  • Om en tvilling som för närvarande kör den här konfigurationen inte längre uppfyller målvillkoret tas inställningarna från konfigurationen bort och tvillingen ändras av den näst högsta prioritetskonfigurationen.

  • Om en tvilling som för närvarande kör den här konfigurationen inte längre uppfyller målvillkoret och inte uppfyller målvillkoret för andra konfigurationer tas inställningarna från konfigurationen bort och inga andra ändringar görs på tvillingen.

Om du vill ändra en konfiguration använder du följande steg:

  1. I Azure Portal går du till din IoT-hubb.
  2. Välj Konfigurationer + distributioner i Enhetshantering.
  3. Välj den konfiguration som du vill ändra.
  4. Du kan göra uppdateringar av följande fält: prioritet, mått, målvillkor och etiketter.
  5. Välj Spara.
  6. Följ stegen i Övervaka en konfiguration för att se ändringarna distribueras.

Ta bort en konfiguration

När du tar bort en konfiguration får alla enhetstvillingar sin näst högsta prioritetskonfiguration. Om enhetstvillingar inte uppfyller målvillkoret för någon annan konfiguration tillämpas inga andra inställningar.

  1. I Azure Portal går du till din IoT-hubb.
  2. Välj Konfigurationer + distributioner i Enhetshantering.
  3. Använd kryssrutan för att välja den konfiguration som du vill ta bort.
  4. Välj Ta bort.
  5. En uppmaning ber dig att bekräfta.

Förutsättningar

  • En aktiv Azure-prenumeration. Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.

  • Ett IoT-nav i din prenumeration av Azure. Om du inte har någon hubb ännu kan du följa stegen i Skapa en IoT-hubb.

  • Azure CLI i din miljö. Azure CLI-versionen måste minst vara 2.0.70 eller senare. Använd az –-version för att verifiera. Den här versionen stöder az extension-kommandon och introducerar Knack-kommandoramverket.

  • IoT-tillägget för Azure CLI.

Anmärkning

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 som för närvarande är installerade använder du az extension list.

Implementera tvillingkonceptet

Automatiska enhetskonfigurationer kräver användning av enhetstvillingar för att synkronisera tillstånd mellan molnet och enheterna. Mer information finns i Understand and use device twins in IoT Hub (Förstå och använda enhetstvillingar i IoT Hub).

Automatiska modulkonfigurationer kräver användning av modultvillingar för att synkronisera tillstånd mellan molnet och modulerna. Mer information finns i Förstå och använda modultvillingar i IoT Hub.

Använda taggar för att rikta in sig på tvillingar

Innan du skapar en konfiguration måste du ange vilka enheter eller moduler du vill påverka. Azure IoT Hub identifierar enheter och använder taggar i enhetstvillingen och identifierar moduler med taggar i modultvillingen. Varje enhet eller modul kan ha flera taggar och du kan definiera dem på alla sätt som passar din lösning. Om du till exempel hanterar enheter på olika platser lägger du till följande taggar i en enhetstvilling:

"tags": {
	"location": {
		"state": "Washington",
		"city": "Tacoma"
    }
},

Definiera målinnehållet och måtten

Målinnehåll och metriska frågor anges som JSON-dokument som beskriver de önskade egenskaperna hos enhetstvillingar eller modultvillingar att sätta samt rapporterade egenskaper att mäta. Om du vill skapa en automatisk konfiguration med Hjälp av Azure CLI sparar du målinnehållet och måtten lokalt som .txt filer. Du använder filsökvägarna i ett senare skede när du kör kommandot för att tillämpa konfigurationen på enheten.

Här är ett grundläggande exempel på målinnehåll för en automatisk enhetskonfiguration:

{
  "content": {
    "deviceContent": {
      "properties.desired.chillerWaterSettings": {
        "temperature": 38,
        "pressure": 78
      }
    }
  }
}

Automatiska modulkonfigurationer fungerar på samma sätt, men du riktar in dig på moduleContent istället för deviceContent.

{
  "content": {
    "moduleContent": {
      "properties.desired.chillerWaterSettings": {
        "temperature": 38,
        "pressure": 78
      }
    }
  }
}

Här är exempel på måttfrågor:

{
  "queries": {
    "Compliant": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'",
    "Error": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='error'",
    "Pending": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='pending'"
  }
}

Måttfrågor för moduler liknar också frågor för enheter, men du väljer för moduleId från devices.modules. Till exempel:

{
  "queries": {
    "Compliant": "select deviceId, moduleId from devices.module where configurations.[[chillermodulesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'"
  }
}

Skapa en konfiguration

Du kan skapa högst 100 automatiska konfigurationer på IoT-hubbar på standardnivå. tio på IoT-hubbar på den kostnadsfria nivån. Mer information finns i Kvoter och begränsningar.

Du konfigurerar målenheter genom att skapa en konfiguration som består av målinnehållet och måtten. Använd följande kommando för att skapa en konfiguration:

   az iot hub configuration create --config-id [configuration id] \
     --labels [labels] --content [file path] --hub-name [hub name] \
     --target-condition [target query] --priority [int] \
     --metrics [metric queries]
  • -- config-id – namnet på konfigurationen som skapades i IoT-hubben. Ge konfigurationen ett unikt namn som är upp till 128 tecken långt. Gemener bokstäver och följande specialtecken tillåts: -+%_*!'. Mellanslag tillåts inte.

  • -- etiketter – Lägg till etiketter som hjälper dig att spåra konfigurationen. Etiketter är namn, värdepar som beskriver din distribution. Till exempel HostPlatform, Linux eller Version, 3.0.1

  • -- content – Infogad JSON- eller filsökväg till målinnehållet som ska anges som önskade egenskaper för tvilling.

  • -- hub-name – Namnet på den IoT-hubb där konfigurationen skapas. Hubben måste finnas i den aktuella prenumerationen. Växla till önskad prenumeration med kommandot az account set -s [subscription name]

  • -- target-condition – Ange ett målvillkor för att avgöra vilka enheter eller moduler som ska riktas mot den här konfigurationen. För automatisk enhetskonfiguration baseras villkoret på taggar eller önskade egenskaper hos enhetstvillingar och bör överensstämma med uttrycksformatet. Till exempel tags.environment='test' eller properties.desired.devicemodel='4000x'. För automatisk modulkonfiguration baseras villkoret på taggar för modultvillingar eller önskade egenskaper hos modultvillingar. Till exempel from devices.modules where tags.environment='test' eller from devices.modules where properties.reported.chillerProperties.model='4000x'.

  • -- priority – Ett positivt heltal. Om två eller flera konfigurationer riktas mot samma enhet eller modul gäller konfigurationen med det högsta numeriska värdet för Prioritet.

  • -- metrics – Filepath till måttfrågorna. Mätvärden ger sammanfattande antal av de olika tillstånd som en enhet eller modul kan återrapportera efter att konfigurationsinnehållet har tillämpats. Du kan till exempel skapa ett mått för väntande inställningar, ett mått för fel och ett mått för lyckade inställningar.

Övervaka en konfiguration

Använd följande kommando för att visa innehållet i en konfiguration:

az iot hub configuration show --config-id [configuration id] \
  --hub-name [hub name]
  • -- config-id – namnet på konfigurationen som finns i IoT-hubben.

  • -- hub-name – Namnet på den IoT-hubb där konfigurationen finns. Hubben måste finnas i den aktuella prenumerationen. Växla till önskad prenumeration med kommandot az account set -s [subscription name].

Kontrollera konfigurationen i kommandofönstret. Egenskapen metrics visar ett antal för varje mått som utvärderas av varje hubb:

  • targetedCount – ett systemmått som anger antalet enhetstvillingar eller modultvillingar i IoT Hub som matchar målvillkoret.

  • appliedCount – Ett systemmått anger antalet enheter eller moduler som har tillämpat målinnehållet.

  • Ditt anpassade mått – Alla mått som du har definierat är användarmått.

Du kan visa en lista över enhets-ID:n, modul-ID:n eller objekt för vart och ett av måtten med hjälp av följande kommando:

az iot hub configuration show-metric --config-id [configuration id] \
   --metric-id [metric id] --hub-name [hub name] --metric-type [type] 
  • -- config-id – namnet på distributionen som finns i IoT-hubben.

  • -- metric-id – namnet på måttet som du vill se listan över enhets-ID:n eller modul-ID:n för, till exempel appliedCount.

  • -- hub-name – Namnet på den IoT-hubb där distributionen finns. Hubben måste finnas i den aktuella prenumerationen. Växla till önskad prenumeration med kommandot az account set -s [subscription name].

  • -- metric-type – Måtttyp kan vara system eller user. Systemmått är targetedCount och appliedCount. Alla andra mått är användarmått.

Ändra en konfiguration

När du ändrar en konfiguration replikeras ändringarna omedelbart till alla målenheter.

Om du uppdaterar målvillkoret sker följande uppdateringar:

  • Om en tvilling inte uppfyllde det gamla målvillkoret, men uppfyller det nya målvillkoret och den här konfigurationen är den högsta prioriteten för den tvillingen, tillämpas den här konfigurationen.

  • Om en tvilling som för närvarande kör den här konfigurationen inte längre uppfyller målvillkoret tas inställningarna från konfigurationen bort och tvillingen ändras av den näst högsta prioritetskonfigurationen.

  • Om en tvilling som för närvarande kör den här konfigurationen inte längre uppfyller målvillkoret och inte uppfyller målvillkoret för andra konfigurationer tas inställningarna från konfigurationen bort och inga andra ändringar görs på tvillingen.

Använd följande kommando för att uppdatera en konfiguration:

az iot hub configuration update --config-id [configuration id] \
   --hub-name [hub name] --set [property1.property2='value']
  • -- config-id – namnet på konfigurationen som finns i IoT-hubben.

  • -- hub-name – Namnet på den IoT-hubb där konfigurationen finns. Hubben måste finnas i den aktuella prenumerationen. Växla till önskad prenumeration med kommandot az account set -s [subscription name].

  • -- set – Uppdatera en egenskap i konfigurationen. Du kan uppdatera följande egenskaper:

    • targetCondition – till exempel targetCondition=tags.location.state='Oregon'

    • labels

    • priority

Ta bort en konfiguration

När du tar bort en konfiguration får alla enhetstvillingar eller modultvillingar sin nästa högsta prioritetskonfiguration. Om tvillingar inte uppfyller målvillkoret för någon annan konfiguration tillämpas inga andra inställningar.

Använd följande kommando för att ta bort en konfiguration:

az iot hub configuration delete --config-id [configuration id] \
   --hub-name [hub name] 
  • -- config-id – namnet på konfigurationen som finns i IoT-hubben.

  • -- hub-name – Namnet på den IoT-hubb där konfigurationen finns. Hubben måste finnas i den aktuella prenumerationen. Växla till önskad prenumeration med kommandot az account set -s [subscription name].

Nästa steg

I den här artikeln har du lärt dig hur du konfigurerar och övervakar IoT-enheter i stor skala.

Information om hur du hanterar IoT Hub-enhetsidentiteter i bulk finns i Importera och exportera IoT Hub-enhetsidentiteter i grupp