community italiana di domotica personale
 
Integrare un interruttore Tasmota via MQTT alla configurazione Home Assistant

Integrare un interruttore Tasmota via MQTT alla configurazione Home Assistant

SCOPI DELLA GUIDA:
  • Integrare un interruttore MQTT alla configurazione di Home Assistant
  • Livello di difficoltà: basso
  • Categoria d’integrazione: Local Push
CONCETTI AFFRONTATI:
  • Installazione e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
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:

Home Assistant Switch

Variabili di configurazione:

name

(stringa)(Opzionale) ll nome di attribuire allo switch
Valore di default: MQTT Switch

icon

(stringa)(Opzionale) Icona per lo switch (eg. mdi:radiator).

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).
Valore di default: true

 

payload_off

(stringa)(Opzionale) Il payload che rappresenta lo spegnimento (inviato assieme al command_topic).
Valore di default: false

payload_available

(stringa)(Opzionale) Il payload che interpreta lo stato come “in linea”
Valore di default: “Online“. Solitamente si utilizza il payload LWT.

payload_not_available

(stringa)(Opzionale) Il payload che interpreta lo stato come “non in linea”
Valore di default: “Offline“. Solitamente si utilizza il payload LWT.

optimistic

(booleano)(Opzionale) Flag che definisce se lo switch lavora in optimistic mode.
Valore di default: true se noessun state_topic è definito, altrimenti false.

 

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.
Valore di default: false

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:
    service: 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).

I vari modi di integrare ITEAD Sonoff a Home Assistant


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.