Zum Inhalt

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

  1. Collection: Background scheduler polls inverters every 60 seconds
  2. Storage: Data stored in PostgreSQL with timestamp indexing
  3. API: FastAPI exposes RESTful endpoints for data access
  4. Visualization: React frontend fetches and displays real-time data

Security Model

Three-Tier Access Control

  1. Public Read Access: Dashboard and monitoring endpoints (GET)
  2. No authentication required
  3. Read-only access to production data
  4. Public API documentation

  5. Authenticated Write Access: Configuration endpoints (POST/PUT/DELETE)

  6. JWT token required
  7. Inverter management
  8. System configuration

  9. Infrastructure Security: Docker network isolation

  10. Backend not directly exposed
  11. Nginx reverse proxy
  12. Cloudflare Tunnel for remote access

Data Protection

  • PostgreSQL with password authentication
  • Environment variables for secrets (.env files)
  • No sensitive data in source code
  • Optional SSL/TLS for production deployments

Deployment Flexibility

Local Development

docker compose up
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 β†’ Frontend
  • solarlog-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