Inviare messaggi da dispositivo a cloud all'hub IoTSend device-to-cloud messages to IoT Hub

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.To send time-series telemetry and alerts from your devices to your solution back end, send device-to-cloud messages from your device to your IoT hub. Per una descrizione delle altre opzioni da dispositivo a cloud supportate dall'hub IoT, vedere Indicazioni sulle comunicazioni da dispositivo a cloud.For a discussion of other device-to-cloud options supported by IoT Hub, see Device-to-cloud communications guidance.

I messaggi da dispositivo a cloud vengono inviati tramite un endpoint per il dispositivo (/devices/{deviceId}/messages/events).You send device-to-cloud messages through a device-facing endpoint (/devices/{deviceId}/messages/events). A quel punto le regole di routing reindirizzano i messaggi a uno degli endpoint di servizio nell'hub IoT.Routing rules then route your messages to one of the service-facing endpoints on your IoT hub. Le regole di routing usano le intestazioni e il corpo dei messaggi da dispositivo a cloud che passano nell'hub per determinare dove reindirizzarli.Routing rules use the headers and body of the device-to-cloud messages flowing through your hub to determine where to route them. Per impostazione predefinita, i messaggi vengono reindirizzati all'endpoint per servizio predefinito (messages/events) compatibile con Hub eventi.By default, messages are routed to the built-in service-facing endpoint (messages/events), that is compatible with Event Hubs. È 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.Therefore, you can use standard Event Hubs integration and SDKs to receive device-to-cloud messages in your solution back end.

L'hub IoT implementa la messaggistica da dispositivo a cloud usando un modello di messaggistica di flusso.IoT Hub implements device-to-cloud messaging using a streaming messaging pattern. 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.IoT Hub's device-to-cloud messages are more like Event Hubs events than Service Bus messages in that there is a high volume of events passing through the service that can be read by multiple readers.

La messaggistica da dispositivo a cloud con hub IoT ha le caratteristiche seguenti:Device-to-cloud messaging with IoT Hub has the following characteristics:

  • 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.Device-to-cloud messages are durable and retained in an IoT hub's default messages/events endpoint for up to seven days.
  • I messaggi da dispositivo a cloud possono avere dimensioni massime pari a 256 KB e possono essere raggruppati in batch per ottimizzare gli invii.Device-to-cloud messages can be at most 256 KB, and can be grouped in batches to optimize sends. I batch possono avere dimensioni massime pari a 256 KB.Batches can be at most 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.As explained in the Control access to IoT Hub section, IoT Hub enables per-device authentication and access control.
  • L'hub IoT consente di creare fino a 10 endpoint personalizzati.IoT Hub allows you to create up to 10 custom endpoints. I messaggi vengono recapitati agli endpoint in base alle route configurate nell'hub IoT.Messages are delivered to the endpoints based on routes configured on your IoT hub. Per altre informazioni, vedere Regole di routing.For more information, see Routing rules.
  • L'hub IoT abilita milioni di dispositivi connessi contemporaneamente (vedere Quote e limitazioni).IoT Hub enables millions of simultaneously connected devices (see Quotas and throttling).
  • L'hub IoT non consente il partizionamento arbitrario.IoT Hub does not allow arbitrary partitioning. I messaggi da dispositivo a cloud vengono partizionati in base al valore deviceIddi origine.Device-to-cloud messages are partitioned based on their originating deviceId.

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.For more information about the differences between the IoT Hub and Event Hubs services, see Comparison of Azure IoT Hub and Azure Event Hubs.

Invio di traffico non di telemetriaSend non-telemetry traffic

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.Often, in addition to telemetry data points, devices send messages and requests that require separate execution and handling in the solution back end. Ad esempio, gli avvisi critici che devono attivare un'azione specifica nel back-end.For example, critical alerts that must trigger a specific action in the 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.You can easily write a routing rule to send these types of messages to an endpoint dedicated to their processing based on either a header on the message or a value in the message body.

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.For more information about the best way to process this kind of message, see the Tutorial: How to process IoT Hub device-to-cloud messages tutorial.

Routing di messaggi da dispositivo a cloudRoute device-to-cloud messages

Sono disponibili due opzioni per il routing dei messaggi da dispositivo a cloud alle app back-end:You have two options for routing device-to-cloud messages to your back-end apps:

Proprietà anti-spoofingAnti-spoofing properties

Per evitare lo spoofing di dispositivi nei messaggi da dispositivo a cloud, l'hub IoT contrassegna tutti i messaggi con le proprietà seguenti:To avoid device spoofing in device-to-cloud messages, IoT Hub stamps all messages with the following properties:

  • ConnectionDeviceIdConnectionDeviceId
  • ConnectionDeviceGenerationIdConnectionDeviceGenerationId
  • ConnectionAuthMethodConnectionAuthMethod

Le prime due contengono le proprietà deviceId e generationId del dispositivo di origine, come indicato in Proprietà delle identità dei dispositivi.The first two contain the deviceId and generationId of the originating device, as per Device identity properties.

La proprietà ConnectionAuthMethod contiene un oggetto serializzato JSON con le proprietà seguenti:The ConnectionAuthMethod property contains a JSON serialized object, with the following properties:

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

Passaggi successiviNext steps

Per informazioni sugli SDK che è possibile usare per inviare i messaggi da dispositivo a cloud, vedere Azure IoT SDK.For information about the SDKs you can use to send device-to-cloud messages, see Azure IoT SDKs.

Le esercitazioni di Introduzione illustrano come inviare messaggi da dispositivo a cloud da dispositivi fisici e simulati.The Get Started tutorials show you how to send device-to-cloud messages from both simulated and physical devices. Per altre informazioni, vedere l'esercitazione Elaborare messaggi da dispositivo a cloud dell'hub IoT usando i route.For more detail, see the Process IoT Hub device-to-cloud messages using routes tutorial.