Irigatii smart cu Home Assistant, Tuya si Sonoff

Totul a pornit de la un programator Hunter cu 2 zone care functiona de ani buni. Simplu, not smart, fiabil — dar limitat. Cand am avut nevoie de inca doua zone (picuratoare) si de control pe WiFi, l-am inlocuit cu un switch Tuya de 4 canale cumparat cu sub 100 RON de pe aliexpress. A mers excelent.

Intre timp a aparut nevoia de o a cincea zona — inca un un picurator pe gradina — rezolvata cu un Sonoff SWV-BSP, o electrovalva inteligenta pentru apa cu Zigbee 3.0 integrata in HA prin Zigbee. Tocmai cand credeam ca e gata, s-a stricat un Iritrol Life DC de la aspersoarele din fata casei: consuma bateria in 1-2 saptamani, indiferent ce faceam. Solutia: am tras fir, am schimbat solenoidul si l-am conectat la o priza smart. Zona 6 e pregatita in cod, asteptand switch-ul fizic definitiv.

Trei lumi diferite — Tuya WiFi, Zigbee 3.0 si o priza smart — fara nicio legatura intre ele la nivel de protocol. Exact genul de situatie in care Home Assistant straluceste: le unesti pe toate intr-un singur sistem, cu logica comuna.

Dar automatizarea de baza — porneste zona X la ora Y — e banala. Ceea ce m-a interesat a fost sa adaug valoare reala: stiam din masuratori ca apersoarele mele dau 0.4 L/m²/minut. De acolo a venit ideea: daca stiu debitul si stiu temperatura prognozata, pot calcula exact cat trebuie sa ud si pot ajusta duratele automat la inceputul fiecarei saptamani sau luni.

Hardware folosit

Setup-ul fizic e deliberat ieftin si simplu:

  • Tuya TYWB 4ch-RF — controleaza zonele 1–4: Gazon Paul, Gazon Anca, Lateral Gradina, Copacii. Input AC/DC 7-32V/USB 5V, 10A per canal, 16A total, WiFi 2.4GHz + Bluetooth + 433MHz RF. Integrat in HA prin integrarea Tuya nativa.
  • Sonoff SWV-BSP — Electrovalva inteligenta pentru apa, Zigbee 3.0 — zona 5, picuratorul din gradinita. Controleaza direct fluxul de apa, integrata in HA prin Zigbee.
  • Priza smart (zona 6, placeholder) — pentru Iritrol-ul stricat: solenoid nou pe 24vAC, fir tras, priza smart pana la o solutie mai eleganta.

Total hardware pentru 5 zone active: sub 200 RON. Programatorul Hunter original costa mai mult si nu putea face jumatate din ce face sistemul actual. Cel iritrol life dc… 2 zone… doar 900 lei.

Arhitectura in Home Assistant

Sistemul foloseste Irrigation Unlimited (HACS) ca motor de control al zonelor — nu pentru schedule-urile lui native, ci pentru comenzile manual_run si cancel pe care le apeleaza automatizarile HA.

De ce aceasta abordare si nu schedule-urile native IU? Pentru ca avem nevoie de durate dinamice — calculate in functie de temperatura si debit — care se schimba saptamanal. Schedule-urile IU sunt statice prin natura. Automatizarile HA cu manual_run permit transmiterea duratei calculate la momentul rularii.

ha-irigatii/
├── packages/
│   └── irigatie.yaml        # Entitati, automatizari, senzori
└── lovelace/
    └── irigatie_dashboard.yaml  # Dashboard cu 3 pagini

Zonele de irigatii

NrZonaHardwareStatus
1Gazon PaulTYWB 4ch-RF canal 1Activ
2Gazon AncaTYWB 4ch-RF canal 2Activ
3Lateral GradinaTYWB 4ch-RF canal 3Activ
4CopaciiTYWB 4ch-RF canal 4Activ
5Picurator GradinaSonoff SWV-BSP Zigbee 3.0Activ
6Irigatii Fata CasaPriza smart (Iritrol reparat)Pregatit, dezactivat

Zona 1 are doua durate configurabile: normala si canicula — mai lunga, activata automat cand prognoza indica ≥3 zile cu maxime de peste 30°C in saptamana urmatoare.

Planificarea automata

