Condividi tramite


Gestione automatica dei dispositivi e dei moduli IoT

La gestione automatica dei dispositivi dell'hub IoT di Azure semplifica il processo di gestione di grandi quantità di dispositivi automatizzando attività ripetitive e complesse. Con le configurazioni automatiche dei dispositivi e dei moduli, è possibile impostare come destinazione i dispositivi in base alle relative proprietà, specificare le impostazioni desiderate e consentire all'hub IoT di applicare gli aggiornamenti man mano che i dispositivi soddisfano i criteri definiti. Questo approccio consente di monitorare lo stato di configurazione, risolvere i conflitti e implementare le modifiche nelle fasi per un maggiore controllo e conformità.

Annotazioni

Le funzionalità descritte in questo articolo sono disponibili solo nel livello Standard dell'hub IoT. Per altre informazioni sui livelli Basic e Standard/Gratuito dell'hub IoT, vedere Scegliere il livello e le dimensioni appropriate dell'hub IoT per la soluzione.

Panoramica della gestione automatica dei dispositivi

La gestione automatica dei dispositivi opera applicando le proprietà desiderate a gruppi di dispositivi gemelli o moduli gemelli e riepilogando i risultati usando le proprietà segnalate. Questo processo usa un documento JSON specializzato denominato Configuration, costituito da tre componenti principali:

  • La condizione di destinazione definisce l'ambito dei dispositivi gemelli o dei moduli gemelli da aggiornare. La condizione di destinazione viene specificata come query sui tag e/o le proprietà segnalate gemelli.

  • Il contenuto di destinazione definisce le proprietà desiderate da aggiungere o aggiornare nei dispositivi gemelli o nei moduli gemelli di destinazione. Il contenuto include un percorso alla sezione delle proprietà desiderate da modificare.

  • Il componente delle metriche fornisce conteggi di riepilogo per gli stati di configurazione, ad esempio Operazione riuscita, In corso e Errore. È possibile definire metriche personalizzate usando query sulle proprietà segnalate dei dispositivi gemelli, mentre le metriche di sistema tengono automaticamente traccia dello stato di aggiornamento, tra cui il numero di dispositivi gemelli di destinazione e il numero di aggiornamenti completati.

Le configurazioni automatiche vengono eseguite per la prima volta poco dopo la creazione della configurazione e quindi a intervalli di cinque minuti. Le query sulle metriche vengono eseguite ogni volta che viene eseguita la configurazione automatica. Un massimo di 100 configurazioni automatiche è supportato in hub IoT di livello standard; dieci in hub IoT di livello gratuito. Si applicano anche i limiti di limitazione. Per altre informazioni, vedere Quote e limitazioni.

Prerequisiti

  • Una sottoscrizione di Azure attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

  • Un hub IoT nella sottoscrizione di Azure. Se non si ha ancora un hub, è possibile seguire la procedura descritta in Creare un hub IoT.

Implementare gemelli digitali

Le configurazioni automatiche dei dispositivi richiedono l'uso di dispositivi gemelli per sincronizzare lo stato tra il cloud e i dispositivi. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

Le configurazioni automatiche dei moduli richiedono l'uso di moduli gemelli per sincronizzare lo stato tra il cloud e i moduli. Per altre informazioni, vedere Informazioni e uso dei moduli gemelli nell'hub IoT.

Usare i tag per individuare i gemelli

Prima di creare una configurazione, è necessario specificare i dispositivi o i moduli che si desidera influire. L'hub IoT di Azure identifica i dispositivi usando i tag nel dispositivo gemello e identifica i moduli usando i tag nel modulo gemello. Ogni dispositivo o modulo può avere più tag ed è possibile definirli in qualsiasi modo appropriato per la soluzione. Ad esempio, se si gestiscono i dispositivi in posizioni diverse, aggiungere i tag seguenti a un dispositivo gemello:

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

Creare una configurazione

