Automatizzare Clima Casa

Automatizzare Clima Casa: Previsioni Meteo e Riscaldamento

La gestione tradizionale del clima domestico è reattiva: accendi il riscaldamento quando hai freddo, il raffrescamento quando è troppo caldo. Ma una smart home intelligente dovrebbe essere proattiva, anticipando le necessità basandosi sulle previsioni meteo in tempo reale. Immagina di tornare a casa e trovare la temperatura già perfetta perché Home Assistant ha visto che domani farà 25°C e ha preregolato il condizionatore, oppure che il sistema riscaldante si prepara a una gelata notturna prevista dalle previsioni. Automatizzare il clima in base alle previsioni meteo non è solo comodità: rappresenta un risparmio energetico del 15-25% perché il sistema attiva riscaldamento e raffrescamento solo quando realmente necessari, evitando sprechi su cicli inutili. Questo articolo ti mostra come configurare automazioni avanzate in Home Assistant che sfruttano le previsioni meteo per ottimizzare completamente il comfort termico della tua casa.​​

Sensori e Dati Meteo Necessari

Fonti Dati Meteorologici

Per un’automazione efficace, Home Assistant deve avere accesso a dati meteo affidabili:

1. Integrazioni Meteo Native

  • Integrazione OpenWeatherMap: Gratuita fino a 60 chiamate/minuto, previsioni accuratissime

  • Integrazione Meteo.it: Provider meteorologico italiano affidabile

  • Integrazione SMHI: Meteo svedese, molto precisa per Nord Europa

  • Integrazione Netatmo: Se possiedi stazione meteo fisica

2. Sensori Locali Necessari

  • Termometro interno: Per ogni zona/stanza (Zigbee/Bluetooth)

  • Sensore temperatura esterna: Per misure reali, non solo previsione

  • Sensore umidità: Per regolazione comfort

  • Sensore finestre/porte: Per rilevare aperture accidentali

3. Dispositivi Controllabili

Setup Integrazioni Meteo in Home Assistant

OpenWeatherMap (Consigliato):

# configuration.yaml
weather:
  - platform: openweathermap
    api_key: !secret openweather_api_key
    name: "Previsioni Meteo Casa"
    latitude: 45.5
    longitude: 9.2
    mode: "free"  # Free tier sufficiente

Entità create automaticamente:

weather.previsioni_meteo_casa
  - temperature: temperatura attuale
  - forecast: previsioni 5 giorni
  - humidity: umidità
  - pressure: pressione
  - wind_speed: velocità vento
  - wind_bearing: direzione vento
  - condition: stato meteo (sunny, cloudy, rainy, ecc)

Sensori Template per Previsioni Specifiche:

sensor:
  - platform: template
    sensors:
      temperatura_domani:
        friendly_name: "Temperatura Domani"
        unit_of_measurement: "°C"
        value_template: >
          {% set forecast = state_attr('weather.previsioni_meteo_casa', 'forecast') %}
          {% if forecast and forecast|length > 1 %}
            {{ forecast[1].temperature | round(0) }}
          {% else %}
            Sconosciuta
          {% endif %}
      
      temperatura_massima_3gg:
        friendly_name: "Massima Prossimi 3 Giorni"
        unit_of_measurement: "°C"
        value_template: >
          {% set forecast = state_attr('weather.previsioni_meteo_casa', 'forecast') %}
          {% if forecast %}
            {{ (forecast | map(attribute='temperature') | list)[0:3] | max | round(0) }}
          {% endif %}
      
      temperatura_minima_stasera:
        friendly_name: "Minima Stasera"
        unit_of_measurement: "°C"
        value_template: >
          {% set forecast = state_attr('weather.previsioni_meteo_casa', 'forecast') %}
          {% if forecast and forecast|length > 0 %}
            {{ forecast[0].templow | round(0) }}
          {% endif %}
      
      condizione_meteo_prossima_ora:
        friendly_name: "Meteo Prossima Ora"
        value_template: >
          {{ state_attr('weather.previsioni_meteo_casa', 'forecast')[0].condition }}
      
      rischio_pioggia_24h:
        friendly_name: "Rischio Pioggia 24h"
        unit_of_measurement: "%"
        value_template: >
          {% set forecast = state_attr('weather.previsioni_meteo_casa', 'forecast') %}
          {% set rainy_count = forecast | selectattr('condition', 'in', ['rainy', 'thunderstorm', 'pouring']) | list | length %}
          {{ ((rainy_count / 24) * 100) | round(0) }}

Curve Riscaldamento Intelligenti Basate su Previsioni

Il concetto di curva di riscaldamento è professionale ma semplice: la temperatura target interna varia in base alla temperatura esterna prevista.

Logica Base Curva Riscaldamento

