Automatisk hantering av IoT-enheter och -moduler med Azure CLI
Automatisk enhetshantering i Azure IoT Hub automatiserar många av de repetitiva och komplexa uppgifter som krävs för att hantera stora enhetsflottor. Med automatisk enhetshantering kan du rikta in dig på en uppsättning enheter baserat på deras egenskaper, definiera en önskad konfiguration och sedan låta IoT Hub uppdatera enheterna när de kommer in i omfånget. Den här uppdateringen görs med hjälp av en automatisk enhetskonfiguration eller automatisk modulkonfiguration, som gör att du kan sammanfatta slutförande och efterlevnad, hantera sammanslagning och konflikter och distribuera konfigurationer i en stegvis metod.
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.
Automatisk enhetshantering fungerar genom att uppdatera en uppsättning enhetstvillingar eller modultvillingar med önskade egenskaper och rapportera en sammanfattning som baseras på tvillingrapporterade egenskaper. Den introducerar ett nytt klass- och JSON-dokument som kallas för en konfiguration som har tre delar:
Målvillkoret definierar omfånget för enhetstvillingar eller modultvillingar som ska uppdateras. Målvillkoret anges som en fråga för enhetstvillingtaggar och/eller rapporterade egenskaper.
Målinnehållet definierar önskade egenskaper som ska läggas till eller uppdateras i målenhetstvillingar eller modultvillingar. Innehållet innehåller en sökväg till avsnittet med önskade egenskaper som ska ändras.
Måtten definierar sammanfattningsantalet för olika konfigurationstillstånd, till exempel Lyckades, Pågår och Fel. Anpassade mått anges som frågor för tvillingrapporterade egenskaper. Systemmått är standardmått som mäter tvillinguppdateringsstatus, till exempel antalet tvillingar som är mål och antalet tvillingar som har uppdaterats.
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änsningsgränser gäller också. Mer information finns i Kvoter och begränsning.
CLI-krav
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.
Azure CLI i din miljö. Azure CLI-versionen måste minst vara 2.0.70 eller senare. Validera med
az –-version
. Den här versionen har stöd för az-tilläggskommandon och introducerar kommandoramverket Knack.
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
.
Implementera tvillingar
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ålls- och måttfrågorna anges som JSON-dokument som beskriver önskade egenskaper för enhetstvillingar eller modultvillingar för att ange och rapporterade egenskaper som ska mätas. 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 avsnitt 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å ungefär samma sätt, men du riktar in moduleContent
dig på i stället deviceContent
för .
{
"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änsning.
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 ska skapas i IoT-hubben. Ge konfigurationen ett unikt namn som är upp till 128 tecken långt. Gemener och följande specialtecken tillåts:
-+%_*!'
. Blanksteg är inte tillåtna.--etiketter – Lägg till etiketter som hjälper dig att spåra konfigurationen. Etiketter är Namn, Värdepar som beskriver distributionen. Till exempel
HostPlatform, Linux
ellerVersion, 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 ska 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å enhetstvillingtaggar eller önskade egenskaper för enhetstvillingar och ska matcha uttrycksformatet. Exempel:
tags.environment='test'
ellerproperties.desired.devicemodel='4000x'
. För automatisk modulkonfiguration baseras villkoret på modultvillingtaggar eller önskade egenskaper för modultvillingar.. Exempel:from devices.modules where tags.environment='test'
ellerfrom 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ått ger sammanfattningar av de olika tillstånd som en enhet eller modul kan rapportera tillbaka 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
elleruser
. Systemmått ärtargetedCount
ochappliedCount
. 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'
Etiketter
prioritet
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