Installare MQTT broker su Raspberry

Installare MQTT broker su Raspberry

di Luigi Duchi

21 Aprile 2018

Home Assistant

Luigi Duchi

Dopo aver riprogrammato i Sonoff con il firmware Tasmota (potete leggere la guida qui) avrete notato come non sia possibile aggiungere il dispositivo al controllo vocale Google direttamente come facevate con il firmware originale... Poco male, passando per Home Assistant otterrete il medesimo controllo ma questa volta lavorando in rete locale e non andando ad utilizzare servizi esterni.

come fare?

ecco che ci viene in supporto il protocollo MQTT

Ma cos'è il protocollo mqtt?

mqtt (Message Queue Telemetry Transport) è un protocollo ISO standard di messaggistica leggero, di tipo publish-subscribe posizionato in cima a TCP/IP. È stato progettato per le situazioni in cui è richiesto un basso impatto e dove la banda è limitata. Il pattern publish-subscribe richiede un message broker. Il broker è responsabile della distribuzione dei messaggi ai client destinatari.

Il protocollo è stato inventato da Andy Stanford-Clark di IBM, e Arlen Nipper di Cirrus Link Solutions nel 1999 (fonte wikipedia)

come da descrizione avremo bisogno di un broker e di un client che comunicheranno tra loro, oggi andremo a vedere come trasformare il nostro Raspberry in un broker per mqtt e poterlo sfruttare con il nostro Home Assistant.

Il primo step necessario sarà entrare nel terminale di Rapbian sul nostro Raspberry e aggiornare i pacchetti all'ultima versione disponibile con i comandi:

sudo apt-get update

e successivamente:

sudo apt-get upgrade

Una volta eseguiti gli aggiornamenti sarete pronti per installare mosquitto, il broker per mqtt.

Lanceremo il comando:

sudo apt-get install mosquitto

Una volta eseguito il comando lanciate il comando:

sudo apt-get install mosquitto-clients

digitate y (yes) quando vi verrà richiesto

arrivati a questo punto dovrete lanciare il comando:

sudo nano /etc/mosquitto/mosquitto.conf

vi ritroverete nella seguente schermata:

Installare MQTT broker su Raspberry

andate a cancellare l'ultima riga all'interno del file ovvero la riga:

include_dir /etc/mosquitto/conf.d

al suo posto inserite la seguente riga di comando:

Installare MQTT broker su Raspberry

salvate il documento e uscite.

tornate sul terminale e digitate il seguente comando e premete invio:

sudo mosquitto_passwd -c /etc/mosquitto/pwfile username (al posto di username potrete mettete il nome che preferite)

Vi verrà chiesta una password, inserite la password che piu vi aggrada per esempio io inserirò la parola password e premete invio

vi verrà chiesto di inserire nuovamente la stessa password e premete nuovamente invio, non vi preoccupate se nel digitare la password non vedrete nessuna lettera comparire in realtà la vostra password verrà comunque digitata in entrambe le richieste.

Ottimo! Per rendere effettive le modifiche effettuate un reboot del Raspberry con il comando:

sudo reboot

recatevi ora nelle impostazioni del vostro router e andate ad aprire la porta 1883 sia in in che in out sull'indirizzo IP del vostro Raspberry.

bene adesso MQTT dovrebbe essere configurato e pronto all'uso andiamo a testare che tutto sia andato a buon fine, per farlo recatevi sul vostro raspberry e aprite due volte il terminale mettendo le finestre una accanto all'altra.

nel terminale sulla sinistra andrete a digitare il comando:

mosquitto_sub -d -u username -P password -t dev/test e premete invio, 

fate attenzione che dovrà essere scritto tutto minuscolo ad eccezione della prima della password.

al posto di username e password dovrete ovviamente inserire la username e la password che avete precedentemente scelto.

se tutto e' andato a buon fine nel terminale di sinistra vi dovrete trovare una situazione del genere:

Installare MQTT broker su Raspberry

spostatevi ora sull'altra pagina del terminale, quella che avrete posizionato alla destra dello schermo e digitate il seguente comando e premete invio:

mosquitto_pub -d -u username -P password -t dev/test -m "Hello world" anche qui la solita P maiuscola e username e password sostituiti con username e password da voi scelti.

Noterete che nel terminale di sinistra comparirà la scritta Hello world.

Ottimo chiudete tutti e due i terminali e andate nel vostro file configuration.yaml

Andrete ad aggiungere la seguente stringa:

Installare MQTT broker su Raspberry

salvate il file configuration.yaml aprite un terminale e riavviate il Raspberry con il comando:

sudo reboot 

Una volta riavviato il raspberry aprite un terminale e digitate il seguente comando:

mosquitto_sub -d -u username -P password -t dev/test e premete invio, 

fate attenzione che dovrà essere scritto tutto minuscolo ad eccezione della prima della password.

al posto di username e password dovrete ovviamente inserire la username e la password che avete precedentemente scelto.

lasciate il terminale aperto e contemporaneamente andate sul vostro Home Assistant collegandovi da browser.

cliccate su servizi, la prima casella degli strumenti per gli sviluppatori e compilate come da foto:

Installare MQTT broker su Raspberry

premete su call service e vedrete che sul terminale che avrete lasciato aperto sul Raspberry comparirà la famosa scritta Hello world.

Perfetto adesso che abbiamo testato il tutto siamo sicuri che il nostro Home Assistant è pronto per utilizzare il servizio MQTT. Andremo a vedere prossimamente come creare switch o script mqtt per interagire con i nostri dispositivi come ad esempio i famosissimi Sonoff con firmware Tasmota.

Come al solito vi lascio al video di fine articolo. Buona visione!

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Luigi Duchi

Luigi Duchi

Nato a Grosseto il 24 Dicembre 1982 perito elettrotecnico che lavora nel mondo della domotica e installazione di impianti elettrici, impianti di allarmi, videosorveglianza e automazioni in genere. Appassionato da sempre di tecnologia e aperto alla conoscenza di nuove soluzioni.

Disqus loading...