Protocollo per la configurazione delle impostazioni del dispositivo IoT


9

MQTT è ampiamente utilizzato in IoT quando si tratta di scambiare dati di applicazioni tra il dispositivo finale e il servizio host. Il modello di pubblicazione-iscrizione semplifica l'utilizzo: nessuna sincronizzazione, negoziazione ecc. (Almeno sopra il livello del protocollo MQTT). Si rivolge principalmente ai produttori di dati che sono in grado di distribuire facilmente i propri dati ai consumatori.

Tuttavia, quando si tratta di un server centrale che desidera configurare le impostazioni su un dispositivo finale, non sono sicuro che il modello sia molto adatto. Il server vorrà inviare un comando al dispositivo e attendere una risposta (ad es. Leggere un'impostazione specifica, attendere la risposta), che non si adatta al modello di pubblicazione / sottoscrizione di MQTT.

Mi chiedevo se ci sono protocolli esistenti orientati all'invio e alla ricezione di comandi e alla configurazione di dispositivi remoti?


1
Sei sicuro che MQTT non consente al client di iscriversi a un canale di controllo? Penso che questo sia il posto in cui iniziare a cercare risposte, ma non sono abbastanza veloce per riassumere in una risposta en.wikipedia.org/wiki/Representational_state_transfer
Sean Houlihane

1
Non dimenticare, l'endpoint deve essere quello che avvia il canale, quindi controlla il consumo di energia.
Sean Houlihane,

1
@SeanHoulihane È certamente possibile usare MQTT per inviare e ricevere comandi / impostazioni come descrivi, ma per come la vedo io, idealmente devi avere un protocollo "basato sulla sessione", cioè creare una sessione, inviare un comando e ricevere una risposta in quella stessa sessione, collegando così facilmente la risposta al comando originale. MQTT si basa sui messaggi, quindi non c'è assolutamente nulla che colleghi i messaggi tra loro - spetta a te gestire quella parte. Mi chiedevo se esistesse un protocollo prontamente disponibile da poter utilizzare a tale scopo.
Amr Bekhit,

1
en.wikipedia.org/wiki/OMA_LWM2M Non sono sicuro di come, ma il cloud sembra essere in grado di effettuare chiamate PUT o POST per attivare una richiamata nel client.
Sean Houlihane,

MQTTv5 ha campi di intestazione per contrassegnare un messaggio come risposta a un messaggio precedente.
hardillb

Risposte:


6

Sembra un lavoro per CoAP :

Come HTTP, CoAP si basa sul modello REST di grande successo: i server rendono disponibili le risorse sotto un URL e i client accedono a tali risorse utilizzando metodi come GET, PUT, POST e DELETE.

Dal punto di vista degli sviluppatori, CoAP sembra molto simile a HTTP. Ottenere un valore da un sensore non è molto diverso dall'ottenere un valore da un'API Web.

Apparentemente può essere implementato con un overhead molto basso:

CoAP è stato progettato per funzionare con microcontrollori con un minimo di 10 KiB di RAM e 100 KiB di spazio del codice

CoAP è specificato in RFC 7252 e ci sono varie implementazioni (ad es. In C ).

È fortemente ispirato da REST come utilizzato con HTTP per le API Web, quindi se hai familiarità con quelle, acquisirai rapidamente CoAP. In caso contrario, potresti trovare questa presentazione utile per il contesto. L'idea è che ogni metodo HTTP ha un significato semantico, ad esempio, GETrichiede informazioni dal dispositivo senza cambiare nulla e POST, PUTe DELETEmutare i dati.

Come dici tu, i modelli di pubblicazione / sottoscrizione non funzionerebbero per una situazione in cui il tuo dispositivo funge da "server" per il coordinamento del sistema centrale (che funge da client per ciascun dispositivo). Invece, un modello simile a HTTP è l'ideale, tranne che HTTP ha troppe spese generali, che è dove entra in gioco CoAP.


0

Mi chiedevo se ci sono protocolli esistenti orientati all'invio e alla ricezione di comandi e alla configurazione di dispositivi remoti?

Sì, esiste un protocollo migliore per la gestione dei dispositivi in ​​IoT. È LwM2M - È molto più efficiente di MQTT e sopra COAP, MQTT e HTTP.

LwM2M viene fornito con un modello di gestione dei dati e dei dispositivi ben definito, che offre una varietà di oggetti standard pronti all'uso (IPSO Smart Objects), monitoraggio della connettività, azioni dei dispositivi remoti e aggiornamenti strutturati FOTA e SOTA, mentre in MQTT queste funzionalità sono interamente fornitore e specifico della piattaforma. Ciò che segue è che con MQTT, gli aggiornamenti del firmware o qualsiasi altra funzionalità di gestione devono essere creati da zero. Al contrario, LwM2M offre gli aggiornamenti del firmware come una delle sue funzionalità di base, quindi non è necessario inventare nuovi elementi costitutivi per la comunicazione.

Qui hai un confronto MQTT vs LwM2M e l'intero corso di crash.

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.