open menu close menu
Il nostro framework
digitalevolution
è basato sull'approccio
multidisciplinare
all'evoluzione digitale...
IL NOSTRO METODO
digital strategy ❯
digital technology ❯
tech partners ❯
QUALI SONO I TUOI PRINCIPALI OBIETTIVI?
Business Growth
Progettiamo e implementiamo
strategie ingrate e data-driven,
pensate per consentire all'azienda
di crescere online.
Business Startup
Supportiamo aspiranti
imprenditori e giovani startup nel
lancio del proprio modello di business,
dalla strategia alla realizzazione.
Realizziamo strategie
di crescita online data driven!
PROVA IL NOSTRO
TOOL DI AUTOVALUTAZIONE
Fai un Digital Checkup
Who we are
Siamo un team di appassionati di tecnologie
digitali e best practice manageriali.
Abbiamo un approccio multidisciplinare basato
sull’ascolto attivo del Cliente
CSR
degg si impegna ad operare in modo
socialmente responsabile in ogni possibile
opportunità. Integriamo considerazioni
ambientali e sociali nel nostro core business
Work with us
Se sei alla ricerca di una sfida da raccogliere
presso un'ambiziosa realtà convinta di dare un
forte contributo all'evoluzione digitale, sei
nel posto giusto
IL NOSTRO MANIFESTO
DELLA LIBERTÀ DIGITALE
Scarica il Manifesto
Blog
Rimani aggiornato sulle
ultime novità digital
Knowledge Base
Scopri i concetti chiave
della Digital Evolution
NON PERDERTI
I PROSSIMI CONTENUTI
Iscriviti alla nostra newsletter
blog_post_featured_image

Con l'MQTT l’Internet delle Cose mette le ali

 

Mi chiamo Alessandro, sono un appassionato di tecnologie digitali e oggi parlerò della tecnologia MQTT!

MQTT è un protocollo client/server di messaggistica di tipo publish/subscribe leggero, aperto e super facile da implementare.

Questo tripudio di caratteristiche lo rendono lo strumento ideale da applicare in molti ambiti.

Tra questi spicca l’Internet of Things (o Internet delle Cose) cioè un contesto in cui è richiesto l’utilizzo di pochissimo codice e scarsa larghezza di banda.

In un’epoca storica dove ormai tutto è connesso alla rete, le specifiche esplicate nella pagina ufficiale di MQTT 5.0 non fanno altro che sottolinearne l’importanza.


Un po’ di storia

Il nostro viaggio parte dal lontano 1999, l’anno in cui nasce l’MQTT.

I padri dell’MQTT (MQ Telemetry Transport) sono Andy Stanford-Clark della IBM e Arlen Nipper.

Pensate che questi due signori ebbero la geniale idea di dare vita a tale tecnologia creando un vero e proprio protocollo di comunicazione.

Il loro scopo non era certo quello di diventare famosi, ma di collegare alcuni oleodotti riducendo al massimo il consumo di energia e di banda.

Non è finita qui! Oltre ad essere dei veri e propri innovatori, sono stati in grado di definire alcuni dei requisiti fondamentali ancora oggi utilizzati, tra cui:
- semplice implementazione
- distribuzione dei dati basata su Quality of service (QoS)
- leggerezza ed efficienza in termini di larghezza di banda
- Data Agnostic

Come potete facilmente immaginare, il principio di utilizzo del protocollo è cambiato nel corso del tempo.

Infatti, si è passati da sistemi embedded proprietari a sistemi aperti di Internet delle Cose (IoT).

Addirittura, nel 2010 il colosso tecnologico IBM ha deciso di rendere l’MQTT royalty-free e libero di essere utilizzato da chiunque senza costi!

Un pattern particolare

MQTT si basa sul pattern publish/subscribe che fornisce un’alternativa all’architettura tradizionale client/server in cui un client comunica direttamente con un endpoint.

Nel caso dell’MQTT c’è un disaccoppiamento tra il client (publisher), che invia il messaggio, e il client (subscriber) che riceve il messaggio.

Tra Publisher e Subscriber non c’è mai contatto diretto e consapevolezza dell’esistenza l’uno dell’altro, proprio come fossero due rette parallele.

Difatti, la connessione è gestita da un terzo componente cioè il broker che ha il potere di filtrare tutti i messaggi in arrivo e distribuirli correttamente a tutti i subscriber.

Vi starete probabilmente chiedendo: quali sono quindi i protagonisti dell’MQTT?

