Rene De Ren 3c7d54e9c3
Some checks failed
CI / lint-and-test (push) Has been cancelled
Add 4 cross-node tests closing PS↔MGC integration gaps
- ps-mgc-flow-contract: asserts PS's view of MGC outflow equals the live
  per-pump aggregate at every tick. Currently FAILS — exposes that
  MGC's flow.predicted.downstream reverts to optimalControl's bestFlow
  target after handlePressureChange writes the correct flow.act, leaving
  PS with stale outflow values. The mirror added in dc27a56 is necessary
  but not sufficient.

- dead-zone-signal: asserts the Schmitt-trigger transitions
  (engaged 100% → keep-alive 1% → off 0%) across startLevel↓/stopLevel↓
  with proper rising-edge re-arm. Currently PASSES.

- inflow-overcapacity-stability: 45 s sim at 2× station capacity;
  asserts pumps don't thrash or park in accelerating residue. Currently
  FAILS — pumps end up at ctrl=0 in 'accelerating' state, suggesting
  the residue-unpark fix doesn't fully cover steady-state over-capacity.

- realistic-startup-timing: re-runs the varying-demand-during-startup
  scenario with PRODUCTION-default state.time (starting=10s, warm=5s)
  instead of the 1-2 s used elsewhere. Currently PASSES — confirms the
  dispatch-reorder fix holds under realistic transition windows.

Honest summary: 2 pass, 2 fail. The two failures expose genuine
remaining defects in the PS↔MGC measurement contract and the
residue-unpark policy. They're committed FAILING so the bugs are
captured under version control until the underlying fixes land.

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

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:

  1. Entry file (<naam>.js) — registratie bij Node-RED, admin endpoints
  2. nodeClass (src/nodeClass.js) — Node-RED adapter (tick loop, routing, status)
  3. 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 projectgids
  • manuals/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

rdlab@brabantsedelta.nl

Description
No description provided
Readme 33 MiB
Languages
JavaScript 40%
HTML 39.4%
Shell 13.4%
Python 6%
Dockerfile 1.2%