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