Sviluppo di dispositivi IoT

Questa panoramica presenta i concetti chiave relativi allo sviluppo di dispositivi che si connettono a una tipica soluzione Azure IoT. Ogni sezione include collegamenti al contenuto che fornisce ulteriori dettagli e indicazioni.

Il diagramma seguente mostra una visualizzazione generale dei componenti in una tipica soluzione IoT. Questo articolo è incentrato sui dispositivi e sul gateway illustrati nel diagramma.

Diagramma che illustra l'architettura della soluzione IoT di livello elevato evidenziando le aree di connettività del dispositivo.

In Azure IoT lo sviluppatore di dispositivi scrive il codice da eseguire nei dispositivi della soluzione. Questo codice in genere:

  • Stabilisce una connessione sicura a un endpoint cloud.
  • Invia al cloud i dati di telemetria raccolti dai sensori collegati.
  • Gestisce lo stato del dispositivo e lo sincronizza con il cloud.
  • Risponde ai comandi inviati dal cloud.
  • Abilita l'installazione degli aggiornamenti software dal cloud.
  • Consente al dispositivo di mantenere il funzionamento mentre è disconnesso dal cloud.

Tipi di dispositivi

I dispositivi IoT possono essere separati in due categorie generali, microcontroller (MCU) e microprocessori (MPU):

  • Gli MCU sono meno costosi e più semplici da usare rispetto agli MPU.
  • Un MCU contiene molte funzioni, ad esempio memoria, interfacce e I/O sul chip stesso. Un MPU accede a questa funzionalità dai componenti nei chip di supporto.
  • Un MCU usa spesso un sistema operativo in tempo reale (RTOS) o esegue il bare metal (nessun sistema operativo) e genera risposte in tempo reale e reazioni estremamente deterministiche agli eventi esterni. Gli MPU in genere eseguono un sistema operativo per utilizzo generico, ad esempio Windows, Linux o macOS, che genera una risposta non deterministica in tempo reale. In genere non esiste alcuna garanzia relativa al completamento dell'attività.

Esempi di sistemi operativi e hardware specializzati includono:

Windows per IoT è una versione incorporata di Windows per MPU con connettività cloud che consente di creare dispositivi sicuri con provisioning e gestione semplici.

Eclipse ThreadX è un sistema operativo in tempo reale per dispositivi IoT e perimetrali basati su MCU. Eclipse ThreadX è progettato per supportare dispositivi altamente vincolati che sono a batteria e hanno meno di 64 KB di memoria flash.

Azure Sphere è una piattaforma applicativa protetta e di alto livello con funzionalità di comunicazione e di protezione integrate per i dispositivi connessi a Internet. Comprende un MCU protetto, connesso, crossover, un sistema operativo personalizzato basato su Linux e un servizio di sicurezza basato sul cloud che fornisce sicurezza continua e rinnovabile.

Primitive

Un dispositivo Azure IoT può usare le primitive seguenti per interagire con il cloud:

  • Messaggi da dispositivo a cloud per inviare dati di telemetria delle serie temporali al cloud. Ad esempio, i dati relativi alla temperatura raccolti da un sensore collegato al dispositivo.
  • Caricamenti di file per file multimediali, ad esempio immagini e video acquisiti. I dispositivi connessi in modo intermittente possono inviare batch di telemetria. I dispositivi possono comprimere i caricamenti per risparmiare larghezza di banda.
  • Dispositivi gemelli per condividere e sincronizzare i dati sullo stato con il cloud. Ad esempio, un dispositivo può usare il dispositivo gemello per segnalare al cloud lo stato corrente di una valvola controllata e per ricevere una temperatura finale desiderata dal cloud.
  • Gemelli digitali per rappresentare un dispositivo nel mondo digitale. Ad esempio, un gemello digitale può rappresentare la posizione fisica di un dispositivo, le sue funzionalità e le sue relazioni con altri dispositivi.
  • Metodi diretti per ricevere comandi dal cloud. Un metodo diretto può avere parametri e restituire una risposta. Ad esempio, il cloud può chiamare un metodo diretto per richiedere il riavvio del dispositivo in 30 secondi.
  • Messaggi da cloud a dispositivo per ricevere notifiche unidirezionali dal cloud. Ad esempio, una notifica che indica che un aggiornamento è pronto per il download.

Per altre informazioni, vedere Linee guida per le comunicazioni da dispositivo a cloud e linee guida per le comunicazioni da cloud a dispositivo.

SDK del dispositivo

Gli SDK per dispositivi offrono astrazioni di alto livello che consentono di usare le primitive senza conoscere i protocolli di comunicazione sottostanti. Gli SDK per dispositivi gestiscono anche i dettagli per stabilire una connessione sicura al cloud e autenticare il dispositivo.

Per i dispositivi MPU, gli SDK per dispositivi sono disponibili per le lingue seguenti:

Per i dispositivi MCU, vedere:

