Project Concept & Philosophy
π― Vision
SolarLog ist eine Enterprise Multi-Site Solar Monitoring Platform fΓΌr professionelle Installateure und Unternehmen mit mehreren PV-Standorten.
Warum SolarLog neben EVCC existiert
EVCC ist die perfekte LΓΆsung fΓΌr Heimnutzer mit einem Standort und EV-Charging Optimierung. SolarLog positioniert sich als Enterprise-LΓΆsung fΓΌr Solar-Installateure mit 100+ Standorten:
| Feature | EVCC (Heimnutzer) | SolarLog (Enterprise) |
|---|---|---|
| Zielgruppe | Einzelhaushalt | Solar-Installateure, Unternehmen |
| Standorte | 1 Installation | 100+ Standorte zentral |
| Fokus | EV-Charging Optimierung | Analytics & Multi-Site Monitoring |
| Installation | Lokal (Go Binary) | Cloud-Native SaaS |
| Architektur | Standalone | Multi-Tenant mit API |
| Business Model | Open Source (kostenlos) | SaaS (20-50β¬/Monat/Standort) |
Empfohlener Hybrid-Ansatz: - EVCC lokal installieren (optimale EV-Charging Steuerung) - SolarLog sammelt Daten via EVCC API - Zentrales Dashboard fΓΌr alle Standorte - = Beste beider Welten! π
Core Philosophy
1. Vendor Independence
Commercial solar monitoring solutions often lock users into proprietary ecosystems. SolarLog supports multiple inverter manufacturers (SMA, Kostal, Delta, Solarman) through a unified plugin architecture, giving users freedom of choice.
2. Data Ownership
Your energy data belongs to you. SolarLog stores all data locally in your PostgreSQL database, with no cloud dependencies or data sharing requirements. You control where your data lives and who can access it.
3. Transparency & Open Source
Every line of code is open source and auditable. No black boxes, no hidden telemetry, no vendor lock-in. The system is designed to be understandable, modifiable, and extensible.
4. Modern Architecture
Built on cutting-edge technologies (React 19, FastAPI, PostgreSQL) with industry best practices: - Container-based deployment (Docker) - RESTful API design - Real-time data visualization - Responsive Material-UI interface
System Design Principles
Modularity
The system follows a clear separation of concerns:
βββββββββββββββββββ
β Frontend β React Dashboard (Port 3000)
β (React 19) β - Real-time visualization
ββββββββββ¬βββββββββ - Material-UI components
β - Recharts for analytics
βΌ
βββββββββββββββββββ
β Reverse Proxy β Nginx (Port 8080)
β (Nginx) β - Routes /api/* to backend
ββββββββββ¬βββββββββ - Serves frontend static files
β - SSL termination ready
βΌ
βββββββββββββββββββ
β Backend β FastAPI (Port 8000)
β (Python) β - RESTful API
ββββββββββ¬βββββββββ - Background scheduler
β - Inverter communication
βΌ
βββββββββββββββββββ
β Database β PostgreSQL (Port 5432)
β (PostgreSQL) β - Time-series data
βββββββββββββββββββ - Configuration storage
Plugin Architecture
Each inverter type is implemented as a plugin inheriting from a base class:
class BaseInverter(ABC):
@abstractmethod
async def connect(self) -> bool:
pass
@abstractmethod
async def read_data(self) -> ProductionData:
pass
@abstractmethod
async def disconnect(self):
pass
This allows easy addition of new inverter types without modifying core code.
Data Flow
- Collection: Background scheduler polls inverters every 60 seconds
- Storage: Data stored in PostgreSQL with timestamp indexing
- API: FastAPI exposes RESTful endpoints for data access
- Visualization: React frontend fetches and displays real-time data
Security Model
Three-Tier Access Control
- Public Read Access: Dashboard and monitoring endpoints (GET)
- No authentication required
- Read-only access to production data
-
Public API documentation
-
Authenticated Write Access: Configuration endpoints (POST/PUT/DELETE)
- JWT token required
- Inverter management
-
System configuration
-
Infrastructure Security: Docker network isolation
- Backend not directly exposed
- Nginx reverse proxy
- Cloudflare Tunnel for remote access
Data Protection
- PostgreSQL with password authentication
- Environment variables for secrets (
.envfiles) - No sensitive data in source code
- Optional SSL/TLS for production deployments
Deployment Flexibility
Local Development
Simple Docker Compose setup for local testing and development.Production Deployment
- Cloudflare Tunnel: Secure remote access without port forwarding
- Dual Domain Setup:
solarlog.karma.organicβ Frontendsolarlog-api.karma.organicβ Backend API- NixOS Support: Reproducible builds with Nix flakes
Scalability Options
- Horizontal: Multiple backend instances behind load balancer
- Vertical: PostgreSQL tuning for large datasets
- Distributed: Multi-site deployments with data aggregation
Use Cases
π Home Solar Systems
Monitor your rooftop solar installation with real-time power production, daily/monthly statistics, and historical trends.
π’ Commercial Installations
Track multiple inverters across different locations, aggregate production data, and generate reports.
π¬ Research & Development
Access raw data via API for custom analysis, machine learning models, or integration with other systems.
π Energy Consulting
Deploy for clients to provide professional monitoring services with white-label dashboard customization.
Technology Choices
Why React 19?
- Modern hooks-based architecture
- Excellent ecosystem and community
- Material-UI for professional UI components
- TypeScript for type safety
Why FastAPI?
- Automatic OpenAPI/Swagger documentation
- Native async/await support for concurrent inverter polling
- Pydantic for data validation
- Best-in-class performance for Python web frameworks
Why PostgreSQL?
- Robust time-series data handling
- ACID compliance for data integrity
- Excellent indexing and query optimization
- TimescaleDB extension available for advanced time-series features
Why Docker?
- Consistent deployment across platforms
- Easy dependency management
- Isolated environments
- Production-ready with Docker Compose
Future Roadmap
Short-term (v1.1)
- User authentication UI with login page
- Inverter configuration via dashboard
- Email alerts for production anomalies
- Export data to CSV/Excel
Mid-term (v1.5)
- Mobile app (React Native)
- TimescaleDB integration for better time-series performance
- Advanced analytics and forecasting
- Multi-tenant support
Long-term (v2.0)
- Battery storage monitoring
- Home energy management (EMS integration)
- AI-powered optimization recommendations
- Peer-to-peer energy trading integration
Contributing
We welcome contributions! Areas where help is needed:
- New Inverter Drivers: Support for additional manufacturers
- UI/UX Improvements: Better visualizations and user experience
- Documentation: Tutorials, guides, and translations
- Testing: Unit tests, integration tests, and bug reports
Community & Support
- Documentation: MkDocs Site
- API Reference: Swagger/OpenAPI
- Source Code: GitHub repository
- Discussions: GitHub Discussions for questions and ideas
License
Open source under MIT License - use it freely, modify it, contribute back!
Built with β€οΈ and βοΈ by the SolarLog community