Nel mondo di oggi, dove i dispositivi connessi sono diventati onnipresenti, il termine Internet delle Cose (IoT) è diventato la descrizione de facto per "dispositivo connesso a internet". Sebbene questo acronimo, reso glorioso e in camel case, sia bello di suo, c'è molto di più nei "dispositivi connessi a internet" di quanto la gente si renda conto. In questo articolo vorrei approfondire uno dei protocolli più diffusi utilizzati nei dispositivi IoT: il protocollo MQ Telemetry Transport (MQTT). Tratteremo brevemente cos'è, come funziona e cosa lo rende nuovo rispetto ad altre tecnologie utilizzate. Esamineremo anche un esempio dettagliato utilizzando un dispositivo Arduino.
In una tipica configurazione client-server abbiamo un fornitore (ovvero i dispositivi stessi) che invia dati dei sensori al server e un consumatore che richiede di visualizzare tali dati dei sensori dal server. MQTT non è diverso. È un protocollo leggero utilizzato per comunicare tra dispositivi. I dispositivi tipicamente "pubblicano" (ovvero inviano) dati a un "broker" MQTT (o server) che poi viene conservato per essere servito ad altri dispositivi o applicazioni web. Un altro dispositivo o applicazione web "sottoscriverà" quel set di dati (ovvero richiederà i dati) dal broker MQTT e poi il broker MQTT consegna quei dati a loro. Pensate a questo davvero come a un server web glorificato con due eccezioni principali:
Per le due ragioni sopra menzionate, MQTT è diventato un protocollo molto popolare con i dispositivi IoT. Storicamente, le persone utilizzavano richieste HTTP POST/GET per ottenere questa forma di comunicazione dispositivo-server, ma ciò limitava la loro capacità di utilizzare altri dispositivi di comunicazione come Bluetooth o ZigBee. Poiché MQTT è agnostico in questo senso, possiamo ora avere capacità di passaggio di messaggi all'interno di una rete mesh utilizzando MQTT senza mai connettersi a internet
Ci sono molti modi per iniziare con MQTT, inclusa la progettazione di una soluzione completa da un capo all'altro. Per semplificare le cose, utilizzeremo un servizio di broker MQTT gratuito fornito da Adafruit in questo esempio. Ciò ci consentirà di concentrarci solo sul lato client del processo di sviluppo. Per iniziare avrai bisogno di quanto segue:
Ci sono alcune cose che dobbiamo fare prima di poter configurare il nostro ambiente. Iniziamo a configurare il nostro hardware. Userò un Arduino Uno e uno shield Ethernet Arduino collegato alla mia rete locale.
Dovremo impilare lo shield Ethernet sopra l'Arduino e collegarlo alla rete in questo modo:
Una volta configurato il nostro hardware, apriamo l'Arduino IDE e installiamo le librerie necessarie. Apriamo l'Arduino IDE e andiamo su Strumenti > Gestisci Librerie...
Cerca la libreria Adafruit MQTT e clicca su installa:
Ti verrà chiesto di installare anche le dipendenze della libreria. Procedi cliccando su “Installa tutto”.
Una volta installate le librerie di supporto, puoi aprire un esempio navigando in File > Esempi > Adafruit MQTT Library > mqtt_ethernet.
A questo punto dobbiamo fare una pausa e recuperare le nostre credenziali dal nostro account Adafruit IO. Accedi a Adafruit IO e clicca su "My Key" in alto:
Ora torna al tuo esempio di sketch Arduino mqtt_ethernet e riempi i campi AIO_USERNAME e AIO_KEY con i campi "Username" e "Active Key" situati nel tuo account Adafruit IO. Assicurati che il tuo dispositivo sia connesso e poi clicca su Carica:
Per visualizzare lo stato del dispositivo (e per assicurarsi che sia connesso al broker MQTT) naviga in Strumenti > Monitor Seriale. Dovresti vedere un output che assomiglia a questo:
A questo punto abbiamo confermato che i dati vengono inviati con successo al broker MQTT. Per dare un'occhiata ai dati effettivi sul server, torniamo al nostro account Adafruit IO e clicchiamo su "Feeds" poi clicchiamo su "photocell"
Ora otteniamo una cattura in tempo reale dei dati che il nostro Arduino sta inviando al broker MQTT. Possiamo anche scaricare dati storici.
Congratulazioni! Hai ora configurato un dispositivo abilitato MQTT e pubblicato i tuoi dati su un broker MQTT. Ora passa al passo successivo costruendo i tuoi sensori personalizzati e pubblicando i dati sul tuo broker MQTT.
In questo articolo abbiamo appreso cos'è MQTT, perché viene utilizzato e come implementarlo su un microcontrollore. Abbiamo anche dimostrato come iniziare con un servizio di broker MQTT gratuito e visualizzare i dati sul loro server. Ora dovresti sentirti a tuo agio nell'avviare il tuo sketch Arduino basato sull'esempio che abbiamo utilizzato per pubblicare i tuoi dati sensoriali sul broker MQTT e visualizzarli sul cloud.