community italiana di domotica personale
 
Domotizzare il riscaldamento autonomo tramite contatto pulito, ESPHome e Home Assistant

Domotizzare il riscaldamento autonomo tramite contatto pulito, ESPHome e Home Assistant

10 minuti di lettura
SCOPI DEL PROGETTO:
  • Domotizzare un impianto di autonomo con poca spesa e massima funzionalità sostituendo il termostato tradizionale con uno domotico realizzato in proprio
  • Livello di difficoltà: medio
  • Costo: legato all’attuatore utilizzato
CONCETTI AFFRONTATI:
  • Funzionamento & gestione impianto di riscaldamento
  • Configurazione software
  • Controllo remoto (opzionale)
  • Automazione (opzionale)
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI INTERESSATI:
  • Il computer sul quale è in esecuzione Home Assistant
  • Un impianto di riscaldamento autonomo (ovviamente!)
  • Un attuatore a contatto pulito (spiegato dopo)
  • Un qualunque sensore di temperatura già integrato nella configurazione Home Assistant
Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione progetto: 1.0

Abstract

Come spiegato anche nel nostro percorso di formazione in occasione del tema “dispositivi”, un termostato è un attuatore domestico che a grandi linee contiene in sé un termometro, un relè e un’elettronica – più o meno complessa in base ai modelli – nella quale risiede l’intelligenza (primitiva) che gli permette di essere programmato dall’utente al fine di provvedere, in base al calendario e alla temperatura dell’ambiente all’accensione e allo spegnimento automatico del riscaldamento.

L’emissione del calore nei caloriferi (o nelle serpentine a pavimento, o altre tecnologie) viene prodotta da un elemento come una caldaia a gas, a pellet o altre tecnologie che chiameremo, a partire da qui, unità termica e che daremo per scontata, per questo progetto, nell’ambiente domestico.

Le unità termiche vengono solitamente attivate alla produzione del calore tramite la chiusura da parte del termostato di un contatto pulito di tipo NC o NO (normalmente chiuso o normalmente aperto), ovvero due poli non alimentati da tensione elettrica e che, se aperti (nel caso di contatto NC) o chiusi (nel caso di contatto NO) avviino per l’appunto la produzione del calore. Esistono anche altre metodologie, ad esempio contatti alimentati, ma non sono oggetto del presente progetto.

Questo progetto illustrerà come, solo grazie a un attuatore a contatto pulito e un sensore termico riusciremo a spostare l’intelligenza di un termostato tradizionale presso Home Assistant, domotizzando così una qualunque unità termica attivata tramite contatto pulito NC o NO.

In pratica, sostituiremo un termostato tradizionale con un attuatore domotico per rendere intelligente il controllo della produzione calore – con una spesa davvero esigua a fronte di una grande versatilità.

A mo’ d’esempio, in questo progetto un Sonoff Basic modificato sarà il nostro attuatore, il sensore termico il nostro termometro, quindi infine Home Assistant diventerà il nostro termostato – il che ci permetterà di automatizzare il riscaldamento, controllarlo da remoto e molto altro.

Ovviamente, il termostato tradizionale potrà essere rimosso, in quanto non più necessario. In caso non funzioni più la connessione ad internet, la cosa non rappresenterà un problema (se non per quanto riguarda l’eventuale controllo remoto): Home Assistant lavora comunque sulla LAN / Wi-Fi locale, pertanto sarà possibile continuare a controllare il riscaldamento seppure con la connessione internet non funzionante.

LE ALTERNATIVE

Ovviamente, esistono alternative. Sostituire un termostato tradizionale con uno domotico e intelligente permette di ottenere gli stessi risultati del presente progetto senza eccessive complicazioni.


Questo progetto ha PURO SCOPO DIDATTICO. Non si risponde di eventuali danni (di qualunque tipo) provocati dall’utente.

A questo tema abbiamo dedicato anche due episodi del nostro podcast.

Si parte

Logica del progetto

La logica proposta in questo progetto è tanto banale quanto, crediamo, funzionale.

Il firmware ESPHome è noto, oltre che per la grande versatilità, anche per la grande simbiosi con l’HUB per domotica personale Home Assistant. Dispositivi di diversa natura che vengano dotati di tale firmware vengono poi integrati direttamente sull’HUB come fossero dispositivi di altra natura; in sostanza, nell’esempio del presente progetto configureremo il nostro Sonoff Basic in modo che, tramite il firmware ESPHome, “venga visto” da Home Assistant, in fase di integrazione, come fosse un vero e proprio termostato intelligente.

Home Assistant in questo caso “non saprà” che dall’altra parte in realtà c’è un attuatore semplice come un Sonoff Basic, ma tratterà il tutto come fosse, appunto, un vero e proprio termostato intelligente.

Assunti

ATTUATORE

Dato che il Sonoff Basictramite modifica, può dotarsi di un’uscita a contatto pulito, va da sé che si tratta un candidato ideale per attivare/disattivare un’unità termica di quel tipo (attivata a NC o NO), ed è questo il motivo per cui lo useremo per questo progetto. Sempre tramite analoga modifica, è possibile utilizzare il Sonoff Mini. L’alternativa (un po’ più costosa, ma che non prevede alcuna modifica) è utilizzare un Sonoff 4ch PRO, il quale dispone di fabbrica di ben quattro uscite a contatto pulito (per questo progetto ne utilizzeremo una sola).

L’importante, comunque, è che l’attuatore a contatto pulito sia basato su SOC ESP8266 o ESP32 e quindi che sia riprogrammabile con firmware ESPHome.

SENSORE TERMICO

Per quanto riguarda la ricezione della temperatura ambientale – necessaria a ESPHome per operare – essa dev’esser già censita tramite un apposita entità di tipo “Sensor” presso la configurazione  di Home Assistant.

Quale sia il sensore (un classico sensore Xiaomi, uno Shelly H&T, piuttosto che un Sonoff TH-16/TH-10 o qualsiasi altro sensore integrabile con Home Assistant), la cosa importante per proseguire con il presente progetto è che sia già integrato nella configurazione di Home Assistant.

Si assume che il sensore, integrato presso Home Assisant, sia rappresentato da un’entità chiamata “sensor.temperatura_stanza” (ovviamente il nome è arbitrario e può variare in base alla propria configurazione).

Schema elettrico

Quello che andremo a fare è disconnettere i due poli connessi al termostato tradizionale (si dà per scontato che si sia appurato prima di proseguire che il modello di unità termica in uso venga attivata tramite contatti puliti NC o NO, come spiegato nell’abstract) per connetterli all’uscita del Sonoff Basic precedentemente modificato a contatto pulito (modifica obbligatoria!) oppure a una di quelle del Sonoff 4ch PRO (nessuna modifica da fare).

ATTENZIONE: Connettendo erroneamente l’uscita di un Sonoff Basic NON modificato, alla sua attivazione si invieranno 220v all’unità termica, mandandola completamente in guasto (probabilmente irreversibile)!!!

Questa guida ha solo intenti didattici, si ricorda per l’ennesima volta che:

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

Il fatto che l’unità termica venga attivata tramite NC o NO è invece indifferente, in quanto il tipo di attivazione dell’attuatore (il fatto che l’attivazione corrisponda alla chiusura o all’apertura del contatto pulito) sarà impostato tramite la configurazione di Home Assistant che vedremo a seguire.

Dato che il Sonoff Basic (mo-di-fi-ca-to!) necessita di alimentazione a 220v, l’idea potrebbe essere quella di posizionarlo presso il vano dell’unità termica (ovviamente al riparo da agenti atmosferici e da eventuali emissioni – termiche o di altro tipo – da parte dell’unità stessa) e collegare la stessa alimentazione 220v che l’unità termica stessa riceve all’ingresso del Sonoff Basic per permettere l’alimentazione anche di quest’ultimo.

Schema elettrico - sostituzione termostato con domotica

ESPHome

ESPHome è un firmware “modulare” che consente, appunto, di installare sui dispositivi target (in questo caso il nostro Sonoff Basic – o quel che sia) le componenti utili agli scopi prefissi “assemblate” in un unico compilato.

N.b. Se non si conosce questo firmware è necessario dare una veloce lettura alla scheda ad esso dedicato; diversamente non si comprenderanno gli aspetti che verranno spiegati in seguito e, fatalmente, si fallirà.

