Files
EVOLV/wiki/Home.md
znetsixe 3bfb9833c0 P9.3: parent EVOLV wiki Home + Archive + bump submodule pointers
wiki/Home.md (new) — platform landing page per WIKI_HOME_TEMPLATE.md.
Mermaid block of 11 active EVOLV nodes coloured by S88 level, navigation
grouped by level, standards-pointer table, live refactor-status table.

wiki/Archive.md (new) — empty archive table for retired wiki pages.

Submodule pointer bumps (all wiki/Home.md + wiki:* npm scripts):
  measurement          42a0333 → 2aa8021
  machineGroupControl  bb2f3be → 045a941
  rotatingMachine      e058fe9 → 9e8463b
  valve                e27135b → 8aa5b5e
  valveGroupControl    e02cd1a → c44d595
  diffuser             15cfb22 → 9122b14
  monster              2a6a0bc → 2a82b7d
  settler              b8247fc → 6953d64
  reactor              7bf464b → d931bea
  dashboardAPI         92d7eba → 67a374f

Every node now has a visual-first wiki Home page with auto-generated
topic contract + data model. Per-node `npm run wiki:all` re-generates
the AUTOGEN blocks from src/commands/ + src/specificClass.js.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:18:05 +02:00

5.7 KiB

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

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.
Unit machineGroupControl Load-sharing across a group of rotatingMachines.
Unit valveGroupControl Coordinated valve control across a group of valves.
Unit reactor Bioreactor — couples diffuser + measurements + ASM kinetics.
Unit settler Settler / clarifier modelling.
Unit monster Composite-sample sensor surrogate / multi-parameter monitor.
Equipment rotatingMachine Single pump / compressor — curves, state machine, prediction.
Equipment valve Single valve actuator with FSM.
Equipment diffuser Aeration diffuser, gas-side modelling.
Control Module measurement Sensor signal-conditioning, scaling, calibration.
Utility dashboardAPI Bridge between EVOLV nodes and Grafana dashboard upserts.

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 developmentmain done
8.5 Remove deprecated paths in generalFunctions done
9 Wiki cleanup — visual-first template + per-node Home pages 🟡 partial (pumpingStation + dashboardAPI landed; 9 nodes to go)
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.