IoT, IIoT, AIoT

Protocollo MQTT: cosa sapere

Uno dei protocolli più importanti per l’ Internet of Things

Le origini del Protocollo MQTT

Le origini del Protocollo MQTT (MQTT è l’acronimo di “Message Queue Telemetry Transport”, nonostante non utilizzi code di messaggi) risalgono alla fine degli ormai lontani anni 90, quando Andy Stanford-Clark e Arlen Nipper progettarono il protocollo allo scopo di monitorare gli oleodotti. Il monitoraggio di lunghe condutture in aree remote oggi come allora è un’operazione piuttosto delicata.

Quindi l’idea dei creatori dell MQTT fu quella di inventare qualcosa che fosse estremamente leggero, in modo da poter ottenere le informazioni necessarie (stato, temperatura, ecc.) da dispositivi in luoghi remoti.

Inizialmente si pensò di sviluppare un protocollo in grado di ridurre al minimo l’utilizzo della larghezza di banda (piuttosto limitata negli anni 90, soprattutto rispetto ad oggi) garantendo allo stesso tempo una trasmissione affidabile dei dati. In altre parole, l’idea era quella di facilitare la comunicazione telemetrica tra i sensori degli oleodotti e ridurre al minimo l’utilizzo della larghezza di banda.

Modello del Protocollo MQTT

Il modello alla base del protocollo MQTT è basato sul binomio pubblicazione-sottoscrizione. Questo modello consente a sensori ed altri dispositivi di inviare dati a un hub centrale (definito broker), dove i sottoscrittori o abbonati (spesso sistemi di monitoraggio) potevano ricevere ed elaborare queste informazioni.

Come è utilizzato il protocollo MQTT

Con la comparsa di prodotti IoT e micro computer quali Raspberry Pi e numeroso microcontrollori qiali Arduini, ESP e STM il protocollo MQTT ha vissuto una nuova primavera, in pratica è diventato un modo pionieristico e molto efficiente per far comunicare i dispositivi più disparati.

Con la crescita della sua adozione e la diversificazione delle sue applicazioni, il protocollo si è evoluto oltre l’uso incentrato sulla telemetria pura e cruda. Ora MQTT è ampiamente utilizzato in ambito di automazione industriale, domotica e building automation, in campo manifatturiero, in agricoltura e nella logistica.

La sua efficienza e la sua leggerezza lo rendono la scelta ideale per ambienti con risorse limitate, come sistemi embedded e microcontrollori.

Come funziona la messaggistica MQTT

Come accennato in precedenza il protocollo MQTT utilizza il modello pubblicazione-sottoscrizione. Ciò significa che al centro dell’architettura MQTT ci sono il broker MQTT e i client MQTT

Pubblicazione, invio e ricezione messaggi

  1. Il broker è responsabile dell’invio dei messaggi tra il mittente e i legittimi destinatari. 
  2. Un client MQTT pubblica un messaggio su un broker e altri client possono iscriversi al broker per ricevere messaggi. Ogni messaggio MQTT include un argomento. 
  3. Un client pubblica un messaggio su un argomento specifico e i client MQTT si iscrivono agli argomenti che desiderano ricevere
  4. Il broker MQTT utilizza gli argomenti e l’elenco dei subscribers per inviare messaggi ai client appropriati
  5. Se la connessione da un client iscritto a un broker viene interrotta, il broker bufferizzerà i messaggi e li invierà all’abbonato quando sarà di nuovo online. 
  6. Se la connessione dal client di pubblicazione al broker viene interrotta senza preavviso, il broker può chiudere la connessione e inviare agli abbonati un messaggio memorizzato nella cache con le istruzioni impostate dal publischer.
MQTT_Publish-Subscribe_Model
Protocollo MQTT: schema di funzionamento

Come funziona l'MQTT

Broker MQTT

Il broker è il server che distribuisce le informazioni ai client interessati che si pubblicano/sottoscrivono topics del broker stesso. Questo è il cuore del protocollo di pubblicazione/sottoscrizione. Il broker MQTT è progettato in modo ottimale per gestire molte migliaia di client MQTT connessi contemporaneamente.

Client MQTT

Il Client è il dispositivo che si connette al broker per inviare o ricevere informazioni. Il client MQTT, sia esso sottoscrittore o pubblicatore (o entrambi in un unico dispositivo) è un qualsiasi dispositivo, dal piccolo microcontrollore fino a un server high-end, che ha una libreria MQTT in esecuzione ed è connesso a un broker MQTT su qualsiasi tipo di rete.

Topic/Argomento

I messaggi passano da un publischer, tramite un broker, a uno o più subscriber che utilizzano topic/argomenti. Gli argomenti sono stringhe UTF-8 gerarchiche. I clienti pubblicano, si iscrivono o fanno entrambe le cose su un topic. In altre parole, i topic rappresentano il modo in cui si registra interesse per i messaggi in arrivo o come si specifica dove si desidera pubblicare il messaggio.

Pubblica

Pubblica: clienti che inviano informazioni al broker da distribuire ai clienti interessati in base al nome dell’argomento.

Iscriviti

I clienti comunicano al broker a quali argomenti sono interessati. Quando un cliente si iscrive a un argomento, qualsiasi messaggio pubblicato sul broker viene distribuito agli abbonati di quell’argomento. I clienti possono anche annullare l’iscrizione per non ricevere più messaggi dal broker su quell’argomento.

QoS

QoS è la qualità del servizio. Ciascuna connessione può specificare una qualità di servizio al broker con un valore intero compreso tra 1 e 3.
     1) specifica al massimo una volta, oppure una e una sola volta senza richiedere una conferma di consegna. Questo viene spesso definito “fuoco e dimentica“.
     2) specifica almeno una volta. Il messaggio viene inviato più volte finché non viene ricevuta una conferma, altrimenti nota come consegna confermata.
     3) specifica esattamente una volta. I client mittente e destinatario utilizzano un handshake a due livelli per garantire che venga ricevuta solo una copia del messaggio, noto come consegna assicurata.
Il QoS non influisce sulla gestione delle trasmissioni dati TCP, solo tra i client MQTT.

Punti deboli di MQTT e Conclusioni

Il protocolo MQTT è un formidabile trumento a disposizione dei moderni devices appartenenti al vasto mondo dell Internet of Things. La sua implementazione a livello client è piuttosto semplice e rapida da effettuare.

La configurazione del broker in sicurezza dotandolo di accsso utenti profilati e crittografia rappresentano la sfida maggiore di questo protocollo il che richiede lo svolgimento di tali setup a su server da parte di tecnici sistemisti esperti.

We interconnect
everyone
and
everything

Produciamo automazione e sistemi di monitoraggio: facciamo comunicare oggetti intelligenti e li mettiamo al tuo servizio nei settori produttivi e non solo.

Cosa devi automatizzare? Parlaci delle tue esigenze, compila ora il form.