Ottimizzare il riscaldamento autonomo con Home Assistant

8 minuti di lettura
SCOPI DEL PROGETTO:
  • Efficientare il riscaldamento domestico affiancando – in modo misurato e automatico – un climatizzatore a un impianto autonomo. Il progetto consiste nella definizione di un’automazione Home Assistant concepita a tal scopo.
  • Livello di difficoltà: medio/alto
  • Costo: nullo
CONCETTI AFFRONTATI:
  • logica del riscaldamento domestico
  • configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • nessuno oltre a quelli dati per scontati nell’abstract di progetto, il quale prevede nell’ambiente da efficientare la coesistenza di un impianto di riscaldamento autonomo e di un climatizzatore
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.
Revisione progetto: 2.1

Abstract

Molte abitazioni moderne dispongono di impianti autonomi di riscaldamento (a radiatori, a pavimento, misti ecc.) dedicati alla stagione invernale e climatizzatori per il raffrescamento per quella estiva.

TermosifoneCiò che molti non sanno è il fatto che, durante la stagione fredda, l’uso del climatizzatore – solitamente utilizzato d’estate in modalità “raffrescamento” – può aiutarci in modo importante anche nella stagione invernale. Le unità moderne, infatti, sono dotati anche di funzione di riscaldamento, funzione che vedremo, tramite questo progetto, come possa venirci utile per aumentare il confort dei nostri ambienti e aiutarci a risparmiare moltissimo sul conto energetico.

Gli impianti di riscaldamento a radiatori tradizionali hanno il vantaggio di mantenere, con buona efficienza energetica, la temperatura all’interno degli ambienti in cui sono installati; di contro, presentano una grossa inefficienza nella fase di riscaldamento iniziale, ovvero quando si tratta di elevare la temperatura dell’ambiente da una temperatura di partenza X a una temperatura target Y. Quella è la fase in cui la resa energetica è minore: è infatti necessaria molta energia per innalzare la temperatura dell’acqua contenuta nel circuito dei radiatore, iniziare le scambio termico tra le unità radiatore e l’aria e innalzare così – anche solo di un grado – la temperatura dell’ambiente. Questo vale ancora di più per il riscaldamento a pavimento: il tempo di warm-up è ancora più lungo e inefficiente, mentre una volta entrati a regime l’efficienza è ottima.

Viceversa, i climatizzatori hanno una grande efficienza nel riscaldare rapidamente un ambiente mente ne hanno una bassa nel mantenimento della stessa nel tempo.

Questo progetto illustra come ottenere un’efficientamento importante in termini di confort e risparmio tramite l’uso combinato delle due tecnologie di riscaldamento nelle rispettive fasi di massima efficienza energetica.

Si parte

Assunzioni

Affinché questo progetto possa essere attuato è necessario che nell’ambiente siano già presenti:

e che tali elementi siano già configurati presso Home Assistant.

Assumeremo, per il resto del progetto, che le entità definite presso Home Assistant si chiamino:

  • l’impianto di riscaldamento: climate.riscaldamento
  • il condizionatore: climate.condizionatore

Infine, daremo per scontata la presenza di un sensore termico (il quale il più delle volte potrebbe anche essere inteso come “sensore a lettura indiretta“, in quanto derivante dagli attributi disponibili presso l’entità climate.riscaldamento), così chiamato:

  • sensore termico: sensor.temperatura

Altre assunzioni sono presenti strada facendo nel progetto.

Filosofia del progetto

Quello che andremo a fare è scrivere un’automazione (la chiameremo “Heat Boost”) la quale, a fronte dell’attivazione automatica o manuale del termostato (e quindi del riscaldamento autonomo) effettui, previa una o più verifiche di condizioni a contorno, l’accensione del climatizzatore in modalità “riscaldamento” e, superato un certo tempo, lo spegna.

Questo farà sì che i due impianti partano praticamente in contemporanea. Il climatizzatore provvederà a erogare lo “spunto” termico mentre nel frattempo il riscaldamento autonomo provvederà ad andare a regime. Dopo un determinato arco di tempo, il climatizzatore verrà spento, lasciando all’impianto tradizionale l’onere del mantenimento della temperatura.

L’approccio descritto ha il vantaggio dell’essere completamente slegato dalle logiche di programmazione del termostato: che esso sia programmato su base temporale, che venga attivato manualmente, che utilizzi automazioni legate alla posizione gps degli occupanti dell’ambiente o di altro tipo, questa automazione entrerà in gioco automaticamente per garantire massima efficienza.tado° termostato

In realtà raffineremo l’automazione la fine di renderla ancora più “invisibile” e funzionale di quanto descritto sopra.

In primis, la conditio sine qua non per la sua esecuzione consisterà nel fatto che la differenza tra la temperatura “target” del termostato e la temperatura dell’ambiente sia superiore o uguale a 2° centigradi. Questo perché una differenza inferiore non giustificherebbe l’ingaggio del climatizzatore.

