SCOPI DELLA GUIDA
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
| PREREQUISITI
DISPOSITIVI FISICI UTILIZZATI:
|
GUIDA maggiormente indicatA per: | |
Note e disclaimer
| |
Revisione guida: 1.4 |
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 (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. In merito consigliamo la lettura di questa guida.
Si consiglia caldamente, prima di prendere visione della presente guida, di leggere anche la guida che segue:
Come aggiungere interruttori e sensori Sonoff a Home Assistant
Installazione
Non c’è bisogno di installare nulla: è sufficiente aggiungere alla configurazione di Home Assistant la voce relativa all’interruttore che si vuole aggiungere.
N.b. Per utilizzare questa piattaforma è necessario che il componente “MQTT” di Home Assistant sia stato preventivamente configurato (vedi prima parte della scheda dedicata al componente “MQTT”). Si consiglia inoltre di leggere con attenzione la guida dedicata al tema della configurazione dei componenti MQTT nella propria domotica. |
Configurazione
Vediamo quindi come farlo.
Il set minimale di configurazione da aggiungere al file “configuration.yaml” di Home Assistant è il seguente:
switch:
- platform: mqtt
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:
switch:
- platform: mqtt
name: "Ventilatore"
state_topic: "stat/Ventilatore/RESULT"
value_template: "{{ value_json.POWER }}"
command_topic: "cmnd/Ventilatore/POWER"
availability_topic: "tele/Ventilatore/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
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:“:
light:
- platform: mqtt
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
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 automatismo 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:
service: mqtt.publish
data:
topic: "cmnd/Ventilatore/POWER"
payload: ""
retain: false
Sotto il blocco “action:” sarà possibile indicate quali topic MQTT indicare (in questo caso “cmnd/Ventilatore/POWER”) al fine di forzare una risposta da parte dei componenti MQTT per ottenerne ottenerne lo stato.
Come aggiungere interruttori e sensori Sonoff a Home Assistant
![]() | ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica ai Sonoff (e più generalmente ai dispositivi ESP8266), per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti. |
