NeverDry

NeverDry

Your garden tells you when it's thirsty. NeverDry listens — and makes sure the valve always closes.

Tests Coverage Release HACS
GitHub Repository Documentation
If NeverDry is useful to you, leave a ⭐ on GitHub — it helps others find the project.

What NeverDry does for you

🌡️

Knows when your garden is thirsty

Tracks evaporation and rainfall day by day. When the soil deficit crosses your threshold, NeverDry opens the valve for exactly as long as needed — no fixed timers, no guessing.

🛡️

The valve always closes

If a valve doesn't respond after three attempts, NeverDry blocks that zone and shows a warning on your dashboard. Three independent safety mechanisms make sure water can't run indefinitely.

🌱

Each plant gets its own schedule

Lawn, roses, citrus, succulents — 10 plant profiles with seasonal variation. Your lawn drinks more in July than your lavender ever will. NeverDry handles that automatically.

📊

Zones are independent

The rose bed and the lawn dry out at different rates. Each zone tracks its own soil water deficit separately — no more one-schedule-fits-all.

🌧️

Skips irrigation after rain

NeverDry tracks exactly how much rain fell and subtracts it from the deficit automatically. No more watering the day after a storm.

🖐️

Grabbed the hose? Just tell NeverDry

Open the valve manually, use the physical button, or water by hand — "Mark as irrigated" keeps the deficit accurate no matter how you watered.

💧

Water from anywhere

Dashboard button, automation, scheduler, physical valve — NeverDry always tracks what happened and updates the deficit accordingly.

⚙️

Set up from the UI

No YAML files. Configure zones, plants, valves, and thresholds directly from the Home Assistant interface.

🔄

Update in one click

HACS notifies you when a new version is available. One click, restart HA — your settings and history are always preserved.

📡

Works without valves too

No hardware? NeverDry sends you a notification when watering is needed and by how much. Monitoring mode with zero hardware requirements.

🌍

Metric & imperial

All sensors declare the correct Home Assistant device class — deficit in mm or inches, volumes in litres or gallons, flow rate in L/min or gal/min. Units follow your HA system preference automatically.

How It Works

NeverDry keeps track of how much water your soil has lost to heat and evaporation, and how much it got back from rain. The difference is the soil water deficit — how thirsty your garden is.

1 mm of deficit = 1 litre of water needed per square metre

When the deficit crosses your threshold, NeverDry opens the valve for exactly as long as needed to fill it back up. When it rains, the deficit drops automatically. After irrigation, it resets. Plants that drink more in summer get a higher multiplier — so the lawn and the lavender each get the right amount, without any manual adjustment.

For the technically curious, the full water balance formula is in the README.

Plant Families

FamilyWinterSpringSummerAutumn
Lawn / Turf grass0.450.851.000.70
Vegetables0.300.701.100.50
Fruit trees0.350.700.950.55
Ornamental shrubs0.400.650.800.55
Herbs (Mediterranean)0.300.550.700.40
Citrus / Evergreen0.600.650.700.65
Roses0.350.750.950.55
Succulents / Cacti0.150.250.350.20
Native ground cover0.250.450.550.35
Mixed garden0.400.700.900.55

Want a more detailed drip irrigation setup? Use NeverDry Planner to calculate the irrigated area and the Kc value to copy directly into NeverDry.

Installation

Install directly from HACS — one click:

Open your Home Assistant instance and open NeverDry in HACS.

Via HACS (manual steps)

  1. Open HACS → Integrations
  2. Search for NeverDry and click Install
  3. Restart Home Assistant
  4. Go to Settings → Devices & Services → Add Integration → NeverDry

Manual

  1. Download the latest never_dry.zip from Releases and extract it
  2. Copy custom_components/never_dry/ to your HA config directory
  3. Restart Home Assistant
  4. Add the integration from the UI

What's new in v0.10.2

Released 2026-06-24

Full release notes on GitHub →

v0.10.1 — 2026-06-21
  • Fahrenheit temperature input — NeverDry now auto-converts °F→°C when your HA system is configured in imperial units; no template sensor needed.
v0.10.0 — 2026-06-20
  • Metric & imperial units — all sensors now declare the proper HA device class; deficit, volume, flow rate, and ET rate convert automatically to your system preference.
  • never_dry.set_deficit service — set the water deficit of one zone (or all zones) to an arbitrary mm value; useful for manual calibration and testing.
  • Controller reload reliability — eliminated duplicate controller instances after HA reload; graceful shutdown ensures the valve closes and session data is saved before a new instance starts.
  • No more spurious notifications — fixed "Manual irrigation detected" false alarm when NeverDry itself closes a valve; fixed CRITICAL alert firing even when valve recovery succeeds.
  • Config flow guard — saving zone settings without actual changes no longer triggers an unnecessary integration reload.

Get Help

Questions about setup or behaviour? Join the conversation.

🐛 GitHub Issues 💬 HA Community

Support the Project

If NeverDry saves your garden and your water bill, consider a one-time donation:

☕ Support on Ko-fi

Disclaimer

NeverDry is a hobby project for residential use. It is not certified for agricultural, commercial, or safety-critical applications. The ET model is a simplification of the FAO-56 standard and is not a substitute for professional agronomic advice. Always monitor your irrigation system. The authors accept no liability for any damage or loss.

Acknowledgments

Developed by drake69 with AI assistance (Claude by Anthropic).

Scientific References