Implementazione dei dispositivi e procedure consigliate per IoT Central
Questo articolo fornisce informazioni su come implementare i dispositivi che si connettono all'applicazione IoT Central. Include anche alcune procedure consigliate. Per altre informazioni sul processo di connessione generale, vedere Connettere un dispositivo.
Per il codice di implementazione di un dispositivo di esempio, vedere Esercitazione: Creare e connettere un'applicazione client all'applicazione Azure IoT Central.
Implementare il dispositivo
I dispositivi che si connettono a IoT Central devono seguire le convenzioni Plug and Play IoT. Una di queste convenzioni è che un dispositivo deve inviare l'ID modello del modello di dispositivo che implementa quando si connette. L'ID modello consente all'applicazione IoT Central di assegnare il dispositivo al modello di dispositivo corretto.
Un modello di dispositivo di IoT Central include un modello che specifica i comportamenti che dovranno essere implementati da un dispositivo di questo tipo. I comportamenti includono dati di telemetria, proprietà e comandi.
Ogni modello ha un identificatore di modello gemello digitale (DTMI) univoco, ad esempio dtmi:com:example:Thermostat;1
. Quando un dispositivo si connette a IoT Central, invia l'identificatore DTMI del modello che implementa. IoT Central può quindi assegnare il modello di dispositivo corretto al dispositivo.
Plug and Play IoT definisce un set di convenzioni che un dispositivo deve seguire quando implementa un modello DTDL (Digital Twin Definition Language).
Gli Azure IoT SDK per dispositivi includono il supporto per le convenzioni di Plug and Play IoT.
Device model (Modello del dispositivo)
Per IoT Central, un modello di dispositivo viene definito usando il linguaggio di modellazione DTDL v2. Questo linguaggio consente di definire:
- I dati di telemetria inviati dal dispositivo. La definizione include il nome e il tipo di dati di telemetria. Ad esempio, un dispositivo invia dati di telemetria sulla temperatura come valore double.
- Le proprietà che il dispositivo segnala a IoT Central. Una definizione di proprietà ne include il nome e il tipo di dati. Ad esempio, un dispositivo segnala lo stato di una valvola come valore booleano.
- Le proprietà che il dispositivo può ricevere da IoT Central. Facoltativamente, è possibile contrassegnare una proprietà come scrivibile. Ad esempio, IoT Central invia una temperatura obiettivo come valore double a un dispositivo.
- I comandi a cui il dispositivo risponde. La definizione include il nome del comando, oltre ai nomi e ai tipi di dati di eventuali parametri. Ad esempio, un dispositivo risponde a un comando di riavvio che specifica quanti secondi aspettare prima del riavvio.
Nota
IoT Central definisce alcune estensioni per il linguaggio DTDL v2. Per altre informazioni, vedere Estensione IoT Central.
Un modello DTDL può essere senza componenti o a più componenti:
- Modello senza componenti: un modello semplice non usa componenti incorporati o a cascata. Tutti i dati di telemetria, le proprietà e i comandi vengono definiti come singolo componente radice. Per un esempio, vedere il modello di Termostato.
- Modello a più componenti: un modello più complesso che include due o più componenti. Questi componenti includono un singolo componente radice e uno o più componenti annidati. Per un esempio, vedere il modello di Temperature Controller.
Suggerimento
È possibile importare ed esportare un modello di dispositivo completo o una singola interfaccia da un modello di dispositivo IoT Central come file DTDL v2.
Per altre informazioni sui modelli di dispositivo, vedere la guida alla modellazione Plug and Play IoT
Convenzioni
Un dispositivo deve seguire le convenzioni di Plug and Play IoT quando scambia dati con IoT Central. Le convenzioni includono:
- Inviare l'identificatore DTMI quando il dispositivo si connette a IoT Central.
- Inviare payload e metadati JSON correttamente formattati a IoT Central.
- Rispondere correttamente alle proprietà e ai comandi scrivibili inviati da IoT Central.
- Seguire le convenzioni di denominazione per i comandi dei componenti.
Nota
Attualmente, IoT Central non supporta completamente i dati DTDL di tipo matrice e geospaziali.
Per altre informazioni sulle convenzioni di Plug and Play IoT, vedere Convenzioni di Plug and Play IoT.
Per altre informazioni sul formato dei messaggi JSON che un dispositivo scambia con IoT Central, vedere Payload di telemetria, proprietà e comandi.
SDK del dispositivo
Per implementare il codice eseguito nel dispositivo, è necessario usare uno degli SDK per dispositivi IoT di Azure. Le azioni che il codice deve implementare includono:
- Registrare il dispositivo con DPM e usare le informazioni di DPM per connettersi all'hub IoT interno nell'applicazione IoT Central.
- Annunciare l'identificatore DTMI del modello implementato dal dispositivo.
- Inviare dati di telemetria nel formato specificato dal modello di dispositivo. Per determinare come usare i dati di telemetria per le visualizzazioni e l'analisi, IoT Central usa il modello nel modello di dispositivo.
- Sincronizzare i valori delle proprietà tra il dispositivo e IoT Central. Il modello specifica i nomi delle proprietà e i tipi di dati in modo che IoT Central possa visualizzare le informazioni.
- Implementare i gestori per i comandi specificati nel modello. Il modello specifica i nomi e i parametri dei comandi che il dispositivo deve usare.
Per altre informazioni sul ruolo dei modelli di dispositivo, vedere Che cosa sono i modelli di dispositivo?.
La tabella seguente riepiloga le corrispondenze tra le funzionalità di dispositivo di Azure IoT Central e le funzionalità dell'hub IoT:
Azure IoT Central | Hub IoT di Azure |
---|---|
Telemetria | Messaggistica da dispositivo a cloud |
Comandi offline | Messaggistica da cloud a dispositivo |
Proprietà | Proprietà segnalate del dispositivo gemello |
Proprietà (scrivibile) | Proprietà desiderate e segnalate nel dispositivo gemello |
Comando | Metodi diretti |
Protocolli di comunicazione
I protocolli di comunicazione che un dispositivo può usare per connettersi a IoT Central includono MQTT, AMQP e HTTPS. Internamente, IoT Central usa un hub IoT per abilitare la connettività dei dispositivi. Per altre informazioni sui protocolli di comunicazione supportati dall'hub IoT per la connettività dei dispositivi, vedere Scegliere un protocollo di comunicazione.
Se il dispositivo non può usare i protocolli supportati, usare Azure IoT Edge per la conversione del protocollo. IoT Edge supporta altri scenari di intelligence di perimetro per scaricare l'elaborazione dall'applicazione Azure IoT Central.
Timestamp di telemetria
Per impostazione predefinita, IoT Central usa il tempo accodato del messaggio quando visualizza i dati di telemetria nei dashboard e nei grafici. L'ora di accodamento dei messaggi viene impostata internamente quando IoT Central riceve il messaggio dal dispositivo.
Un dispositivo può impostare la proprietà iothub-creation-time-utc
quando crea un messaggio da inviare a IoT Central. Se questa proprietà è presente, IoT Central lo usa quando visualizza i dati di telemetria nei dashboard e nei grafici.
È possibile esportare sia il tempo accodato che la proprietà iothub-creation-time-utc
quando si esportano i dati di telemetria dall'applicazione IoT Central.
Per altre informazioni sulle proprietà dei messaggi, vedere Proprietà di sistema dei messaggi dell'hub IoT da dispositivo a cloud.
Procedure consigliate
Queste raccomandazioni illustrano come implementare i dispositivi per sfruttare la disponibilità elevata predefinita, il ripristino di emergenza e il ridimensionamento automatico in IoT Central.
Provisioning di dispositivi
Man mano che cambia il numero di hub IoT nell'applicazione, potrebbe essere necessario che un dispositivo si connetta a un hub diverso.
Prima che un dispositivo si connetta a IoT Central, deve essere registrato e sottoposto a provisioning nei servizi sottostanti. Quando si aggiunge un dispositivo a un'applicazione IoT Central, IoT Central aggiunge una voce a un gruppo di registrazione DPS. Le informazioni del gruppo di registrazione, ad esempio l'ambito ID, l'ID dispositivo e le chiavi, vengono visualizzate nell'interfaccia utente di IoT Central.
Quando un dispositivo si connette per la prima volta all'applicazione IoT Central, dps effettua il provisioning del dispositivo in uno degli hub IoT collegati del gruppo di registrazioni. Il dispositivo viene quindi associato all'hub IoT. DPS usa criteri di allocazione per bilanciare il carico del provisioning tra gli hub IoT nell'applicazione. Questo processo garantisce che ogni hub IoT abbia un numero simile di dispositivi di cui è stato effettuato il provisioning.
Per altre informazioni sulla registrazione e il provisioning in IoT Central, vedere la guida alla connettività dei dispositivi IoT Central.
Gestire gli errori di connessione
Quando IoT Central ridimensiona o gestisce automaticamente uno scenario di ripristino di emergenza, potrebbe aggiornare gli hub IoT sottostanti. Per mantenere la connettività, il codice del dispositivo deve gestire errori di connessione specifici stabilendo una connessione a un nuovo endpoint dell'hub IoT.
Se il dispositivo riceve uno degli errori seguenti quando si connette, deve eseguire nuovamente il provisioning del dispositivo con DPS per ottenere una nuova stringa di connessione. Questi errori indicano che la stringa di connessione non è più valida:
- Endpoint dell'hub IoT non raggiungibile.
- Token di sicurezza scaduto.
- Dispositivo disabilitato nell'hub IoT.
Se il dispositivo riceve uno degli errori seguenti quando si connette, deve usare una strategia di back-off per ritentare la connessione. Questi errori indicano che la stringa di connessione è ancora valida, ma le condizioni temporanee arrestano la connessione del dispositivo:
- Dispositivo bloccato dall'operatore.
- Errore interno 500 dal servizio.
Per altre informazioni sui codici di errore del dispositivo, vedere Risoluzione dei problemi relativi alle connessioni dei dispositivi.
Per altre informazioni sull'implementazione delle riconnessioni automatiche, vedere Gestire le riconnessioni dei dispositivi per creare applicazioni resilienti.
Attualmente, i dispositivi IoT Edge non possono spostarsi tra hub IoT.
Funzionalità di failover di test
L'interfaccia della riga di comando di Azure consente di testare le funzionalità di failover del codice del dispositivo. Il comando dell'interfaccia della riga di comando funziona spostando temporaneamente una registrazione del dispositivo a un hub IoT interno diverso. Per verificare il funzionamento del failover del dispositivo, verificare che il dispositivo invii ancora i dati di telemetria e risponda ai comandi.
Per eseguire il test di failover per il dispositivo, eseguire il comando seguente:
az iot central device manual-failover \
--app-id {Application ID of your IoT Central application} \
--device-id {Device ID of the device you're testing} \
--ttl-minutes {How to wait before moving the device back to it's original IoT hub}
Suggerimento
Per trovare l'ID applicazione, andare a Applicazioni> Gestione nell'applicazione IoT Central.
Se il comando ha esito positivo, viene visualizzato un output simile all'esempio seguente:
Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
"hubIdentifier": "6bd4...bafa",
"message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}
Per altre informazioni sul comando dell'interfaccia della riga di comando, vedere failover manuale del dispositivo Azure IoT Central.
È ora possibile verificare che i dati di telemetria dal dispositivo raggiungano ancora l'applicazione IoT Central.
Suggerimento
Per visualizzare il codice del dispositivo di esempio che gestisce i failover in vari linguaggi di programmazione, vedere Client A disponibilità elevata di IoT Central.
Passaggi successivi
Alcuni passaggi successivi suggeriti sono:
- Svolgere l'esercitazione: Creare e connettere un'applicazione client all'applicazione Azure IoT Central
- Prendere in esame i concetti relativi all'autenticazione dei dispositivi in IoT Central
- Informazioni su come monitorare la connettività dei dispositivi con l'interfaccia della riga di comando di Azure
- Informazioni sui dispositivi Azure IoT Edge e su Azure IoT Central