Se temperatura domani = 20°C → imposta target interno 21°C
Se temperatura domani = 10°C → imposta target interno 22°C
Se temperatura domani = 0°C → imposta target interno 23°C
Se temperatura domani = -5°C → imposta target interno 24°C

Formula: Target interno = 21°C + ((15°C – Temp_Esterna_Prevista) / 10)

Automazione Curva Riscaldamento

automation:
  - alias: "Curva Riscaldamento Previsioni Meteo"
    trigger:
      - platform: time
        at: "07:00:00"  # Attiva ogni mattina
      - platform: state
        entity_id: weather.previsioni_meteo_casa
        for:
          minutes: 30  # Attiva se meteo cambia significativamente
    action:
      - variables:
          temp_prevista: "{{ states('sensor.temperatura_domani') | float }}"
          temp_target: >
            {% set t = (states('sensor.temperatura_domani') | float(15)) %}
            {{ (21 + ((15 - t) / 10)) | round(0) }}
      
      - service: climate.set_temperature
        target:
          entity_id: climate.termostato_salotto
        data:
          temperature: "{{ temp_target }}"
      
      - service: persistent_notification.create
        data:
          title: "🌡️ Curva Riscaldamento Aggiornata"
          message: "Temperatura domani: {{ temp_prevista }}°C\nTarget interno impostato a: {{ temp_target }}°C"

Automazioni Stagionali: Passaggio Riscaldamento ↔ Raffrescamento

Automazione Cambio Stagione Automatico

input_boolean:
  use_heating:
    name: "Usa Riscaldamento"
    initial: true
  
  use_cooling:
    name: "Usa Raffrescamento"
    initial: false

automation:
  # Attiva riscaldamento quando media settimanale <15°C
  - alias: "Attiva Riscaldamento Autunno"
    trigger:
      - platform: time
        at: "00:05:00"
    condition:
      - condition: numeric_state
        entity_id: sensor.temperatura_media_settimana
        below: 15
    action:
      - service: input_boolean.turn_on
        target:
          entity_id: input_boolean.use_heating
      - service: input_boolean.turn_off
        target:
          entity_id: input_boolean.use_cooling
      - service: notify.mobile_app
        data:
          title: "🌬️ Cambio Stagione"
          message: "Riscaldamento attivato. Temp media settimana: {{ states('sensor.temperatura_media_settimana') }}°C"
  
  # Attiva raffrescamento quando media settimanale >22°C
  - alias: "Attiva Raffrescamento Primavera"
    trigger:
      - platform: time
        at: "00:05:00"
    condition:
      - condition: numeric_state
        entity_id: sensor.temperatura_media_settimana
        above: 22
    action:
      - service: input_boolean.turn_off
        target:
          entity_id: input_boolean.use_heating
      - service: input_boolean.turn_on
        target:
          entity_id: input_boolean.use_cooling
      - service: notify.mobile_app
        data:
          title: "❄️ Cambio Stagione"
          message: "Raffrescamento attivato. Temp media settimana: {{ states('sensor.temperatura_media_settimana') }}°C"

Sensore media temperature settimanale:

sensor:
  - platform: template
    sensors:
      temperatura_media_settimana:
        friendly_name: "Temperatura Media Settimana"
        unit_of_measurement: "°C"
        value_template: >
          {% set forecast = state_attr('weather.previsioni_meteo_casa', 'forecast') %}
          {% if forecast %}
            {{ (forecast | map(attribute='temperature') | list)[0:7] | average | round(1) }}
          {% endif %}

Automazioni Avanzate: Protezione da Gelate e Ondate di Calore

Protezione Gelata Notturna

automation:
  - alias: "Protezione Gelata Notturna Prevista"
    trigger:
      - platform: numeric_state
        entity_id: sensor.temperatura_minima_stasera
        below: 2
        for:
          minutes: 5
    action:
      # Aumenta temperatura target per protezione
      - service: climate.set_temperature
        target:
          entity_id: 
            - climate.termostato_salotto
            - climate.termostato_camera
        data:
          temperature: 24
      
      # Assicurati finestre chiuse
      - condition: state
        entity_id: binary_sensor.finestra_salotto
        state: "on"
      
      - service: notify.mobile_app
        data:
          title: "⚠️ Gelata in Arrivo"
          message: "Temperatura minima prevista {{ states('sensor.temperatura_minima_stasera') }}°C. Riscaldamento aumentato per protezione tubature."
          data:
            actions:
              - action: "CHECK_WINDOWS"
                title: "Controlla Finestre"

Ondata di Calore: Raffrescamento Preventivo