Il primo protagonista non può che essere il client (che non significa cliente).

Il client, infatti, è un qualsiasi dispositivo (come un micro controller o un server) che esegue una libreria MQTT e si connette ad un broker attraverso una rete.

Questo può assumere sia il ruolo di publisher che di subscriber.

Immaginate un dispositivo molto piccolo, con risorse limitate, che si connette ad una rete wireless e che dispone di una libreria minima… Ecco questo è un client!

Da non dimenticare che le librerie, di cui abbiamo parlato, sono disponibili in un’ampia varietà di linguaggi di programmazione che, per i più esperti, sono:
- C
- C++
- C#
- Go
- Java
- JavaScript
- .NET.

L’antagonista del client, se così possiamo definirlo, si identifica nel broker.

Questo è un protagonista a tutti gli effetti della tecnologia MQTT, tanto che si trova al centro di qualsiasi protocollo publish/subscribe!

Il broker è responsabile della ricezione, del filtraggio e dello smistamento dei messaggi nonché dell’autenticazione e dell’autorizzazione dei client. Insomma è un vero e proprio tuttofare!

L'integrazione è particolarmente importante perché il broker è spesso il componente che viene direttamente esposto su Internet. Inoltre, gestisce molti client e ha bisogno di trasmettere messaggi ai sistemi di analisi ed elaborazione a valle.

Dovete pensare al broker come un grande hub centrale in cui ogni dato è obbligato a passare.

Per questo motivo, è importante che questo sia altamente scalabile, integrabile nei sistemi back-end, facile da monitorare e super resistente ai guasti.


Publish e Subscribe

Un client, nel momento in cui si connette ad un broker (che funge da filtro), può fin da subito pubblicare messaggi.

Non ci riferiamo di certo ai messaggi di whatsapp o social, ma a qualcosa di molto più complesso!

Si tratta infatti di messaggi contenenti specifici topic che il broker utilizza ed inoltra a tutti gli iscritti al topic stesso.

Ogni messaggio possiede un payload, cioè un pacchetto di dati che viene trasmesso in formato byte.

La tipologia di formato, che può assumere le forme più disparate come testo, XML e quant’altro, viene deciso dal client mittente (o publisher).

Questo, tuttavia, non riceve feedback dai destinatari e non è in grado di sapere chi o quanti abbiano ricevuto il messaggio.

Infine, oltre al topic e al payload, vi elenco brevemente gli altri parametri che caratterizzano un messaggio publish (dei quali non entreremo nel dettaglio per evitare di annoiarvi):
- packetId
- qos
- retainFlag
- dupFlag.

Alessandro_MQTT_ 27-10-22_IMG01
Facciamo un piccolo resoconto di quello che abbiamo visto fino adesso.

Da una parte abbiamo l’invio di dati da parte di uno dei protagonisti e, dall’altra, c’è un destinatario pronto a riceverli.

Il client invia un messaggio subscribe al broker contenente un identificatore di pacchetto e l’elenco delle sottoscrizioni.

A sua volta, per confermare l’avvenuta sottoscrizione, questo invia un messaggio di conferma al client.

Nel caso in cui il broker dovesse rifiutare la sottoscrizione, il messaggio di ritorno conterrà un codice di errore.

Se vi sembra tutto molto complesso è normale, d’altronde stiamo pur sempre parlando di linguaggi informatici!

immagine articolo

 

Sempre più connessi

L’Internet delle Cose è ormai una realtà consolidata e, in pochi anni, si è ritagliata una fetta sempre più grande del mercato tecnologico.

L’IoT è presente in ogni cosa che ci circonda: dall'automobile, ai dispositivi per le abitazioni fino alle sale operatorie degli ospedali.

Alessandro_MQTT_ 27-10-22_IMG03
Inoltre, non posso non citare l’utilizzo sempre più diffuso dell’IoT in ambito agricolo.

Pensate che sono stati creati dei sensori che controllano l’intero ciclo produttivo.

Questi sono in grado addirittura di segnalare:
un'eventuale mancanza di sostanze nutritive del terreno
la fertilità del terreno
lo stato di salute delle foglie grazie alle telecamere connesse a Internet

Come avrete capito, l’IoT non ha limiti a campi di applicazione.

Al termine di questo nostro primo viaggio non posso non augurarmi (e augurarci) che un uso intelligente della tecnologia possa contribuire a favorire un migliore futuro del nostro Pianeta.