Nel caso di questo specifico progetto il componente ESPHome utile allo scopo è “Climate Core“, il quale consente di definire, lato Home Assistant, delle entità di tipo “Climate” che, appunto, consentono di gestire l’attuatore come fosse un termostato. A sua volta, il componente ESPHome “Climate Core” ha bisogno del componente ESPHome “Switch“, il quale consente di comandare l’apertura o la chiusura del relè dell’attuatore, nonché del componente “Home Assistant” (per leggere le temperatura dell’ambiente dal sensore sensor.temperatura_stanza.

La porzione di configurazione YAML di ESPHome  (la “ricetta” del nostro firmware) allo scopo del nostro progetto è la seguente:

sensor:
- platform: homeassistant
  id: esphome_temperatura_stanza
  entity_id: sensor.temperatura_stanza
  internal: true

switch:
- platform: gpio
  pin: GPIO13
  name: "Contatto Pulito Termostato"
  id: rele
  restore_mode: ALWAYS_OFF

climate:
- platform: thermostat
  name: "Thermostat Climate Controller"
  sensor: esphome_temperatura_stanza
  default_target_temperature_low: 20 °C
  heat_action:
  - switch.turn_on: rele
  idle_action:
  - switch.turn_off: rele
PERSONALIZZAZIONI

I campi da personalizzare sono, eventualmente, molto pochi. Per esempio, il nome dell’entità sensore di Home Assistant dalla quale attingere i dati di temperatura (nel nostro caso, sensor.temperatura_stanza), poi il PIN sul quale è attestato il relè (nel caso di Sonoff Basic, il GPIO13).

Ovviamente, i campi restore_mode, heat_action e idle_action sono da personalizzarsi in base al fatto che il proprio impianto termico preveda, per l’attivazione un contatto pulito NC o NO come spiegato in precedenza:

  NO (normalmente aperto) NC (normalmente chiuso)
restore_mode ALWAYS_OFF ALWAYS_ON
heat_action switch.turn_on: rele switch.turn_off: rele
idle_action switch.turn_off: rele switch.turn_on: rele

La configurazione proposta andrà ovviamente sommata alla parte di default, quella nella quale vengono indicate le credenziali di accesso Wi-Fi e altro.

Una configurazione tipo, completa, potrebbe essere come la seguente:

esphome:
  name: esp32blt2wifi
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: "PROPRIA-Wi-Fi"
  password: "PASSWORD-Wi-Fi"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32Blt2Wifi Fallback Hotspot"
    password: "PASSWORD_FALLBACK"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "PASSWORD_API"

ota:
  password: "PASSWORD_UPDATE_OTA"

sensor:
- platform: homeassistant
  id: esphome_temperatura_stanza
  entity_id: sensor.temperatura_stanza
  internal: true

switch:
- platform: gpio
  pin: GPIO13
  name: "Contatto Pulito Termostato"
  id: rele
  restore_mode: ALWAYS_OFF

climate:
- platform: thermostat
  name: "Thermostat Climate Controller"
  sensor: esphome_temperatura_stanza
  default_target_temperature_low: 20 °C
  heat_action:
  - switch.turn_on: rele
  idle_action:
  - switch.turn_off: rele

Installazione

A questo punto si è pronti per la compilazione e la successiva installazione sul proprio attuatore.
Le tecniche per farlo sono le più disparate – tutto dipende ovviamente da dove si ha installato e in che modalità la suite ESPHome. 

CON DISPOSITIVO DI FABBRICA

Se l’attuatore è originale, solitamente l’unica possibilità di installare il compilato ESPHome è utilizzando cavo USB/Micro-USB a collegare il computer che monta ESPHome e l’attuatore, avendo cura di non collegare l’alimentazione all’alimentazione a 220v. Collegare i due tramite il cavo e poi impostare la modalità di flash.

A questo punto eseguire la compilazione del firmware seguendo una delle guide dedicate al tema in base alla propria modalità d’uso di ESPHome e alla propria installazione.

CON DiSPOSITIVO GIÀ DOTATO DI ESPHOME

In caso l’attuatore sia già dotato di firmware ESPHome, la quale precedente compilazione prevedesse il codice:

ota:
  password: "PASSWORD_UPDATE_OTA"

e  avesse lo stesso “name“, allora non sarà necessario il cavo, ma basterà avviare la compilazione del firmware provvedendo all’accensione normale dell’attuatore il quale, entrando nella stessa rete LAN (tramite Wi-Fi) del computer sul quale viene eseguito ESPHome, verrà aggiornato.

Home Assistant

A questo punto basterà riavviare l’attuatore e provvedere all’integrazione delle sue funzionalità di BRIDGE/Gateway sul proprio HUB personale. In caso di utilizzi Home Assistant, la guida è questa:

Integrare componenti ESPHome a Home Assistant (via API)

Questa integrazione genererà, come da premesse, un’entità di tipo “Climate” lato Home Assistant, la quale potrà quindi essere utilizzata come termostato virtuale.

Home Assistant Generic Thermostat

Uso ordinario

A questo punto la configurazione è completa: il nostro termostato generico è pronto a operare.

Le modalità operative del termostato sono:

  • Off (spento – inteso come termostato non operativo, non come produzione calore spenta);
  • Heat (riscaldamento – inteso come termostato operativo in modalità riscaldamento, non come produzione calore accesa).

Una volta impostata la modalità “Heat“, il termostato sarà pienamente operativo e provvederà ad accendere/spegnere l’impianto di riscaldamento (usando lo switch indicato in configurazione) in base alla temperatura dell’ambiente (rilevata dal sensore indicato in configurazione) e alla temperatura target impostata dall’utente.

L’uso di questa entità Home Assistant è descritto in questo nostro video:

Automazione e controllo remoto

Una volta reso domotico l’impianto di riscaldamento, oltre alle funzioni sinora descritte sarà finalmente possibile:

  • attivarlo e disattivarlo manualmente tramite controllo remoto;
  • automatizzarne il comportamento tramite automazioni Home Assistant.

Per quanto riguarda il controllo remoto manuale sarà sufficiente che Home Assistant sia configurato in modo da esser raggiungibile da fuori casa (vedi guida) e usare l’applicazione mobile di Home Assistant e/o un comune browser web.

Per quanto riguarda l’automazione sarà possibile impostare vari scenari, automatici, tra i quali:

  • attivare l'”Away Mode” quando tutti gli inquilini lasciano l’ambiente domotico;
  • attivare la modalità “Heat” quando una specifica persona entra in un raggio specifico nei paraggi dell’ambiente domotico, in modo da pre-riscaldare (in caso ce ne sia bisogno in base alla temperatura);
  • impostare in “off” il termostato superando un certo numero di km di distanza dall’ambiente (in caso per esempio di periodi di vacanza)
  • regolare dinamicamente la temperatura target in base agli orari del giorno della notte

e molti altri, in base alle proprie esigenze e fantasia.

Vediamo qualche esempio.

TEMPORIZZAZIONE

Una delle caratteristiche più peculiari di un termostato è – oltre alla valutazione della temperatura – la possibilità di temporizzare le accensioni.

Dato che il presente progetto permette la generazione, lato Home Assistant, di un’entità “Climate”, tale elemento si presta ottimamente all’applicazione di un temporizzatore come spiegato in quest’altro progetto.

IMPOSTARE L’AWAY MODE quando GLI INQUILINI si allontanano

Innanzitutto diamo per scontato che nella propria configurazione sia presente un raggruppamento di device tracker, come spiegato su questa guida, entità che assumeremo abbia nome “group.famiglia“.
Il nostro termostato generico assumeremo si chiami “climate.riscaldamento“.

Vogliamo che il termostato si imposti in “Away Mode” in caso gli inquilini (tutti) abbandonino l’ambiente domotico. Ovviamente, solo in caso il termostato sia in modalità “Heat”.

L’automazione sarà la seguente:

automation:
- alias: 'Away Mode automatico'
  trigger:
    platform: state
    entity_id: group.famiglia
    from: 'home'
    to: 'not_home'
  condition:
    condition: state
    entity_id: climate.riscaldamento
    state: 'Heat'
  action:
    - service: climate.set_preset_mode
      data:
        entity_id: climate.living_room_thermostat
        set_preset_mode: away
Attivazione pre-riscaldamento al rientro

Ipotizziamo che tramite in configurazione si sia definita una zona geografica con un raggio di 10 km chiamata “location” e con centro l’ambiente domotico. Vogliamo attivare il termostato (quindi indirettamente il riscaldamento, se la temperatura è inferiore a quella target) appena il “Device Tracker” chiamato “Marco” entri dentro il perimetro della “location“.

automation:
- alias: 'Pre-riscaldamento al rientro'
  trigger:
    platform: state
    entity_id: tracker.marco
    to: 'location'
  condition:
    condition: state
    entity_id: climate.riscaldamento
    state: 'off'
  action:
    - service: climate.set_temperature
      data:
        entity_id: climate.riscaldamento
        temperature: 20
        hvac_mode: heat

Un altro interessante esempio è disponibile su questa pagina esterna, dove l’utente ha creato un piccolo pannello di controllo presso il frontend utile per regolare funzioni di automatismo legate al riscaldamento.

Temporizzazione

Può naturalmente essere utile implementare anche funzioni “chrono” (per la pianificazione delle accensioni) legate all’entità “Climate” definita tramite l’adozione del presente progetto.

Dato che Home Assistant non integra componenti per la definizione di “cronotermostati, su inDomus abbiamo realizzato un ulteriore progetto che, a partire da un’entità “Climate”, permette di definire delle schedulazioni di accensione.

Il link è il seguente:

Creare un temporizzatore per sistemi clima su Home Assistant


Home Assistant Official Logo ATTENZIONE: 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.

   
Telegram News Channel