Skip to content

docs: the valve coordinator is an entry of its own, and stays general - #339

Merged
drake69 merged 4 commits into
developfrom
docs/valve-coordinator-entry
Oct 11, 2026
Merged

drake69 merged 4 commits into
developfrom
docs/valve-coordinator-entry

Conversation

@drake69

@drake69 drake69 commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator

Design only, no code, plus a README units fix.

The valve coordinator is an entry of its own

The coordinator was a board name typed or created in the zone form: the shape the water network had just left, and for the same reason it moves. A coordinator holds zones of several Environments, so its limit cannot live in any one of them, and a name typed in two forms can split one coordinator in two.

  • There are now three entry types: Environment, water network and valve coordinator.
  • A valve coordinator holds a name and how many zone valves may be open at once, declared net of the master. As a rule of thumb, one coordinator per transformer.
  • Each zone names the network it draws from and the coordinator its valve is counted on. The two are independent: water on one side, valves open at once on the other.

General, not a model of any controller

The coordinator holds one number, whatever imposes it: a 24 VAC transformer, a controller that runs one station at a time, a relay module with an interlock, a cloud service that accepts one run per device. NeverDry does not model the device behind it. A property that belongs to one brand of controller stays in that controller's integration, or is expressed through the entities Home Assistant already exposes.

Defaults, mirroring the network's

Case Behaviour
No coordinator declared Each Environment entry has an implicit virtual coordinator, limit 1 (today's behaviour)
A zone names no coordinator Its valve is counted on the virtual one
A coordinator is removed Its zones return to the virtual one; the form names them before confirming
A zone's coordinator is not loaded The zone does not start until it answers
A zone watered by hand Names no coordinator

README units

  • The zone rain row named sensor.<zone>_rain in mm; the entity is rain_yearly, in litres (yearly rain in mm times the zone's area).
  • The unit-system paragraph said Home Assistant converts flow rates; it does not, and NeverDry picks L/h or gal/h itself.
  • Area and threshold now state their imperial unit.

Files: docs/design_domain_object_model.md (UML regenerated), docs/design/scheduler.md (still Draft), docs/VISION.md, README.md.

Refs #320, #239

…twork

The board was a name typed or created in the zone form: the shape the
water network had just left, and for the same reason it moves. A board
drives zones of several Environments, so its limit cannot live in any
one of them, and a name typed in two forms can split one board in two.

There are now three entry types: Environment, water network and valve
board. A valve board entry holds a name and how many zone valves the
board can hold open at once, declared net of the master. Each zone
names the network it draws from and the board its valve is wired to;
the two are independent, water on one side and current on the other.

The defaults mirror the network's, each the safe one: with no board
declared, every Environment entry has an implicit virtual board, limit
1, which is today's behaviour; a zone naming none is counted there;
zones of a removed board return to it, named by the form before the
removal; a zone whose board is not loaded does not start until it
answers. A zone watered by hand names no board.

Refs #320, #239
"Valve board" names a piece of hardware, and the entry is not one: it
holds a single number, how many valves may be open at once, whatever
imposes it. The entry, the zone field and the defaults are now named
after the coordinator; "board (transformer)" stays only where the text
means the physical part. As a rule of thumb, one coordinator per
transformer.

The coordinator models no particular controller: a 24 VAC transformer,
a controller that runs one station at a time, a relay module with an
interlock and a cloud service that accepts one run per device all
reduce to the same declared limit. A property that belongs to one brand
of controller stays in that controller's integration, or is expressed
through the entities Home Assistant already exposes.

Refs #320
The zone rain row named a sensor that does not exist in mm: the entity
is Rain Yearly, in litres, the yearly rain in mm times the zone's area.
The unit-system paragraph said Home Assistant converts every unit,
flow rate included; it does not convert flow rates between unit
systems, and NeverDry picks L/h or gal/h itself from the same setting.
Area and threshold now state their imperial unit, as the flow rate row
already did.
@codecov

codecov Bot commented Oct 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@drake69
drake69 merged commit c7cfe31 into develop Oct 11, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant