Zum Inhalt

Batteriespeicher Konfiguration

Übersicht

Diese Anleitung beschreibt die Konfiguration von Batteriespeichersystemen im SolarLog Enterprise System.


Unterstützte Batterietypen

Typ Beschreibung Typische Chemie Beispiele
Lithium Lithium-basierte Batterien LiFePO4, NMC, NCA, LTO BYD, Tesla Powerwall, Sonnen
Lead-Acid Blei-Säure Batterien AGM, Gel, Flooded Victron, Trojan
Saltwater Salzwasser Batterien Aquion AHI Aquion Energy
Flow Redox-Flow Batterien Vanadium, Zinc-Bromine VoltStorage
Other Andere Batterietechnologien - Custom systems

API-Protokolle

1. Modbus TCP/RTU

Typische Hersteller: BYD, Pylontech, GOODWE

Konfiguration:

{
  "api_type": "modbus",
  "api_endpoint": "192.168.1.100",
  "port": 502,
  "modbus_unit_id": 1
}

Wichtige Register: - 30001: State of Charge (SOC) % - 30002: Voltage (V × 10) - 30003: Current (A × 10, signed) - 30004: Power (W, signed) - 30005: Temperature (°C × 10)

2. REST API

Typische Hersteller: Tesla Powerwall, Sonnen

Konfiguration:

{
  "api_type": "rest",
  "api_endpoint": "https://192.168.1.100/api",
  "api_token": "your-api-token-here"
}

Beispiel Endpoints: - GET /status - Battery status - GET /soc - State of Charge - GET /power - Current power

3. MQTT

Typische Hersteller: DIY Systeme, Custom BMS

Konfiguration:

{
  "api_type": "mqtt",
  "api_endpoint": "mqtt://192.168.1.100",
  "port": 1883,
  "username": "battery",
  "password": "secret"
}

Topics: - battery/{id}/soc - State of Charge - battery/{id}/power - Current power - battery/{id}/voltage - Voltage - battery/{id}/current - Current - battery/{id}/temperature - Temperature


Demo-Modus

Aktivierung

Im Frontend (Settings → Battery → Edit): 1. Aktiviere "Demo Modus" Checkbox 2. Optional: "Demo Simulate Offline" für Offline-Simulation 3. Tab "Verbindung" wird automatisch deaktiviert

Demo-Daten Eigenschaften

State of Charge (SoC): - Immer zwischen 60-85% (auch nachts) - Realistische Tag/Nacht-Zyklen

Power Flow: - 10:00-16:00 Uhr: Laden von Solar (1.5-4.0 kW) - 18:00-22:00 Uhr: Entladen für Hausverbrauch (0.8-2.3 kW) - 22:00-10:00 Uhr: Minimal-Entladung oder Idle (0-0.7 kW)

Status: - CHARGING - Batterie wird geladen - DISCHARGING - Batterie wird entladen - IDLE - Batterie im Standby - OFFLINE - Batterie nicht verfügbar (wenn Simulate Offline aktiv)

Weitere Werte: - Voltage: 51.2V (typisch für LiFePO4) - Current: Berechnet aus Power und Voltage - Temperature: 22-28°C mit Zufallsvariationen - Cycles: Simulierte Zyklen - Health (SOH): 98% (bei neuer Battery)


Standort-Gruppierung

Batterien können nach Standort gruppiert werden:

{
  "name": "Battery Garage",
  "location": "Garage",
  ...
}

Vorteile: - Bessere Organisation bei mehreren Batterien - Gruppierung in der UI (Settings-Seite) - Filterung in Grafana möglich

Empfohlene Standorte: - Garage - Keller - Technikraum - Außenbereich - Gebäude A/B/C


Umgebungsvariablen

Füge zu .env hinzu:

# Battery System
BATTERY_POLLING_INTERVAL=60  # Polling-Intervall in Sekunden
BATTERY_DATA_RETENTION_DAYS=90  # Datenaufbewahrung
BATTERY_MAX_TEMPERATURE=50  # Maximale Temperatur (°C) für Warnungen
BATTERY_MIN_SOC=20  # Minimaler SOC (%) für Warnungen
BATTERY_MAX_SOC=95  # Maximaler SOC (%) für Warnungen

Typische Konfigurationen

BYD Battery-Box Premium HVS

{
  "name": "BYD Battery-Box HVS 12.0",
  "manufacturer": "BYD",
  "model": "Battery-Box Premium HVS 12.0",
  "capacity_kwh": 12.0,
  "type": "lithium",
  "chemistry": "LiFePO4",
  "api_type": "modbus",
  "api_endpoint": "192.168.1.100",
  "port": 502,
  "modbus_unit_id": 1,
  "enabled": true,
  "is_demo": false
}

Tesla Powerwall 2

{
  "name": "Tesla Powerwall 2",
  "manufacturer": "Tesla",
  "model": "Powerwall 2",
  "capacity_kwh": 13.5,
  "type": "lithium",
  "chemistry": "NMC",
  "api_type": "rest",
  "api_endpoint": "https://192.168.1.200",
  "api_token": "your-token-here",
  "enabled": true,
  "is_demo": false
}

Pylontech US2000 Plus

{
  "name": "Pylontech US2000 Plus",
  "manufacturer": "Pylontech",
  "model": "US2000 Plus",
  "capacity_kwh": 2.4,
  "type": "lithium",
  "chemistry": "LiFePO4",
  "api_type": "modbus",
  "api_endpoint": "192.168.1.150",
  "port": 502,
  "modbus_unit_id": 1,
  "enabled": true,
  "is_demo": false
}

Fehlerbehebung

422 Unprocessable Entity

Problem: Battery Type wird nicht akzeptiert

Lösung: Verwende nur erlaubte Werte: - ✅ lithium, leadacid, saltwater, flow, other - ❌ Nicht: lithium-ion, lead-acid, etc.

Battery nicht gefunden (404)

Problem: API verwendet falsche ID

Lösung: Verwende UUID statt numerischer ID: - ✅ 6661af1f-63fd-4728-8910-db663bc6fb89 - ❌ 8

Simulator zeigt keine Daten

Mögliche Ursachen: 1. Battery UUID nicht korrekt übergeben 2. Battery nicht im Demo-Modus und keine echten Daten 3. API nicht erreichbar

Lösung:

# Prüfe Battery Status
curl http://localhost:8080/api/v1/batteries/{uuid}

# Aktiviere Demo-Modus über Frontend oder API
curl -X PUT http://localhost:8080/api/v1/batteries/{uuid} \
  -H "Content-Type: application/json" \
  -d '{"is_demo": true}'

Verbindungsprobleme

Modbus TCP:

# Test Verbindung
nc -zv 192.168.1.100 502

# Prüfe Firewall
sudo iptables -L | grep 502

REST API:

# Test Verbindung
curl -k https://192.168.1.100/api/status

# Mit Token
curl -k -H "Authorization: Bearer TOKEN" https://192.168.1.100/api/status


Best Practices

1. Regelmäßige Überwachung

  • Überwache SOC, SOH, Temperatur in Grafana
  • Setze Alarme für kritische Werte
  • Prüfe Cycle Count monatlich

2. Optimale Betriebsparameter

  • Halte SOC zwischen 20-90% für längere Lebensdauer
  • Vermeide extreme Temperaturen (<5°C oder >40°C)
  • Balanciere Zellen regelmäßig

3. Daten-Backup

# Backup Battery-Daten
docker compose exec postgres pg_dump -U solarlog -d solarlog_db \
  -t batteries -t battery_data -t battery_error_log \
  > battery_backup_$(date +%Y%m%d).sql

4. Performance-Optimierung

  • Polling-Intervall: 60s (normal), 30s (kritisch), 300s (unkritisch)
  • Datenaufbewahrung: 90 Tage (Standard), 365 Tage (Analyse)
  • Index-Optimierung bei >1000 Datenpunkten/Tag

Siehe auch