Featured Video Play Icon

Mqtt il protocollo per far comunicare le cose

Sempre più dispositivi inviano e ricevono dati attraverso Internet. Non si parla solo di elettrodomestici o dispositivi elettronici, ma anche di sensori, veicoli, accessori di abbigliamento, macchinari industriali e oggetti di ogni genere. La parola IoT, ossia Internet of Things indica proprio questo: una rete in cui i dispositivi sono connessi e comunicano tra di loro.

Cosa avranno di così importante da dirsi? Mah! in effetti non so cosa una scarpa possa voler dire a un frigorifero o a un telefonino, ma se questi oggetti sentono la necessità di comunicare perché impedirglielo e soprattutto perché non approfittare dei finanziamenti che sono elargiti generosamente su progetti riguardanti: IoT, Industria 4.0, Smart city, Smart living e smart fuffa ?

Per facilitare il dialogo tra questi dispositivi è stato introdotto un nuovo protocollo di comunicazione chiamato MQTT (Message Queuing Telemetry Transport). E’ un protocollo molto semplice che permette lo scambio di messaggi anche a dispositivi di ridotte dimensioni e in presenza di una ampiezza di banda molto ridotta. Le caratteristiche che rendono questo protocollo ideale per l’IoT sono:

  • E’ molto semplice.
  • Richiede poca banda.
  • E’ progettato per garantire comunicazioni affidabili su canali non affidabili (sfrutta il protocollo TCP).
  • E’ molto snello ed efficiente.
  • E’ bidirezionale: ogni dispositivo può allo stesso tempo inviare e ricevere dati.
  • Scalabile.
  • E’ progettato secondo un pattern Publisher/Subscriber ideale per comunicazioni da molti a molti.
  • E’ adatto a dispositivi con poche risorse a disposizione e di piccole dimensioni.

Il modello Publish/Subscribe

Ogni dispositivo, in questo protocollo, può sia inviare dati (agendo da Publisher) sia ricevere dati (agendo da Subscriber). Questo passaggio di informazioni avviene tramite un intermediario il Broker. Il compito del Broker è proprio quello di smistare i messaggi tra chi li invia e chi li richiede.

I topic

I dispositivi possono essere interessati solo ad alcuni tipi di messaggio. Quindi come fa un broker a sapere quando arriva un messaggio a chi deve smistarlo? Tramite il meccanismo dei topic. Cioè quando un dispositivo invia un messaggio specifica l’argomento del messaggio, il topic appunto, e quando invece vuole ricevere dei messaggi si registra ai topic di proprio interesse. Quindi una lampadina può essere programmata in modo che invii i messaggi sul proprio stato sul topic: miacasa/primopiano/salotto/lampadamuro 

A questo punto tutti i dispositivi cui può servire questa informazione devono essere programmati in modo che si iscrivano, sul broker, allo stesso topic (miacasa/primopiano/salotto/lampadamuro).

Quando la lampadina invierà un messaggio contenente il proprio stato al broker su quel topic, il broker lo inoltrerà solo a i dispositivi che si sono iscritti a quel topic e non a tutti gli altri.

Altri aspetti del protocollo

Ci sono vari meccanismi del protocollo che sono interessanti e che andrebbero approfonditi, tra i più rilevanti:

  • La semplicità dei messaggi scambiati: Publish, Subscribe, Unsubscribe, Connect, Connack, Puback, Pubrec, Pubrel, Pubcomp, Suback, Unsuback, Pingreq, Pingresp, Disconnect, Auth.
  • Il protocollo usato per le comunicazioni è TCP, quindi un protocollo affidabile basato su connessioni persistenti punto-punto.
  • E’ previsto un meccanismo di keep-alive per permettere ai dispositivi di capire che una connessione è caduta e ripristinarla.
  • Sono prevista la gestione della QoS (Quality of Service) a tre livelli. A seconda del livello: il messaggio è inviato almeno una volta (QoS 0), il messaggio è inviato al massimo una volta (QoS 1) e il messaggio è inviato esattamente una volta ( QoS 2). In base alla QoS quindi ci può essere la ritrasmissione di un messaggio.

 

Implementazioni disponibili del protocollo

Ci sono delle soluzioni software che possono facilitare la realizzazione di applicazioni che usano questo protocollo, tra queste ricordiamo:

  • Paho Mqtt: Una libreria rilasciata dalla Eclipse Foundation che è possibile utilizzare con vari linguaggi: Python, C++, Java, ecc.

  • Mosquito: Un broker open source rilasciato dalla Eclipse Foundation.
  • HiveMQ: Una suite di prodotti molto validi, tra i uali c’è 
  • MQTT Lens: Un client con il quale inviare (publisher) e ricevere (subscriber) messaggi.

 

 

 

Fonti e riferimenti:

 

4 years ago

Leave a Reply

Your email address will not be published. Required fields are marked *