--- title: EVOLV Project Overview created: 2026-04-07 updated: 2026-04-07 status: evolving tags: [overview, wastewater, node-red, isa-88] --- # EVOLV — Edge-Layer Evolution for Optimized Virtualization Industrial automation platform for wastewater treatment, built as custom Node-RED nodes by Waterschap Brabantse Delta R&D. Follows ISA-88 (S88) batch control standard. ## Stack Node.js, Node-RED, InfluxDB (time-series), TensorFlow.js (prediction), CoolProp (thermodynamics). No build step — pure Node.js. ## Architecture Each node follows a 3-tier pattern: 1. **Entry file** — registers with Node-RED, admin HTTP endpoints 2. **nodeClass** — Node-RED adapter (tick loop, message routing, status) 3. **specificClass** — pure domain logic (physics, state machines, predictions) 3-port output convention: Port 0 = process data, Port 1 = InfluxDB telemetry, Port 2 = parent-child registration. ## What Works | Capability | Status | Evidence | |---|---|---| | rotatingMachine state machine | proven | 76 tests passing, all sequences verified | | 3D pump curve prediction (flow/power from pressure+control) | proven | Monotonic cubic spline interpolation across 34 pressure levels | | NCog / BEP tracking per pump | proven | Produces meaningful values with differential pressure | | machineGroupControl BEP-Gravitation | proven | Within 0.1% of brute-force global optimum | | Combination selection (2^n exhaustive) | proven | Stable: 1-2 switches across 5-95% demand sweep, no hysteresis | | Prediction health scoring | proven | NRMSE drift, pressure source penalties, edge detection | | Hydraulic efficiency (η = QΔP/P) | proven | CoolProp density, head calculation | | Unit conversion chain | proven | No double-conversion, clean layer separation | ## What Doesn't Work (honestly) | Issue | Status | Evidence | |---|---|---| | C5 curve non-convexity | evolving | 5 raw data points cause spline artifacts, dP/dQ non-monotonic | | NCog = 0 at high ΔP | evolving | At ΔP > 800 mbar for H05K, Q/P is monotonically decreasing | | calcBestCombination (NCog-weight mode) | disproven | Uses NCog as proportional weight instead of BEP target | ## Current Scale - 13 custom Node-RED nodes (12 submodules + generalFunctions) - rotatingMachine: 76 tests, 1563 lines domain logic - machineGroupControl: 90+ tests, 1400+ lines domain logic - 3 real pump curves: H05K-S03R, C5-D03R-SHN1, ECDV - Tick loop: 1000ms interval ## Node Inventory | Node | Purpose | Test Status | |------|---------|-------------| | rotatingMachine | Pump/compressor control | 76 tests (full) | | machineGroupControl | Multi-pump optimization | 90 tests (full) | | pumpingStation | Multi-pump station | needs review | | valve | Valve modeling | needs review | | valveGroupControl | Valve group coordination | needs review | | reactor | Biological reactor (ASM kinetics) | needs review | | settler | Secondary clarifier | needs review | | monster | Multi-parameter bio monitoring | needs review | | measurement | Sensor signal conditioning | needs review | | diffuser | Aeration system control | needs review | | dashboardAPI | InfluxDB + FlowFuse charts | needs review | | generalFunctions | Shared utilities | partial |