e15f402d4727d40976ce4f3d43def4f461d98349
Each node's wiki now matches the rotatingMachine reference: Home +
Reference-{Architecture,Contracts,Examples,Limitations} + _Sidebar.
Total ≈ 9 000 lines of wiki content. Topic-contract and data-model
sections wrapped in <!-- BEGIN AUTOGEN --> markers for the future
wiki-gen tool.
Each agent surfaced real source-vs-spec drift rather than inventing
content:
- measurement: digital-mode notifyOutputChanged path uncertain;
buildDomainConfig drops several editor fields; position case
preserved by child.register payload
- valve: flowController gates by source only (action allow-list dead);
no enter/exit maintenance sequences; sequence-abort token status TBD
- reactor: timeStep unit confusion (HTML s, schema h, engine /86400);
X_A default disagreement (0.001 vs 200 mg/L); doesn't honour the
canonical-unit rule (m³/d not m³/s, °C not K)
- valveGroupControl: 4 CONTRACT/source drifts incl. set.mode covers
4 modes not 2, calculationMode + mode.allowedActions dead config,
maintenance source allow-list undefined
- settler: icon colour #e4a363 conflicts S88 Unit #50a8d9; Port 2
emits null in _emitOutputs (init-only registration)
- diffuser: stale test/README claiming "no runtime" — runtime exists
(284-line specificClass with full OTR/ΔP model); update README
- monster: superproject docs frame as multi-parameter biological
monitor (NH4/NO3/COD/TSS), but source emits only volumetric pulse +
bucket state; 4 example flows referenced but missing on disk
- dashboardAPI: dashboardapi.{js,html} lowercase entry vs folder
convention; logging.enabled default mismatch (false vs true)
- generalFunctions: full library API restructure preserved; module
map + consumer graph + extension examples retained
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EVOLV — Edge-Layer Evolution for Optimized Virtualization
Node-RED custom nodes package voor de automatisering van afvalwaterzuiveringsinstallaties. Ontwikkeld door het R&D-team van Waterschap Brabantse Delta. Volgt de ISA-88 (S88) batch control standaard.
Nodes
| Node | Functie | S88-niveau |
|---|---|---|
| rotatingMachine | Individuele pomp/compressor/blower aansturing | Equipment |
| machineGroupControl | Multi-pomp optimalisatie (BEP-Gravitation) | Unit |
| pumpingStation | Pompgemaal met hydraulische context | Unit |
| valve | Individuele klep modellering | Equipment |
| valveGroupControl | Klep groep coordinatie | Unit |
| reactor | Biologische reactor (ASM kinetiek) | Unit |
| settler | Nabezinker / slibscheiding | Unit |
| monster | Multi-parameter biologische monitoring | Equipment |
| measurement | Sensor signaalconditionering | Control Module |
| diffuser | Beluchting aansturing | Equipment |
| dashboardAPI | InfluxDB telemetrie + FlowFuse dashboards | — |
| generalFunctions | Gedeelde bibliotheek (predict, PID, convert, etc.) | — |
Architectuur
Elke node volgt een drie-lagen patroon:
- Entry file (
<naam>.js) — registratie bij Node-RED, admin endpoints - nodeClass (
src/nodeClass.js) — Node-RED adapter (tick loop, routing, status) - specificClass (
src/specificClass.js) — pure domeinlogica (fysica, toestandsmachines)
Drie output-poorten per node: Port 0 = procesdata, Port 1 = InfluxDB telemetrie, Port 2 = registratie/besturing.
Installatie
git clone --recurse-submodules https://gitea.wbd-rd.nl/RnD/EVOLV.git
cd EVOLV
npm install
Submodules updaten:
git submodule update --remote --merge
Enkel bouwblok installeren in Node-RED:
mkdir -p ~/.node-red/nodes
cp -r nodes/<bouwblok-naam> ~/.node-red/nodes/
Testen
# Alle nodes
bash scripts/test-all.sh
# Specifieke node
node --test nodes/<nodeName>/test/basic/*.test.js
node --test nodes/<nodeName>/test/integration/*.test.js
node --test nodes/<nodeName>/test/edge/*.test.js
Documentatie
wiki/— Projectwiki met architectuur, bevindingen en metrics (index)CLAUDE.md— Claude Code projectgidsmanuals/node-red/— FlowFuse en Node-RED referentiedocumentatie.agents/— Agent skills, beslissingen en function-anchors
Licentie
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
Gebruik, aanpassing en verspreiding is toegestaan voor niet-commerciele doeleinden, mits naamsvermelding naar Waterschap Brabantse Delta. Voor commercieel gebruik is voorafgaande toestemming vereist.
Contact
Description
Languages
JavaScript
40%
HTML
39.4%
Shell
13.4%
Python
6%
Dockerfile
1.2%