MQTT: Ecco Cos’è E Come Funziona Il Protocollo di Comunicazione IoT

Share

MQTT: Che Cos’è?

MQTT è un termine che alla maggior parte di noi probabilmente non dice nulla. Ma se anziché parlare di MQTT, dicessimo HTTP, diverse lampadine si accenderebbero. Per dirla semplice semplice, MQTT è per l’IOT ciò che HTTP è per il web.

MQTT è l’acronimo di Message Queuing Telemetry Transport e indica un protocollo di trasmissione dati TCP/IP basato su un modello di pubblicazione e sottoscrizione che opera attraverso un apposito message broker. In sostanza, i mittenti inviano messaggi relativi ad argomenti specifici, i destinatari si iscrivono ai temi che trovano interessanti e i broker provvedono alla trasmissione dei messaggi tra le due parti. 

Tanto i mittenti quanto i destinatari sono client MQTT che possono comunicare esclusivamente attraverso il message broker

Qualsiasi device o applicazione può essere un client MQTT che si appoggia a un’apposita libreria MQTT a sua volta connessa in rete a un broker MQTT. I broker MQTT gestiscono la ricezione dei messaggi e il successivo invio ai sottoscrittori; allo stesso tempo, il broker provvede alla gestione delle liste di argomenti a cui i destinatari sono interessati. 

Il protocollo MQTT è un protocollo ISO standard. La porta TCP/IP 1883 è riservata dallo Iana (authority che assegna gli Ip pubblici e le porte standard) all’esclusivo scambio di comunicazioni con MQTT. Lo stesso vale per la porta 8883 per SSL. 

Anche una chat di gruppo potrebbe essere un protocollo MQtt

MQTT, Perché Sì: I Vantaggi

MQTT è un protocollo di rete leggero e flessibile che garantisce il corretto equilibrio agli sviluppatori IoT: 

  • La leggerezza del protocollo consente l’implementazione sia su dispositivi hardware fortemente vincolati, sia su reti ad elevata latenza o a larghezza di banda limitata in quanto risulta particolarmente resiliente in fase di comunicazione dei dati;
  • La flessibilità del protocollo fa sì che possa supportare diversi scenari applicativi per dispositivi e servizi IoT;
  • MQTT è un protocollo robusta, con una sua storia e una sua affidabilità. Insomma, non è un azzardo. 

HTTP, Perché No: Gli Svantaggi

La maggior parte degli sviluppatori ha già una certa familiarità con i servizi web HTTP. Di conseguenza, perché non connettere i dispositivi IoT agli stessi servizi web? Così facendo, il dispositivo potrebbe inviare i suoi dati su richiesta del client e ricevere aggiornamenti dal sistema non appena ottiene una risposta HTTP. Tuttavia, tale percorso di richiesta e risposta incontra limiti piuttosto severi:

  • HTTP è un protocollo sincrono, in cui il client resta in attesa della risposta del server. Questo vale per i browser web, al prezzo però di una scarsa scalabilità che non sarebbe accettabile nel mondo IoT. Nell’IoT, infatti, l’elevato numero di dispositivi e, ancora di più, una rete inaffidabile o a elevata latenza rendono problematica la comunicazione sincrona. Pertanto, un protocollo asincrono come MQTT è molto più adatto a qualsiasi applicazione e servizio IoT. I sensori possono inviare le loro letture e lasciano che sia la rete a individuare il percorso e i tempi ottimali per la consegna ai dispositivi e ai servizi destinatari;
  • HTTP è unidirezionale. Dev’essere il client a dare il via alla connessione. Nelle applicazioni IoT, i dispositivi o i sensori sono normalmente client, il che significa che non possono ricevere passivamente comandi dalla rete;
  • HTTP è un protocollo 1-1. Il client fa una richiesta e il server risponde. Ciò rende difficile e costoso trasmettere un messaggio a tutti i dispositivi connessi alla rete, che è un caso molto comune di utilizzo delle applicazioni IoT;
  • HTTP è un protocollo pesante con molte regole. Ciò lo rende poco adatto per le reti vincolate. 

Una caratteristica chiave del protocollo MQTT sta nel suo modello di pubblicazione e sottoscrizione. Come accade in tutti i protocolli di trasmissione dati, disaccoppia mittente e destinatario dei dati. Per dirla con il linguaggio di tutti i giorni, il protocollo MQTT non è indirizzato a una singola persona, ma è più simile a un vasto contenitore di oggetti (nel caso specifico di argomenti) in cui ciascuno va a pescare ciò che più gli interessa. 

Modello PubSub

Il protocollo MQTT definisce due tipologie di entità nella rete: un message broker e un certo numero di client. Il broker altro non è se non un server che riceve tutti i messaggi da tutti i client per poi indirizzare tali messaggi ai client di destinazione pertinenti. Per client si intende qualsiasi cosa sia in grado di interagire con il broker per l’invio e la ricezione di messaggi. Un client, dunque, può essere un sensore IoT oppure un’applicazione in un data center che processa dati IoT.

  1. Il client si connette al broker e può effettuare la sottoscrizione a ogni argomento di riferimento dei messaggi del broker. Questa connessione può essere una semplice TCP/IP o una TLS crittografata per i messaggi sensibili; 
  2. Il client pubblica messaggi relativi a un argomento inviandoli al broker. 

Dato che i messaggi MQTT sono organizzati per argomento, gli sviluppatori di applicazioni IoT hanno la flessibilità di specificare che determinati client possano interagire esclusivamente con determinati messaggi. 

MQTT ha il vantaggio della leggerezza. Consta semplicemente di un’intestazione che definisce la tipologia di messaggio, un argomento testuale e infine un payload. 

L’applicazione può utilizzare ogni formato di dati per il carico, come JSON, XML, binario crittografato o Base64, fintanto che i client destinatari possono analizzare il payload. 

Il Protocollo MQTT

Ogni messaggio MQTT ha un comando e un payload. Il comando definisce il tipo di messaggio (per esempio, un messaggio CONNECT o SUBSCRIBE). Tutte le librerie MQTT forniscono modalità semplici per gestire direttamente tali messaggi e possono popolare automaticamente alcuni campi richiesti, come per esempio “messaggio” e “client Id”. 

Per ulteriori informazioni circa le tipologie di messaggio disponibili, puoi consultare la documentazione ufficiale al link http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718027

Le Librerie MQTT Che Usiamo in Duckma

In DuckMa utilizzato le seguenti librerie per la comunicazione via MQTT: 

Sources:

0 commenti

Lascia un commento