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

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

SCOPI DEL PROGETTO:
  • Domotizzare un impianto di autonomo con poca spesa e massima funzionalità
  • 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:
  • Un impianto di riscaldamento autonomo (ovviamente!)
  • Un attuatore a contatto pulito (spiegato dopo)
  • Un qualunque sensore di temperatura già inserito in configurazione Home Assistant
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione progetto: 4.4

Attenzione! In alternativa a questo progetto, si consiglia di leggere il suo gemello il quale utilizza – anziché Tasmota – il firmware ESPHome.

Termostato frontale

Abstract

Come spiegato anche nel nostro percorso di formazione in occasione del tema “dispositivi”, un termostato è un elemento 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 contatto pulito (in questo progetto useremo un Sonoff Basic modificato a tale scopo, ma andrebbe bene qualunque 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.

N.b. Ovviamente è possibile utilizzare altri attuatori domotici a contatto pulito al posto del Sonoff Basic (modificato a tal scopo), come per esempio il Sonoff Mini (sempre con modifica), oppure il Sonoff 4CH Pro o lo Shelly 1, i quali due sono nativamente dotati di questa funzione.

Sonoff Basic 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 successivamente 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 (eg. NEST, o Tado°) 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.

Partiamo

Logica del progetto

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

“Climate” di Home Assistant è un componente nativo generico che fornisce a questo HUB personale la possibilità di implementare piattaforme aggiuntive per la gestione del clima domestico. Tra le tante, “Generic Thermostat” è una piattaforma che permette di creare una o più entità di controllo clima (di riscaldamento o di raffrescamento) a partire dal controllo di un attuatore e dalla lettura di un sensore termico.

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

SENSORE TERMICO

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

Quale che 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.

Schema elettrico

Prima di proseguire, ricordiamo ancora una volta che:

NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.

Quello che andremo a fare è disconnettere i due poli connessi al termostato (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.

Ovviamente, il Sonoff Basic e il sensore termico dovranno trovarsi “a tiro” della Wi-Fi sulla quale sia attestato anche Home Assistant.

Schema elettrico - sostituzione termostato con domotica

Configurazione di Home Assistant

Apportata la modifica all’impianto, è il momento di configurare gli elementi che definiranno l’entità termostato presso la configurazione di Home Assistant.

N.b. Affinché la configurazione che ci apprestiamo a realizzare funzioni, è necessario che il Sonoff Basic modificato a contatto pulito abbia già a bordo Tasmota e presenti il protocollo MQTT già configurato.

ASSUNZIONI SUI NOMI

Assumiamo per il progetto che:

  • il nome MQTT del Sonoff Basic sia “ThermoSonoff“;
  • il nome dell’entità Home Assistant relativo al sensore di temperatura sia “sensor.temperatura“.

Ovviamente questi nomi potranno essere personalizzati in base alla propria configurazione.

CONFIGURAZIONE SWITCH

In primis è necessario definire in configurazione uno switch associato al Sonoff a contatto pulito che, se attivato/disattivato, di conseguenza accenda/spenga la produzione del calore.

L’entità assumerà il nome di “switch.unita_termica“:

mqtt:
  switch:
  - name: unita_termica
    state_topic: "stat/ThermoSonoff/POWER"
    command_topic: "cmnd/ThermoSonoff/POWER"
    availability_topic: "tele/ThermoSonoff/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false

È necessario soffermarsi sulla configurazione di due campi, “payload_on” e “payload_off“, ovvero i due payload che, associati al “command_topic“, di fatto agiscono sull’attivazione/disattivazione dello switch fisico.

Per come è configurato nell’esempio sopra, il comandi MQTT inviati a fronte dell’attivazione/disattivazione dello switch saranno:

Attivazione (produzione calore) Disattivazione
cmnd/ThermoSonoff/POWER ON  cmnd/ThermoSonoff/POWER OFF

Questo significa che all’attivazione il contatto di uscita verrà chiuso (cortocircuitato) – e mantenuto tale – mentre in disattivazione verrà aperto – e mantenuto tale, altrettanto. Questo è il comportamento adatto a un’unità termica che venga attivata tramite contatto pulito normalmente aperto (NO).

In caso l’unità termica venga attivata tramite contatto pulito normalmente chiuso (NC), la configurazione dello switch dovrà essere configurato al contrario:

mqtt:
  switch:
  - name: unita_termica
    state_topic: "stat/ThermoSonoff/POWER"
    command_topic: "cmnd/ThermoSonoff/POWER"
    availability_topic: "tele/ThermoSonoff/LWT"
    qos: 1
    payload_on: "OFF"
    payload_off: "ON"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false

Che genererà un output comandi di questo tipo:

Attivazione (produzione calore) Disattivazione
cmnd/ThermoSonoff/POWER OFF  cmnd/ThermoSonoff/POWER ON

quindi adatti al comportamento previsto per contatti puliti NC, ovvero all’attivazione il contatto pulito verrà aperto e alla disattivazione, chiuso (cortocircuitato).

N.b. Questo comportamento (ovvero l’inverted toggle) può essere realizzato anche usando il primo blocco di configurazione sopra citato e poi applicando una configurazione Tasmota ad hoc tramite il comando SWITCHMODE. Lo svantaggio è quello di doversi ricordare di aver attuato questa doppia configurazione.

N.b. Per maggiori informazioni sulla configurazione degli switch MQTT su Home Assistant, si rimanda a questa pagina specifica.
DEFINIZIONE DEL TERMOSTATO DOMOTICO

Creiamo ora l’entità di tipo “Climate” basata sulla piattaforma “Generic Thermostat”.

Tale entità viene impostata per le funzioni di riscaldamento:

climate:
  - platform: generic_thermostat
    name: Riscaldamento
    heater: switch.unita_termica
    target_sensor: sensor.temperatura_sala
    min_temp: 10
    max_temp: 25
    ac_mode: false
    target_temp: 17
    min_cycle_duration:
      seconds: 30
    initial_hvac_mode: "off"
    away_temp: 10

Tale configurazione genera un’entità di questo tipo:

Home Assistant Generic Thermostat

Tale configurazione può essere oggetto di ampia personalizzazione. Si rimanda alla scheda di dettaglio della piattaforma per prendere visione di tutti i parametri configurabili.

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

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 creazione di un’entità “Climate”, tale entità 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
        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

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

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.