Installiamo Mosquitto MQTT broker e usiamolo per la domotica IoT

MQTT da 0 a 100 in 5 minuti

Far colloquiare dispositivi eterogenei, soprattuto in ambito IoT e domotica, é un requisito indispensabile. Mosquitto MQTT broker, é un companion efficace per tutti quelli che vogliono introdurre MQTT nel proprio progetto. Vediamo nel dettaglio di cosa si tratta e come possiamo installarlo ed usarlo.

Che cosa é MQTT ?

MQTT é un protocollo di comunicazione M2M (machine-to-machine) ed é usatissimo per  mettere in comunicazione, attraverso un sistema publish/subscribe, piú dispositivi IoT, sfruttando una larghezza di banda esigua.

Installiamo Mosquitto MQTT broker su Docker

Come avrete notato nel precedente articolo, ogni volta che necessito di provare un nuovo servizio, prediligo installarlo in un container Docker, anziché direttamente sul mio Mac. Il motivo principale é che non voglio ritrovarmi il sistema operativo pieno zeppo di roba inutile, ma anche il fatto che possa provare il servizio in un ambiente simile a quello definitivo é da considerare (macOS, anche se dotato di shell e dispone di gestore di pacchetti come homwbrew, non sará mai linux).

Quindi, una volta installato Docker, prepariamo i files, esterni al container, necessari per poter configurare mosquitto. Partendo da una directory a vostra scelta:

mkdir ./mosquitto/data
mkdir ./mosquitto/config
mkdir ./mosquitto/log

Come é facile intuire, la prima directory servirá a contenere i dati del broker, la seconda i files di configurazione e la terza i log per l’analisi futura.

Scriviamo il nostro file di configurazione, per semplicitá potete scaricare il mio da questo link e personalizzarlo come volete. Per chiarezza, ho attuato queste modifiche al file:

persistence true

persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log

A questo punto lanciamo il docker run, permettendo a Docker di scaricare l’immagine dal Docker Hub e avviando il container con i volumi selezionati:

docker run -itd --name mosquittovixrit -p 1884:1883 -p 9002:9001 -v ~/mosquittovixrit/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v ~/mosquittovixrit/mosquitto/data:/mosquitto/data -v ~/mosquittovixrit/mosquitto/log:/mosquitto/log eclipse-mosquitto

Nota: avendo altri container basati su eclipse-mosquitto, non ho potuto mappare le porte locali native (1883 e 9001) ma ho dovuto cambiarle altrimenti docker va in errore.

Nel terminale dovreste notare:

Comando di partenza eclipse-mosquitto su Docker in italiano

Lanciando poi i comandi di stop e start vi sará possibile controllare il container:

docker stop mosquittovixrit
docker start mosquittovixrit

Come verifico che Mosquitto MQTT stia funzionando correttamente ?

Accedendo alla directory dei log, vi sará possibile capire se ci sono errori e se il servizio sta funzionando correttamente. Nel mio caso, eseguendo un head del file ottengo:

Log di mosquitto mqtt broker

Nel mio caso il log non mostra nulla di anomalo, ci avvisa che é stato avviato il servizio e che é stato caricato il file mosquitto.conf (da noi mappato in fase di run). Fate attenzione perché quelle riportate nel log sono informazioni realtive solo al container, non all’host, ovviamente.

Primo utilizzo: MQTT fx

Il nostro broker, quindi, é pronto all’uso. Per apprendere le caratteristiche di base, iniziamo scaricando un tool molto utile per chi sviluppa con MQTT:

Scarica MQTT fx dal sito ufficiale

Scaricatelo ed installato (é presente una versione per ogni sistema operativo), appena avviato dovreste visualizzare questa interfaccia:

MQTTfx Schermata di avvio

MQTTfx Schermata di avvio

Per prima cosa dovete cliccare sull’icona a forma di ingranaggio alla sinistra del tasto “Connect”, in questo modo produrremo un profilo con i dati del nostro Mosquitto MQTT Broker, appena installato su Docker.

MQTTfx - Impostazione profile

MQTTfx – Impostazione profile

Per il vostro profilo, basatevi sul comando docker run che avete eseguito, se la porta locale che mappa quella dal container 1883, come nel mio caso, é 1884, lasciate la stessa impostazione che vedete nell’immagine. Cambiate il campo “Broker status” con quello appropriato (fate riferimento alla vostra installazione di Docker). Terminata la compilazione del profilo, lasciando inalterati per ora i dati, premete “OK” in modo da tornare alla schermata precedente.

Per verificare che la connessione tra MQTTfx e il vostro broker avviene correttamente, cliccate il tasto “Connect”, se tutto fila liscio dovreste notare il testo “connected” sulla destra.

Come provare MQTT publish e subscribe

Partiamo dal subscribe, selezionando il tab “Subscribe“, impostiamo il nostro primo topic, nel mio esempio é “/vixrit/test/temperatura“, trascurando per ora il significato di QoS 0-2, avviate il subscriber premendo il tasto “Subscribe“.

MQTTfx avvio del subscriber

MQTTfx avvio del subscriber

Aperto il subscriber, simuliamo un publisher. E’ scontato il fatto che, publisher e subscriber, possono essere macchine differenti, per semplicitá ci limiteremo ad usare la stessa.

Nel tab publisher, compiliamo il campo di testo con lo stesso topic inserito nel subscriber e, inserendo un valore nella parte bassa, ad esempio 23.2, premete su “Publish“:

MQTTfx Publish

MQTTfx Publish

Fatti vari invii con valori differenti, noterete che il subscriber inizia a ricevere i messaggi:

MQTTfx subscribe dopo invio

MQTTfx subscribe dopo invio

 

Un caso reale

Con l’esempio sopra riportato, avrete capito che MQTT permette a piú entitá di colloquiare fra di loro. Alcune possono “sottoscrivere” delle informazioni che altri dispositivi “pubblicano” in maniera sistematica, ricorrente o legata ad un evento.

Un caso reale potrebbe essere quello di creare due nodi IoT, uno switch wifi ed un relè wifi. Una volta mappati i dovuti topi con il broker Mosquitto  MQTT, potremmo usare lo switch da publisher, per inviare un messaggio al broker e sottoscrivere il relè ad un topic per pilotarne il cambio di stato.

Sto lavorando ad un articolo in cui vi descriverò in modo più completo come progettare e realizzare questa soluzione, per cui non vi resta che mettete Like alla pagina facebook e restate connessi per gli aggiornamenti!

In breve
software image
Come ci pare
1star1star1star1star1star
Come vi pare
2.5 based on 7 votes
Nome
Eclipse Mosquitto
Sistema Operativo
Multiplatform
Software Category
MQTT Broker
Prezzo
Free
Sito Web

Una risposta.

  1. Dario ha detto:

    Buonasera,
    mi chiamo Dario e mi sto approcciando per la prima volta a node red.
    Quello che vorrei ottenere con questo “strumento” è poter accendere delle luci, cliccando un tasto di accensione presente su un sito web che ho creato (e che gira su nodejs)
    Ho già verificato che cliccando questo tasto di accensione (creato sul sito), riesco a raggiungere node red sulla porta 1880 (tramite http), ma da qui non saprei poi come procedere per mandare l’input alla lampada.
    Da quello che sto leggendo un po su internet, sembra che debba collegare raspberry PI al computer, e dal raspberry collegare questa lampada, è corretto? E’ possibile collegare questa lampada direttamente al computer?

    Grazie in anticipo

    Dario

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *