6
Home
znetsixe edited this page 2026-03-23 11:54:40 +01:00

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:

  1. Entry file - Node-RED registration, HTTP endpoints for editor menus
  2. nodeClass - Node-RED adapter layer (handles RED.* API calls)
  3. 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:

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