SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI INTERESSATI:
|
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE:![]() |
|
NOTE E DISCLAIMER
|
|
| Revisione progetto: 1.3 | |
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
- Assunti
- Schema elettrico
- ESPHome
- Home Assistant
- Uso ordinario
- Automazione e controllo remoto
- Temporizzazione
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 Basic, tramite modifica, può dotarsi di un’uscita a contatto pulito, va da sé che si tratta un candidato 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 (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). Un’alternativa ottimale, senza bisogno di modifiche, è lo Shelly Plus 1.
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, un Sonoff SNZM-02P, un Sonoff TH-16/TH-10 o qualsiasi altro sensore ambientale 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) o a uno Shelly Plus 1.
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.

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 dedicata; 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
esp8266:
board: esp01_1m
wifi:
ssid: "mia_wifi"
password: "password_wifi"
fast_connect: true
ap:
ssid: "AP Fallback"
password: "password_fallback"
captive_portal:
logger:
api:
custom_services: true
ota:
platform: esphome
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
| N.b. A prescindere, su qualsiasi configurazione ESPHome consigliamo sempre di includere alcuni componenti secondo noi sempre utili, come quelli illustrati su questa scheda. |
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:
Questa integrazione genererà, come da premesse, un’entità di tipo “Climate” lato Home Assistant, la quale potrà quindi essere utilizzata come termostato virtuale.

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:
- action: climate.set_preset_mode
data:
entity_id: climate.living_room_thermostat
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 “edoardo” entri dentro il perimetro della “location“.
automation:
- alias: 'Pre-riscaldamento al rientro'
trigger:
platform: state
entity_id: tracker.edoardo
to: 'location'
condition:
condition: state
entity_id: climate.riscaldamento
state: 'off'
action:
- action: 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
Altri progetti disponibili su inDomus dedicate a questi temi sono:
- Definire indicatori di benessere ambientale sulla domotica Home Assistant, con Thermal Comfort
- Calcolare l’umidità assoluta con la domotica Home Assistant: arieggiare (o deumidificare) quando è il momento
- Controllare una stufetta (o analoghi) sulla base di un range termico tramite Home Assistant
- Domotizzare un termoventilatore da bagno con Broadlink e Home Assistant
- Controllare un ventilatore sulla base di un range termico tramite Home Assistant (v2)
- Definire un indicatore di benessere estivo sulla domotica Home Assistant
- Muffa e domotica: come mitigare il problema tramite Home Assistant (sensore di rischio, e altro)
- Rendere domotico un ventilatore portatile
- Cambio stagione: notifiche Home Assistant quando la temperatura esterna è maggiore dell’interna (e viceversa)
- Integrare un climatizzatore tradizionale a Home Assistant via Broadlink e SmartIIR (v2)
- Domotizzare il riscaldamento autonomo tramite contatto pulito, Tasmota e Home Assistant
- Creare un temporizzatore per sistemi clima su Home Assistant
- Ottimizzare il riscaldamento autonomo con Home Assistant tramite climatizzatore automatico
- Rendere domotico uno scaldabagno elettrico tramite Sonoff Basic (o altri)
- Domotizzare un termoventilatore da bagno con Apple HomeKit e Broadlink (via Homebridge)
| 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. |

