L’irrigazione tradizionale del giardino segue rigidi timer settimanali, ignorando completamente le condizioni meteo reali: innaffi anche quando sta per piovere, sprechi acqua nei giorni umidi e lasci il terreno secco durante ondate di caldo impreviste. Con Home Assistant e l’integrazione OpenWeatherMap, puoi creare un sistema di irrigazione smart completamente automatizzato che consulta le previsioni meteorologiche prima di attivare le valvole, calcola dinamicamente la durata dell’irrigazione in base all’evapotraspirazione e salta completamente l’annaffiatura se è prevista pioggia nelle prossime 48 ore.
Questa automazione non solo risparmia fino al 40% di acqua, ma garantisce anche che le tue piante ricevano esattamente la quantità di irrigazione necessaria, evitando sia lo stress idrico che il ristagno dannoso. In questa guida completa vedremo come configurare l’integrazione meteo, creare sensori template per le previsioni di pioggia, automatizzare valvole elettriche WiFi/Zigbee e implementare logiche avanzate di scheduling intelligente.
Prerequisiti hardware e software
Cosa ti serve
Valvole elettriche per irrigazione compatibili con Home Assistant:
-
Valvole WiFi: Sonoff 4CH Pro, Shelly 2.5, Tuya smart valves
-
Valvole Zigbee: MOES solenoid valve, Tuya Zigbee water timer
-
Valvole DIY: Elettrovalvole 12V/24V controllate da relè ESP32/ESP8266 con ESPHome
Home Assistant configurato:
-
Versione 2024.1 o successiva
-
Integrazione OpenWeatherMap attiva (API key gratuita)
-
Accesso a
configuration.yamlper template sensor
Opzionale ma consigliato:
-
Sensori umidità suolo Zigbee (Aqara, Tuya) o ESPHome per feedback real-time
-
Pluviometro smart per misurare pioggia effettiva
-
Integrazione Smart Irrigation custom component per calcolo evapotraspirazione avanzato
1: Configurare OpenWeatherMap
Ottenere API key gratuita
OpenWeatherMap offre 1000 chiamate API gratuite al giorno, più che sufficienti per irrigazione smart.
Procedura:
-
Registrati su openweathermap.org
-
Vai su API keys nel profilo
-
Copia la chiave generata automaticamente
-
Aspetta 10-15 minuti per attivazione chiave
Aggiungere integrazione in Home Assistant
Impostazioni → Dispositivi e Servizi → + Aggiungi integrazione → cerca OpenWeatherMap:
-
Inserisci API key
-
Seleziona modalità: Daily forecast (previsioni giornaliere)
-
Imposta latitudine/longitudine del giardino (se diversa da casa)
Entità create automaticamente:
-
weather.openweathermap– entità meteo principale -
sensor.openweathermap_temperature -
sensor.openweathermap_humidity -
sensor.openweathermap_wind_speed -
Attributi forecast con previsioni fino a 5 giorni
2: Creare sensori pioggia prevista
Template sensor per pioggia prossime 48 ore
OpenWeatherMap fornisce attributo forecast con array previsioni giornaliere. Creiamo sensori template che estraggono precipitazioni previste
Aggiungi in configuration.yaml:
template:
# Trigger aggiornamento forecast ogni ora
- trigger:
- platform: time_pattern
hours: "/1"
- platform: homeassistant
event: start
action:
- service: weather.get_forecasts
data:
type: daily
target:
entity_id: weather.openweathermap
response_variable: daily_forecast
sensor:
# Pioggia prevista oggi (mm)
- name: "Pioggia Oggi"
unique_id: rain_today
unit_of_measurement: "mm"
state: >
{{ daily_forecast['weather.openweathermap'].forecast[0].precipitation | float(0) }}
# Pioggia prevista domani (mm)
- name: "Pioggia Domani"
unique_id: rain_tomorrow
unit_of_measurement: "mm"
state: >
{{ daily_forecast['weather.openweathermap'].forecast[1].precipitation | float(0) }}
# Pioggia prevista dopodomani (mm)
- name: "Pioggia Dopodomani"
unique_id: rain_day_after_tomorrow
unit_of_measurement: "mm"
state: >
{{ daily_forecast['weather.openweathermap'].forecast[2].precipitation | float(0) }}
# Sensore binario: pioggia significativa prossime 48h?
- binary_sensor:
- name: "Pioggia Prevista 48h"
unique_id: rain_forecast_48h
state: >
{% set today = states('sensor.pioggia_oggi') | float(0) %}
{% set tomorrow = states('sensor.pioggia_domani') | float(0) %}
{{ (today + tomorrow) > 5 }}
# Soglia 5mm: se previsti >5mm pioggia totale, skip irrigazione
Riavvia Home Assistant per attivare i sensori.
Verifica funzionamento:
-
Strumenti sviluppatore → Stati → cerca
sensor.pioggia_oggi -
Dovrebbe mostrare valore numerico (mm previsti) o
0se nessuna pioggia
3: Configurare valvole irrigazione
Valvola WiFi Shelly 2.5
Se usi Shelly 2.5 per controllare 2 zone irrigazione:
Impostazioni → Dispositivi e Servizi → Shelly:
-
Dispositivo rilevato automaticamente via mDNS
-
Entità create:
switch.shelly_25_channel_1(Zona Prato),switch.shelly_25_channel_2(Zona Aiuole)
Valvola DIY ESPHome con relè
File ESPHome garden_valves.yaml:
esphome:
name: garden-valves
platform: ESP32
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
encryption:
key: !secret api_encryption_key
switch:
- platform: gpio
pin: GPIO16
name: "Valvola Prato"
id: valve_lawn
icon: mdi:water
- platform: gpio
pin: GPIO17
name: "Valvola Aiuole"
id: valve_flowers
icon: mdi:sprinkler-variant
Compila e flash su ESP32, entità appariranno in HA come switch.valvola_prato e switch.valvola_aiuole.
4: Automazione irrigazione base con skip pioggia
Logica automazione
Trigger: Orario programmato (es. 06:00 mattina)
Condizioni:
-
Nessuna pioggia prevista prossime 48h (
binary_sensor.rain_forecast_48h= off) -
Nessuna pioggia attuale (
weather.openweathermap.condition!= rainy)
Azione: Attiva valvola per durata programmata (es. 20 minuti)
YAML Automazione Zona Prato
automation:
- alias: "Irrigazione Prato Mattina"
description: "Annaffia prato alle 06:00 solo se nessuna pioggia prevista"
trigger:
- platform: time
at: "06:00:00"
condition:
# Condizione 1: Nessuna pioggia prevista 48h
- condition: state
entity_id: binary_sensor.pioggia_prevista_48h
state: "off"
# Condizione 2: Non sta piovendo ora
- condition: not
conditions:
- condition: state
entity_id: weather.openweathermap
state: "rainy"
# Condizione 3: Solo nei mesi caldi (marzo-ottobre)
- condition: template
value_template: >
{{ now().month >= 3 and now().month <= 10 }}
action:
# Notifica inizio irrigazione
- service: notify.mobile_app
data:
message: "🌱 Irrigazione prato avviata - durata 20 minuti"
# Accendi valvola
- service: switch.turn_on
target:
entity_id: switch.valvola_prato
# Aspetta 20 minuti
- delay:
minutes: 20
# Spegni valvola
- service: switch.turn_off
target:
entity_id: switch.valvola_prato
# Notifica completamento
- service: notify.mobile_app
data:
message: "✅ Irrigazione prato completata"
mode: single
5: Automazione avanzata con calcolo dinamico durata
Calcolare durata irrigazione basata su evapotraspirazione
Invece di durata fissa, calcola irrigazione necessaria basandoti su:
-
Temperatura massima prevista (più caldo = più evaporazione)
-
Umidità relativa (bassa umidità = più perdita acqua)
-
Precipitazioni ultime 48h (se ha piovuto recente, riduci durata)
Formula semplificata:
Durata (minuti) = Durata_Base × Fattore_Temperatura × Fattore_Umidità - Compensazione_Pioggia_Recente
Template sensor durata dinamica
Aggiungi in configuration.yaml:
template:
- sensor:
- name: "Durata Irrigazione Prato Calcolata"
unique_id: irrigation_duration_lawn
unit_of_measurement: "min"
state: >
{% set base_duration = 20 %}
{% set temp_max = state_attr('weather.openweathermap', 'forecast')[0].temperature | float(25) %}
{% set humidity = states('sensor.openweathermap_humidity') | float(50) %}
{% set rain_recent = states('sensor.pioggia_oggi') | float(0) %}
{# Fattore temperatura: +20% se >30°C, -20% se <20°C #}
{% set temp_factor = 1 + ((temp_max - 25) * 0.04) %}
{# Fattore umidità: +10% se <40%, -10% se >70% #}
{% set humidity_factor = 1 + ((50 - humidity) * 0.002) %}
{# Compensazione pioggia: -5 min per ogni 10mm recenti #}
{% set rain_compensation = (rain_recent / 10) * 5 %}
{# Calcolo finale con limite minimo 5 min, massimo 40 min #}
{% set duration = base_duration * temp_factor * humidity_factor - rain_compensation %}
{{ [5, duration, 40] | sort | list[1] | round(0) }}
6: Integrazione sensori umidità suolo (opzionale)
Override irrigazione se terreno già umido
Se hai sensori umidità suolo Zigbee (es. Aqara Soil Moisture Sensor), aggiungi condizione che skippa irrigazione se umidità suolo già sufficiente.
Modifica condizioni automazione:
condition:
# ... condizioni meteo esistenti ...
# Condizione aggiuntiva: irrigazione solo se suolo < 40% umidità
- condition: numeric_state
entity_id: sensor.soil_moisture_lawn
below: 40
Vantaggi:
-
Feedback real-time: irrigazione basata su condizioni effettive terreno, non solo previsioni
-
Evita sovra-irrigazione: se ha piovuto più del previsto, sensore lo rileva
-
Risparmio ulteriore: studi indicano 15-20% acqua risparmiata aggiungendo sensori suolo
-
7: Scheduling multi-zona intelligente
Gestire più zone con priorità e ritardi
Per giardini con zone multiple (prato, aiuole, orto, siepi), crea scheduling che:
-
Evita sovraccarico pompa/pressione: attiva 1 zona per volta con delay tra zone
-
Priorità differenziate: orto irrigato ogni giorno, prato 3 volte/settimana
-
Durate personalizzate: aiuole 10 min, prato 20 min, orto 15 min
Script multi-zona coordinato:
script:
irrigation_full_cycle:
alias: "Ciclo Irrigazione Completo"
sequence:
# Zona 1: Orto (priorità alta, ogni giorno)
- service: switch.turn_on
target:
entity_id: switch.valvola_orto
- delay:
minutes: 15
- service: switch.turn_off
target:
entity_id: switch.valvola_orto
# Pausa tra zone (evita calo pressione)
- delay:
minutes: 2
# Zona 2: Prato (solo se oggi è lunedì/mercoledì/venerdì)
- choose:
- conditions:
- condition: time
weekday:
- mon
- wed
- fri
sequence:
- service: switch.turn_on
target:
entity_id: switch.valvola_prato
- delay:
minutes: "{{ states('sensor.durata_irrigazione_prato_calcolata') | int }}"
- service: switch.turn_off
target:
entity_id: switch.valvola_prato
- delay:
minutes: 2
# Zona 3: Aiuole (ogni giorno)
- service: switch.turn_on
target:
entity_id: switch.valvola_aiuole
- delay:
minutes: 10
- service: switch.turn_off
target:
entity_id: switch.valvola_aiuole
# Notifica finale
- service: notify.mobile_app
data:
message: "✅ Ciclo irrigazione completo terminato"
mode: single
Automazione che chiama lo script:
automation:
- alias: "Avvia Ciclo Irrigazione Mattina"
trigger:
- platform: time
at: "06:00:00"
condition:
- condition: state
entity_id: binary_sensor.pioggia_prevista_48h
state: "off"
action:
- service: script.irrigation_full_cycle
8: Dashboard monitoraggio irrigazione
Card Lovelace per controllo visuale
Crea dashboard dedicata per monitorare sistema irrigazione:
Elementi consigliati:
-
Entities card con stato valvole (on/off)
-
Weather card OpenWeatherMap con previsioni 5 giorni
-
History graph sensori pioggia prevista
-
Gauge card sensori umidità suolo
-
Button card per override manuale irrigazione
-
Markdown card con prossimo ciclo irrigazione programmato
Best practices e consigli
Ottimizzazione risparmio idrico
Irriga al mattino presto (05:00-07:00):
-
Meno evaporazione rispetto a mezzogiorno
-
Piante assorbono meglio acqua prima del caldo
-
Riduce malattie fungine (foglie asciugano prima)
Soglie pioggia personalizzate:
-
Prato: skip se previsti >5mm pioggia
-
Orto: skip solo se >8mm (ortaggi richiedono più acqua costante)
-
Piante grasse/cactus: skip se >2mm
Cicli brevi multipli invece di ciclo lungo unico:
-
Esempio: 3 cicli da 7 minuti (totale 21 min) con pause 10 minuti tra cicli
-
Acqua penetra meglio, riduce ruscellamento, evita pozzanghere
Sicurezza e failsafe
Timeout massimo automatico:
automation:
- alias: "Irrigazione Timeout Sicurezza"
description: "Spegni tutte valvole se rimaste accese >60 min (guasto)"
trigger:
- platform: state
entity_id:
- switch.valvola_prato
- switch.valvola_aiuole
- switch.valvola_orto
to: "on"
for:
minutes: 60
action:
- service: switch.turn_off
target:
entity_id:
- switch.valvola_prato
- switch.valvola_aiuole
- switch.valvola_orto
- service: notify.mobile_app
data:
message: "⚠️ ALERT: Valvole irrigazione spente per timeout sicurezza!"
data:
priority: high
Monitoraggio consumo acqua (se usi smart plug con energy monitoring):
-
Alert se consumo anomalo (perdita/tubo rotto)
-
Statistiche mensili risparmio idrico
-
Calcolo costi basato su tariffa acqua comunale
Integrazione Smart Irrigation custom component
Per calcoli evapotraspirazione ancora più precisi, installa Smart Irrigation custom component via HACS.
Funzionalità avanzate:
-
Calcolo ET (Evapotranspiration) metodo Penman-Monteith
-
Bucket tracking: tiene memoria umidità suolo virtuale accumulata
-
Zone multiple con parametri personalizzati per tipo vegetazione
-
Integrazione Irrigation Unlimited per scheduling professionale
-
Blueprint pronti per automazioni comuni
Installazione:
-
HACS → Integrazioni → cerca “Smart Irrigation”
-
Scarica e riavvia Home Assistant
-
Impostazioni → Aggiungi integrazione → Smart Irrigation
-
Configura parametri zona: tipo pianta, esposizione sole, tipo suolo
Troubleshooting problemi comuni
Sensori pioggia prevista sempre a 0
Causa: API key non attivata o modalità forecast sbagliata
Soluzione:
-
Attendi 15 minuti dopo creazione chiave API
-
Verifica in integrazione OpenWeatherMap: modalità “Daily forecast” (non “Hourly”)
-
Controlla attributi
weather.openweathermapin Strumenti Sviluppatore → Stati
Automazione non skippa irrigazione nonostante pioggia
Causa: Soglia pioggia troppo alta o sensore binario non aggiornato
Soluzione:
-
Abbassa soglia da 5mm a 3mm in template sensor
-
Forza aggiornamento manuale: Strumenti Sviluppatore → Servizi →
homeassistant.update_entityperbinary_sensor.pioggia_prevista_48h
Valvole rimangono accese indefinitamente
Causa: Automazione in loop o delay non eseguito
Soluzione:
-
Imposta
mode: singlein automazione (previene esecuzioni multiple simultanee) -
Aggiungi automazione timeout sicurezza (vedi sezione Best Practices)
Un sistema di irrigazione smart basato su previsioni meteo rappresenta uno dei migliori investimenti domotici per chi ha giardino: risparmio idrico misurabile 30-40%, piante più sane grazie ad irrigazione ottimale, e zero preoccupazioni durante ferie o imprevisti meteo. Con poche ore di configurazione iniziale in Home Assistant e componenti hardware economici (valvole WiFi/Zigbee o DIY con ESP32), ottieni un sistema professionale che si ripaga in 1-2 stagioni di risparmio in bolletta acqua.
L’approccio modulare presentato ti permette di iniziare con automazione base (skip pioggia + timer fisso) e gradualmente evolvere verso calcoli dinamici evapotraspirazione, multi-zona coordinata e feedback sensori suolo reali. Ogni aggiunta incrementale migliora precisione e risparmio, senza dover ricominciare da zero.