È possibile creare un massimo di 100 configurazioni automatiche in hub IoT di livello standard; dieci in hub IoT di livello gratuito. Per altre informazioni, vedere Quote e limitazioni.

  1. Nel portale di Azure passare all'hub IoT.

  2. Selezionare Configurazioni e distribuzioni nel riquadro di spostamento sinistro.

  3. Selezionare Aggiungi e scegliere Configurazione del dispositivo gemello o Configurazione del modulo gemello nell'elenco a discesa.

    Screenshot che mostra come aggiungere una configurazione.

Per creare una configurazione sono necessari cinque passaggi. Le sezioni seguenti illustrano ognuna di esse.

Nome e etichetta

  1. Immettere un nome univoco per la configurazione. Il nome può contenere fino a 128 caratteri e può includere lettere minuscole e i caratteri speciali seguenti: -+%_*!'. Non sono consentiti spazi.
  2. Aggiungere etichette per organizzare e descrivere la configurazione. Le etichette sono coppie chiave-valore, ad esempio HostPlatform, Linux o Version, 3.0.1.
  3. Seleziona Avanti per continuare.

Impostazioni del dispositivo gemello

Impostare il contenuto nelle proprietà desiderate del dispositivo gemello o del modulo gemello di destinazione fornendo due input per ogni impostazione. In primo luogo, specificare il percorso del modulo twin, che punta alla sezione JSON all'interno delle proprietà desiderate del modulo twin da aggiornare. Immettere quindi il contenuto JSON da inserire in tale posizione.

Ad esempio, è possibile impostare il percorso del gemello su properties.desired.chiller-water e quindi fornire il contenuto JSON seguente:

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

Screenshot dell'impostazione della proprietà del dispositivo o del modulo gemello e del contenuto JSON.

È anche possibile impostare impostazioni individuali specificando l'intero percorso del gemello e fornendo il valore senza utilizzare parentesi quadre. Ad esempio, con il percorso duplicato properties.desired.chiller-water.temperature, imposta il contenuto su 66. Creare quindi una nuova impostazione gemella per la proprietà della pressione.

Se due o più configurazioni hanno come destinazione lo stesso percorso gemello, il contenuto della configurazione con priorità più alta viene applicato (la priorità è definita nel passaggio 4).

Se si desidera rimuovere una proprietà esistente, specificare il valore della proprietà su null.

È possibile aggiungere altre impostazioni selezionando Aggiungi impostazione dispositivo gemello o Aggiungi impostazione del modulo gemello.

Dispositivi o moduli obiettivo

Usare la proprietà tags dai gemelli per selezionare i dispositivi o moduli specifici che devono ricevere la configurazione. È possibile anche assegnare i gemelli di destinazione in base alle proprietà segnalate.

Le configurazioni automatiche dei dispositivi possono essere destinate solo ai tag dei dispositivi gemelli e le configurazioni automatiche dei moduli possono essere destinate solo ai tag dei moduli gemelli.

Poiché più configurazioni possono essere destinate allo stesso dispositivo o modulo, ogni configurazione richiede un numero di priorità. Se si verifica un conflitto, la configurazione con la priorità più alta prevale.

  1. Immettere un numero intero positivo per priorità di configurazione. Il valore numerico più alto è considerato la priorità più alta. Se due configurazioni hanno lo stesso numero di priorità, quella creata più di recente vince.

  2. Immettere una condizione di destinazione per determinare quali dispositivi o moduli sono destinati a questa configurazione. La condizione deve basarsi su etichette gemelle o proprietà segnalate gemelle e deve corrispondere al formato dell'espressione.

    • Per la configurazione automatica del dispositivo, è possibile specificare solo il tag o la proprietà riportata come destinazione. Ad esempio, tags.environment='test' o properties.reported.chillerProperties.model='4000x'. È possibile specificare * come destinazione tutti i dispositivi.

    • Per la configurazione automatica del modulo, usare una query per specificare tag o proprietà segnalate dai moduli registrati nell'hub IoT. Ad esempio, from devices.modules where tags.environment='test' o from devices.modules where properties.reported.chillerProperties.model='4000x'. Non è possibile usare il carattere jolly per specificare come destinazione tutti i moduli.

