- Archived 20 pre-refactor pages to wiki/Archive/ with standard banners:
- All 6 architecture/ pages (old _loadConfig/_setupSpecificClass internals,
pre-refactor S88 hierarchy, deployment blueprint)
- All 3 sessions/ logs (Apr-07 + Apr-13 session summaries)
- findings/open-issues-2026-03.md (issues 1-5 all resolved by refactor)
- concepts/generalfunctions-api.md (missing BaseDomain/BaseNodeAdapter)
- concepts/sources-readme.md (empty PDF placeholder, never populated)
- manuals/nodes/rotatingMachine.md + measurement.md (superseded by per-repo wikis)
- Top-level SCHEMA.md, index.md, log.md, metrics.md, overview.md,
knowledge-graph.yaml (all Apr-07 snapshot, pre-refactor)
- Kept wiki/concepts/ domain pages (ASM, PID, pump-affinity, settling, etc.)
- Kept wiki/findings/ proven results (BEP, NCog, curve-non-convexity, stability)
- Kept wiki/manuals/node-red/* (FlowFuse + Node-RED runtime docs, still current)
- Kept wiki/tools/* (utility scripts)
- Updated wiki/Archive.md index with 20 rows
- Fixed wiki/Home.md: Tier 6 was wrongly marked done; corrected to pending;
Tier 9 updated to reflect 2026-05-11 in-progress wave
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
102 lines
5.7 KiB
Markdown
102 lines
5.7 KiB
Markdown
# EVOLV — Wastewater treatment plant automation
|
|
|
|
> **Reflects code as of `afc304b` · regenerated `2026-05-11` via `npm run wiki:home`**
|
|
|
|
EVOLV is a Node-RED node library for wastewater plant automation, developed by the R&D team at Waterschap Brabantse Delta. Nodes follow the ISA-88 (S88) batch control standard. The library exposes 11 active nodes spanning four S88 levels — from Process Cell down to Control Module — plus one utility node for dashboard integration.
|
|
|
|
## Platform overview
|
|
|
|
```mermaid
|
|
flowchart TB
|
|
subgraph PC["Process Cell"]
|
|
ps[pumpingStation]:::pc
|
|
end
|
|
subgraph UN["Unit"]
|
|
mgc[machineGroupControl]:::unit
|
|
vgc[valveGroupControl]:::unit
|
|
reactor[reactor]:::unit
|
|
settler[settler]:::unit
|
|
monster[monster]:::unit
|
|
end
|
|
subgraph EM["Equipment"]
|
|
rm[rotatingMachine]:::equip
|
|
v[valve]:::equip
|
|
diff[diffuser]:::equip
|
|
end
|
|
subgraph CM["Control Module"]
|
|
meas[measurement]:::ctrl
|
|
end
|
|
subgraph UT["Utility"]
|
|
dash[dashboardAPI]:::neutral
|
|
end
|
|
ps --> mgc
|
|
ps --> vgc
|
|
mgc --> rm
|
|
vgc --> v
|
|
reactor --> diff
|
|
meas -.data.-> rm
|
|
meas -.data.-> v
|
|
meas -.data.-> reactor
|
|
meas -.data.-> settler
|
|
classDef pc fill:#0c99d9,color:#fff
|
|
classDef unit fill:#50a8d9,color:#000
|
|
classDef equip fill:#86bbdd,color:#000
|
|
classDef ctrl fill:#a9daee,color:#000
|
|
classDef neutral fill:#dddddd,color:#000
|
|
```
|
|
|
|
S88 colours: Process Cell `#0c99d9`, Unit `#50a8d9`, Equipment `#86bbdd`, Control Module `#a9daee`. Solid arrow = parent/child relationship. Dashed arrow = data flow (`measurement` feeds many node types). Source of truth: `.claude/rules/node-red-flow-layout.md` §14.
|
|
|
|
## Live nodes
|
|
|
|
| S88 | Node | One-liner | Wiki |
|
|
|---|---|---|---|
|
|
| Process Cell | **pumpingStation** | Manages a wet-well basin, hands demand to one or more group controllers. | [→](https://gitea.wbd-rd.nl/RnD/pumpingStation/wiki/Home) |
|
|
| Unit | **machineGroupControl** | Load-sharing across a group of rotatingMachines. | [→](https://gitea.wbd-rd.nl/RnD/machineGroupControl/wiki/Home) |
|
|
| Unit | **valveGroupControl** | Coordinated valve control across a group of valves. | [→](https://gitea.wbd-rd.nl/RnD/valveGroupControl/wiki/Home) |
|
|
| Unit | **reactor** | Bioreactor — couples diffuser + measurements + ASM kinetics. | [→](https://gitea.wbd-rd.nl/RnD/reactor/wiki/Home) |
|
|
| Unit | **settler** | Settler / clarifier modelling. | [→](https://gitea.wbd-rd.nl/RnD/settler/wiki/Home) |
|
|
| Unit | **monster** | Composite-sample sensor surrogate / multi-parameter monitor. | [→](https://gitea.wbd-rd.nl/RnD/monster/wiki/Home) |
|
|
| Equipment | **rotatingMachine** | Single pump / compressor — curves, state machine, prediction. | [→](https://gitea.wbd-rd.nl/RnD/rotatingMachine/wiki/Home) |
|
|
| Equipment | **valve** | Single valve actuator with FSM. | [→](https://gitea.wbd-rd.nl/RnD/valve/wiki/Home) |
|
|
| Equipment | **diffuser** | Aeration diffuser, gas-side modelling. | [→](https://gitea.wbd-rd.nl/RnD/diffuser/wiki/Home) |
|
|
| Control Module | **measurement** | Sensor signal-conditioning, scaling, calibration. | [→](https://gitea.wbd-rd.nl/RnD/measurement/wiki/Home) |
|
|
| Utility | **dashboardAPI** | Bridge between EVOLV nodes and Grafana dashboard upserts. | [→](https://gitea.wbd-rd.nl/RnD/dashboardAPI/wiki/Home) |
|
|
|
|
Plus the shared library `generalFunctions` — not a Node-RED node itself; provides `BaseDomain`, `BaseNodeAdapter`, `ChildRouter`, `UnitPolicy`, `MeasurementContainer`, command registry, logger, and config manager.
|
|
|
|
## Standards & conventions
|
|
|
|
| Document | What it covers | Where |
|
|
|---|---|---|
|
|
| Node architecture (3-tier) | entry → nodeClass → specificClass | `.claude/rules/node-architecture.md` |
|
|
| Flow layout (Node-RED tabs) | Tab boundaries, lanes, S88 colours, link channels | `.claude/rules/node-red-flow-layout.md` |
|
|
| Telemetry (Port 0/1/2) | InfluxDB line protocol, cardinality, FlowFuse compatibility | `.claude/rules/telemetry.md` |
|
|
| generalFunctions stability | What's safe to change in the shared lib | `.claude/rules/general-functions.md` |
|
|
| repo-mem MCP usage | When to use `repo_search` / `repo_record_fix` instead of grep | `.claude/rules/repo-mem.md` |
|
|
| Refactor goals + tiers | Why the refactor exists, sequencing | `.claude/refactor/README.md` |
|
|
| Code conventions | Style, file size, comments, naming, imports, tests | `.claude/refactor/CONVENTIONS.md` |
|
|
| Contracts | `BaseNodeAdapter`, `BaseDomain`, commands registry, child router, unit policy, status badge, output ports | `.claude/refactor/CONTRACTS.md` |
|
|
| Module split | Per-node `src/` layout for the 4 core nodes + generic template | `.claude/refactor/MODULE_SPLIT.md` |
|
|
| Wiki per-node template | The 14-section page shape | `.claude/refactor/WIKI_TEMPLATE.md` |
|
|
| Wiki home + archive | This page's template | `.claude/refactor/WIKI_HOME_TEMPLATE.md` |
|
|
|
|
## Refactor status
|
|
|
|
| Tier | What | Status |
|
|
|---|---|---|
|
|
| 1 | Add infra in `generalFunctions` (additive only) | ✅ done |
|
|
| 2 | Pilot: pumpingStation end-to-end on new infra | ✅ done |
|
|
| 3 | Convert measurement, MGC, rotatingMachine | ✅ done |
|
|
| 4 | Convert valve, VGC, reactor, settler, monster, diffuser, dashboardAPI | ✅ done |
|
|
| 5 | Canonical topic names + alias deprecation map | ✅ done |
|
|
| 6 | Promote `development` → `main` | ⏳ pending Docker E2E sign-off + human review |
|
|
| 8.5 | Remove deprecated paths in `generalFunctions` | ✅ done |
|
|
| 9 | Wiki cleanup — visual-first template + per-node Home pages | 🟡 in progress (per-node rewrites landing 2026-05-11; parent-repo wiki audit this wave) |
|
|
| 10 | Test-suite refactor across all nodes | ⏳ in progress |
|
|
| — | pumpingStation Docker E2E (P2.14) | ⏳ pending |
|
|
|
|
## Archive
|
|
|
|
Pre-refactor pages live under `Archive/`. See [Archive index](Archive).
|