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:
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:
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:
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