Aggiungere un interruttore MQTT alla configurazione Home Assistant

SCOPI DELLA GUIDA
  • Aggiungere un interruttore MQTT alla configurazione di Home Assistant
  • Livello di difficoltà: basso
CONCETTI AFFRONTATI:
  • Installazione e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI
  • Un interruttore intelligente che offra interfaccia MQTT (per esempio un Sonoff Basic riprogrammato Tasmota)
  • Home Assistant configurato e funzionante
  • Broker MQTT configurato e funzionante (ad esempio Mosquitto, oppure il broker incluso con Home Assistant)
  • Componente Home Assistant “MQTT” configurato e funzionante
DISPOSITIVI FISICI UTILIZZATI:
  • Il dispositivo sul quale risiede Home Assistant
  • Un interruttore intelligente che offra interfaccia MQTT
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico)
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.

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.

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:

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
command_topic (stringa)(Obbligatorio) Il topic MQTT da pubblicare da parte di Home Assistant per cambiare lo stato dello switch
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
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

payload_not_available

(stringa)(Opzionale) Il payload che interpreta lo stato come “non in linea”
Valore di default: offline

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

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:

switch:
  - platform: mqtt
    name: "Ventilatore"
    state_topic: "stat/Ventilatore/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/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 è necessario inserire in configurazione  un automatismo che pubblichi sul broker un topic di interrogazione telemetrico verso lo/gli switch da aggiornare:

automation:
  - alias: "Censimento stati MQTT"
    trigger:
    platform: homeassistant
    event: start
    action:
    - service: mqtt.publish
      data:
      topic: "cmnd/Ventilatore/POWER"
      payload: ""

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 configurare MQTT sui dispositivi della propria domotica


Dubbi? Perplessità? Fai un salto sul FORUM o sulla CHAT @DISCORD!
Questa pagina è coperta dalla licenza Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Licenseil che significa che puoi liberamente condividerlo, senza modificarlo, citando il link della fonte.