Metriche

Le metriche forniscono conteggi di riepilogo dei vari stati che un dispositivo o un modulo può segnalare dopo l'applicazione del contenuto di configurazione. Ad esempio, è possibile creare una metrica per le modifiche alle impostazioni in sospeso, una metrica per gli errori e una metrica per le modifiche alle impostazioni riuscite.

Ogni configurazione può avere fino a cinque metriche personalizzate.

  1. Immettere un nome per Nome della metrica

  2. Immettere una query per Criteri metrici. La query è basata sulle proprietà segnalate dei dispositivi gemelli. La metrica rappresenta il numero di righe restituite dalla query.

    Per esempio:

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

    Puoi includere una clausola che indica che la configurazione è stata applicata, come ad esempio:

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

    Se si sta creando una metrica per creare report sui moduli configurati, selezionare moduleId da devices.modules. Per esempio:

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

Esaminare la configurazione

Esaminare le informazioni di configurazione e quindi selezionare Invia.

Monitorare una configurazione

Per visualizzare i dettagli di una configurazione e monitorare i dispositivi in esecuzione, seguire questa procedura:

  1. Nel portale di Azure passare all'hub IoT.

  2. Selezionare Configurazioni in Gestione dei dispositivi.

  3. Esaminare l'elenco di configurazione. Per ogni configurazione, è possibile visualizzare i dettagli seguenti:

    • ID : nome della configurazione.

    • Condizione di destinazione : query usata per definire i dispositivi o i moduli di destinazione.

    • Priorità : numero di priorità assegnato alla configurazione.

    • Ora di creazione : timestamp dal momento in cui è stata creata la configurazione. Questo timestamp viene usato per interrompere i legami quando due configurazioni hanno la stessa priorità.

    • Metriche di sistema: le metriche calcolate dall'hub IoT e non possono essere personalizzate dagli sviluppatori. Assegnato: specifica il numero di dispositivi gemelli che soddisfano la condizione di destinazione. Si applica: il numero di dispositivi gemelli che sono stati modificati dalla configurazione, che può includere modifiche parziali nel caso in cui anche una configurazione separata con priorità più alta abbia apportato modifiche.

    • Metriche personalizzate: metriche specificate dallo sviluppatore come query sulle proprietà segnalate dei gemelli. È possibile definire fino a cinque metriche personalizzate per ogni configurazione.

  4. Selezionare la configurazione da monitorare.

  5. Esaminare i dettagli della configurazione. È possibile usare le schede per visualizzare dettagli specifici sui dispositivi che hanno ricevuto la configurazione.

    • Dispositivi di destinazione o moduli di destinazione: i dispositivi o i moduli che corrispondono alla condizione di destinazione.

    • Metriche : elenco di metriche di sistema e metriche personalizzate. È possibile visualizzare un elenco di dispositivi o moduli che vengono conteggiati per ogni metrica selezionando la metrica nell'elenco a discesa e quindi selezionando Visualizza dispositivi o Visualizza moduli.

    • Etichette : coppie chiave-valore usate per descrivere una configurazione. Le etichette non hanno alcun impatto sulle funzionalità.

    • Impostazioni del dispositivo gemello o Impostazioni del modulo gemello : le impostazioni del dispositivo gemello impostate dalla configurazione, se presenti.

Modificare una configurazione

Quando si modifica una configurazione, le modifiche vengono replicate immediatamente in tutti i dispositivi o i moduli di destinazione.

