Riscaldamento Home Assistant

Riscaldamento Home Assistant: spegnere termostato quando la finestra è aperta e risparmiare energia

Quante volte ti è capitato di aprire una finestra per arieggiare la stanza e dimenticarti del riscaldamento acceso? Il termostato rileva il calo di temperatura e aumenta la potenza per compensare, sprecando energia e denaro per riscaldare… l’esterno.

Questa è una delle automazioni più utili e semplici da implementare in una smart home, eppure il risparmio che genera è significativo: si stima che ogni ora di finestra aperta con riscaldamento attivo sprechi l’equivalente di diverse ore di riscaldamento normale.

Cosa farà l’automazione:

  1. Rileva quando una finestra viene aperta (tramite sensore)

  2. Attende un breve delay (per aperture rapide non serve intervenire)

  3. Salva lo stato attuale del termostato

  4. Spegne il riscaldamento nella stanza

  5. Invia notifica opzionale (“Riscaldamento soggiorno spento – finestra aperta”)

  6. Attende la chiusura della finestra

  7. Ripristina il termostato allo stato precedente

  8. Invia notifica di conferma


Prerequisiti: cosa ti serve

Hardware necessario

1. Sensore porta/finestra
Rileva apertura e chiusura della finestra.

Opzioni consigliate:

2. Termostato o valvola termostatica smart
Il dispositivo che controlla il riscaldamento.

Opzioni compatibili:

Entità Home Assistant necessarie

Prima di creare l’automazione, verifica di avere:

# Sensore finestra (binary_sensor)
binary_sensor.finestra_soggiorno
# Stato: on = aperta, off = chiusa

# Termostato o clima (climate)
climate.termostato_soggiorno
# oppure
climate.valvola_soggiorno

Verifica entità:
Developer Tools > States > cerca le tue entità e verifica che funzionino correttamente.


Metodo 1: Automazione base (singola finestra, singolo termostato)

La versione più semplice

Questa automazione spegne il termostato quando la finestra si apre e lo riaccende quando si chiude.​

Automazione YAML:

automation:
  - alias: "Riscaldamento - Spegni se finestra aperta soggiorno"
    description: "Spegne il termostato soggiorno quando la finestra viene aperta per più di 30 secondi"
    mode: restart  # Importante: restart se finestra aperta/chiusa rapidamente
    
    trigger:
      # Trigger quando finestra si APRE
      - platform: state
        entity_id: binary_sensor.finestra_soggiorno
        from: "off"
        to: "on"
        for:
          seconds: 30  # Delay: intervieni solo se aperta > 30 secondi
        id: "finestra_aperta"
      
      # Trigger quando finestra si CHIUDE
      - platform: state
        entity_id: binary_sensor.finestra_soggiorno
        from: "on"
        to: "off"
        for:
          seconds: 10  # Breve delay per conferma chiusura
        id: "finestra_chiusa"
    
    action:
      - choose:
          # CASO 1: Finestra aperta → Spegni riscaldamento
          - conditions:
              - condition: trigger
                id: "finestra_aperta"
            sequence:
              # Salva stato attuale termostato in una scena
              - service: scene.create
                data:
                  scene_id: termostato_soggiorno_backup
                  snapshot_entities:
                    - climate.termostato_soggiorno
              
              # Spegni termostato
              - service: climate.turn_off
                target:
                  entity_id: climate.termostato_soggiorno
              
              # Notifica opzionale
              - service: notify.mobile_app_smartphone
                data:
                  title: "🪟 Finestra aperta"
                  message: "Riscaldamento soggiorno spento per risparmio energetico"
          
          # CASO 2: Finestra chiusa → Ripristina riscaldamento
          - conditions:
              - condition: trigger
                id: "finestra_chiusa"
            sequence:
              # Ripristina stato precedente termostato
              - service: scene.turn_on
                target:
                  entity_id: scene.termostato_soggiorno_backup
              
              # Notifica opzionale
              - service: notify.mobile_app_smartphone
                data:
                  title: "✅ Finestra chiusa"
                  message: "Riscaldamento soggiorno ripristinato"

Spiegazione parametri chiave

mode: restart
Se la finestra viene aperta e chiusa rapidamente più volte, l’automazione si riavvia invece di accodare esecuzioni. Evita comportamenti strani.

for: seconds: 30
Il delay prima di spegnere il riscaldamento. Evita di intervenire per aperture brevissime (es: controllo se piove, prendere qualcosa dal balcone). Puoi regolare da 15 a 120 secondi secondo preferenze.

scene.create con snapshot_entities
Salva lo stato attuale del termostato (temperatura target, modalità HVAC) prima di spegnerlo. Così al ripristino torna esattamente come era prima, non a un valore fisso.​