Esempi e indicazioni

Tutti gli SDK per dispositivi includono esempi che illustrano come usare l'SDK per connettersi al cloud, inviare dati di telemetria e usare le altre primitive.

Il sito di sviluppo di dispositivi IoT include esercitazioni e guide pratiche che illustrano come implementare il codice per un'ampia gamma di tipi di dispositivi e scenari.

Altri esempi sono disponibili nel browser di esempio di codice.

Per altre informazioni sull'implementazione di riconnessioni automatiche agli endpoint, vedere Gestire le riconnessioni dei dispositivi per creare applicazioni resilienti.

Sviluppo di dispositivi senza UN SDK per dispositivi

Sebbene sia consigliabile usare uno degli SDK per dispositivi, potrebbero verificarsi scenari in cui non si preferisce. In questi scenari il codice del dispositivo deve usare direttamente uno dei protocolli di comunicazione supportati dall'hub IoT e dal servizio Device Provisioning.

Per altre informazioni, vedi:

Modelli dispositivo

Plug and Play IoT consente ai generatori di soluzioni di integrare i dispositivi IoT con le proprie soluzioni senza alcuna configurazione manuale. Al centro di Plug and Play IoT, è un modello di dispositivo usato da un dispositivo per annunciare le sue funzionalità a un'applicazione abilitata per Plug and Play IoT, ad esempio IoT Central. Questo modello è strutturato come un set di elementi che definiscono quanto segue:

  • Proprietà che rappresentano lo stato di sola lettura e di scrittura di un dispositivo o di un'altra entità. Ad esempio, un numero di serie del dispositivo potrebbe essere una proprietà di sola lettura e una temperatura di destinazione in un termostato potrebbe essere una proprietà scrivibile.
  • Dati di telemetria generati da un dispositivo, siano essi un normale flusso di letture di sensori, un errore occasionale o un messaggio informativo.
  • Comandi che descrivono una funzione o un'operazione che può essere eseguita su un dispositivo. Ad esempio, un comando può riavviare un gateway o scattare una foto usando una fotocamera remota.

È possibile raggruppare questi elementi in interfacce per riutilizzarli tra i vari modelli per semplificare la collaborazione e accelerare lo sviluppo.

Il modello viene specificato usando il linguaggio DTDL (Digital Twins Definition Language).

L'uso di Plug and Play IoT, modellazione e DTDL è facoltativo. È possibile usare le primitive dei dispositivi IoT senza usare Plug and Play IoT o modellazione. Il servizio Gemelli digitali di Azure usa anche modelli DTDL per creare grafici gemelli basati su modelli digitali di ambienti come edifici o fabbriche.

Gli sviluppatori di dispositivi, quando si implementa un dispositivo Plug and Play IoT sono disponibili un set di convenzioni da seguire. Queste convenzioni offrono un modo standard per implementare il modello di dispositivo nel codice usando le primitive disponibili negli SDK per dispositivi.

Per ulteriori informazioni, vedere:

Codice del dispositivo in contenitori

Se si usano contenitori, ad esempio in Docker, per eseguire il codice del dispositivo, è possibile distribuire il codice nei dispositivi usando le funzionalità dell'infrastruttura contenitore. I contenitori consentono anche di definire un ambiente di runtime per il codice con tutte le versioni del pacchetto e della libreria necessarie installate. I contenitori semplificano la distribuzione degli aggiornamenti e la gestione del ciclo di vita dei dispositivi IoT.

Azure IoT Edge esegue il codice del dispositivo nei contenitori. È possibile usare Azure IoT Edge per distribuire i moduli di codice nei dispositivi. Per altre informazioni, vedere Sviluppare moduli IoT Edge personalizzati.

Suggerimento

Azure IoT Edge abilita più scenari. Oltre a eseguire il codice del dispositivo IoT nei contenitori, è possibile usare Azure IoT Edge per eseguire i servizi di Azure nei dispositivi e implementare gateway sul campo. Per altre informazioni, vedere Che cos'è Azure IoT Edge?

Strumenti di sviluppo

La tabella seguente elenca alcuni degli strumenti di sviluppo IoT disponibili:

Strumento Descrizione
hub IoT di Azure (estensione VS Code) Questa estensione di VS Code consente di gestire le risorse e i dispositivi hub IoT dall'interno di VS Code.
Azure IoT Explorer Questo strumento multipiattaforma consente di gestire le risorse e i dispositivi hub IoT da un'applicazione desktop.
Estensione Azure IoT per l'interfaccia della riga di comando di Azure Questa estensione dell'interfaccia della riga di comando include comandi come az iot device simulate, az iot device c2d-messagee az iot hub monitor-events che consentono di testare le interazioni con i dispositivi.

Passaggi successivi

Dopo aver visto una panoramica dello sviluppo di dispositivi nelle soluzioni Azure IoT, alcuni passaggi successivi suggeriti includono: