SCOPI DELLA GUIDA:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 2.1 |
Abstract
Home Assistant fornisce sin dalle prime versioni un supporto nativo al protocollo MQTT tramite un componente chiamato, per l’appunto, “MQTT“. In caso si possegga un interruttore intelligente dotato di supporto MQTT tramite firmware Tasmota (eg. un Sonoff riprogrammato Sonoff-Tasmota), è possibile integrarne il controllo in modo molto semplice su Home Assistant.
In questa pagina vedremo come farlo utilizzando il componente “Switch” di Home Assistant, nello specifico la piattaforma (sott-componente) “MQTT Switch“.
Affinché la configurazione che ci apprestiamo a realizzare funzioni, è necessario che il componente MQTT di Home Assistant sia già configurato e sia presente, sulla rete, un broker MQTT.
Per dotarsi di un broker e per attivare le funzioni client MQTT su Home Assistant si rimanda a questa guida.
N.b. Se non si ha dimestichezza con il protocollo MQTT, si consiglia di leggere questa scheda ad esso dedicato e a quest’altra dedicata alla configurazione nel proprio ambiente. |
Configurazione
Il set minimale di configurazione da aggiungere al file “configuration.yaml“ di Home Assistant è il seguente:
mqtt:
switch:
- name: "Ventilatore",
command_topic: "cmnd/Ventilatore/POWER"
Una volta salvata la configurazione e rilanciato/aggiornato Home Assistant, apparirà (come da configurazione d’esempio) un nuovo switch:
Variabili di configurazione:
name |
(stringa)(Opzionale) ll nome di attribuire allo switch |
icon |
(stringa)(Opzionale) Icona per lo switch (eg. |
state_topic |
(stringa)(Obbligatorio) Il topic MQTT da sottoscrivere da parte di Home Assistant per ricevere lo stato (acceso/spento) dello switch. Ovviamente lo state topic cambia in base alla configurazione MQTT del dispositivo. |
command_topic | (stringa)(Obbligatorio) Il topic MQTT da pubblicare da parte di Home Assistant per cambiare lo stato dello switch. Ovviamente il command topic cambia in base alla configurazione MQTT del dispositivo. |
availability_topic | (stringa)(Opzionale) Il topic MQTT da sottoscrivere da parte di Home Assistant per ricevere lo stato (in linea/non in linea) dello switch. Ovviamente l’availability topic cambia in base alla configurazione MQTT del dispositivo. Solitamente si utilizza il topic LWT. |
payload_on |
(stringa)(Opzionale) Il payload che rappresenta l’accesione (inviato assieme al command_topic).
|
payload_off |
(stringa)(Opzionale) Il payload che rappresenta lo spegnimento (inviato assieme al command_topic). |
payload_available |
(stringa)(Opzionale) Il payload che interpreta lo stato come “in linea” |
payload_not_available |
(stringa)(Opzionale) Il payload che interpreta lo stato come “non in linea” |
optimistic |
(booleano)(Opzionale) Flag che definisce se lo switch lavora in optimistic mode.
|
qos |
(intero)(Opzionale) Indica il quality-of-service da utilizzare. Valore di default: 0 (Cos’è QoS?) |
retain |
(booleano)(Opzionale) Indica se i messaggi MQTT pubblicati per questo switch debbano utilizzare o meno la retain. |
value_template |
(stringa)(Ozionale) Definisce se utilizzare o meno un template per estrarre un determinato valore nel payload di stato. |
Alla luce di questi parametri, uno switch tipo appare nella configurazione come segue:
mqtt:
switch:
- name: "Ventilatore"
state_topic: "stat/Ventilatore/RESULT"
value_template: "{{ value_json.POWER }}"
command_topic: "cmnd/Ventilatore/POWER"
availability_topic: "tele/Ventilatore/LWT"
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
qos: 1
retain: false
NOTA
È possibile integrare lo stesso tipo di configurazione non solo per introdurre su Home Assistant degli interruttori ma anche delle luci. Poniamo il caso in cui si stia utilizzando un Sonoff Basic (modificato Tasmota) come interruttore di una abat jour: sulla domotica definita su Home Assistant vorremo che tale interruttore appaia come punto luce, piuttosto che come interruttore. Il blocco di configurazione sarà il medesimo sopra descritto, ma indicato alla voce “light:“:
mqtt:
light:
- name: "Abat Jour"
state_topic: "stat/AbatJour/RESULT"
value_template: "{{ value_json.POWER }}"
command_topic: "cmnd/AbatJour/POWER"
availability_topic: "tele/AbatJour/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
Censimento dello stato
All’avvio di Home Assistant tale ambiente non conosce lo stato degli switch MQTT eventualmente inclusi in configurazione. Per far sì che tale stato venga rilevato immediatamente (e non dopo qualche minuto, con l’aggiornamento automatico da parte dei vari switch) è necessario inserire in configurazione un’automazione che pubblichi sul broker un topic di comando verso lo/gli switch da aggiornare il quale scaturisca in risposta una telemetria:
automation:
alias: "Censimento stati MQTT"
trigger:
platform: homeassistant
event: start
condition: []
action:
action: mqtt.publish
data:
topic: "cmnd/tasmotas/POWER"
payload: ""
retain: false
Sotto il blocco “action:” sarà possibile indicate quali topic MQTT indicare (in questo caso “cmnd/tasmotas/POWER“) al fine di forzare una risposta da parte dei componenti MQTT per ottenerne ottenerne lo stato.
N.b. Si indica “/tasmotas/” e non “/Ventilatore/” (come ci si aspetterebbe) per ottenere, in realtà, la risposta di stato da parte di tutti i Sonoff (dotati di firmware Tasmota) presenti sulla rete. Si tratta, infatti, di un topic di tipo “GROUPTOPIC” (vedi spiegazione). |
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |