Inviare messaggi da dispositivo a cloud all'hub IoT

Per inviare i dati e gli avvisi di telemetria di serie temporali dai dispositivi al back-end della soluzione, inviare messaggi da dispositivo a cloud dal dispositivo all'hub IoT. Per una descrizione delle altre opzioni da dispositivo a cloud supportate dall'hub IoT, vedere Indicazioni sulle comunicazioni da dispositivo a cloud.

I messaggi da dispositivo a cloud vengono inviati tramite un endpoint per il dispositivo (/devices/{deviceId}/messages/events). A quel punto le regole di routing reindirizzano i messaggi a uno degli endpoint di servizio nell'hub IoT. Le regole di routing usano le intestazioni e il corpo dei messaggi da dispositivo a cloud che passano nell'hub per determinare dove reindirizzarli. Per impostazione predefinita, i messaggi vengono reindirizzati all'endpoint per servizio predefinito (messages/events) compatibile con Hub eventi. È quindi possibile usare l'integrazione standard di Hub eventi e gli SDK per ricevere i messaggi da dispositivo a cloud nel back-end della soluzione.

L'hub IoT implementa la messaggistica da dispositivo a cloud usando un modello di messaggistica di flusso. I messaggi da dispositivo a cloud dell'hub IoT somigliano più a eventi di Hub eventi che non a messaggi del bus di servizio, poiché è presente un volume elevato di eventi che passa nel servizio ed è leggibile da più lettori.

La messaggistica da dispositivo a cloud con hub IoT ha le caratteristiche seguenti:

  • I messaggi da dispositivo a cloud sono durevoli e vengono mantenuti nell'endpoint messages/events predefinito in un hub IoT per un massimo di sette giorni.
  • I messaggi da dispositivo a cloud possono avere dimensioni massime pari a 256 KB e possono essere raggruppati in batch per ottimizzare gli invii. I batch possono avere dimensioni massime pari a 256 KB.
  • Come illustrato nella sezione Controllare l'accesso all'hub IoT, l'hub IoT consente il controllo di accesso e l'autenticazione per singoli dispositivi.
  • L'hub IoT consente di creare fino a 10 endpoint personalizzati. I messaggi vengono recapitati agli endpoint in base alle route configurate nell'hub IoT. Per altre informazioni, vedere Regole di routing.
  • L'hub IoT abilita milioni di dispositivi connessi contemporaneamente (vedere Quote e limitazioni).
  • L'hub IoT non consente il partizionamento arbitrario. I messaggi da dispositivo a cloud vengono partizionati in base al valore deviceIddi origine.

Per altre informazioni sulle differenze tra l'hub IoT e i servizi di hub eventi, vedere Confronto tra l'hub IoT e Hub eventi di Azure.

Invio di traffico non di telemetria

Spesso, oltre ai punti dati di telemetria, i dispositivi inviano messaggi e richieste che devono essere eseguiti e gestiti separatamente nel back-end della soluzione. Ad esempio, gli avvisi critici che devono attivare un'azione specifica nel back-end. È possibile scrivere facilmente una regola di routing per l'invio di questi tipi di messaggi a un endpoint dedicato alla loro elaborazione che si basa sull'intestazione del messaggio o su un valore del corpo del messaggio.

Per altre informazioni sul modo migliore di elaborare questo tipo di messaggio, vedere l'Esercitazione: Elaborare messaggi da dispositivo a cloud dell'hub IoT usando .Net.

Routing di messaggi da dispositivo a cloud

Sono disponibili due opzioni per il routing dei messaggi da dispositivo a cloud alle app back-end:

Proprietà anti-spoofing

Per evitare lo spoofing di dispositivi nei messaggi da dispositivo a cloud, l'hub IoT contrassegna tutti i messaggi con le proprietà seguenti:

  • ConnectionDeviceId
  • ConnectionDeviceGenerationId
  • ConnectionAuthMethod

Le prime due contengono le proprietà deviceId e generationId del dispositivo di origine, come indicato in Proprietà delle identità dei dispositivi.

La proprietà ConnectionAuthMethod contiene un oggetto serializzato JSON con le proprietà seguenti:

{
  "scope": "{ hub | device}",
  "type": "{ symkey | sas}",
  "issuer": "iothub"
}

Passaggi successivi

Per informazioni sugli SDK che è possibile usare per inviare i messaggi da dispositivo a cloud, vedere Azure IoT SDK.

Le esercitazioni di Introduzione illustrano come inviare messaggi da dispositivo a cloud da dispositivi fisici e simulati. Per altre informazioni, vedere l'esercitazione Elaborare messaggi da dispositivo a cloud dell'hub IoT usando i route.