I concetti base dell’MQTT
MQTT sta per Message Queuing Telemetry Transport. È un semplice e leggero protocollo di messaggistica progettato per essere utilizzato con dispositivi a larghezza di banda ridotta, il che lo rende perfetto per le applicazioni IIoT (Industrial Internet of Things). In questo articolo discuteremo dei concetti base dell’MQTT e lo compareremo con altri protocolli utilizzati nel campo dell’automazione industriale.
Cos’è l’MQTT?
L’MQTT è un protocollo di comunicazione aperto che è stato approvato come uno standard dall’Organizzazione per il Progresso degli Standard di Informazione Strutturate (OASIS) nel 2014. L’organizzazione descrive l’MQTT come un leggero, aperto e semplice protocollo di trasporto della messaggistica di pubblicazione / sottoscrizione, facile da implementare. È una soluzione ottimale per le implementazioni machine-to-machine e IoT in cui si desidera un ingombro ridotto del codice e dove è disponibile una larghezza di banda di rete limitata (pensa wireless!). Alcune delle sue caratteristiche più distintive includono:
- Il modello di messagistica di tipo pub/sub (pubblicazione / sottoscrizione);
- Un trasporto di messaggistica indipendente dal contenuto del pacchetto (payload);
- Traffico di rete limitato con un piccolo sovraccarico di trasporto;
- La capacità di recapitare i messaggi almeno, al massimo o esattamente una volta per ottimizzare il modo in cui le informazioni specifiche vengono trasferite;
- Il servizio di notifica quando si verifica una disconnessione anomala.
Cosa differenzia l’MQTT dai tradizionali protocolli IoT?
La caratteristica più sorprendente che distingue l’MQTT dai tradizionali protocolli di comunicazione è la sua dipendenza dal modello di pub / sub piuttosto che dall’architettura client / server più familiare. Questo modello alternativo offre alcuni benefici sostanziali che rendono l’MQTT attraente per una varietà di ragioni. In un’implementazione MQTT, sia i publisher che gli subscriber che eseguono una libreria MQTT sono indicati come client.
Nel modello client / server, i client comunicano direttamente con un end-point o un server. I modello di pubblicazione / sottoscrizione separa il mittente del messaggio (editore) dai destinatari (sottoscritti), i publisher e gli subscriber non si conoscono e non stabiliscono mai una connessione diretta. Un terzo componente della connessione, conosciuto come broker, filtra i messaggi in arrivo e li distribuisce agli subscriber appropriati.
Disaccoppiamento
Il disaccoppiamento dei publisher dagli subscriber ha diverse dimensioni che contribuiscono alla flessibilità del protocollo MQTT.
- La separazione spaziale viene implementata tramite l’utilizzo del broker. I publisher e gli subscriber devono solo sapere come contattare il broker, non l’un l’altro.
- L’MQTT offre il disaccoppiamento in base al tempo. Ciò significa che un broker può memorizzare i messaggi per i client che non sono in linea e consegnarli quando la risorsa è disponibile.
- Il disaccoppiamento della sincronizzazione significa che le operazioni sui componenti non devono essere interrotte durante l’attesa di ricevere o pubblicare un messaggio in modo che coincida con la natura asincrona della maggior parte delle librerie client.
Filtraggio
Il filtraggio dei messaggi svolto dal broker è essenziale per l’efficienza dei sistemi utilizzando l’MQTT. Sono disponibili per il broker diverse opzioni di filtraggio.
- Il filtro basato sull’oggetto utilizza l’oggetto o l’argomento per determinare quali subscriber devono ricevere un messaggio specifico. I clienti si iscrivono al broker per argomenti di interesse. Tutti i client che si iscrivono a un particolare argomento riceveranno tutti i messaggi relativi a quell’argomento.
- Il filtro basato sul contenuto utilizza il contenuto del messaggio per determinare i destinatari. Il contenuto deve essere noto prima che il messaggio venga inviato e non può essere crittografato o modificato facilmente.
- Il filtro basato sul tipo si utilizza con il linguaggio orientato agli oggetti e utilizza il tipo di classe di un messaggio o evento per identificare gli subscriber corretti.
L’MQTT gestisce messaggi in un modo sostanzialmente diverso rispetto a un protocollo client / server tradizionale. In un’architettura client / server, ogni messaggio viene consumato da un singolo client, ma nel modello pub / sub molti subscriber possono ricevere lo stesso messaggio. I messaggi in un’implementazione MQTT non rimangono in coda fino a che non vengono consumati come nel caso del modello client / server. È possibile che nessun client elabori i messaggi se non ci sono iscritti per quell’argomento. Gli argomenti possono essere creati in modo dinamico con l’MQTT, che elimina la necessità di creare code con un nome prima che i messaggi possano essere inviati e ricevuti.
I vantaggi dell’MQTT
Le caratteristiche dell’MQTT e del modello pub / sub offrono alcuni vantaggi che dovrebbero essere considerati quando si implementa la comunicazione per i sistemi di automazione industriale. Tra questi ci sono:
- L’abilità di distribuire informazioni in maniera più efficiente;
- Scalabilità aumentata attraverso l’abilità di parallelizzare le attività del broker;
- Leggero sovraccarico e requisiti di archiviazione del codice;
- Sicurezza basata sul permesso per proteggere la comunicazione;
- Requisiti minimi di larghezza di banda, consentendo alle organizzazioni di massimizzare le risorse date.
MQTT nelle applicazioni pratiche
L’MQTT è attualmente utilizzato in una grande varietà di implementazioni, in casi d’uso sia industriali che domestici. Un paio di esempi dimostreranno l’utilità di questo protocollo di comunicazione.
I contatori intelligenti vengono utilizzati per monitorare e controllare il consumo energetico domestico con i client MQTT incorporati nel software dell’unità. Il protocollo fornisce la necessaria sicurezza, scalabilità e funzionalità richiesta per i sistemi progettati per rendere intelligente l’utilizzo di energia in tutta la casa.
La Deutsche Bahn AG (gestore delle linee ferroviarie tedesche), è una delle aziende di trasporto più grandi al mondo. L’azienda utilizza l’MQTT per processare i messaggi IoT per i treni a lunga percorrenza, display di testo dinamico che presentano informazioni sui clienti come orari, e nel funzionamento di scale mobili e ascensori nelle stazioni.
L’MQTT promette di diventare sempre più popolare come protocollo, scelto per implementazioni di automazione industriale grazie ai suoi numerosi vantaggi e alla natura open source. È molto più flessibile rispetto al modello client / server, che può sostituire in molti scenari di utilizzo. Se si lavora nel campo dell’automazione industriale è fondamentale conoscere i principi di funzionamento di questo protocollo.