Totul a pornit de la un programator Hunter cu 2 zone care funcționa de ani buni. Simplu, not smart, fiabil — dar limitat. Când am avut nevoie de încă două zone (picuratoare) și de control pe WiFi, l-am înlocuit cu un switch Tuya de 4 canale cumpărat cu sub 100 RON de pe aliexpress. A mers excelent.
Între timp a apărut nevoia de o a cincea zonă — inca un un picurator pe grădină — rezolvată cu un Sonoff SWV-BSP, o electrovalvă inteligentă pentru apă cu Zigbee 3.0 integrată în HA prin Zigbee. Tocmai când credeam că e gata, s-a stricat un Iritrol Life DC de la aspersoarele din fata casei: consuma bateria în 1-2 săptămâni, indiferent ce faceam. Soluția: am tras fir, am schimbat solenoidul și l-am conectat la o priză smart. Zona 6 e pregătită în cod, așteptând switch-ul fizic definitiv.
Trei lumi diferite — Tuya WiFi, Zigbee 3.0 și o priză smart — fără nicio legătură între ele la nivel de protocol. Exact genul de situație în care Home Assistant strălucește: le unești pe toate într-un singur sistem, cu logică comună.
Dar automatizarea de bază — pornește zona X la ora Y — e banală. Ceea ce m-a interesat a fost să adaug valoare reală: știam din măsurători că apersoarele mele dau 0.4 L/m²/minut. De acolo a venit ideea: dacă știu debitul și știu temperatura prognozată, pot calcula exact cât trebuie să ud și pot ajusta duratele automat la începutul fiecărei săptămâni sau luni.

Hardware folosit
Setup-ul fizic e deliberat ieftin și simplu:
- Tuya TYWB 4ch-RF — controlează zonele 1–4: Gazon Paul, Gazon Anca, Lateral Grădina, Copacii. Input AC/DC 7-32V/USB 5V, 10A per canal, 16A total, WiFi 2.4GHz + Bluetooth + 433MHz RF. Integrat în HA prin integrarea Tuya nativă.
- Sonoff SWV-BSP — Electrovalvă inteligentă pentru apă, Zigbee 3.0 — zona 5, picuratorul din grădiniță. Controlează direct fluxul de apă, integrată în HA prin Zigbee.
- Priză smart (zona 6, placeholder) — pentru Iritrol-ul stricat: solenoid nou pe 24vAC, fir tras, priză smart până la o soluție mai elegantă.


Total hardware pentru 5 zone active: sub 200 RON. Programatorul Hunter original costa mai mult și nu putea face jumătate din ce face sistemul actual. Cel iritrol life dc… 2 zone… doar 900 lei.
Arhitectura în Home Assistant
Sistemul folosește Irrigation Unlimited (HACS) ca motor de control al zonelor — nu pentru schedule-urile lui native, ci pentru comenzile manual_run și cancel pe care le apelează automatizările HA.
De ce această abordare și nu schedule-urile native IU? Pentru că avem nevoie de durate dinamice — calculate în funcție de temperatură și debit — care se schimbă săptămânal. Schedule-urile IU sunt statice prin natură. Automatizările HA cu manual_run permit transmiterea duratei calculate la momentul rulării.
ha-irigatii/
├── packages/
│ └── irigatie.yaml # Entități, automatizări, senzori
└── lovelace/
└── irigatie_dashboard.yaml # Dashboard cu 3 pagini
Zonele de irigații
| Nr | Zonă | Hardware | Status |
|---|---|---|---|
| 1 | Gazon Paul | TYWB 4ch-RF canal 1 | Activ |
| 2 | Gazon Anca | TYWB 4ch-RF canal 2 | Activ |
| 3 | Lateral Grădina | TYWB 4ch-RF canal 3 | Activ |
| 4 | Copacii | TYWB 4ch-RF canal 4 | Activ |
| 5 | Picurator Grădina | Sonoff SWV-BSP Zigbee 3.0 | Activ |
| 6 | Irigații Față Casă | Priză smart (Iritrol reparat) | Pregătit, dezactivat |
Zona 1 are două durate configurabile: normală și caniculă — mai lungă, activată automat când prognoza indică ≥3 zile cu maxime de peste 30°C în săptămâna următoare.
Planificarea automată
Fiecare zonă are o automatizare de schedule zilnic cu mai multe moduri selectabile din interfață:
- Zile fixe — Lun+Joi, Mar+Joi+Sâm, Lun+Mie+Vin sau zilnic
- Interval — o dată la X zile, bazat pe data ultimei irigări stocate în
input_datetime - Dezactivat — oprire completă a schedule-ului pentru zona respectivă
Modul Interval e util pentru zone ca picuratorul sau copacii — nu au nevoie de ritmicitate fixă, ci de un interval minim între udări.
Bilanțul hidric — de unde vine valoarea reală
Acesta e miezul sistemului. Știind că gazonul consumă 0.4 L/m²/minut (măsurat cu testul casoletei — pui o cutie pe gazon în timpul irigării și măsori câți mm s-au acumulat în X minute), poți calcula exact cât udă sistemul per săptămână și cât ar trebui să ude în funcție de temperatură.

