Domotizzare un termoventilatore da bagno con Broadlink e Home Assistant

10 minuti di lettura
SCOPI DEL PROGETTO:
  • Domotizzare riscaldatore da bagno in modo da poterlo controllare e automatizzare tramite Home Assistant
  • Livello di difficoltà: medio/alto
  • Costo: ridotto (<30 €)
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
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

Uno tra i progetti più interessanti sinora pubblicati su inDomus è quello dedicato alla domotizzazione di un condizionatore tradizionale tramite Home Assistant. Lo scopo di questo progetto, il quale attinge a piene mani al progetto citato, è quindi dimostrare come si possa domotizzare con una spesa irrisoria un semplice termoventilatore da bagno al fine di renderlo controllabile e automatizzabile tramite Home Assistant.

Domotizzare un termoventilatore da bagno è estremamente comodo per renderlo controllabile remotamente e, sopratutto, pianificarne l’accensione (magari in relazione alla temperatura dell’ambiente).

Per questo progetto utilizzeremo un emettitore infrarossi Broadlink RM Mini 3 e un termoventilatore da bagno controllato tramite telecomando a infrarossi: le metodologie qui descritte sono in linea di massima essenzialmente le stesse per tutti gli elementi riscaldanti controllati tramite telecomando infrarossi, anche i più datati.

Come elencato nell’incipit, è necessario essere in possesso di:

  • un’istanza Home Assistant funzionante;
  • un Broadlink RM Mini 3 (o Broadlink modello equivalente purché emetta infrarossi, eg. mod. Pro/Pro+)
  • un termoventilatore e relativo manuale e telecomando di controllo a segnali infrarossi.

Per il progetto prenderemo come riferimento un modello di termoventilatore specifico tra i tanti disponibili sul mercato, l’ARGO Chic Silver.

ARGO Chic Silver

L’ARGO Chic Silver (come molti termoventilatori) è sostanzialmente un ventilatore con all’interno un’unità riscaldante. All’accensione l’utente imposta la temperatura alla quale vuol portare l’ambiente e il termoventilatore si avvia, in ventilazione e riscaldamento, mantenendo l’unità di riscaldamento accesa fino al raggiungimento della temperatura impostata; la ventilazione rimane invece sempre accesa fino allo spegnimento del termoventilatore stesso.

Dato che questo temoventilatore non ha a disposizione un timer di accensione (ma solo di spegnimento) e la sua attivazione non può essere innescata tramite un attuatore posto sulla linea di alimentazione a 230v. (come ad esempio nel caso del progetto volto a domotizzare un ventilatore); l’unica soluzione per far in modo di pianificarne l’accensione (magari per trovare il bagno caldo al risveglio) rimane l’uso degli infrarossi al fine di simulare il telecomando.

Questo scenario è tipico di moltissimi termoventilatori presenti in commercio, i quali:

  • non possono essere attivati tramite attuatori sulla linea di alimentazione (on/off);
  • non hanno a disposizione un timer di accensione, ma solo di spegnimento;
  • non offrono nativamente supporto domotico.

Si parte

Filosofia del progetto

Partiamo da un ragionamento semplice.
Dato che:

  • Home Assistant è il nostro “ponte di comando” per il controllo della domotica (non sai cos’è? guarda, è fatto così);
  • Home Assistant, tramite il componente “Broadlink IR Climate Component“, può inviare segnali infrarossi;
  • il condizionatore è controllabile tramite segnali infrarossi,

dunque, è di conseguenza possibile controllare il condizionatore tramite Home Assistant e quindi integrarlo al resto della domotica, automazione inclusa.

Analisi

Analizzare le funzionalità controllabili da telecomando

In primis bisogna chiarire che, non esistendo su Home Assistant (al momento della redazione di questo progetto) un accessorio “termoventilatore” (ma solo un accessorio “termostato”, utile a controllare unità di riscaldamento/raffreddamento quali caldaie, caloriferi, condizionatori), di conseguenza dovremo aggirare tale limite con un semplice escamotage.

