Update "Home"
153
Home.md
153
Home.md
@@ -1 +1,152 @@
|
|||||||
# EVOLV Wiki
|
# 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 |
|
||||||
|
|
||||||
|
## Node Inventory
|
||||||
|
|
||||||
|
| Node | Purpose | Parent |
|
||||||
|
|------|---------|--------|
|
||||||
|
| [rotatingMachine](https://gitea.wbd-rd.nl/RnD/rotatingMachine) | Individual pump/compressor/blower control | MGC or pumpingStation |
|
||||||
|
| [pumpingStation](https://gitea.wbd-rd.nl/RnD/pumpingStation) | Multi-pump station with hydraulic optimization | - |
|
||||||
|
| [machineGroupControl](https://gitea.wbd-rd.nl/RnD/machineGroupControl) | Coordinates multiple rotatingMachine children | - |
|
||||||
|
| [valve](https://gitea.wbd-rd.nl/RnD/valve) | Individual valve modeling and control | VGC |
|
||||||
|
| [valveGroupControl](https://gitea.wbd-rd.nl/RnD/valveGroupControl) | Coordinates multiple valve children | - |
|
||||||
|
| [reactor](https://gitea.wbd-rd.nl/RnD/reactor) | Biological reactor with ASM3 kinetics | - |
|
||||||
|
| [settler](https://gitea.wbd-rd.nl/RnD/settler) | Secondary clarifier / sludge settling | downstream of reactor |
|
||||||
|
| [monster](https://gitea.wbd-rd.nl/RnD/monster) | Multi-parameter biological process monitoring | - |
|
||||||
|
| [measurement](https://gitea.wbd-rd.nl/RnD/measurement) | Sensor signal conditioning and data quality | any parent node |
|
||||||
|
| [diffuser](https://gitea.wbd-rd.nl/RnD/diffuser) | Aeration system control | - |
|
||||||
|
| [dashboardAPI](https://gitea.wbd-rd.nl/RnD/dashboardAPI) | Grafana dashboard management and telemetry | - |
|
||||||
|
| [generalFunctions](https://gitea.wbd-rd.nl/RnD/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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install EVOLV
|
||||||
|
```
|
||||||
|
|
||||||
|
### From Source
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone --recurse-submodules https://gitea.wbd-rd.nl/RnD/EVOLV.git
|
||||||
|
cd EVOLV
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose build nodered
|
||||||
|
docker compose up -d nodered
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
### Submodules
|
||||||
|
|
||||||
|
All nodes are git submodules. After cloning:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
Each node has 3 tiers of tests (basic, integration, edge):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user