Se si aggiorna la condizione di destinazione, vengono eseguiti gli aggiornamenti seguenti:

  • Se un gemello non soddisfa la condizione di destinazione precedente, ma soddisfa la nuova condizione di destinazione e questa configurazione è la priorità più alta per tale gemello, viene applicata questa configurazione.

  • Se un gemello attualmente in esecuzione questa configurazione non soddisfa più la condizione di destinazione, le impostazioni della configurazione verranno rimosse e il gemello verrà modificato dalla successiva configurazione con priorità più alta.

  • Se un gemello attualmente in esecuzione questa configurazione non soddisfa più la condizione di destinazione e non soddisfa la condizione di destinazione di altre configurazioni, le impostazioni della configurazione verranno rimosse e non verranno apportate altre modifiche sul gemello.

Per modificare una configurazione, seguire questa procedura:

  1. Nel portale di Azure passare all'hub IoT.
  2. Selezionare Configurazioni e distribuzioni in Gestione dei dispositivi.
  3. Selezionare la configurazione da modificare.
  4. È possibile apportare aggiornamenti ai campi seguenti: priorità, metriche, condizione di destinazione ed etichette.
  5. Seleziona Salva.
  6. Seguire la procedura descritta in Monitorare una configurazione per controllare l'implementazione delle modifiche.

Eliminare una configurazione

Quando si elimina una configurazione, tutti i dispositivi gemelli assumono la successiva configurazione con priorità più alta. Se i dispositivi gemelli non soddisfano la condizione di destinazione di altre configurazioni, non vengono applicate altre impostazioni.

  1. Nel portale di Azure passare all'hub IoT.
  2. Selezionare Configurazioni e distribuzioni in Gestione dei dispositivi.
  3. Usare la casella di controllo per selezionare la configurazione da eliminare.
  4. Selezionare Elimina.
  5. Ti verrà chiesto di confermare tramite un prompt.

Prerequisiti

  • Una sottoscrizione di Azure attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

  • Un hub IoT nella sottoscrizione di Azure. Se non si ha ancora un hub, è possibile seguire la procedura descritta in Creare un hub IoT.

  • CLI di Azure nell'ambiente in uso. Almeno la versione dell'interfaccia della riga di comando di Azure deve essere 2.0.70 o successiva. Usare az –-version per convalidare. Questa versione supporta i comandi az extension e introduce il framework dei comandi Knack.

  • Estensione IoT per Azure CLI.

Annotazioni

Questo articolo usa la versione più recente dell'estensione Azure IoT, denominata azure-iot. La versione legacy è denominata azure-cli-iot-ext. È necessario avere una sola versione installata alla volta. È possibile usare il comando az extension list per convalidare le estensioni attualmente installate.

Usare az extension remove --name azure-cli-iot-ext per rimuovere la versione legacy dell'estensione.

Usare az extension add --name azure-iot per aggiungere la nuova versione dell'estensione.

Per vedere quali estensioni sono attualmente installate, usare az extension list.

Implementare gemelli digitali

Le configurazioni automatiche dei dispositivi richiedono l'uso di dispositivi gemelli per sincronizzare lo stato tra il cloud e i dispositivi. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

Le configurazioni automatiche dei moduli richiedono l'uso di moduli gemelli per sincronizzare lo stato tra il cloud e i moduli. Per altre informazioni, vedere Informazioni e uso dei moduli gemelli nell'hub IoT.

Usare i tag per individuare i gemelli

Prima di creare una configurazione, è necessario specificare i dispositivi o i moduli che si desidera influire. L'hub IoT di Azure identifica i dispositivi e usa i tag nel dispositivo gemello e identifica i moduli usando i tag nel modulo gemello. Ogni dispositivo o modulo può avere più tag ed è possibile definirli in qualsiasi modo appropriato per la soluzione. Ad esempio, se si gestiscono i dispositivi in posizioni diverse, aggiungere i tag seguenti a un dispositivo gemello:

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

Definire il contenuto e le metriche di destinazione