Utilizzare l’accessorio “termostato” (cosa che verrebbe da fare istintivamente) non è appropiato proprio per il suo modello funzionale: tale elemento prevede in configurazione un codice infrarosso per ogni temperatura impostata dall’utente il quale, unitamente alla temperatura, imposti anche le modalità operative dell’unità controllata (leggi qui per capire meglio come funziona solitamente il telecomando di un condizionatore).

Il termoventilatore preso ad esempio per questo progetto ha a disposizione un telecomando molto essenziale, il quale non presenta l’intelligenza del telecomando di un condizionatore né quella di un termostato tradizionale.
Tale dispositivo di comando presenta solo pulsanti “mono funzione”, ovvero una funzione, un tasto, un codice infrarosso:

ARGO Chic Silver - Telecomando

Per ovviare a questo “problema” utilizzeremo un’entità “Switch” (interruttore)in sostanza andremo a semplificare la complessità, trattando il termoventilatore come un elemento capace di due soli stati: “acceso” (nelle modalità che desideriamo) e “spento”.

La configurazione dell’accessorio “switch” prevederà quindi, in occasione dell’accensione e dello spegnimento, la configurazione delle sequenze di codici infrarossi che normalmente invieremmo usando, manualmente, il telecomando.

Una volta fatto ciò, “l’accensione” dell’entità interruttore provvederà a fare le veci del telecomando e inviare quindi i codici di accensione infrarossi (nella sequenza pre-determinata) e quindi rendere operativo il termoventilatore. Viceversa per lo spegnimento.

Capire la logica di funzionamento del termoventilatore

Capire come il termoventilatore funzioni è alla base di questo progetto, in quanto ogni elemento ha la propria logica di funzionamento; è quindi necessario leggere innanzitutto il manuale del proprio termoventilatore, provarlo, capire come funzioni.

Nel caso del nostro ARGO Chic Silver, per far sì che esso riscaldi l’ambiente e che ponga le alette inclinate di 45 gradi (perché magari le vogliamo così posizionate) è necessario (partendo con l’unità spenta) premere sul telecomando, in sequenza:

  • tasto accensione/spegnimento (e attendere mezzo secondo);
  • due volte il tasto “eco|com” (e attendere 11 secondi, il tempo che gli serve per aprire le alette) ;
  • tasto oscillazione alette (e attendere 7 secondi, il tempo che gli serve per posizionarsi a 45 gradi di inclinazione);
  • nuovamente il tasto oscillazione alette (per fermarla in posizione).

Per spegnerlo, è sufficiente premere di nuovo il tasto di accensione.

Identificare i codici infrarossi utili alla nostra domotizzazione

Per quanto spiegato sopra, per “cablare” il comportamento di accensione/spegnimento in una sequenza di invio codici infrarossi avremo bisogno di catturare i codici di:

  • tasto accensione/spegnimento;
  • tasto “eco|com”;
  • tasto oscillazione.

Ovviamente questo è lo scenario legato al termoventilatore oggetto di questo progetto, scenario che ovviamente varia da modello a modello, da situazione a situazione, da necessità a necessità.

Per il modello del presente progetto (ARGO Chic Silver) abbiamo messo a disposizione i codici originali presso il nostro archivio codici (al quale potete partecipare coi vostri codici a beneficio di tutti).

Configurazione del dispositivo Broadlink

Prima di comandare il nostro termoventilatore tramite l’uso combinato di Home Assistant e della piattaforma che andremo a utilizzare, è necessario che il Broadlink sia già presente sulla nostra Wi-Fi. In caso questo passo sia già stato effettuato in precedenza, è possibile proseguire oltre.

Per far in modo che l’emettitore infrarosso entri (e resti) dentro la vostra Wi-Fi è sufficiente scaricare l’applicazione e-Control per Android o per iOS e seguire le istruzioni. Finita la prima configurazione è necessario che il dispositivo Broadlink possegga, all’interno della nostra Wi-Fi, un IP fisso. Qui è disponibile una guida per capire come impostarlo.

In caso di difficoltà, è disponibile il manuale in italiano.

Cattura dei codici infrarossi erogati dal telecomando

Prima di porsi il problema di catturare i codici, la cosa più sana è fare un salto sul nostro ARCHIVIO COLLABORATIVO di codici infrarossi/radiofrequenza. Con un po’ di fortuna, potresti già trovare il lavoro fatto. Differentemente, non dimenticarti (sempre tramite quella pagina) dopo aver raccolto i tuoi, di inviarli all’archivio!