Metodo 2: Automazione avanzata (più finestre, stesso termostato)

Scenario: stanza con 2+ finestre

Se il soggiorno ha 2 finestre, vuoi che il riscaldamento si spenga quando almeno una è aperta, e si riaccenda solo quando tutte sono chiuse.

Passo 1: Crea gruppo finestre

Helpers > Crea helper > Gruppo > Gruppo binario

Oppure in configuration.yaml:

binary_sensor:
  - platform: group
    name: "Finestre Soggiorno"
    unique_id: finestre_soggiorno_group
    device_class: window
    entities:
      - binary_sensor.finestra_soggiorno_1
      - binary_sensor.finestra_soggiorno_2
      - binary_sensor.portafinestra_soggiorno
    all: false  # ON se ALMENO UNA è aperta

Risultato: binary_sensor.finestre_soggiorno sarà:

  • on = almeno una finestra aperta

  • off = tutte le finestre chiuse

Passo 2: Automazione con gruppo

automation:
  - alias: "Riscaldamento - Spegni se finestre aperte soggiorno"
    mode: restart
    
    trigger:
      - platform: state
        entity_id: binary_sensor.finestre_soggiorno  # Gruppo!
        from: "off"
        to: "on"
        for:
          seconds: 30
        id: "finestre_aperte"
      
      - platform: state
        entity_id: binary_sensor.finestre_soggiorno
        from: "on"
        to: "off"
        for:
          seconds: 10
        id: "finestre_chiuse"
    
    action:
      - choose:
          - conditions:
              - condition: trigger
                id: "finestre_aperte"
            sequence:
              - service: scene.create
                data:
                  scene_id: termostato_soggiorno_backup
                  snapshot_entities:
                    - climate.termostato_soggiorno
              - service: climate.turn_off
                target:
                  entity_id: climate.termostato_soggiorno
              - service: notify.mobile_app_smartphone
                data:
                  title: "🪟 Finestre aperte soggiorno"
                  message: >
                    Riscaldamento spento. Finestre aperte: 
                    {{ expand('binary_sensor.finestre_soggiorno') 
                       | selectattr('state', 'eq', 'on') 
                       | map(attribute='attributes.friendly_name') 
                       | list | join(', ') }}
          
          - conditions:
              - condition: trigger
                id: "finestre_chiuse"
            sequence:
              - service: scene.turn_on
                target:
                  entity_id: scene.termostato_soggiorno_backup
              - service: notify.mobile_app_smartphone
                data:
                  title: "✅ Finestre chiuse"
                  message: "Riscaldamento soggiorno ripristinato"

Metodo 3: Automazione multi-stanza (scalabile)

Scenario: tutta la casa automatizzata

Invece di creare 10 automazioni per 10 stanze, creiamo un’unica automazione intelligente che gestisce tutte le coppie finestra-termostato.

Passo 1: Definisci mappatura stanze

Crea un input_text helper o usa un template per mappare finestre ai termostati:

# In configuration.yaml o helpers
input_text:
  mappa_finestre_clima:
    name: "Mappatura Finestre-Clima"
    initial: >
      {
        "binary_sensor.finestra_soggiorno": "climate.termostato_soggiorno",
        "binary_sensor.finestra_camera": "climate.termostato_camera",
        "binary_sensor.finestra_cucina": "climate.termostato_cucina",
        "binary_sensor.finestra_bagno": "climate.termostato_bagno"
      }

Passo 2: Automazione dinamica

automation:
  - alias: "Riscaldamento - Gestione finestre tutta casa"
    mode: parallel  # Gestisce più stanze simultaneamente
    max: 10
    
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.finestra_soggiorno
          - binary_sensor.finestra_camera
          - binary_sensor.finestra_cucina
          - binary_sensor.finestra_bagno
        for:
          seconds: 30
    
    variables:
      # Mappa finestra → termostato
      mappa: >
        {{ {
          'binary_sensor.finestra_soggiorno': 'climate.termostato_soggiorno',
          'binary_sensor.finestra_camera': 'climate.termostato_camera',
          'binary_sensor.finestra_cucina': 'climate.termostato_cucina',
          'binary_sensor.finestra_bagno': 'climate.termostato_bagno'
        } }}
      finestra: "{{ trigger.entity_id }}"
      termostato: "{{ mappa[trigger.entity_id] }}"
      stanza: "{{ state_attr(finestra, 'friendly_name') | replace('Finestra ', '') }}"
    
    action:
      - choose:
          # Finestra APERTA
          - conditions:
              - condition: template
                value_template: "{{ trigger.to_state.state == 'on' }}"
            sequence:
              - service: scene.create
                data:
                  scene_id: "backup_{{ termostato | replace('.', '_') }}"
                  snapshot_entities:
                    - "{{ termostato }}"
              - service: climate.turn_off
                target:
                  entity_id: "{{ termostato }}"
              - service: notify.mobile_app_smartphone
                data:
                  title: "🪟 Finestra aperta"
                  message: "Riscaldamento {{ stanza }} spento"
          
          # Finestra CHIUSA
          - conditions:
              - condition: template
                value_template: "{{ trigger.to_state.state == 'off' }}"
            sequence:
              - service: scene.turn_on
                target:
                  entity_id: "scene.backup_{{ termostato | replace('.', '_') }}"
              - service: notify.mobile_app_smartphone
                data:
                  title: "✅ Finestra chiusa"
                  message: "Riscaldamento {{ stanza }} ripristinato"