Fiecare zona are o automatizare de schedule zilnic cu mai multe moduri selectabile din interfata:

  • Zile fixe — Lun+Joi, Mar+Joi+Sam, Lun+Mie+Vin sau zilnic
  • Interval — o data la X zile, bazat pe data ultimei irigari stocate in input_datetime
  • Dezactivat — oprire completa a schedule-ului pentru zona respectiva

Modul Interval e util pentru zone ca picuratorul sau copacii — nu au nevoie de ritmicitate fixa, ci de un interval minim intre udari.

Bilantul hidric — de unde vine valoarea reala

Acesta e miezul sistemului. Stiind ca gazonul consuma 0.4 L/m²/minut (masurat cu testul casoletei — pui o cutie pe gazon in timpul irigarii si masori cati mm s-au acumulat in X minute), poti calcula exact cat uda sistemul per saptamana si cat ar trebui sa ude in functie de temperatura.

Formula necesarului e deliberat simpla:

necesar_saptamanal [L/m²] = temperatura_medie_maxime_7_zile [°C]

Calibrare: la 30°C medii → 30 L/m²/saptamana. E o aproximare, dar una care functioneaza in practica — temperatura maxima e cel mai bun proxy simplu pentru evapotranspiratie fara senzori de umiditate sol.

Zilnic la 07:00, o automatizare apeleaza weather.get_forecasts (Met.no, integrat nativ in HA) si calculeaza media maximelor zilnice pe 7 zile. Duminica seara la 21:00, verifica daca saptamana viitoare are canicula (≥3 zile cu maxime ≥30°C).

Procentul acoperit — cate procente din necesarul calculat e acoperit de programul curent — e afisat in dashboard cu un gauge 0–150% per zona de gazon.

Auto-ajustarea duratelor

Pasul urmator fata de simpla afisare a bilantului: sistemul recalculeaza automat duratele de irigare la frecventa configurata (saptamanal, la 2 saptamani sau lunar) pentru a mentine bilantul 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 zona (gazonul intre 1–59 min, copacii intre 5–120 min, picuratorul intre 5–180 min) si pot fi activate/dezactivate individual per zona. Zona 1 calculeaza si durata de canicula cu un factor ×1.3.

Rezultat practic: vara, cand temperaturile cresc, duratele cresc automat luni dimineata fara nicio interventie manuala. Toamna, scad.

Dashboard-ul — 3 pagini responsive

Construit cu custom:layout-card si custom:button-card (HACS), responsive pe desktop, tableta si telefon:

  • Pagina 1 — Control: butoane Start/Stop per zona, timp total azi, toggle canicula, grafic activitate ultimele 48h
  • Pagina 2 — Bilant Hidric: gauge per zona de gazon, deficit sau exces fata de necesar
  • Pagina 3 — Configurare: ore start, durate, program, interval, debit masurat, toggle auto-ajustare per zona

O nota tehnica: today_duration din Irrigation Unlimited trackeaza doar sesiunile din schedule-urile native IU. Deoarece sistemul foloseste manual_run din automatizari HA, today_duration ramane 0. Solutia: senzori history_stats care citesc direct din istoricul HA, indiferent de modul de pornire al zonei.

Instalare rapida

  1. Instaleaza din HACS: Irrigation Unlimited, button-card, layout-card
  2. Copiaza packages/irigatie.yaml in <config>/packages/
  3. Activeaza packages in configuration.yaml: homeassistant: packages: !include_dir_named packages
  4. Inlocuieste entity ID-urile switch-urilor cu ale tale in sectiunea irrigation_unlimited:
  5. Restart complet HA (nu doar reload — input_number cu mode: box necesita restart)
  6. Calibreaza debitul cu testul casoletei si seteaza input_number.zona_N_litri_mp_minut

Ce urmeaza

Compensare precipitatii — datele sunt disponibile din acelasi weather.get_forecasts (atributul precipitation per zi). Formula ar deveni necesar_ajustat = max(0, necesar - precipitatii_prognozate_mm). Daca ploua marti, sistemul scade automat durata de joi.

Notificari push — cand bilantul hidric scade sub 70%, cand canicula se activeaza automat sau cand auto-ajustarea modifica o durata cu mai mult de 10 minute.

Zona 6 (Gazon Fata Casa) e deja pregatita in cod — entitati, automatizari, bilant hidric — dar dezactivata (enabled: false) pana cand switch-ul fizic e instalat.

Asta e primul meu proiect / repo pe Github aici: ha-irigatii

Lasă un comentariu

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.