MQTT è un protocollo di messaggistica "leggero" basato su modello di pubblicazione / sottoscrizione su TCP / IP per la comunicazione tra dispositivi "Internet of Things" come ESP8266, Raspberry Pi, ecc. È molto popolare tra le risorse a basso consumo e le applicazioni alimentate a batteria come la casa automazione, sistemi di allarme di sicurezza e reti di sensori alimentate a batteria.
Mosquitto è un broker di messaggi (o server) open source che implementa i protocolli MQTT. Con il suo buon supporto comunitario, la documentazione e la facilità di installazione è diventato uno dei broker MQTT più popolari.
Prerequisiti
- Un server Ubuntu 16.04 con
root
accesso
- Porta aperta
TCP:1883
sul firewall
Fase 1: installare Mosquitto Broker
Aggiorna l'elenco dei pacchetti di Ubuntu e installa l'ultimo Mosquitto Broker disponibile da esso
sudo apt-get update
sudo apt-get install mosquitto
Il servizio Mosquitto inizierà dopo l'installazione.
Passaggio 2: installare i client e test
Installa i client MQTT
sudo apt-get install mosquitto-clients
I client Mosquitto ci aiutano a testare facilmente MQTT tramite un'utilità da riga di comando. Useremo due finestre di comando, una per iscriverti a un argomento chiamato "test"
e una per pubblicare un messaggio.
Gli argomenti sono etichette utilizzate dal broker per filtrare i messaggi per ciascun client connesso. Un programma client abbonato a un argomento "Home1/BedroomTemp"
ascolterà solo i messaggi pubblicati sullo stesso argomento da altri client.
Iscriviti all'argomento "test"
mosquitto_sub -t "test"
Mosquito_sub
è un client di sottoscrizione che abbiamo installato nel comando precedente. Qui stiamo specificando " -t
" seguito da un nome di argomento.
Pubblica un messaggio per argomento "test"
Accedere al terminale come seconda istanza e pubblicare un messaggio "test"
sull'argomento.
mosquitto_pub -m "message from mosquitto_pub client" -t "test"
Qui il parametro aggiuntivo " –m
" è seguito dal messaggio che vogliamo pubblicare. Premi " Enter
" e dovresti vedere un messaggio mosquitto_pub client
visualizzato nell'altro terminale in cui mosquito_sub client
è in esecuzione.
Fase tre: proteggere con una password
Mosquitto viene fornito con un programma di utilità per la generazione di file di password chiamato mosquitto_passwd
.
sudo mosquitto_passwd -c /etc/mosquitto/passwd dave
Password: password
Crea un file di configurazione per Mosquitto che punta al file della password che abbiamo appena creato.
sudo nano /etc/mosquitto/conf.d/default.conf
Questo aprirà un file vuoto. Incolla quanto segue in esso.
allow_anonymous false
password_file /etc/mosquitto/passwd
Salvare ed uscire dall'editor di testo con " Ctrl+O
", " Enter
" e " Ctrl+X
".
Ora riavvia il server Mosquitto e testa le nostre modifiche.
sudo systemctl restart mosquitto
Nella finestra del client di sottoscrizione, premere " Ctrl+C
" per uscire dal client di sottoscrizione e riavviarlo con il comando seguente.
mosquitto_sub -t "test" -u "dave" -P "password"
Nota la capitale -P qui .
Nella finestra del client di pubblicazione, prova a pubblicare un messaggio senza password.
mosquitto_pub -t "test" -m "message from mosquitto_pub client"
Il messaggio verrà rifiutato con il seguente messaggio di errore.
Connection Refused: not authorised.
Error: The connection was refused.
Ora pubblica un messaggio con username
e password
.
mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password"
Premi " Enter
" e vedrai il messaggio nella finestra del client di sottoscrizione, come nel passaggio due.
Conclusione
Ora abbiamo impostato un server MQTT protetto da password. Puoi usare l'IP pubblico del tuo server Ubuntu come broker MQTT per i tuoi progetti.