Indice dei contenuti
TogglePrima introduzione a MQTT
L'Internet delle cose, come suggerisce il nome, è la rete in cui gli oggetti sono connessi. Consente di collegare oggetti tramite Internet, e questi oggetti possono interagire tra loro. MQTT è un protocollo basato su TCP/IP per la comunicazione dei dati tra questi oggetti.


Ogni terminale è collegato a un proxy/server che implementa il protocollo MQTT.
Invia i dati tramite un argomento su un server proxy MQTT pubblicato.
Recupera i dati relativi agli argomenti a cui sei abbonato dal server proxy MQTT tramite l'abbonamento.
Il server proxy di per sé non genera dati; tutti i dati sono generati dal terminale collegato al server proxy.
Il terminale invia i dati al server. Il terminale che si è iscritto all'argomento sul server accetta i dati inviati da un altro terminale al server e li inoltra a se stesso tramite il server.
Perché scegliere il protocollo MQTT?
Il protocollo MQTT è un protocollo di rete leggero e flessibile. È inoltre particolarmente adatto agli scenari IoT.
Innanzitutto, la definizione del protocollo IoT è molto snella e non così complessa come quella di HTTP e HTTPS.
In generale, l'ambiente di trasmissione di rete e la potenza di calcolo dei dispositivi che supportano l'IoT sono relativamente limitati, pertanto sono adatti all'uso di MQTT, un protocollo leggero che non richiede requisiti elevati in termini di rete e dati.
Ma allora, perché MQTT è così leggero e flessibile? Una caratteristica fondamentale del protocollo MQTT è il modello “publish/subscribe”, che separa chi invia i dati da chi li riceve.
Un terminale può fungere sia da emittente che da destinatario di dati.
Se un dispositivo desidera pubblicare dei dati, deve semplicemente inviare il contenuto dei dati all'argomento corrispondente nel server proxy.
Se un dispositivo deve ricevere dati, è sufficiente che si abboni in anticipo, nel server proxy, agli argomenti a cui deve prestare attenzione.
Perché non scegliere un altro protocollo di rete?
La maggior parte degli sviluppatori conosce già il protocollo HTTP WEB. Allora perché non collegare la configurazione IoT al servizio WEB?
Il dispositivo è in grado di inviare dati sotto forma di richieste HTTP e di ricevere dati dal server sotto forma di risposte HTTP per accettare gli aggiornamenti.
Infatti, per i dispositivi IoT, questo modello di trasmissione dei dati — richiesta attiva → attesa passiva della risposta — presenta gravi limitazioni:
L'HTTP è un protocollo sincrono. Il client deve attendere la risposta del server. I browser web presentano questa limitazione, ma ciò va a discapito della scalabilità. Nel mondo dell’IoT, l’elevato numero di dispositivi e le reti potenzialmente inaffidabili o caratterizzate da elevata latenza rendono la comunicazione sincrona un problema. I protocolli di messaggistica asincroni sono più adatti alle applicazioni IoT. Il sensore si limita a inviare i dati e lascia che sia la rete a determinare il percorso e il momento migliori per consegnarli al dispositivo di destinazione e al server.
L'HTTP è un protocollo unidirezionale. Il client deve avviare attivamente la richiesta. Nelle applicazioni IoT, il dispositivo o il sensore è in genere un client, il che significa che non può ricevere dati dal server a meno che l'utente o l'applicazione non li richieda attivamente.
L’HTTP è un protocollo 1-1. Il client effettua una richiesta e il server risponde. Esiste una corrispondenza uno a uno. Tuttavia, è necessario trasformare la relazione 1-1 dell’HTTP in una relazione uno a molti, molto comune nell’IoT. È difficile da implementare e comporta anche costi elevati. E il rapporto uno-a-molti è molto comune nell'IoT.
Rispetto a MQTT, HTTP è un protocollo relativamente pesante. Non è adatto alle reti con larghezza di banda limitata e alla scarsa potenza di calcolo dei dispositivi terminali IoT.