automation:
  - alias: "Ondata Calore Preventiva"
    trigger:
      - platform: numeric_state
        entity_id: sensor.temperatura_massima_3gg
        above: 32
    action:
      # Pre-raffredda casa prima dell'ondata
      - service: climate.turn_on
        target:
          entity_id: climate.condizionatore_salotto
      
      - service: climate.set_temperature
        target:
          entity_id: climate.condizionatore_salotto
        data:
          temperature: 20  # Raffredda più del solito
      
      # Chiudi tapparelle durante il giorno
      - service: cover.close_cover
        target:
          entity_id:
            - cover.tapparelle_salotto
            - cover.tapparelle_camera
      
      # Notifica
      - service: notify.mobile_app
        data:
          title: "🌞 Ondata di Calore in Arrivo"
          message: "Massima prevista {{ states('sensor.temperatura_massima_3gg') }}°C. Raffrescamento aumentato, tapparelle chiuse per bloccare il sole."
          data:
            color: "red"

Integration Better Thermostat (Soluzione Avanzata)

Se le automazioni manuali sono troppo complesse, Better Thermostat è un’integrazione che automatizza completamente il processo:

# Installa tramite HACS → Integrations → Better Thermostat
# Poi configura via UI Configuration → Integrations → Add Integration → Better Thermostat

# Parametri base:
# - Heating entity: fan.radiator_valve oppure climate.termostato
# - Cooling entity: climate.condizionatore
# - Temperature sensor: sensor.temp_interna
# - Outdoor temperature: weather.previsioni_meteo_casa
# - Door sensor: binary_sensor.finestra_salotto (opzionale: spegne se aperta)

Vantaggi Better Thermostat:

  • Combina previsioni meteo + sensori temperature + AI

  • Attiva riscaldamento/raffrescamento solo quando necessario

  • Spegne automaticamente se finestra/porta aperta

  • Protezione da gelate + ondate calore

  • Zero configurazione manuale dopo setup iniziale

Scenario Completo: Mio Setup Personale

Ecco un esempio di automazione completa che combina tutto:

automation:
  # 1. Ogni mattina, leggi previsioni
  - alias: "Leggi Previsioni Ogni Mattina"
    trigger:
      - platform: time
        at: "06:00:00"
    action:
      - service: weather.get_forecasts
        target:
          entity_id: weather.previsioni_meteo_casa
  
  # 2. Se domani freddo (< 5°C), riscaldamento elevato
  - alias: "Giorno Freddo Incoming"
    trigger:
      - platform: numeric_state
        entity_id: sensor.temperatura_domani
        below: 5
    action:
      - service: climate.set_temperature
        target:
          entity_id: climate.termostato_salotto
        data:
          temperature: 23
      - service: script.turn_on
        target:
          entity_id: script.prepara_casa_freddo
  
  # 3. Se pioggia prevista, chiudi finestre
  - alias: "Pioggia in Arrivo"
    trigger:
      - platform: state
        entity_id: sensor.condizione_meteo_prossima_ora
        to: "rainy"
    action:
      - service: cover.close_cover
        target:
          entity_id: cover.finestra_soggiorno
      - service: switch.turn_on
        target:
          entity_id: switch.estrattore_umidita
  
  # 4. Notte: protezione gelata
  - alias: "Protezione Gelata Notturna"
    trigger:
      - platform: time
        at: "21:00:00"
    condition:
      - condition: numeric_state
        entity_id: sensor.temperatura_minima_stasera
        below: 2
    action:
      - service: climate.set_temperature
        target:
          entity_id: 
            - climate.termostato_salotto
            - climate.termostato_camera
            - climate.termostato_bagno
        data:
          temperature: 24

script:
  prepara_casa_freddo:
    sequence:
      - service: climate.set_hvac_mode
        target:
          entity_id: climate.termostato_salotto
        data:
          hvac_mode: "heat"
      - service: notify.mobile_app
        data:
          message: "Casa preparata per giorno freddo"

Risparmio Energetico Stimato

Con automazione basata su previsioni meteo, puoi risparmiare:

Per una casa di 100m² con consumo medio 2000 kWh/anno:

  • Consumo attuale: 2000 kWh = ~400€/anno

  • Con automazione: 1550 kWh = ~310€/anno

  • Risparmio: ~90€/anno solo su riscaldamento/raffrescamento

Automatizzare il clima in base alle previsioni meteo trasforma il tuo sistema HVAC da reattivo a proattivo e intelligente, garantendo comfort costante con un risparmio energetico significativo. Con Home Assistant, puoi implementare questo con curve riscaldamento template, automazioni stagionali, protezioni da gelate e ondate di calore, il tutto senza intervento manuale. Se preferisci una soluzione ancora più avanzata, Better Thermostat combina automaticamente previsioni meteo, sensori e AI per un controllo climatico completamente autonomo. Inizia oggi configurando una semplice automazione su previsioni giornaliere (curva riscaldamento di base), poi estendi con protezioni stagionali e controllo finestre. Il tuo comfort e il tuo portafoglio te ne ringrieranno.