Inoltre, il comando di attivazione del climatizzatore dovrà – com’è ovvio – contenere in sé l’indicazione della temperatura target da raggiungere; tale temperatura sarà impostata un grado sotto quella di target del termostato che controlla il riscaldamento autonomo. Il motivo è semplice: dato che il climatizzatore sarà rapido nel riscaldare il volume d’aria dell’ambiente, impostare la temperatura target al pari di quella del termostato potrebbe far sì che tale temperatura venga raggiunta prima del tempo di spegnimento del climatizzatore portando quindi il termostato a un’erronea disattivazione, in quanto impostato alla stessa temperatura target.

Infine, la velocità della ventilazione del climatizzatore è tanto più efficace quanto è più elevata, ma più è elevata più è rumorosa. Faremo in modo che venga attivata in modalità massima in assenza di occupanti in casa e in modalità media in caso di presenza.

Vediamo un caso pratico:

  • orario operativo del termostato: ore 07:00
  • temperatura target del termostato (TTT): 21°
  • temperatura dell’ambiente (TA): 17°
  • occupanti: presenti

Sequenza a patire dalle 07:00:

  • sono le 7? Sì
  • è TTT > TA? Sì, quindi attivazione del riscaldamento autonomo (comportamento tradizionale)
  • l’attivazione del riscaldamento autonomo innesca la nostra automazione “Heat Boost”
  • TTT – TA è maggiore/uguale a 2°?: Sì (21°-17° = ), automazione valida
  • attivazione del climatizzatore a una temperatura target uguale a TTT-1° (21°-1° = 20°) e a una velocità di ventilazione “media”.

A questo punto entrambi gli impianti lavoreranno assieme: il climatizzatore continuerà a “spingere” fino al raggiungimento dei 20° (spegnendosi, a prescindere, dopo un tot di minuti, regolabili), mentre il riscaldamento autonomo si riscalderà fino al raggiungimento della propria temperatura target (TTT) di 21°. In caso il climatizzatore raggiunga la propria temperatura di target prima del termine del suo “tempo di operatività”, attenderà il proprio spegnimento mantenendo lo stato di semplice ventilazione.


Vediamo un altro caso:

  • orario operativo del termostato: ore 17:00
  • temperatura target del termostato (TTT): 21°
  • temperatura dell’ambiente (TA): 20°
  • occupanti: assenti

Sequenza a patire dalle 17:00:

  • sono le 17? Sì
  • è TTT > TA? Sì, quindi attivazione del riscaldamento autonomo (comportamento tradizionale)
  • l’attivazione del riscaldamento autonomo innesca la nostra automazione “Heat Boost”
  • TTT – TA è maggiore/uguale a 2°?: No (21°-20° = ), automazione NON valida
  • l’automazione si ferma e rimane in esecuzione solo il riscaldamento autonomo.

Vediamo un terzo e ultimo caso:

  • orario operativo del termostato: ore 15:00
  • temperatura target del termostato (TTT): 21°
  • temperatura dell’ambiente (TA): 19°
  • occupanti: assenti

Sequenza a patire dalle 15:00:

  • sono le 15? Sì
  • è TTT > TA? Sì, quindi attivazione del riscaldamento autonomo (comportamento tradizionale)
  • l’attivazione del riscaldamento autonomo innesca la nostra automazione “Heat Boost”
  • TTT – TA è maggiore/uguale a 2°?: Sì (21°-19° = 2°), automazione valida
  • attivazione del climatizzatore a una temperatura target uguale a TTT-1° (21°-1° = 20°) e a una velocità di ventilazione “massima” (perché non c’è nessuno in casa).

E così via.

Analisi

Il presente progetto è una traccia – si spera ben strutturata, ma pure sempre traccia. È evidente come ogni utente che decida di implementare questa tecnica dovrà farlo adattandola al proprio contesto in termini di entità Home Assistant, di durata del tempo di climatizzazione, di temperature di soglie e così via.

Tra le prime cose da fare sarà quindi capire quali siano gli scenari relativi agli automatismi del proprio termostato e quali siano le entità utili alla propria personalizzazione (banalmente: quale sia quella che comunica a Home Assistant l’attivazione/disattivazione del termostato).

Nell’automazione che andremo a scrivere daremo per scontate le seguenti ulteriori entità, oltre a quelle di base indicate nelle assunzioni:

Nome entitàDescrizione
group.awesome_peoplegruppo Device Tracker il quale stato determina la presenza di almeno un occupante dell’ambiente domotico o l’assenza di tutti
climate.riscaldamento.attributes.temperatureattributo di climate.riscaldamento che rappresenta la temperatura target del termostato (TTT)
binary_sensor.heating
sensore binario che rappresenta lo stato di attivazione/disattivazione del termostato (se ‘on’, l’impianto sta riscaldando)

Realizzazione dell’automazione

L’automazione, come di consueto su Home Assistant, è definita tramite tre blocchi, trigger (attivazione), condition (condizione) e action (azione).

TRIGGER

Ciò che innesca l’automazione abbiamo anticipato essere la rilevazione, da parte di Home Assistant, del passaggio di stato da “disattivo” ad “attivo” del termostato collegato all’impianto di riscaldamento autonomo.

Vediamo questo blocco:

- alias: Heat boost
  trigger:
    platform: state
    entity_id: binary_sensor.heating
    from: 'off'
    to: 'on'

In questo esempio abbiamo assunto che l’entità preposta alla rilevazione di questo stato sia un sensore binario chiamato binary_sensor.heating il quale, nel momento in cui diventa ‘off’ da ‘on” significa che l’impianto ha cominciato a riscaldare.

Talvolta (dipendentemente dal termostato in uso), tale entità potrebbe essere diversa e il blocco trigger andrebbe modificato in relazione alla tipologia e al dato collezionato. Per esempio il tado° sopracitato prevede, in base alla sua componente di integrazione, l’uso di un sensore di tipo numerico che rappresenta un numero da 0 a 100. 0 rappresenta lo spegnimento, ogni valore superiore rappresenta l’accensione.

Nel caso, il blocco “TRIGGER” sarebbe stato:

- alias: Heat boost
  trigger:
    platform: numeric_state
    entity_id: sensor.nomedelsensore
    above: 0

CONDITION

Abbiamo detto che la condizione per la quale l’automazione sia considerata valida e che permetta quindi l’esecuzione della propria action sia legata al fatto che la differenza tra la temperatura dell’ambiente e quella target del termostato sia di almeno 2°.

Pertanto:

  condition:
    condition: template
    value_template: "{{ ((states.climate.riscaldamento.attributes.temperature | float) - (states.sensor.temperatura.state | float|round(1))) >= 2 }}"

ACTION

Infine, l’azione.
Per rendere il tutto un po’ più leggibile definiremo uno script che verrà invocato dentro il blocco “ACTION“.
Lo chiameremo “heat_boost_sequence“.

Tale sequenza riceverà una variabile, “fanmodevalue” (inviata dall’evocazione nel blocco “ACTION“) che conterrà la modalità di accensione delle ventole, determinata in base alla presenza/assenza degli occupanti l’ambiente domotico (‘media’ se presenti, ‘massima’ se assenti).

Vediamo lo script:

script:
  heat_boost_sequence:
    sequence:
      - service: climate.set_hvac_mode
        data:
          entity_id: climate.condizionatore
          hvac_mode: 'Heat'
      - service: climate.condizionatore
        data_template:
          entity_id: climate.condizionatore
          temperature: '{{ (states.climate.riscaldamento.attributes.temperature | int) - 1 }}'
      - service: climate.set_fan_mode
        data_template:
          entity_id: climate.condizionatore
          fan_mode: '{{ fanmodevalue }}'
      - delay:
          minutes: 20
      - service: climate.set_hvac_mode
        data:
          entity_id: climate.condizionatore
          hvac_mode: "Off"

Come si capisce facilmente, la sequenza è composta di cinque azioni:

  • attivazione di climate.condizionatore in modalità ‘heat’ (accensione);
  • impostazione della sua temperatura target (un grado in meno di quella di climate.riscaldamento);
  • impostazione della sua velocità di ventilazione;
  • attesa di 20 minuti (valore dipendente dalla volontà dell’utente);
  • disattivazione di climate.condizionatore.

Infine, vediamo il blocco “ACTION” vero e proprio:

  action:
    - service: script.turn_on
      entity_id: script.heat_boost_sequence
      data_template:
        variables:
          fanmodevalue: "{% if states.group.awesome_people.state == 'home' %}mid{% else %}highest{% endif %}"

il quale evoca script.heat_boost_sequence e che valorizza fanmodevalue in base alla presenza o l’assenza degli occupanti.

L’automazione finale sarà dunque:

automation:
- alias: Heat boost
  trigger:
    platform: state
    entity_id: binary_sensor.heating
    from: 'off'
    to: 'on'
  condition:
    condition: template
    value_template: "{{ ((states.climate.riscaldamento.attributes.temperature|float) - (states.sensor.temperatura.state|float))|round(1) >= 2 }}"
      entity_id: script.heat_boost_sequence
      data_template:
        variables:
          fanmodevalue: "{% if states.group.awesome_people.state == 'home' %}mid{% else %}highest{% endif %}"
  action:
    - service: script.turn_on
      entity_id: script.heat_boost_sequence
      data_template:
        variables:
          fanmodevalue: "{% if states.group.awesome_people.state == 'home' %}mid{% else %}highest{% endif %}"

Temporizzazione

A latere, una delle caratteristiche più peculiari di un termostato è – oltre alla valutazione della temperatura – la possibilità di temporizzare le accensioni. Data la natura “Climate” delle entità trattate nel presente progetto, si consiglia la lettura anche di quest’altro progetto.

Conclusioni

Come spiegato, questo progetto è una scheletratura, una traccia, che può dare origine a molte personalizzazioni specifiche. Nello script “Heat Boost”, per esempio, potrebbero essere aggiunte delle notifiche, delle condizioni diverse o dei tempi di attesa più ampi o più piccoli.

Ovviamente, tutta la differenza del mondo la faranno l’impegno che ci si mette e, sopratutto, un’analisi fatta come dio comanda.


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. 🔻