Il contenuto di destinazione e le query sulle metriche vengono specificati come documenti JSON che descrivono le proprietà desiderate del dispositivo gemello o del modulo gemello da impostare e le proprietà restituite da misurare. Per creare una configurazione automatica usando l'interfaccia della riga di comando di Azure, salvare il contenuto di destinazione e le metriche in locale come file .txt. I percorsi dei file vengono usati in una sezione successiva quando si esegue il comando per applicare la configurazione al dispositivo.

Ecco un esempio di contenuto di destinazione di base per una configurazione automatica del dispositivo:

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

Le configurazioni automatiche del modulo si comportano in modo simile, ma si punta a moduleContent anziché a deviceContent.

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

Ecco alcuni esempi di query sulle metriche:

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

Anche le query sulle metriche per i moduli sono simili alle query per i dispositivi, ma occorre selezionare moduleId da devices.modules. Per esempio:

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

Creare una configurazione

È possibile creare un massimo di 100 configurazioni automatiche in hub IoT di livello standard; dieci in hub IoT di livello gratuito. Per altre informazioni, vedere Quote e limitazioni.

È possibile configurare i dispositivi di destinazione creando una configurazione costituita dal contenuto e dalle metriche di destinazione. Usare il comando seguente per creare una configurazione:

   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 : nome della configurazione creata nell'hub IoT. Assegnare alla configurazione un nome univoco con lunghezza fino a 128 caratteri. Sono consentite lettere minuscole e i caratteri speciali seguenti: -+%_*!'. Non sono consentiti spazi.

  • -- labels : aggiungere etichette per tenere traccia della configurazione. Le etichette sono coppie nome-valore che descrivono la distribuzione. Ad esempio, HostPlatform, Linux o Version, 3.0.1

  • -- content: JSON inline o percorso del file per il contenuto di destinazione da impostare come proprietà desiderate del gemello.

  • -- hub-name : nome dell'hub IoT in cui viene creata la configurazione. L'hub deve trovarsi nella sottoscrizione corrente. Passare alla sottoscrizione desiderata con il comando az account set -s [subscription name]

  • -- target-condition : immettere una condizione di destinazione per determinare i dispositivi o i moduli di destinazione con questa configurazione. Per la configurazione automatica del dispositivo, la condizione si basa sui tag del dispositivo gemello o sulle proprietà desiderate del dispositivo gemello e deve corrispondere al formato dell'espressione. Ad esempio, tags.environment='test' o properties.desired.devicemodel='4000x'. Per la configurazione automatica del modulo, la condizione si basa sui tag del modulo gemello o sulle proprietà desiderate del modulo gemello. Ad esempio, from devices.modules where tags.environment='test' o from devices.modules where properties.reported.chillerProperties.model='4000x'.

  • -- priority : numero intero positivo. Nel caso in cui due o più configurazioni siano destinate allo stesso dispositivo o modulo, si applica la configurazione con il valore numerico più alto per Priority.

  • -- metrics: percorso del file per le query sulle metriche. Le metriche forniscono conteggi di riepilogo dei vari stati che un dispositivo o un modulo può segnalare dopo l'applicazione del contenuto di configurazione. Ad esempio, è possibile creare una metrica per le modifiche alle impostazioni in sospeso, una metrica per gli errori e una metrica per le modifiche alle impostazioni riuscite.

Monitorare una configurazione

Usare il comando seguente per visualizzare il contenuto di una configurazione:

az iot hub configuration show --config-id [configuration id] \
  --hub-name [hub name]
  • -- config-id : nome della configurazione esistente nell'hub IoT.

  • -- hub-name : nome dell'hub IoT in cui è presente la configurazione. L'hub deve trovarsi nella sottoscrizione corrente. Passare alla sottoscrizione desiderata con il comando az account set -s [subscription name].

