Skip to content

Direction check: cycle/soak scheduling, queueing, well gate, and Hydrawise adapter #74

Description

@fpytloun

Hi, first of all: I like this project. It looks clean, test-heavy, and much more maintainable than the YAML-based smart irrigation controller I currently run in Home Assistant.

I am considering replacing my current setup with NeverDry, but I am missing a few capabilities. I would be happy to contribute them if they fit the direction of the project. Before starting a larger PR, I wanted to check whether these ideas make sense upstream.

1. Cycle / soak scheduling

My current controller does not run one long irrigation pass. It splits watering into cycles and lets water soak in between runs.

Example:

  • lawn: 5 cycles × 6 min per zone
  • terrace bed: 3 cycles × 1 min
  • minimum soak time per zone, e.g. 15 min

The important part is that soak time should be smart: time spent watering other zones, waiting for a pump/well to recover, or waiting in the queue should all count toward soak time.

This helps avoid runoff and local puddles, especially on clay soil or sloped/uneven areas.

2. Queue / scheduler behavior

It would be useful to have a real queue/scheduler rather than treating an irrigation run as one blocking operation.

What I would need:

  • scheduled/manual/reactive jobs can queue behind each other
  • the scheduler picks the next eligible zone segment
  • a zone is eligible only if its soak time has elapsed
  • overlapping schedules should queue, not overwrite or disappear

This would also make cycle/soak behavior much easier to reason about.

3. Pump / well recovery gate

My irrigation is limited by a well. I currently pause irrigation below one threshold and resume above another, for example:

  • pause below 55%
  • resume above 90%

Waiting for the well should not reset the irrigation job. It should simply pause the scheduler, and the elapsed time should count as soak time.

I think this could be generic: any HA sensor + pause/resume thresholds, not specifically a well integration.

4. Actuator abstraction / Hydrawise adapter

Another thing I would like to explore is a direct Hydrawise adapter.

Instead of relying only on Home Assistant's Hydrawise integration, NeverDry could have a cleaner actuator abstraction, for example:

  • HA switch actuator
  • MQTT actuator
  • Hydrawise API actuator

For Hydrawise, the adapter could start a zone, poll state, and fetch actual runtime/water metrics if available. That would make delivery accounting much more reliable than relying only on estimated runtime.

Question

Would these fit the intended direction of NeverDry?

If yes, I can start with a smaller architectural PR first, probably one of:

  1. actuator abstraction while keeping current switch behavior unchanged
  2. queue/scheduler model
  3. pump/well gate
  4. cycle/soak scheduling

I would prefer to contribute this properly upstream and share with others rather than continue growing a private YAML controller or making my own integration if the direction makes sense here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions