In che modo un hub IoT di Azure interagisce con i dispositivi incorporati / IoT?


13

Sto lavorando sulla piattaforma IoT di Azure e capisco come i dispositivi inviano i dati all'hub IoT (se non sbaglio, è solo una chiamata al servizio web o qualcosa di simile).

Ma mi chiedo come l'hub IoT invii dati / comandi / input ai dispositivi, perché non stiamo lavorando sull'hub IoT per la comunicazione dei dispositivi (non abbiamo alcun requisito per inviare i dati ai dispositivi). L'hub IoT può interagire direttamente con i dispositivi? (Utilizzando l'ID univoco del dispositivo o utilizzando un'identità univoca come IP, indirizzo Mac, ecc.).

Da qualche parte ho letto che i dispositivi continuano a richiedere all'hub IoT se l'hub IoT ha input per loro, e l'hub IoT invia quindi dati / comandi / input ai dispositivi in ​​risposta. È vero? In caso contrario, ti preghiamo di spiegare.

Risposte:


14

Il modello utilizzato dai dispositivi connessi all'hub IoT è che non accetteranno mai connessioni in entrata. I dispositivi hub IoT non fungono mai da "server" e questa è una parte cruciale del modello di sicurezza in Azure IoT. Il modello definitivo su questo è incapsulato nella "Comunicazione assistita dal servizio" di Clemens Vasters .

Pertanto i dispositivi "pollano" sempre un servizio esterno per inviare dati o ricevere comandi. Le API fanno sembrare che i dati vengano inviati a un dispositivo, ma è sempre il dispositivo che effettua la connessione in uscita.

L'hub IoT lo fa in due modi:

  1. Inviando dati all'endpoint del dispositivo /devices/{deviceId}/messages/devicebound. Questo è un endpoint di messaggistica AMQP, simile a una sottoscrizione di coda o argomento. Il dispositivo, durante la lettura dei comandi, deve confermare la ricezione, se necessario, che fa parte del protocollo AMQP sottostante. Funziona allo stesso modo con MQTT e https è un fallback valido. L'API racchiude tutto questo per te. Esistono concetti aggiuntivi, come i "metodi diretti" che sono un wrapper API attorno essenzialmente allo stesso protocollo di messaggio sottostante
  2. Usando il dispositivo gemello lato server, che è un modo per mantenere logicamente le proprietà sincronizzate tra dispositivo e server. Si imposta una proprietà sul dispositivo gemello e quando il dispositivo si sincronizza tale proprietà verrà sincronizzata con il dispositivo. Questo è meno basato sui messaggi e basato sul protocollo di gestione dei dispositivi LWM2M.

Gran parte del "polling", connessione, condivisione di connessioni, ricevute, ecc. Dovrebbe essere curato come parte del protocollo AMQP (o MQTT), che a sua volta è racchiuso nell'SDK dell'hub IoT. Quindi quanto sopra è altamente semplificato, ma per ribadire, l'hub IoT non può e non tenterà (mai) di inviare dati a un indirizzo IP / porta sul dispositivo.


Grazie @Simon, ora sono chiaro, i dispositivi sono responsabili solo di chiamare l'hub IoT per l'invio o la ricezione di dati. Hai citato "Azure IoT" nella tua risposta, quindi vuoi solo confermarlo, la tua applicazione di risposta su tutte le piattaforme IoT? o solo per Azure IoT.
Shri

@ShrikantBhusalwad La risposta non può essere applicata a tutte le piattaforme, perché molte non sono ancora state sviluppate. Questo è un modello comune , fa bene alla sicurezza, ma altri modelli potrebbero essere giustificati, in particolare in un nuovo ambiente.
Sean Houlihane

2
Non ho familiarità con tutte le piattaforme, ma la maggior parte delle piattaforme cloud sarà simile. AWS utilizza MQTT, che è per lo più lo stesso. Come osserva @sean, non può applicarsi a tutte le piattaforme, ma pochissime piattaforme cloud implementeranno in anticipo pratiche di sicurezza rischiose. I metodi che utilizzano i modelli di dispositivo come server saranno legacy o avranno un rigore di sicurezza molto maggiore (man mano che si sviluppano schemi di bordi o mesh). Azure IoT supporta architettonicamente i gateway di campo e cloud per aggirare i problemi con dispositivi legacy o edge-based
Simon Munro

Le regole MQTT dell'hub IoT di Azure sono descritte in docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
Supporto Gambit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.