Page:
Home
Pages
Architecture Configuration Model and Tagcodering
Architecture Container Topology
Architecture Deployment Blueprint
Architecture Deployment Controls Checklist
Architecture Platform Overview
Architecture Security and Access Boundaries
Architecture Security and Regulatory Mapping
Architecture Telemetry and Smart Storage
Home
Clone
6
Home
znetsixe edited this page 2026-03-23 11:54:40 +01:00
Table of Contents
EVOLV - Edge-Layer Evolution for Optimized Virtualization
EVOLV is an industrial automation platform built as a custom Node-RED package for real-time process control, monitoring, and optimization of wastewater treatment plants.
Overview
| Property | Value |
|---|---|
| Package | EVOLV (npm) |
| Version | 1.0.29 |
| Runtime | Node-RED on Node.js |
| Database | InfluxDB (time-series telemetry) |
| ML/AI | TensorFlow.js (predictive models) |
| Thermodynamics | CoolProp |
| Target | Waterschap Brabantse Delta (NL) |
Architecture
EVOLV provides 12 custom Node-RED nodes plus a shared utility library (generalFunctions). Each node follows a 3-tier architecture:
- Entry file - Node-RED registration, HTTP endpoints for editor menus
- nodeClass - Node-RED adapter layer (handles
RED.*API calls) - specificClass - Pure domain logic (no framework dependencies, fully testable)
Standard 3-Port Output
All process nodes use a consistent output pattern:
| Port | Purpose | Example |
|---|---|---|
| Port 0 | Process data | Measurement values, calculated state |
| Port 1 | InfluxDB telemetry | Time-series data for remote logging |
| Port 2 | Registration / control | Parent-child communication, asset discovery |
Canonical Units
All internal calculations use SI-derived canonical units:
| Quantity | Unit |
|---|---|
| Pressure | Pa |
| Flow | m3/s |
| Power | W |
| Temperature | K |
Platform Architecture
EVOLV is not only a Node-RED package. It is a layered platform with:
- edge execution close to PLCs and field assets
- site aggregation for resilience and plant-local operations
- central services for APIs, intelligence, analytics, governance, and lifecycle management
Architecture pages:
- Platform Overview
- Telemetry and Smart Storage
- Security and Access Boundaries
- Security and Regulatory Mapping
- Deployment Controls Checklist
- Deployment Blueprint
- Container Topology
- Configuration Model and Tagcodering
flowchart LR
subgraph EDGE["Edge"]
PLC["PLC / IO"]
ENR["Node-RED"]
EDB["Local InfluxDB"]
end
subgraph SITE["Site"]
SNR["CoreSync / Site Node-RED"]
SDB["Site InfluxDB"]
end
subgraph CENTRAL["Central"]
API["API Gateway"]
CFG["Tagcodering"]
CDB["Central InfluxDB"]
CGR["Grafana"]
INTEL["Overview Intelligence"]
end
PLC --> ENR
ENR --> EDB
ENR <--> SNR
EDB <--> SDB
SNR <--> API
API <--> CFG
API --> INTEL
SDB <--> CDB
CDB --> CGR
Node Inventory
| Node | Purpose | Parent |
|---|---|---|
| rotatingMachine | Individual pump/compressor/blower control | MGC or pumpingStation |
| pumpingStation | Multi-pump station with hydraulic optimization | - |
| machineGroupControl | Coordinates multiple rotatingMachine children | - |
| valve | Individual valve modeling and control | VGC |
| valveGroupControl | Coordinates multiple valve children | - |
| reactor | Biological reactor with ASM3 kinetics | - |
| settler | Secondary clarifier / sludge settling | downstream of reactor |
| monster | Multi-parameter biological process monitoring | - |
| measurement | Sensor signal conditioning and data quality | any parent node |
| diffuser | Aeration system control | - |
| dashboardAPI | Grafana dashboard management and telemetry | - |
| generalFunctions | Shared utility library (not a node) | - |
Parent-Child Relationships
pumpingStation ----------> rotatingMachine (manages pumps with hydraulic context)
machineGroupControl ----> rotatingMachine (group coordination)
valveGroupControl ------> valve (group coordination)
reactor ----------------> settler (biological cascade; settler pulls effluent)
measurement ------------> any parent (registers via Port 2)
Installation
Prerequisites
- Node.js >= 18
- Node-RED >= 3.x
- InfluxDB 2.x (for telemetry)
- Docker (optional, for containerized deployment)
npm Install
npm install EVOLV
From Source
git clone --recurse-submodules https://gitea.wbd-rd.nl/RnD/EVOLV.git
cd EVOLV
npm install
Docker
docker compose build nodered
docker compose up -d nodered
Development
Submodules
All nodes are git submodules. After cloning:
git submodule update --init --recursive
Testing
Each node has 3 tiers of tests (basic, integration, edge):
node --test nodes/<nodeName>/test/basic/*.test.js
Deploying Flows
Editing flow files alone does not deploy them. POST to the running Node-RED instance:
curl -X POST http://localhost:1880/flows -H "Content-Type: application/json" -d @flow.json
Repository Structure
EVOLV/
nodes/ # All node submodules
dashboardAPI/
diffuser/
generalFunctions/ # Shared library
machineGroupControl/
measurement/
monster/
pumpingStation/
reactor/
rotatingMachine/
settler/
valve/
valveGroupControl/
.agents/ # AI agent skills and anchors
docker/ # Docker configuration
manuals/ # Node-RED reference docs
scripts/ # Utility and deployment scripts
package.json
docker-compose.yml