Per catturare i codici è necessario che il componente “Broadink” sia già configurato presso Home Assistant (vedi scheda).

Come per altri progetti, la tecnica di acquisizione dei codici (in questo caso infrarossi) è sempre la stessa descritta in questa pagina ad essa dedicata. Una volta raccolti tutti i codici che ci servono potremo passare alla configurazione dell’accessorio “switch” presso Home Assistant.

Configurazione Home Assistant

A questo punto è necessario definire una lista di azioni, una “sequenza” di invio codici in seno a Home Assistant. Per far ciò utilizzeremo il componente “Script”.

Tale configurazione, come sempre, avverrà nel file configuration.yaml di Home Assistant.

Il codice che segue (funzionante per l’esempio dell’ARGO Chic Silver) definisce due sequenze: la prima, “termoventilatore_on_ir_sequence” utile ad inviare la sequenza codici di impostazione del termoventilatore, la seconda “termoventilatore_off_ir_sequence” (un solo codice, in realtà) per lo spegnimento. I codici IR indicati sono quelli reali per questo modello.

# Esempio di duplice script
script:   
  termoventilatore_on_ir_sequence:
    alias: "TERMOVENTILATORE - Accensione"
    sequence:
      - service: broadlink.send
        data:
          host: ip_del_broadlink
          packet:
            - "JgBQAAABKZQSExEUEhMSExITEhQSExITEjcTNxI3EzYTNxE4EzcROBI3ExITFBETEhMTEhMSExISFBI3EjcTNxI3EjgSNxI3EwAFHAABKEoSAA0FAAAAAAAAAAA"
      - delay:
          milliseconds: 500
      - service: broadlink.send
        data:
          host: ip_del_broadlink
          packet:
            - "JgBQAAABKJQTExITERQSExMSEhQRFBEUETgSNxM3EjcSOBE4EjgROBI3ExITNxI3EhMTEhIUEhMSExI3ExITExE4EzYTNxI3EgAFHQABJ0sRAA0FAAAAAAAAAAA"
      - delay:
          seconds: 11
      - service: broadlink.send
        data:
          host: ip_del_broadlink
          packet:
            -  "JgBQAAABKJURFREUEBQTEhITExMRFBEUETgTNxE4EjcTNxM2EjcUNhITEhMSNxIUEhMSExITEhMTNxI3EhMSOBI3EjcTNxI3EgAFHQABKEoRAA0FAAAAAAAAAAA"
      - delay:
          seconds: 7.1
      - service: broadlink.send
        data:
          host: ip_del_broadlink
          packet:
            - "JgBQAAABKJURFREUEBQTEhITExMRFBEUETgTNxE4EjcTNxM2EjcUNhITEhMSNxIUEhMSExITEhMTNxI3EhMSOBI3EjcTNxI3EgAFHQABKEoRAA0FAAAAAAAAAAA"

  termoventilatore_off_ir_sequence:
    alias: "TERMOVENTILATORE - Spegnimento"
    sequence:
      - service: broadlink.send
        data:
          host: ip_del_broadlink
          packet:
            - "JgBQAAABKZQSExEUEhMSExITEhQSExITEjcTNxI3EzYTNxE4EzcROBI3ExITFBETEhMTEhMSExISFBI3EjcTNxI3EjgSNxI3EwAFHAABKEoSAA0FAAAAAAAAAAA=="

N.b. la voce “host: ip_del_broadlink” è da valorizzarsi con l’indirizzo IP fisso dell’attuatore Broadlink che dovrà inviare i codici infrarossi, da mettere al posto di “ip_del_broadlink“.

Come si nota facilmente, la sequenza di accensione altro non è che la traduzione (in codici inviati e in tempi di attesa) della sequenza descritta sopra. Quella di spegnimento corrisponde al solo invio del codice di spegnimento.

A questo punto è necessario creare uno switch, un interruttore, tale che alla sua accensione venga invocato lo script “termoventilatore_on_ir_sequence” e che al suo spegnimento venga invocato lo script “termoventilatore_off_ir_sequence“.

Per far ciò utilizzeremo uno switch particolare, quello generato tramite il componente Home Assistant “Input Boolean”:

# Esempio di switch basato su input_boolean
input_boolean:
  termoventilatore_bagno:
    name: Termoventilatore bagno
    initial: off
    icon: mdi:hot-tub

Questa configurazione genererà un’entità visivamente così raffigurata:

Termoventilatore switch Home Assistant

In ultimo dovremo definire un’automazione tale che, a fronte di un cambio di stato dell’interruttore “termoventilatore_bagno”  (da acceso a spento e viceversa) provveda a evocare una o l’altra sequenza definita come script:

automation:
- alias: Termoventilatore
  hide_entity: true
  initial_state: 'on'
  trigger:
    - platform: state
      entity_id: input_boolean.termoventilatore_bagno
  condition: []
  action:
    - service: script.turn_on
      data_template:
        entity_id: >
          {% if trigger.to_state.state == 'on' %}
          script.termoventilatore_on_ir_sequence
          {% elif trigger.to_state.state == 'off' %}
          script.termoventilatore_off_ir_sequence
          {% endif %}

Ovviamente l’automazione è stata impostata come “nascosta” e “attiva” (di base) perché ovviamente deve funzionare sempre (in quanto regola il funzionamento dell’entità interruttore).
Eventuali automazioni legate al termoventilatore (accensione programmata ecc.) verranno successivamente gestite in modo diverso.

Ricapitolo delle entità create

script.termoventilatore_off_ir_sequenceScript di accensione termoventilatore tramite sequenza di invio codici IR
script.termoventilatore_off_ir_sequenceScript di spegnimento termoventilatore tramite sequenza di invio codici IR
input_boolean.termoventilatore_bagnoInterruttore per l’attivazione/spegnimento del termoventilatore
automation.termoventilatoreAutomazione per il funzionamento dello switch

Accorgimenti nella configurazione

Prima di dare in pasto qualsiasi file di configurazione a Home Assistant, ricordarsi sempre di verificarne la correttezza sintattica presso YAMLint.

Per tutte le informazioni di dettaglio sulle caratteristiche e i parametri di configurazione dell’entitàSwitch” (interruttore) tramite il componente “Broadlink” fare direttamente riferimento alla sua pagina.

Automazione

Dopo aver domotizzare il termoventilatore sarà il momento di dedicarsi all’automazione dello stesso, dotandosi di un “pannello di controllo” che permetta all’utente di regolare:

  • orario di accensione;
  • durata dell’accensione in minuti;
  • temperatura di soglia;
  • se accendere o meno anche durante i giorni del weekend.

Il pannello che andremo a configura apparirà come segue:

Termoventilatore automazione Home Assistant

Definizione dei controlli

Oltre allo switch definito nella prima parte del progetto – dedicato all’attivazione/disattivazione del termoventilatore, avremo bisogno di:

  • un campo “orario” per la scelta dell’orario di accensione;
  • due campi per definire due misure (temperatura di soglia e durata dell’accensione);
  • un campo switch per indicare la volontà di accendere anche durante il weekend oppure no.

Si assume che in configurazione sia presente un’entità sensore di temperatura dal nome “sensor.temperatura“.
Si assume che in configurazione sia presente un’entità sensore di orario dal nome “sensor.time“.
Si assume che in configurazione sia presente un’entità gruppo di entità device traker dal nome “group.famiglia“.

Campo “orario”

Andiamo a definire il campo utilizzando il componente “Input Datetime:

input_datetime:
  termoventilatore_bagno_timing:
    name: Termoventilatore timing
    has_date: false
    has_time: true
    initial: '07:30'

Il quale imposta il campo, come valore di default, alle sette e trenta del mattino.

Campi “temperatura minima” e “durata”

Useremo per questi due campi il componente “Input Number“:

input_number:
  termoventilatore_bagno_duration:
    name: Durata
    initial: 20
    min: 5
    max: 60
    step: 1
  termoventilatore_temperatura_soglia:
    name: Min°
    initial: 23
    min: 20
    max: 25
    step: 01

Il campo durata è impostato di default a 20 (minuti), con un range operativo da 20 a 60.
La temperatura di soglia (quella sotto la quale l’accensione è confermata e viene effettuata all’orario indicato) è impostata di default a 23 (gradi), con un range operativo da 20 a 25.

Ovviamente tutti questi parametri possono essere personalizzati.

Campo “accensione weekend”

In ultimo definiamo lo switch (interruttore) utile a indicare all’automazione che andremo a creare se essere eseguita anche durante il sabato e la domenica, o meno.
Per far ciò utilizzeremo il componente già usato in precedenza, ovvero “Input Boolean”:

input_boolean:
  termoventilatore_bagno_weekend:
    name: Scaldare nel weekend?
    initial: off
    icon: mdi:home-circle

Elenco nuove entità create

input_datetime.termoventilatore_bagno_timingCampo per la definizione dell’orario di accensione
input_number.termoventilatore_bagno_durationCampo per la definizione della durata in minuti
input_number.termoventilatore_temperatura_sogliaCampo per la definizione della temperatura di soglia, in gradi
input_boolean.termoventilatore_bagno_weekend Campo per la definizione dell’accensione anche nei giorni di weekend, oppure no

Definizione del gruppo

Per far sì che il pannello di controllo appaia come da immagine sopra, in configurazione verrà aggiunto un “gruppo” come segue:

group:
  bagno:
    name: Bagno
    control: hidden
    entities:
      - input_boolean.termoventilatore_bagno
      - input_datetime.termoventilatore_bagno_timing
      - input_number.termoventilatore_temperatura_soglia
      - input_number.termoventilatore_bagno_duration
      - input_boolean.termoventilatore_bagno_weekend

Definizione dell’automazione

A questo punto non resta che definire l’automazione:

automation:
- alias: Termoventilatore Auto-ON
  trigger:
    - platform: template
      value_template: "{{ states('sensor.time') == (states.input_datetime.termoventilatore_bagno_timing.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
  condition:
    - condition: or
      conditions:
      - condition: and
        conditions:
        - condition: time
          weekday:
            - sat
            - sun
        - condition: state
          entity_id: input_boolean.termoventilatore_bagno_weekend
          state: 'on'
      - condition: and
        conditions:
        - condition: time
          weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
    - condition: template
      value_template: '{{ states.sensor.temperatura.state|int < states.input_number.termoventilatore_temperatura_soglia.state|int }}'
    - condition: state
      entity_id: group.famiglia
      state: 'home'
  action:
    - service: input_boolean.turn_on
      entity_id: input_boolean.termoventilatore_bagno
    - delay:
        minutes: '{{ states.input_number.termoventilatore_bagno_duration.state|int }}'
    - service: input_boolean.turn_off
      entity_id: input_boolean.termoventilatore_bagno

Spiegazione

TRIGGER

Ciò che innesca l’automazione, ovvero il trigger, è il tempo, ovvero l’orario. Il sensore “sensor.time” viene messo a paragone con l’orario impostato con “input_datetime.termoventilatore_bagno_timing“: quando sono uguali, l’automazione viene eseguita.

CONDITION

Le condizioni sono molteplici e annidate. Il primo blocco verifica che sia “vera” una delle due condizioni annidate, ovvero che sia un giorno della settimana oppure che sia sabato o domenica, ma con il selettoreinput_boolean.termoventilatore_bagno_weekendattivo. Se una delle due è vera, si può proseguire, altrimenti l’automazione si ferma.

Il secondo blocco – se ci si arriva per la logica appena spiegata – verifica che la temperatura dell’ambiente sia inferiore a quella di soglia impostata con “termoventilatore_temperatura_soglia”. Se così non è, l’automazione si ferma.

Infine, il terzo blocco – se ci si arriva – verifica che gli abitanti siano in casa. Se così non è, l’automazione si ferma.

ACTION

In caso tutte le condizioni siano state verificate si provvede all’azione, ovvero all’accensione di “input_boolean.termoventilatore_bagno“, il quale, dopo un’attesa (delay) impostata tramite “input_number.termoventilatore_bagno_duration“, viene spento.


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.

🔻 Clicca QUI per commentare l'articolo. 🔻