Zum Inhalt

Statistiken & Analysen

Das SolarLog Dashboard bietet umfangreiche Statistik- und Analysefunktionen, um die Leistung und Rentabilität Ihrer Photovoltaik-Anlagen zu überwachen und zu vergleichen.

Übersicht

Die Statistik-Seite ermöglicht detaillierte Vergleiche und Analysen:

  • Hersteller-Vergleich: Vergleichen Sie die Performance verschiedener Wechselrichter-Hersteller
  • Modell-Vergleich: Analysieren Sie unterschiedliche Modelle hinsichtlich Energie und Leistung
  • Jahres-Vergleich: Vergleichen Sie Anlagen nach Installationsjahr
  • Rentabilitäts-Analyse: Berechnen Sie den Return on Investment (ROI)

Filterfunktionen

Verfügbare Filter

Die Statistik-Seite bietet folgende Filtermöglichkeiten:

  1. Hersteller
  2. Filtern Sie nach spezifischen Wechselrichter-Herstellern
  3. Beispiele: SMA, Kostal, Delta, DEMO

  4. Modell

  5. Wählen Sie spezifische Modellreihen
  6. Beispiele: Tripower, Plenticore, Solivia, Virtual 60kW

  7. Standort

  8. Geografische Filterung (in Entwicklung)
  9. Optionen: Unterfranken, Bayern, Deutschland

  10. Installationsjahr

  11. Vergleichen Sie Anlagen nach Baujahr
  12. Nützlich für Technologie-Vergleiche

  13. Wechselrichter

  14. Filtern Sie nach einzelnen Anlagen
  15. Detailanalyse spezifischer Systeme

Filter anwenden

// Beispiel: Alle SMA-Wechselrichter aus 2022
Filter:
  - Hersteller: SMA
  - Modell: Alle
  - Installationsjahr: 2022

Statistik-Ansichten

1. Hersteller-Vergleich

Energie-Produktion nach Hersteller - Balkendiagramm zeigt Gesamtenergie pro Hersteller - Pie-Chart zeigt Verteilung der Anlagen - Übersichtstabelle mit Durchschnittswerten

Metriken: - Anzahl der Anlagen - Gesamtenergie (kWh) - Durchschnitt pro Anlage (kWh)

Verwendung:

Navigation: Dashboard → Statistiken → Tab "Hersteller-Vergleich"

Interpretation:
- Höhere Balken = Bessere Gesamtproduktion
- Vergleichen Sie Ø pro Anlage für faire Bewertung

2. Modell-Vergleich

Energie & Leistung nach Modell - Dual-Achsen-Diagramm: Energie (links) und Leistung (rechts) - Detailkarten für jedes Modell

Metriken: - Energie heute (kWh) - Durchschnittliche Leistung (kW) - Anzahl Anlagen pro Modell

Verwendung:

Navigation: Dashboard → Statistiken → Tab "Modell-Vergleich"

Interpretation:
- Grüne Balken = Energieproduktion
- Blaue Balken = Aktuelle Leistung
- Vergleichen Sie Effizienz verschiedener Modelle

3. Jahres-Vergleich

Installationsjahr-Analyse - Liniendiagramm zeigt Energie-Trends - ROI-Berechnung pro Installationsjahr

Metriken: - Anzahl Anlagen pro Jahr - Gesamtenergie (kWh) - Geschätzter Umsatz (€)

Verwendung:

Navigation: Dashboard → Statistiken → Tab "Jahres-Vergleich"

Beispiel-Interpretation:
- 2022: 1 Anlage, 180 MWh, 21.600€ Umsatz
- 2023: 2 Anlagen, 350 MWh, 42.000€ Umsatz

4. Rentabilitäts-Analyse

ROI-Berechnung - Balkendiagramm zeigt Gesamtumsatz pro Anlage - Detailkarten mit Rentabilitätskennzahlen

Berechnungsgrundlage:

# Annahme: Einspeisevergütung 0,12€/kWh
Umsatz = Gesamtenergie (kWh) × 0,12

# Pro Jahr:
Jahresumsatz = Gesamtumsatz / Betriebsjahre

# Energieproduktion:
kWh_pro_Jahr = Gesamtenergie / Betriebsjahre

Metriken: - Betriebsjahre (seit Installation) - Gesamtumsatz (€) - kWh/Jahr - Umsatz/Jahr (€)

Beispiel:

DEMO - Ralf Braun Lager GmbH & Co. KG
- Betriebsjahre: 3,4 Jahre
- Gesamtenergie: 204.000 kWh
- Gesamtumsatz: 24.480€
- kWh/Jahr: 60.000
- Umsatz/Jahr: 7.200€

ROI-Analyse:
- Bei Anschaffungskosten von 60.000€
- Amortisation nach ~8,3 Jahren
- Jährliche Rendite: ~12%

API-Endpunkte

Statistik-Daten abrufen

# Alle Inverter
GET /api/v1/inverters
Response: [
  {
    "id": 1,
    "name": "DEMO - Ralf Braun",
    "manufacturer": "DEMO",
    "model": "Virtual 60kW System",
    "created_at": "2022-06-15T00:00:00Z"
  }
]

# Produktions-Statistiken
GET /api/v1/production/stats/{inverter_id}
Response: {
  "total_energy_today": 45000,  # Wh
  "total_energy": 204000000,    # Wh
  "current_power": 27000,       # W
  "peak_power_today": 58000,    # W
  "operating_hours": 29760      # Stunden
}

# Produktions-Historie
GET /api/v1/production/history/{inverter_id}?hours=24
Response: {
  "total": 288,
  "data": [
    {
      "timestamp": "2025-10-23T10:00:00Z",
      "current_power": 20528.69,
      "total_energy": 179761.94
    }
  ]
}

Frontend-Implementierung

Komponenten-Struktur

src/components/
├── Statistics.tsx          # Haupt-Statistik-Komponente
├── PowerChart.tsx          # 24h Leistungs-Chart
├── Dashboard.tsx           # Dashboard mit Übersicht
└── AppBar.tsx              # Navigation (inkl. Statistik-Link)

Statistics.tsx - Hauptkomponente

// Filter-State
const [filters, setFilters] = useState<FilterState>({
  manufacturer: 'all',
  model: 'all',
  location: 'all',
  year: 'all',
  inverterId: 'all',
});

// Tab-Navigation
const [tabValue, setTabValue] = useState(0);
// 0 = Hersteller
// 1 = Modell
// 2 = Jahr
// 3 = Rentabilität

// Daten-Fetching
useEffect(() => {
  // Inverter laden
  const response = await inverterApi.getAll();
  setInverters(response.data);

  // Stats für jeden Inverter
  const stats = await Promise.all(
    inverters.map(inv => productionApi.getStats(inv.id))
  );
}, [filters]);

Chart-Konfiguration

// Hersteller-Vergleich (Bar Chart)
<BarChart data={manufacturerData}>
  <XAxis dataKey="name" />
  <YAxis label="Energie (kWh)" />
  <Bar dataKey="energy" fill="#2e7d32" />
</BarChart>

// Modell-Vergleich (Dual-Axis)
<BarChart data={modelData}>
  <YAxis yAxisId="left" label="Energie" />
  <YAxis yAxisId="right" orientation="right" label="Leistung" />
  <Bar yAxisId="left" dataKey="energy" fill="#2e7d32" />
  <Bar yAxisId="right" dataKey="avgPower" fill="#1976d2" />
</BarChart>

// Jahres-Vergleich (Line Chart)
<LineChart data={yearData}>
  <Line type="monotone" dataKey="energy" stroke="#2e7d32" />
</LineChart>

Datenquellen

Demo-Daten

Die Demo-Anlage generiert realistische Daten:

# backend/app/services/inverters/demo.py
class DemoInverter:
    def __init__(self):
        self.config = {
            "name": "DEMO - Ralf Braun Lager GmbH & Co. KG",
            "rated_power": 60000,  # 60 kW
            "location": "Unterfranken",
            "installation_date": "2022-06-15"
        }

    def read_current_power(self) -> float:
        # Seasonal solar simulation
        solar_factor = self._get_solar_position_factor()
        weather_factor = self._add_realistic_variation()
        return self.rated_power * solar_factor * weather_factor

Historische Daten

Generierung mit Script:

# 365 Tage historische Daten
docker compose exec backend python scripts/generate_demo_history.py --days 365

# Mit Löschung bestehender Daten
docker compose exec backend python scripts/generate_demo_history.py --days 365 --clear

# Nur letzte 30 Tage
docker compose exec backend python scripts/generate_demo_history.py --days 30

Verwendungsszenarien

Szenario 1: Hersteller-Vergleich

Ziel: Welcher Hersteller ist am effizientesten?

Vorgehen: 1. Navigation: Dashboard → Statistiken → Hersteller-Vergleich 2. Filter: Alle Hersteller 3. Vergleich: Ø Energie pro Anlage 4. Interpretation: Höherer Durchschnitt = Bessere Effizienz

Beispiel-Ergebnis:

SMA:   Ø 65.000 kWh/Jahr
Kostal: Ø 62.000 kWh/Jahr
Delta:  Ø 58.000 kWh/Jahr

Szenario 2: Modell-Evaluation

Ziel: Welches Modell für Neuinstallation wählen?

Vorgehen: 1. Navigation: Dashboard → Statistiken → Modell-Vergleich 2. Filter: Hersteller = SMA 3. Vergleich: Energie + aktuelle Leistung 4. Interpretation: Beste Balance zwischen Energie und Leistung

Beispiel-Ergebnis:

Tripower 60:    180 MWh, 58 kW aktuell
Sunny Tripower: 175 MWh, 55 kW aktuell

Szenario 3: ROI-Analyse

Ziel: Lohnt sich eine Neuinstallation?

Vorgehen: 1. Navigation: Dashboard → Statistiken → Rentabilität 2. Filter: Installationsjahr = 2022 3. Analyse: Umsatz/Jahr 4. Berechnung: Amortisation = Kosten / Umsatz_pro_Jahr

Beispiel-Berechnung:

Anlage 2022:
- Anschaffung: 60.000€
- Umsatz/Jahr: 7.200€
- Amortisation: 60.000€ / 7.200€ = 8,3 Jahre
- Lebensdauer: 25 Jahre
- Gewinn nach Amortisation: 16,7 Jahre × 7.200€ = 120.240€
- Gesamtrendite: 200% über Lebensdauer

Best Practices

1. Filter-Kombination

Effizient:
✅ Hersteller + Jahr (z.B. "SMA 2022")
✅ Modell + Standort (z.B. "Tripower Unterfranken")

Ineffizient:
❌ Zu viele Filter gleichzeitig (leere Ergebnisse)
❌ Einzelner Inverter + Hersteller (redundant)

2. Dateninterpretation

Korrekt:
✅ Vergleich Ø pro Anlage (bei unterschiedlicher Anzahl)
✅ Normalisierung auf Betriebsjahre
✅ Berücksichtigung von Standort/Wetter

Falsch:
❌ Absolute Zahlen ohne Kontext
❌ Vergleich unterschiedlicher Zeiträume
❌ Ignorieren von Außenfaktoren

3. Performance-Optimierung

Empfohlen:
✅ Filter setzen vor Laden
✅ Pagination bei vielen Anlagen (zukünftig)
✅ Cache für häufige Abfragen

Vermeiden:
❌ Alle Daten ohne Filter laden
❌ Zu viele API-Calls parallel
❌ Unnötige Re-Renders

Troubleshooting

Keine Statistik-Daten

Problem: "Keine Daten für die ausgewählten Filter verfügbar"

Lösung:

# 1. Prüfen: Sind Inverter vorhanden?
curl -s https://solarlog-api.karma.organic/api/v1/inverters | jq '.[] | {id, name}'

# 2. Prüfen: Gibt es Produktionsdaten?
curl -s "https://solarlog-api.karma.organic/api/v1/production/data?inverter_id=1&limit=1" | jq '.total'

# 3. Historische Daten generieren
docker compose exec backend python scripts/generate_demo_history.py --days 30

Chart zeigt NaN

Problem: Power-Werte werden als "NaN" angezeigt

Lösung:

// PowerChart.tsx bereits gefixt
const power = (item.current_power || 0) / 1000;
return {
  power: isNaN(power) ? 0 : power,  // NaN-Guard
};

Filter funktionieren nicht

Problem: Filter-Änderung zeigt keine Wirkung

Lösung:

// useEffect dependency prüfen
useEffect(() => {
  fetchStats();
}, [inverters, filters]);  // ✅ filters als Dependency!

Zukünftige Erweiterungen

Geplante Features

  1. Export-Funktion
  2. CSV/Excel-Export
  3. PDF-Berichte
  4. E-Mail-Versand

  5. Erweiterte Filter

  6. Datums-Range-Picker
  7. Multi-Select für Hersteller/Modelle
  8. Gespeicherte Filter-Presets

  9. Zusätzliche Charts

  10. Wetter-Korrelation
  11. Degradation-Analyse
  12. Prognose-Modelle

  13. KPI-Dashboard

  14. Custom Metrics
  15. Alerts & Benachrichtigungen
  16. Benchmark-Vergleiche

API-Erweiterungen

# Zukünftige Endpunkte
GET /api/v1/production/compare
  ?inverter_ids=1,2,3
  &start_date=2025-01-01
  &end_date=2025-12-31

GET /api/v1/statistics/aggregated
  ?group_by=manufacturer
  &metrics=energy,power,roi

GET /api/v1/export/csv
  ?inverter_id=1
  &format=csv
  &columns=timestamp,power,energy

Zusammenfassung

Die Statistik-Funktion bietet:

5 Filter-Optionen (Hersteller, Modell, Standort, Jahr, Inverter) ✅ 4 Analyse-Ansichten (Hersteller, Modell, Jahr, ROI) ✅ 3 Chart-Typen (Bar, Line, Pie) ✅ ROI-Berechnung (mit 0,12€/kWh Basis) ✅ Responsive Design (funktioniert auf Mobile & Desktop)

Perfekt für: - Anlagenvergleiche - Investitionsentscheidungen - Performance-Monitoring - Rentabilitäts-Analysen