Se avete un giardino, sapete quanto sia importante e faticoso occuparvi dell’irrigazione delle vostre piante, soprattutto in primavera e in estate, quando le temperature salgono e le piogge scarseggiano. Per evitare di dovervi alzare presto la mattina o di dover chiedere a qualcuno di farlo al vostro posto quando siete via, ho deciso di realizzare un impianto di irrigazione automatizzato, che si attiva e si disattiva in base alle mie preferenze e alla situazione meteo. In questo articolo vi mostro come ho fatto, usando come piattaforma Home Assistant.
Home Assistant è una piattaforma che vi permette di controllare e automatizzare i vostri dispositivi smart, come luci, termostati, telecamere, sensori, ecc.
Il codice yaml che ho usato per Home Assistant si compone di quattro parti principali: input_boolean, input_datetime, input_number e automation. Vediamo nel dettaglio cosa fanno queste parti e come le ho configurate.
Il codice per l’irrigazione automatizzata si compone -come detto su- di quattro parti principali:
Entità Booleane
- La prima parte definisce le entità di tipo input_boolean, che sono dei pulsanti che puoi usare per selezionare i giorni della settimana in cui vuoi che l’irrigazione sia attiva. Puoi scegliere quali giorni abilitare o disabilitare semplicemente cliccando sui pulsanti nell’interfaccia grafica di Home Assistant. Ogni pulsante ha un nome, che corrisponde al giorno della settimana, e uno stato iniziale, che è impostato a true, ovvero attivo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# Definisci le entità per i giorni input_boolean: lunedi: name: "Lunedì" initial: true martedi: name: "Martedì" initial: true mercoledi: name: "Mercoledì" initial: true giovedi: name: "Giovedì" initial: true venerdi: name: "Venerdì" initial: true sabato: name: "Sabato" initial: true domenica: name: "Domenica" initial: true |
Entità di tipo input_datetime
- La seconda parte definisce le entità di tipo input_datetime, che sono dei selettori che puoi usare per impostare l’ora di inizio e di fine dell’irrigazione. Puoi scegliere l’ora che preferisci usando le frecce o digitando i numeri nell’interfaccia grafica di Home Assistant. Ogni selettore ha un id, che serve a identificarlo nel codice, un nome, che è visibile nell’interfaccia grafica, e un valore iniziale, che è impostato a “08:00” per l’ora di inizio e a “09:00” per l’ora di fine.
1 2 3 4 5 6 7 8 9 10 11 12 |
Definisci le entità per gli orari di irrigazione input_datetime: ora_inizio: name: "Ora di inizio" has_date: false has_time: true initial: "08:00" ora_fine: name: "Ora di fine" has_date: false has_time: true initial: "09:00" |
il tipo input_numerb
- La terza parte definisce le entità di tipo input_number, che sono dei cursori che puoi usare per impostare la durata e la frequenza dell’irrigazione. Puoi scegliere il numero di minuti che vuoi che l’irrigazione duri e il numero di giorni che vuoi che passino tra un’irrigazione e l’altra usando le frecce o digitando i numeri nell’interfaccia grafica di Home Assistant. Ogni cursore ha un id, che serve a identificarlo nel codice, un nome, che è visibile nell’interfaccia grafica, un valore minimo e massimo, che limitano il range di scelta, un passo, che indica l’incremento o il decremento di ogni clic, un’unità di misura, che specifica se si tratta di minuti o di giorni, e un valore iniziale, che è impostato a 10 per la durata e a 2 per la frequenza.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Definisci le entità per la durata e la frequenza di irrigazione input_number: durata: name: "Durata" min: 1 max: 60 step: 1 unit_of_measurement: min initial: 10 frequenza: name: "Frequenza" min: 1 max: 7 step: 1 unit_of_measurement: giorni initial: 2 |
Automazioni
- La quarta parte definisce le automazioni, che sono delle regole che eseguono delle azioni in base a dei trigger e a delle condizioni. In questo caso, ci sono due automazioni: una per l’inizio e una per la fine dell’irrigazione. L’automazione per l’inizio ha come trigger l’ora di inizio impostata dal selettore, come condizione lo stato del sensore di pioggia, che deve essere spento, e il giorno della settimana, che deve corrispondere a uno dei giorni abilitati dai pulsanti, e come azione l’accensione dell’elettrovalvola, che attiva l’irrigazione, seguita da un ritardo pari alla durata impostata dal cursore, e lo spegnimento dell’elettrovalvola, che termina l’irrigazione. L’automazione per la fine ha come trigger l’ora di fine impostata dal selettore e come azione lo spegnimento dell’elettrovalvola, che serve a interrompere l’irrigazione in caso di errore o di ritardo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# Definisci le automazioni per avviare e fermare l'irrigazione in base alle condizioni impostate automation: - id: inizio_irrigazione alias: "Inizio irrigazione" trigger: - platform: time at: input_datetime.ora_inizio condition: - condition: state entity_id: sensor.virtual_rain_sensor state: "off" - condition: template value_template: "{{ states('sensor.date') in (state_attr('input_boolean.lunedi', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d'), state_attr('input_boolean.martedi', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d'), state_attr('input_boolean.mercoledi', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d'), state_attr('input_boolean.giovedi', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d'), state_attr('input_boolean.venerdi', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d'), state_attr('input_boolean.sabato', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d'), state_attr('input_boolean.domenica', 'last_changed')|string|replace(' ','T')|as_timestamp|timestamp_custom('%Y-%m-%d')) }}" action: - service: switch.turn_on entity_id: switch.elettrovalvolaxxxxx - delay: "{{ states('input_number.durata')|int }}min" - service: switch.turn_off entity_id: switch.elettrovalvolaxxxxx - id: fine_irrigazione alias: "Fine irrigazione" trigger: - platform: time at: input_datetime.ora_fine action: - service: switch.turn_off entity_id: switch.elettrovalvolaxxxxx |
Ricordatevi di sostituire :
sensor.virtual_rain_sensor con il name del vostro sensore di pioggia virtuale
switch.elettrovalvolaxxxxx : con lo switch della vostra elettovalvola
In conclusione, in questo articolo vi ho mostrato come ho automatizzato il mio impianto di irrigazione con Home Assistant che mi ha permesso di controllare e programmare l’irrigazione del mio giardino in modo semplice e flessibile. Il vantaggio di questo progetto è che ho potuto avere un impianto di irrigazione intelligente, che si attivava solo nei giorni e negli orari che io sceglievo, e che teneva conto della situazione meteo, evitando di irrigare quando pioveva. Il risultato è stato un impianto di irrigazione efficiente, che mi ha fatto risparmiare acqua, energia e tempo.
Per il futuro, vorrei aggiungere altri sensori, come un sensore di umidità del terreno, che mi permetta di regolare l’irrigazione in base alle esigenze delle piante.