[vc_row][vc_column][vc_column_text]
Introduzione
In questa guida vedremo come installare e configurare un server MQTT su Raspberry Pi, più comunemente chiamato broker MQTT in quanto di occuperà di “passare” i messaggi pubblicati agli altri ascoltatori (Client).
Come funziona MQTT?
In poche parole, il protocollo MQTT a differenza dei protocolli client/server, ha al suo centro un broker (server che andremo a configurare) che si occupa di ricevere tutti i messaggi in arrivo dai vari destinatari (ad esempio un ESP8266), ogni destinatario o client pubblicherà questi messaggi su un determinato argomento (topic) e tutti i client che sono iscritti a quel topic riceveranno il messaggio. Un po’ come visitare YouTube e visualizzare i vari video dei canali a cui siamo iscritti.
Per ulteriori informazioni consiglio di visitare il sito web ufficiale del protocollo: https://mqtt.org/
Materiale hardware
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width=”1/4″ offset=”vc_col-lg-offset-0 vc_col-lg-3 vc_col-md-offset-0 vc_col-md-4 vc_col-sm-offset-0 vc_col-xs-6″][vc_custom_heading text=”Raspberry Pi” font_container=”tag:h6|text_align:center” use_theme_fonts=”yes”][vc_single_image image=”373″ img_size=”full” alignment=”center” onclick=”custom_link” img_link_target=”_blank” link=”raspberrypiamazon” css=”.vc_custom_1631994204045{margin-top: -15px !important;}”][vc_separator css=”.vc_custom_1631976821913{margin-top: -40px !important;}”][vc_single_image image=”1112″ img_size=”full” alignment=”center” onclick=”custom_link” img_link_target=”_blank” link=”raspberrypiamazon” css=”.vc_custom_1631994248145{margin-top: -15px !important;}”][/vc_column][vc_column width=”1/4″ offset=”vc_col-lg-offset-0 vc_col-lg-3 vc_col-md-offset-0 vc_col-md-4 vc_col-sm-offset-0 vc_col-xs-6″][vc_custom_heading text=”Micro SD” font_container=”tag:h6|text_align:center” use_theme_fonts=”yes”][vc_single_image image=”375″ img_size=”full” alignment=”center” onclick=”custom_link” img_link_target=”_blank” link=”microsdamazon” css=”.vc_custom_1631994204045{margin-top: -15px !important;}”][vc_separator css=”.vc_custom_1631976821913{margin-top: -40px !important;}”][vc_single_image image=”1112″ img_size=”full” alignment=”center” onclick=”custom_link” img_link_target=”_blank” link=”microsdamazon” css=”.vc_custom_1631994248145{margin-top: -15px !important;}”][/vc_column][vc_column width=”1/4″ offset=”vc_col-lg-offset-0 vc_col-lg-3 vc_col-md-offset-0 vc_col-md-4 vc_col-sm-offset-0 vc_col-xs-6″][vc_custom_heading text=”Adat. Micro SD” font_container=”tag:h6|text_align:center” use_theme_fonts=”yes”][vc_single_image image=”377″ img_size=”full” alignment=”center” onclick=”custom_link” img_link_target=”_blank” link=”microsdadattatoreamazon” css=”.vc_custom_1631994204045{margin-top: -15px !important;}”][vc_separator css=”.vc_custom_1631976821913{margin-top: -40px !important;}”][vc_single_image image=”1112″ img_size=”full” alignment=”center” onclick=”custom_link” img_link_target=”_blank” link=”microsdadattatoreamazon” css=”.vc_custom_1631994248145{margin-top: -15px !important;}”][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Materiale Software
- Raspberry Pi OS installato su un Raspberry Pi
O - Un computer/server con una distribuzione Debian/Ubuntu
Procedura
Per prima cosa sarà necessario aggiungere il repository contenente i pacchetti necessari all’installazione, iniziamo con l’aprire una finestra di riga di comando o una connessione SSH al nostro dispositivo e lanciamo i comandi:
- Per Debian/Raspberry Pi OS:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key sudo apt-key add mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/
A questo punto verifichiamo la versione di Debian installata con il comando: lsb_release -a

In base alla versione di Debian installata, eseguiamo il comando corrispondente:
-
- Buster:
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list - Stretch:
sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list - Jessie:
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
- Buster:
- Per Ubuntu:
Ci basterà lanciare il seguente comando:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
Successivamente procediamo all’aggiornamento delle informazioni sui pacchetti
sudo apt update
Installiamo Mosquitto (Broker) e client (Per testare successivamente il funzionamento)
sudo apt install mosquitto sudo apt install mosquitto-clients
A questo punto il server di mosquitto verrà automaticamente installato come servizio, possiamo verificarlo con il comando:
sudo service mosquitto status
Di default Mosquitto non permette connessioni dall’esterno e l’accesso anonimo, necessario per i nostri test, procediamo quindi con il fermare il servizio e a creare in file di configurazione che imposti questi parametri:
Fermiamo il servizio: sudo service mosquitto stop
Creiamo il file di configurazione: sudo nano /etc/mosquitto/conf.d/testconf.conf
All’interno aggiungiamo le seguenti righe:
listener 1883 allow_anonymous true
Utilizziamo i tasti CTRL+X per uscire, alla richiesta di salvare premere Y e successivamente invio per confermare il nome del file.

Questa volta, se andremo a verificare lo stato del servizio con il comando sudo service mosquitto status vedremo che il nostro file è stato caricato:

Il parametro listener permette di configurare la porta di ascolto per il broker MQTT, in questo caso 1883 (Porta di default).
Il parametro allow_anonymous permette di configurare l’accesso anonimo al broker, in questo caso a true per consentirne.
Possiamo quindi procedere con un semplice test di comunicazione, andremo a collegarci tramite mosquitto-clients al broker appena configurato.
Test di connessione al broker
Una volta configurato il broker, è possibile procedere ad un primo test per verificare se i messaggi che pubblichiamo vengono correttamente inviati a tutti i client.
Verifichiamo che il broker sia in ascolto sulla porta che è stata configurata nel file di configurazione creato prima con il comando:
sudo netstat -at

A questo punto possiamo provare a collegarci in ascolto su un topic con una finestra SSH e con un’altra pubblicheremo dei messaggi di test.
Iscriviamoci ad un topic di test sulla prima finestra con il comando:
mosquitto_sub -d -t topicTest
L’opzione -d permette di visualizzare i messaggi di debug (in caso di errori i messaggi verranno visualizzati).
L’opzione -t indica verso quale topic vogliamo iscriverci, i topic hanno necessità di essere creati prima di iscriversi/pubblicare messaggi e possono essere qualsiasi stringa noi vogliamo. (Il limite massimo è di 65536 bytes per la lunghezza della stringa di topic, a meno che non abbiate esigenze specifiche, basteranno per qualsiasi stringa).
Una volta iscritti apriamo un’altra finestra SSH e pubblichiamo un messaggio verso il topic a cui abbiamo effettuato l’iscrizione con il comando:
mosquitto_pub -d -t topicTest -m "Ciao!"

Sulla prima finestra (Dove ascoltavamo i messaggi per il topic “topicTest”) verrà visualizzato il messaggio pubblicato, confermando che il broker MQTT appena installato è in grado di svolgere la sua funzione correttamente.
È possibile pubblicare un messaggio di test da una macchina remota utilizzando il comando
mosquitto_pub -d -t topicTest -h 192.168.1.157 -m "Ciao!"
Il parametro -h permette di specificare l’host a cui collegarsi (Specificare l’indirizzo IP o l’hostname).
Rendere sicura la comunicazione utilizzando nome utente e password
È possibile modificare la configurazione del broker MQTT in modo da accettare comunicazioni solo utilizzando user e password, vediamo come.
Per prima cosa è necessario creare un file di testo contenente l’anagrafica degli utenti che vogliamo abilitare e le relative password, nello schema nomeutente:password (1 per riga) ad esempio:
test:testpassword mario:mariorossi
Creiamo il file in una cartella, in questo esempio andrò a creare il file nella cartella /home/pi/brokerusers/pwfile.txt
Creo la cartella: mkdir brokerusers
Ci posizioniamo all’interno: cd brokerusers
Creo il file: nano pwfile.txt
Inserisco all’interno del file gli utenti definiti prima:

Chiudo con CTRL+X e y per confermare il salvataggio.
Tramite una utility messa a disposizione del pacchetto mosquitto-clients possiamo andare a cifrare le password inserite nel file, per farlo utilizziamo il comando:
mosquitto_passwd -U pwfile.txt
Eseguito il comando se andiamo nuovamente ad aprire il file vedremo che le password all’interno sono state cifrate:

Ora possiamo procedere alla modifica del file di configurazione del broker MQTT per bloccare le connessioni senza user e password abilitati.
Copiamo il file cifrato all’interno della cartella /etc/mosquitto:
sudo cp pwfile.txt /etc/mosquitto/pwfile.txt
Fermiamo il servizio del broker:
sudo service mosquitto stop
Modifichiamo il file di configurazione:
sudo nano /etc/mosquitto/conf.d/testconf.conf

Disattivando il parametro allow_anonymous (da true a false) e aggiungendo la riga password_file con il path del file copiato in precedenza.
Salviamo le modifiche, e procediamo all’avvio del broker:
sudo service mosquitto start
In quanto ora solo gli utenti abilitati possono iscriversi/pubblicare messaggi se proviamo ad utilizzare i comandi precedenti, non funzioneranno e la connessione verrà rifiutata:

È necessario specificare nei comandi di iscrizione e pubblicazione username e password validi (in questo caso quelli indicati nel password file)
Per iscriversi:
mosquitto_sub -d -t topicTest -u mario -P mariorossi
Dove il parametro -u indica l’username e -P la password.

Per pubblicare:
mosquitto_pub -d -t topicTest -u mario -P mariorossi -m "Ciao!"
Anche qui -u indica l’username da utilizzare e -P la password.

A questo punto il nostro broker MQTT sarà protetto da eventuali attacchi in caso volessimo esporre il nostro server in rete, le connessioni verranno accettate solo da utenti consentiti.
Conclusione
MQTT è il protocollo più diffuso in ambito di IoT in quanto permette di scambiare messaggi in modo sicuro e utilizzando pochissime risorse. È possibile utilizzarlo su gran parte delle schede di sviluppo (esp8266, arduino ecc)
Questo è il primo di una serie di articoli su MQTT, per qualsiasi dubbio o domanda non esitare a lasciare un commento!
[/vc_column_text][/vc_column][/vc_row]
Installazione e configurazione broker MQTT Mosquitto
Related posts
Ultimi inseriti
Iscriviti alla Newsletter
Social
[vc_row][vc_column][vc_row_inner][vc_column_inner width=”1/6″ offset=”vc_col-lg-offset-0 vc_col-lg-2 vc_col-md-offset-0 vc_col-md-2 vc_col-sm-offset-0 vc_hidden-xs”][/vc_column_inner][vc_column_inner width=”1/6″ offset=”vc_col-lg-offset-0 vc_col-lg-2 vc_col-md-offset-0 vc_col-md-2 vc_col-sm-offset-0 vc_col-xs-3″][vc_icon icon_fontawesome=”fa fa-facebook” color=”custom” align=”center” link=”url:https%3A%2F%2Fwww.facebook.com%2Florenzocasaburoit-2018570725129609%2F||target:%20_blank|”][/vc_column_inner][vc_column_inner width=”1/6″ offset=”vc_col-lg-offset-0 vc_col-lg-2 vc_col-md-offset-0 vc_col-md-2 vc_col-sm-offset-0 vc_col-xs-3″][vc_icon icon_fontawesome=”fa fa-twitter” color=”custom” align=”center” link=”url:https%3A%2F%2Ftwitter.com%2FLorenzoCasaburo||target:%20_blank|”][/vc_column_inner][vc_column_inner width=”1/6″ offset=”vc_col-lg-offset-0 vc_col-lg-2 vc_col-md-offset-0 vc_col-md-2 vc_col-sm-offset-0 vc_col-xs-3″][vc_icon icon_fontawesome=”fa fa-instagram” color=”custom” align=”center” link=”url:https%3A%2F%2Fwww.instagram.com%2Florenzocsb%2F||target:%20_blank|”][/vc_column_inner][vc_column_inner width=”1/6″ offset=”vc_col-lg-offset-0 vc_col-lg-2 vc_col-md-offset-0 vc_col-md-2 vc_col-sm-offset-0 vc_col-xs-3″][vc_icon icon_fontawesome=”fa fa-youtube” color=”custom” align=”center” link=”url:https%3A%2F%2Fwww.youtube.com%2Fchannel%2FUC6pRlV4BnxeC7Jl3DMyHMUA||target:%20_blank|”][/vc_column_inner][vc_column_inner width=”1/6″ offset=”vc_col-lg-offset-0 vc_col-lg-2 vc_col-md-offset-0 vc_col-md-2 vc_col-sm-offset-0 vc_hidden-xs”][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row]

