2025-10-26 18:19:37 +00:00
# Calejo Control Adapter
2025-10-26 17:03:34 +00:00
2025-10-26 18:19:37 +00:00
**Multi-protocol integration adapter for municipal wastewater pump stations with comprehensive safety and security framework**
2025-10-26 17:03:34 +00:00
2025-10-26 18:19:37 +00:00
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
[](https://www.docker.com/)
2025-10-26 17:03:34 +00:00
2025-10-26 18:19:37 +00:00
## Overview
The Calejo Control Adapter translates optimized pump control plans from Calejo Optimize into real-time control signals for municipal wastewater pump stations. It supports diverse SCADA systems with minimal configuration through automatic discovery and multiple protocol support.
2025-10-27 13:11:17 +00:00
### Implementation Status
✅ **Phase 1** : Core Infrastructure
- Database connection pooling with FlexibleDatabaseClient
- Auto-discovery of pump stations and pumps
- Safety framework with limit enforcement
- Emergency stop management
- Optimization plan management
✅ **Phase 2** : Multi-Protocol Servers
- OPC UA server implementation
- Modbus TCP server implementation
- REST API server implementation
- Database watchdog for failsafe operation
- Alert management system
✅ **Phase 3** : Setpoint Management
- Setpoint Manager for real-time control
- Integration with all safety components
- Unified main application
All components are implemented and tested with 133 passing tests.
2025-10-26 18:19:37 +00:00
### Key Features
- **Multi-Protocol Support**: OPC UA, Modbus TCP, and REST API simultaneously
- **Auto-Discovery**: Automatically discovers pump stations and pumps from database
- **Safety Framework**: Multi-layer limits, watchdogs, emergency stop, failsafe mechanisms
- **Security**: Authentication, authorization, encryption, audit logging
- **Compliance**: IEC 62443, NIS2 Directive, ISO 27001
- **High Availability**: Caching, failover, health monitoring
## Architecture
```
┌─────────────────────────────────────────────────────────┐
│ Calejo Optimize Container (Existing) │
│ - Optimization Engine │
│ - PostgreSQL Database (pump plans) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
2025-10-27 13:11:17 +00:00
│ Calejo Control Adapter (IMPLEMENTED) │
2025-10-26 18:19:37 +00:00
│ │
│ ┌────────────────────────────────────────────────┐ │
│ │ Core Components: │ │
2025-10-27 13:11:17 +00:00
│ │ 1. Auto-Discovery Module ✅ │ │
│ │ 2. Safety Framework ✅ │ │
│ │ 3. Emergency Stop Manager ✅ │ │
│ │ 4. Optimization Plan Manager ✅ │ │
│ │ 5. Setpoint Manager ✅ │ │
│ │ 6. Database Watchdog ✅ │ │
│ │ 7. Alert Manager ✅ │ │
│ │ 8. Multi-Protocol Server ✅ │ │
2025-10-26 18:19:37 +00:00
│ │ - OPC UA Server │ │
│ │ - Modbus TCP Server │ │
│ │ - REST API │ │
│ └────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
↓
(Multiple Protocols)
↓
┌─────────────────┼─────────────────┐
↓ ↓ ↓
Siemens WinCC Schneider EcoStruxure Rockwell FactoryTalk
```
## Project Structure
```
calejo-control-adapter/
├── src/
│ ├── core/
│ │ ├── auto_discovery.py # Auto-discovery module
│ │ ├── safety.py # Safety framework
2025-10-27 13:11:17 +00:00
│ │ ├── emergency_stop.py # Emergency stop manager
│ │ ├── optimization_manager.py # Optimization plan manager
│ │ └── setpoint_manager.py # Setpoint manager
2025-10-26 18:19:37 +00:00
│ ├── protocols/
2025-10-27 13:11:17 +00:00
│ │ ├── opcua_server.py # OPC UA server
2025-10-26 18:19:37 +00:00
│ │ ├── modbus_server.py # Modbus TCP server
│ │ └── rest_api.py # REST API server
│ ├── database/
2025-10-27 13:11:17 +00:00
│ │ ├── flexible_client.py # Flexible database client
2025-10-26 18:19:37 +00:00
│ │ └── models.py # Data models
│ ├── monitoring/
│ │ ├── watchdog.py # Database watchdog
│ │ └── alerts.py # Alert manager
│ └── main.py # Main application
├── tests/
├── config/
│ ├── settings.py # Application settings
│ └── docker-compose.yml # Docker configuration
├── docs/
2025-10-27 07:49:07 +00:00
│ ├── specification.txt # Full implementation specification
│ ├── optimization_plan_management.md # Optimization system documentation
│ └── alert_system_setup.md # Alert system configuration guide
2025-10-26 18:19:37 +00:00
├── requirements.txt # Python dependencies
├── Dockerfile # Docker container definition
└── README.md # This file
```
2025-10-26 17:03:34 +00:00
## Getting Started
2025-10-26 18:19:37 +00:00
### Prerequisites
- Python 3.11+
- PostgreSQL 14+
- Docker (optional)
### Installation
1. **Clone the repository**
```bash
git clone http://95.111.206.201:3000/calejocontrol/CalejoControl.git
cd calejo-control-adapter
```
2. **Install dependencies**
```bash
pip install -r requirements.txt
```
3. **Set up environment variables**
```bash
cp config/.env.example config/.env
# Edit config/.env with your database and security settings
```
4. **Run the application**
```bash
python -m src.main
```
### Docker Deployment
```bash
# Build the container
docker build -t calejo-control-adapter .
# Run the container
docker run -p 8080:8080 -p 4840:4840 -p 502:502 calejo-control-adapter
```
## Configuration
Key configuration options:
- `DATABASE_URL` : PostgreSQL connection string
- `OPC_UA_ENDPOINT` : OPC UA server endpoint (default: opc.tcp://0.0.0.0:4840)
- `MODBUS_PORT` : Modbus TCP port (default: 502)
- `REST_API_PORT` : REST API port (default: 8080)
- `SAFETY_TIMEOUT_SECONDS` : Database watchdog timeout (default: 1200)
2025-10-27 07:49:07 +00:00
### Alert System Configuration
For detailed alert system setup (email, SMS, webhook integration), see:
[Alert System Setup Guide ](docs/alert_system_setup.md )
2025-10-26 18:19:37 +00:00
## Safety Framework
The adapter implements a comprehensive three-layer safety architecture:
1. **Layer 1** : Physical Hard Limits (PLC/VFD) - 15-55 Hz
2. **Layer 2** : Station Safety Limits (Database) - 20-50 Hz (enforced by adapter)
3. **Layer 3** : Optimization Constraints (Calejo Optimize) - 25-45 Hz
### Safety Features
- **Hard Operational Limits**: Speed, level, power, and flow limits
- **Rate of Change Limits**: Prevent sudden speed changes
- **Database Watchdog**: Reverts to safe defaults if updates stop
- **Emergency Stop**: Manual override capability
- **Failsafe Mode**: Automatic fallback to default setpoints
## Security & Compliance
- **Authentication**: JWT tokens and certificate-based authentication
- **Authorization**: Role-based access control (RBAC)
- **Encryption**: TLS/SSL for all communications
- **Audit Logging**: Immutable audit trail for compliance
- **Standards**: IEC 62443, ISO 27001, NIS2 Directive
2025-10-26 17:03:34 +00:00
## Development
2025-10-26 18:19:37 +00:00
### Running Tests
```bash
pytest tests/
```
### Code Quality
```bash
flake8 src/ tests/ # Linting
mypy src/ # Type checking
black src/ tests/ # Code formatting
```
### Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Support
For support and documentation, refer to the specification in `docs/specification.txt` or contact the development team.