Real-time IoT data pipeline, ML analytics and financial ROI engine for industrial waste water treatment plants across Africa.
# iot-water-intelligence-system
> Real-time IoT data pipeline, ML analytics and financial ROI engine for industrial waste water treatment plants across Africa.
---
## Table of Contents
- Overview
- Architecture
- Project Structure
- Quick Start
- Pipeline Stages
- ML Models
- Financial Savings Engine
- Dashboards
- Configuration
- Development
- Docs
---
## Overview
Waste water treatment plants collect sensor and PLC data continuously — every second, 24/7. Before this platform existed, that data sat unused inside MQTT brokers with no way to analyse it, visualise it, or report on it.
This platform solves four problems:
| Problem | Solution |
|---|---|
| Raw PLC data arriving every second with no storage | Real-time MQTT ingestion → TimescaleDB hypertables |
| Each plant has a different payload schema | Unified ETL pipeline with recursive normalisation |
| Unusual spikes in water levels go undetected | XGBoost anomaly detection model |
| No way to prove financial ROI to clients and boards | Municipality-tariff-based rand savings calculator |
**Scale:** Designed for multi-plant, multi-country deployment. Each plant runs its own MQTT broker. The pipeline handles schema variance without code changes per plant.
**Stack:** Python · MQTT (paho) · TimescaleDB · PostgreSQL · XGBoost · scikit-learn · Pandas · NumPy · FastAPI · Grafana · Docker Compose · Oracle Cloud Linux
---
## Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ Plant Site (per plant) │
│ PLCs / Sensors ──► MQTT Broker (1883) │
└──────────────────────────────┬──────────────────────────────────┘
│ MQTT subscribe (#)
▼
┌─────────────────────────────────────────────────────────────────┐
│ Ingestion Layer │
│ ingestion/ingestor.py │
│ • Auto-discovers plants from topic names │
│ • Decod …