Formula necesarului e deliberat simplă:
necesar_saptamanal [L/m²] = temperatura_medie_maxime_7_zile [°C]
Calibrare: la 30°C medii → 30 L/m²/săptămână. E o aproximare, dar una care funcționează în practică — temperatura maximă e cel mai bun proxy simplu pentru evapotranspirație fără senzori de umiditate sol.
Zilnic la 07:00, o automatizare apelează weather.get_forecasts (Met.no, integrat nativ în HA) și calculează media maximelor zilnice pe 7 zile. Duminică seara la 21:00, verifică dacă săptămâna viitoare are caniculă (≥3 zile cu maxime ≥30°C).
Procentul acoperit — câte procente din necesarul calculat e acoperit de programul curent — e afișat în dashboard cu un gauge 0–150% per zonă de gazon.
Auto-ajustarea duratelor
Pasul următor față de simpla afișare a bilanțului: sistemul recalculează automat duratele de irigare la frecvența configurată (săptămânal, la 2 săptămâni sau lunar) pentru a menține bilanțul la ~100%.
durata [min/sesiune] = temperatura_medie_maxime / sesiuni_pe_sapt / debit_L_mp_min
Exemplu — Gazon Paul la 28°C, Lun+Joi, debit 0.4:
→ 28 / 2 / 0.4 = 35 min/sesiune
La 20°C:
→ 20 / 2 / 0.4 = 25 min/sesiune
Duratele au clamping per zonă (gazonul între 1–59 min, copacii între 5–120 min, picuratorul între 5–180 min) și pot fi activate/dezactivate individual per zonă. Zona 1 calculează și durata de caniculă cu un factor ×1.3.
Rezultat practic: vara, când temperaturile cresc, duratele cresc automat luni dimineața fără nicio intervenție manuală. Toamna, scad.
Dashboard-ul — 3 pagini responsive
Construit cu custom:layout-card și custom:button-card (HACS), responsive pe desktop, tabletă și telefon:
- Pagina 1 — Control: butoane Start/Stop per zonă, timp total azi, toggle caniculă, grafic activitate ultimele 48h
- Pagina 2 — Bilanț Hidric: gauge per zonă de gazon, deficit sau exces față de necesar
- Pagina 3 — Configurare: ore start, durate, program, interval, debit măsurat, toggle auto-ajustare per zonă
O notă tehnică: today_duration din Irrigation Unlimited trackează doar sesiunile din schedule-urile native IU. Deoarece sistemul folosește manual_run din automatizări HA, today_duration rămâne 0. Soluția: senzori history_stats care citesc direct din istoricul HA, indiferent de modul de pornire al zonei.

Instalare rapidă
- Instalează din HACS: Irrigation Unlimited, button-card, layout-card
- Copiază
packages/irigatie.yamlîn<config>/packages/ - Activează packages în
configuration.yaml:homeassistant: packages: !include_dir_named packages - Înlocuiește entity ID-urile switch-urilor cu ale tale în secțiunea
irrigation_unlimited: - Restart complet HA (nu doar reload —
input_numbercumode: boxnecesită restart) - Calibrează debitul cu testul casoletei și setează
input_number.zona_N_litri_mp_minut
Ce urmează
Compensare precipitații — datele sunt disponibile din același weather.get_forecasts (atributul precipitation per zi). Formula ar deveni necesar_ajustat = max(0, necesar - precipitatii_prognozate_mm). Dacă plouă marți, sistemul scade automat durata de joi.
Notificări push — când bilanțul hidric scade sub 70%, când caniculă se activează automat sau când auto-ajustarea modifică o durată cu mai mult de 10 minute.
Zona 6 (Gazon Față Casă) e deja pregătită în cod — entități, automatizări, bilanț hidric — dar dezactivată (enabled: false) până când switch-ul fizic e instalat.
Asta e primul meu proiect / repo pe Github aici: ha-irigatii