Esaminare la configurazione nella finestra di comando. La proprietà metrics elenca un conteggio per ogni metrica valutata da ogni hub:

  • targetedCount : metrica di sistema che specifica il numero di dispositivi gemelli o moduli gemelli nell'hub IoT che corrispondono alla condizione di destinazione.

  • appliedCount : una metrica di sistema specifica il numero di dispositivi o moduli a cui è stato applicato il contenuto di destinazione.

  • Metrica personalizzata : tutte le metriche definite sono metriche utente.

È possibile visualizzare un elenco di ID dispositivo, ID modulo o oggetti per ognuna delle metriche usando il comando seguente:

az iot hub configuration show-metric --config-id [configuration id] \
   --metric-id [metric id] --hub-name [hub name] --metric-type [type] 
  • -- config-id : nome della distribuzione esistente nell'hub IoT.

  • -- metric-id : nome della metrica per cui si vuole visualizzare l'elenco di ID dispositivo o ID modulo, ad esempio appliedCount.

  • -- hub-name: nome dell'hub IoT in cui esiste la distribuzione. L'hub deve trovarsi nella sottoscrizione corrente. Passare alla sottoscrizione desiderata con il comando az account set -s [subscription name].

  • -- metric-type: il tipo di metrica può essere system o user. Le metriche di sistema sono targetedCount e appliedCount. Tutte le altre metriche sono metriche utente.

Modificare una configurazione

Quando si modifica una configurazione, le modifiche vengono replicate immediatamente in tutti i dispositivi di destinazione.

Se si aggiorna la condizione di destinazione, vengono eseguiti gli aggiornamenti seguenti:

  • Se un gemello non soddisfa la condizione di destinazione precedente, ma soddisfa la nuova condizione di destinazione e questa configurazione è la priorità più alta per tale gemello, viene applicata questa configurazione.

  • Se un gemello attualmente in esecuzione questa configurazione non soddisfa più la condizione di destinazione, le impostazioni della configurazione verranno rimosse e il gemello verrà modificato dalla successiva configurazione con priorità più alta.

  • Se un gemello attualmente in esecuzione questa configurazione non soddisfa più la condizione di destinazione e non soddisfa la condizione di destinazione di altre configurazioni, le impostazioni della configurazione verranno rimosse e non verranno apportate altre modifiche sul gemello.

Usare il comando seguente per aggiornare una configurazione:

az iot hub configuration update --config-id [configuration id] \
   --hub-name [hub name] --set [property1.property2='value']
  • -- config-id : nome della configurazione esistente nell'hub IoT.

  • -- hub-name : nome dell'hub IoT in cui è presente la configurazione. L'hub deve trovarsi nella sottoscrizione corrente. Passare alla sottoscrizione desiderata con il comando az account set -s [subscription name].

  • -- set : aggiornare una proprietà nella configurazione. È possibile aggiornare le proprietà seguenti:

    • targetCondition, come ad esempio targetCondition=tags.location.state='Oregon'

    • labels

    • priority

Eliminare una configurazione

Quando si elimina una configurazione, qualsiasi dispositivo gemello o modulo gemello assume la successiva configurazione con priorità più alta. Se i gemelli non soddisfano la condizione di destinazione di altre configurazioni, non vengono applicate altre impostazioni.

Usare il comando seguente per eliminare una configurazione:

az iot hub configuration delete --config-id [configuration id] \
   --hub-name [hub name] 
  • -- config-id : nome della configurazione esistente nell'hub IoT.

  • -- hub-name : nome dell'hub IoT in cui è presente la configurazione. L'hub deve trovarsi nella sottoscrizione corrente. Passare alla sottoscrizione desiderata con il comando az account set -s [subscription name].

Passaggi successivi

In questo articolo si è appreso come configurare e monitorare i dispositivi IoT su larga scala.

Per informazioni su come gestire in blocco le identità dei dispositivi dell'hub IoT, vedere Importare ed esportare le identità dei dispositivi dell'hub IoT in blocco