Vantaggio: Una sola automazione per tutta la casa! Per aggiungere una nuova stanza, basta modificare la mappa e la lista trigger.


Metodo 4: Blueprint pronto all’uso

Installare Blueprint dalla community

Se preferisci non scrivere YAML, esistono Blueprint pronti che puoi importare con un click:

Blueprint consigliato: “Window open, climate off”

Installazione:

  1. Vai su Impostazioni > Automazioni e scene > Blueprint

  2. Clicca Importa Blueprint

  3. Incolla URL:

    https://community.home-assistant.io/t/window-open-climate-off/257293
  4. Clicca Anteprima > Importa

Creazione automazione da Blueprint:

  1. Automazioni > Crea automazione > Usa Blueprint

  2. Seleziona “Window open, climate off”

  3. Configura:

    • Window sensor: seleziona sensore finestra

    • Climate device: seleziona termostato

    • Open delay: tempo attesa prima spegnimento (es: 30 secondi)

    • Close delay: tempo attesa prima ripristino (es: 10 secondi)

  4. Salva

Vantaggio Blueprint: Zero YAML, configurazione guidata, aggiornamenti automatici se autore migliora il Blueprint.


Opzioni avanzate e personalizzazioni

Impostare temperatura minima antigelo invece di spegnere

Se non vuoi spegnere completamente (rischio gelo in inverno), imposta una temperatura minima di sicurezza:

# Invece di climate.turn_off, usa:
- service: climate.set_temperature
  target:
    entity_id: climate.termostato_soggiorno
  data:
    temperature: 10  # Temperatura antigelo

Spegnere solo se riscaldamento è attivo

Evita azioni inutili se il riscaldamento è già spento:

trigger:
  - platform: state
    entity_id: binary_sensor.finestra_soggiorno
    to: "on"
    for:
      seconds: 30

condition:
  # Esegui solo se termostato è in modalità heat
  - condition: state
    entity_id: climate.termostato_soggiorno
    attribute: hvac_action
    state: "heating"
  # Oppure: solo se non è già spento
  - condition: not
    conditions:
      - condition: state
        entity_id: climate.termostato_soggiorno
        state: "off"

Aggiungere override manuale

Crea un input_boolean per disabilitare temporaneamente l’automazione (es: durante pulizie con finestre aperte a lungo):

# Helper
input_boolean:
  override_finestra_clima:
    name: "Disabilita automazione finestra-clima"
    icon: mdi:cancel
# Nell'automazione, aggiungi condition:
condition:
  - condition: state
    entity_id: input_boolean.override_finestra_clima
    state: "off"  # Esegui solo se override non attivo

Uso: Attiva l’override da dashboard o assistente vocale quando vuoi tenere finestre aperte senza che il riscaldamento si spenga continuamente.

Notifica se finestra aperta da troppo tempo

Promemoria se dimentichi la finestra aperta:

automation:
  - alias: "Promemoria finestra aperta troppo a lungo"
    trigger:
      - platform: state
        entity_id: binary_sensor.finestra_soggiorno
        to: "on"
        for:
          minutes: 15  # 15 minuti
    action:
      - service: notify.mobile_app_smartphone
        data:
          title: "⏰ Promemoria"
          message: "La finestra del soggiorno è aperta da 15 minuti. Vuoi chiuderla?"
          data:
            actions:
              - action: "IGNORA"
                title: "Ignora"
              - action: "RICORDAMI"
                title: "Ricordami tra 10 min"

Gestione climatizzazione estiva (aria condizionata)

L’automazione funziona anche per il raffrescamento

La stessa logica si applica all’aria condizionata in estate: finestra aperta = sprechi il fresco.

Modifica per supportare heat E cool: