lunedì 22 ottobre 2018

Installare Mosquitto su Home Assistant, passo passo




Già che abbiamo installato HASSIO, bisogna anche qui installare Mosquitto, come abbiamo già fatto per Domoticz! Nulla di tragico, se siete ancora vivi dopo l'installazione!



Il mio obiettivo finale è quello di mettere in comunicazione i miei Sonoff tasmotizzati con un sistema di HASSIO, quindi anche qui mi serve un broker MQTT, visto che ho deciso di continuare ad usare tale protocollo.

A dirle tutte, ero indeciso su quale broker installare. HASSIO di suo offre un broker, ma non ne ho letto pareri esaltanti, quindi ho deciso di andare con il solito Mosquitto!

Per prima cosa, andiamo negli Add-on, selezioniamolo ed installiamolo.



Una volta installato, va personalizzato!
Il file di configurazione che viene presentato a schermo va editato aggiungendo almeno un utente, nel mio caso ho editato tutto in modo che fosse così:

{
"plain": true,
"plain_websockets": false,
"ssl": false,
"ssl_websockets": false,
"anonymous": true,
"logins": [
{"username": "mosquittouser", "password": "mosquittopass"}
],
"customize": {
"active": false,
"folder": "mosquitto"
},
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
}



Ovviamente, mosquittouser e mosquittopass vanno modificati inserendo i dati di vostra scelta, dati che NON dovete dimenticare, altrimenti non collegate nulla...

Fate un click su SAVE e poi un click su START per avviare il servizio e ci siete!

A questo punto, sono andato nell'interfaccia web di uno dei miei Sonoff ed ho impostato l'indirizzo di Mosquitto, la sua username e la sua password:



Alla fine, mi sono accorto che non usciva alcun messaggio valido, indi al posto del nome host hassio.local ho messo l'indirizzo IP. 
Ma non è l'unica cosa che ho sbagliato, continua a leggere...

Ok, direi che ci siamo, ora però voglio vedere almeno un sensore nella mia configurazione!





Aggiungiamo quindi nel file configuration.yaml (se non ti ricordi come ci si arriva, nell'articolo della settimana scorsa c'è spiegato molto bene) le seguenti righe :

mqtt:
broker: 192.168.1.129
username: mosquittouser
password: mosquittopass
discovery: true
discovery_prefix: homeassistant

In questo modo sfruttiamo una comodità di HASSIO, ovvero il poter tirare dentro, autonomamente, tutti i device che hanno come prefisso MQTT la parola "homeassistant".

Salviamo e riavviamo Home Assistant, poi passiamo al lavoro sui Sonoff.
Ovviamente, mosquittouser e mosquittopass vanno modificati inserendo i dati di vostra scelta, per comodità io uso questi due dati come esempio.

Importante, PRIMA riavviare Home Assistant, controllare che sia tornato in piedi correttamente e POI fare il passaggio successivo.

Per i Sonoff tasmotizzati basta lanciare un comando dalla console: SetOption19 ON
Così facendo, viene propagato un messaggio che contiene tutti i dati dell'unità in modo che Home Assistant se li inserisca in automatico.


21:59:28 CMD: SetOption19 ON
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_1/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_1/config = {"name":"sonoff_th_deumidificatore","command_topic":"cmnd/sonoff_th_deumidificatore/POWER","state_topic":"stat/sonoff_th_deumidificatore/RESULT","value_template":"{{value_json.POWER}}","payload_off":"OFF","payload_on":"ON","availability_topic":"tele/sonoff_th_deumidificatore/LWT","payload_available":"Online","payload_not_available":"Offline"} (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_2/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_2/config = (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_3/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_3/config = (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_4/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_4/config = (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_5/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_5/config = (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_6/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_6/config = (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_7/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_7/config = (retained)
21:59:28 MQT: homeassistant/light/sonoff_th_deumidificatore_8/config = (retained)
21:59:28 MQT: homeassistant/switch/sonoff_th_deumidificatore_8/config = (retained)



Fino a qui, ci siamo, ho risolto uno dei problemi che avevo in Domoticz, ovvero poter controllare velocemente e senza sbattimenti il carico applicato ai Sonoff.
Ma questa è solo la metà del lavoro, ora voglio i dati della sonda.
Per questo primo test, ho preso il Sonoff più "completo", ovvero quello con sonda di umidità e temperatura SI7021.

Devo quindi aggiungere le due variabili di temperatura ed umidità al file configuration.yaml:

sensor:
- platform: mqtt
name: "Deumidificatore"
state_topic: "homeassistant/sonoff/sonoff_th_deumidificatore/1/temp"
qos: 1
unit_of_measurement: "°C"
value_template: "{{ value_json.Temp }}"

- platform: mqtt
name: "Deumidificatore"
state_topic: "homeassistant/sonoff/sonoff_th_deumidificatore/1/temp"
qos: 1
unit_of_measurement: "%"
value_template: "{{ value_json.Humidity }}"



Solo che così facendo si ottiene un bell'errore "Duplicated mapping key at line" e mi viene segnalato l'errore nella riga che inizia con "sensor".

Ok, vuol dire che esiste già un campo con il nome "sensor".
Infatti, poco sopra c'è già!

# Weather prediction
sensor:
- platform: yr


A questo punto ho levato il blocco di testo che mi va a prendere i sensori e ho eliminato la riga "sensor:"incollando tutto il resto sotto al blocco delle previsioni del tempo.

Ora il configurator non mi segnala più nessun tipo di errore, quindi ho salvato e riavviato i servizi.



A questo punto è apparso il sensore di umidità, ma senza alcun dato.
Molto bene, almeno il 25% funziona.
Manca solo il dato dell'umidità, il pannello della temperatura, il dato relativo alla temperatura stessa...

Per scrupolo, ho controllato la stringa mandata dal Sonoff :

08:16:24 MQT: tele/th_deumidificatore/SENSOR = {"Time":"2018-10-16T08:16:24","Switch1":"ON","SI7021":{"Temperature":25.7,"Humidity":68.0},"TempUnit":"C"}

Direi che ci siamo.
Quindi?
La documentazione mi salverà!

Ma così non è stato, manco me la sono andata a cercare, mi sono semplicemente dimenticato di adattare bene al mio contesto la stringa. Infatti ho messo:

state_topic: "homeassistant/sonoff/sonoff_th_deumidificatore/1/temp"

Però è sbagliata!
La stringa vera è "tasmota/th_deumidificatore" , quindi la stringa per la lettura dei dati sensore, tramite telemetria, è "tasmota/tele/th_deumidificatore/SENSOR"
Ok, modifichiamo, salviamo e riavviamo!

- platform: mqtt
name: "Tele Temperature"
state_topic: "tasmota/tele/th_deumidificatore/SENSOR"
value_template: "{{ value_json['SI7021'].Temperature }}"
unit_of_measurement: "°C"
- platform: mqtt
name: "Tele Humidity"
state_topic: "tasmota/tele/th_deumidificatore/SENSOR"
value_template: "{{ value_json['SI7021'].Humidity }}"
unit_of_measurement: "%"


Benissimo, ora abbiamo tutto, lo switch lo abbiamo visto riconosciuto in automatico, mentre adesso il sensore di temperatura e quello di umidità sono apparsi:



In pratica, quello che volevo!
Bisogna solo stare attenti alla definizione dei topic, cosa che a volta sfugge.

Ora devo solo decidere se continuare con HomeAssistant o con Domoticz.
Chissà, vedrò in futuro il da farsi, per ora gioco un pò con HASSIO ed il broker :-)

5 commenti:

  1. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  2. Grazie mille! ci sono informazioni utlissime e scritte chiaramente!

    RispondiElimina
  3. Wow, ma allora qualcuno lo legge davvero questo blog! Bene, ne sono davvero molto felice!

    RispondiElimina
  4. Spiegato molto bene. L'idea di mettere la difficoltà che hai incontrato e la soluzione è molto d'aiuto per capire il completo funzionamento. Bravo!

    RispondiElimina
  5. Grazie mille, trovo che sia utile riportare non solo i successi ma anche i fallimenti. Almeno uno sa cosa NON fare :-)

    RispondiElimina

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre