diff --git a/Home.md b/Home.md index b91f67f..b66016e 100644 --- a/Home.md +++ b/Home.md @@ -1 +1,152 @@ -# EVOLV Wiki \ No newline at end of file +# 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//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 +```