Automazione irrigazione smart Home Assistant

Automazione irrigazione smart Home Assistant: valvole elettriche controllate da previsioni meteo OpenWeatherMap

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.yaml per 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:

  1. Registrati su openweathermap.org

  2. Vai su API keys nel profilo

  3. Copia la chiave generata automaticamente

  4. Aspetta 10-15 minuti per attivazione chiave

Aggiungere integrazione in Home Assistant

ImpostazioniDispositivi 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 sviluppatoreStati → cerca sensor.pioggia_oggi

  • Dovrebbe mostrare valore numerico (mm previsti) o 0 se nessuna pioggia


3: Configurare valvole irrigazione

Valvola WiFi Shelly 2.5

Se usi Shelly 2.5 per controllare 2 zone irrigazione:

ImpostazioniDispositivi e ServiziShelly:

  • 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