EVCC Integration
π Was ist EVCC?
EVCC (Electric Vehicle Charge Controller) ist eine Open-Source EV-Charging Steuerung fΓΌr Heimnutzer.
- Website: evcc.io
- GitHub: github.com/evcc-io/evcc
- Dokumentation: docs.evcc.io
- Demo-Video: YouTube
- Screenshot: GitHub
Features von EVCC
- β‘ EV-Charging Optimierung - LΓ€dt Auto mit Solarstrom
- π Batterie-Management - Intelligente Lade-/Entlade-Steuerung
- π Dynamic Tariffs - GΓΌnstig laden bei Niedrigpreisen
- π Home Energy Management - Eigenverbrauch maximieren
- π 60+ Wallboxen - go-eCharger, Wallbox, etc.
- π 100+ GerΓ€te - Wechselrichter, ZΓ€hler, Batterien
π― SolarLog + EVCC = Perfekte Kombination
Unterschiedliche Zielgruppen
| EVCC | SolarLog |
|---|---|
| Heimnutzer mit 1 Standort | Installateure mit 100+ Standorten |
| EV-Charging Optimierung | Multi-Site Monitoring |
| Lokal installiert (Go Binary) | Cloud-Native SaaS |
| Kostenlos (Open Source) | 20-50β¬/Monat/Standort |
Hybrid-Ansatz: "EVCC Enterprise Wrapper"
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Standort 1: Niederlauer β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β EVCC (lokal installiert) β β
β β ββ Kostal PLENTICORE plus 4.2 β β
β β ββ BYD HVS 7.7 Batterie β β
β β ββ Wallbox go-eCharger β β
β β ββ Optimiert EV-Laden mit Solarstrom β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ HTTP API (Port 7070) β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SolarLog Agent (ESP32 oder Raspberry Pi) β β
β β ββ Pollt EVCC API alle 30s β β
β β ββ Sendet Daten an Cloud β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ HTTPS (Cloudflare Tunnel)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SolarLog Cloud (Multi-Tenant) β
β https://solarlog.karma.organic β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Dashboard fΓΌr Installateur β β
β β ββ Standort 1: 3.8 kW β
β β
β β ββ Standort 2: 5.2 kW β
β β
β β ββ Standort 3: 0.0 kW β (Fehler) β β
β β ββ ... (97 weitere Standorte) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π‘ EVCC API Integration
EVCC API Endpunkte
EVCC bietet eine einfache REST API:
# Basis-URL (lokal)
http://localhost:7070
# Haupt-Endpunkte
GET /api/state # Aktueller Systemstatus
GET /api/site # Site-Konfiguration
GET /api/loadpoints # Wallbox-Status
GET /api/vehicles # Fahrzeug-Status
GET /api/battery # Batterie-Status
Beispiel: Daten von EVCC abrufen
import requests
import time
EVCC_BASE_URL = "http://localhost:7070"
SOLARLOG_API = "https://solarlog-api.karma.organic/api/v1"
SOLARLOG_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
def fetch_evcc_state():
"""Hole aktuellen Zustand von EVCC"""
response = requests.get(f"{EVCC_BASE_URL}/api/state")
return response.json()
def transform_to_solarlog_format(evcc_data):
"""Transformiere EVCC-Daten ins SolarLog-Format"""
return {
"current_power": evcc_data.get("pvPower", 0), # W
"total_energy": evcc_data.get("pvEnergy", 0) * 1000, # Wh
"grid_power": evcc_data.get("gridPower", 0), # W (negativ = Einspeisung)
"battery_soc": evcc_data.get("batterySoc", 0), # %
"battery_power": evcc_data.get("batteryPower", 0), # W
"home_consumption": evcc_data.get("homePower", 0), # W
}
def send_to_solarlog(site_id, data):
"""Sende Daten an SolarLog Cloud"""
headers = {"Authorization": f"Bearer {SOLARLOG_TOKEN}"}
response = requests.post(
f"{SOLARLOG_API}/sites/{site_id}/production",
json=data,
headers=headers
)
return response.status_code == 201
def main():
"""Hauptschleife: Alle 30 Sekunden Daten ΓΌbertragen"""
while True:
try:
# 1. Daten von EVCC holen
evcc_data = fetch_evcc_state()
# 2. Format konvertieren
solarlog_data = transform_to_solarlog_format(evcc_data)
# 3. An Cloud senden
success = send_to_solarlog("niederlauer", solarlog_data)
if success:
print(f"β
Daten gesendet: {solarlog_data['current_power']} W")
else:
print("β Fehler beim Senden")
except Exception as e:
print(f"β οΈ Error: {e}")
time.sleep(30)
if __name__ == "__main__":
main()
Beispiel-Response von EVCC
{
"pvPower": 3800, // Aktuelle PV-Leistung (W)
"pvEnergy": 24.5, // Tagesertrag (kWh)
"gridPower": -1200, // Netz (-) = Einspeisung, (+) = Bezug
"homePower": 800, // Hausverbrauch (W)
"batteryPower": 1800, // Batterie (+) = Laden, (-) = Entladen
"batterySoc": 85, // Batterie-SOC (%)
"loadpoints": [
{
"title": "Garage",
"chargePower": 0, // Wallbox-Leistung (W)
"chargeEnergy": 12.5, // Heute geladen (kWh)
"mode": "pv" // Lademodus
}
]
}
π EVCC Device Support
EVCC unterstΓΌtzt 100+ GerΓ€te aus verschiedenen Kategorien. SolarLog kann diese GerΓ€te-Datenbank nutzen.
VollstΓ€ndige Liste
Siehe: docs.evcc.io/docs/devices/meters
Wichtigste Kategorien
β‘ PV-Wechselrichter (60+ Hersteller)
Modbus TCP: - SMA: Sunny Boy, Sunny Tripower, Sunny Island - Kostal: PLENTICORE, PIKO - Fronius: Symo, Primo, Eco - SolarEdge: SE3K-SE27K (SunSpec) - Huawei: SUN2000 Serie - GoodWe: GW-Serie (ET, DT, DNS, MS) - Growatt: MIN, MOD, MAX Serie - Delta: RPI Serie (M/H)
HTTP REST API: - Kostal: PLENTICORE (REST API + Modbus) - Fronius: Solar API v1 - SMA: Webconnect, Speedwire
Cloud API: - Solax: Cloud API - Solarman: Cloud API - GoodWe: SEMS Portal
π Batteriespeicher
- Tesla: Powerwall 2/3 (JSON API)
- BYD: HVS/HVM Serie (Modbus)
- Sonnen: sonnenbatterie (HTTP API)
- SENEC: Home V2/V3 (HTTP API)
- E3/DC: S10 Serie (RSCP)
- LG: RESU Serie
- Varta: pulse/element
π Smart Meter / EnergiezΓ€hler
- SMA: Energy Meter (Speedwire)
- Discovergy: Cloud API
- Shelly: 3EM, Pro 3EM (HTTP)
- Fronius: Smart Meter (Modbus)
- Eastron: SDM120/230/630 (Modbus)
- Carlo Gavazzi: EM Serie (Modbus)
π EV-Charger / Wallboxen
- go-eCharger: Home+/Gemini (HTTP API)
- Wallbox: Pulsar/Commander (Cloud)
- ABL: eMH1 (Modbus)
- KEBA: KeContact P30 (UDP)
- Heidelberg: Energy Control (Modbus)
- OpenWB: (MQTT)
π οΈ SolarLog Agent (ESP32/Raspberry Pi)
FΓΌr die Integration mit EVCC kann ein kleiner Agent auf einem ESP32 oder Raspberry Pi laufen.
Option 1: ESP32 (16β¬)
// ESP32 Code (Arduino)
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
const char* EVCC_URL = "http://192.168.1.100:7070/api/state";
const char* SOLARLOG_API = "https://solarlog-api.karma.organic/api/v1/sites/niederlauer/production";
const char* JWT_TOKEN = "eyJhbGciOiJIUzI1...";
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
}
void loop() {
// 1. Daten von EVCC holen
HTTPClient http;
http.begin(EVCC_URL);
int httpCode = http.GET();
if (httpCode == 200) {
String payload = http.getString();
// 2. JSON parsen
DynamicJsonDocument doc(2048);
deserializeJson(doc, payload);
float pvPower = doc["pvPower"];
float pvEnergy = doc["pvEnergy"];
float gridPower = doc["gridPower"];
// 3. An SolarLog senden
sendToSolarLog(pvPower, pvEnergy * 1000, gridPower);
}
http.end();
delay(30000); // 30 Sekunden
}
void sendToSolarLog(float power, float energy, float grid) {
HTTPClient http;
http.begin(SOLARLOG_API);
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", String("Bearer ") + JWT_TOKEN);
String json = "{\"current_power\":" + String(power) +
",\"total_energy\":" + String(energy) +
",\"grid_power\":" + String(grid) + "}";
int httpCode = http.POST(json);
Serial.println(httpCode == 201 ? "β
Sent" : "β Error");
http.end();
}
Option 2: Raspberry Pi (Python)
# Installation
sudo apt install python3-pip
pip3 install requests
# Systemd Service
sudo nano /etc/systemd/system/solarlog-agent.service
[Unit]
Description=SolarLog EVCC Agent
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/solarlog-agent
ExecStart=/usr/bin/python3 /home/pi/solarlog-agent/agent.py
Restart=always
[Install]
WantedBy=multi-user.target
# Aktivieren
sudo systemctl enable solarlog-agent
sudo systemctl start solarlog-agent
sudo systemctl status solarlog-agent
π― Vorteile der EVCC-Integration
FΓΌr Heimnutzer
- β EVCC bleibt lokal β alle EV-Features verfΓΌgbar
- β Keine Γnderung an EVCC-Konfiguration
- β SolarLog Agent optional β kann deaktiviert werden
- β Daten bleiben lokal (nur Statistiken an Cloud)
FΓΌr Installateure
- β EVCC als "Treiber" fΓΌr alle GerΓ€te
- β 100+ GerΓ€te sofort unterstΓΌtzt
- β Kein eigener Modbus/HTTP-Code notwendig
- β Community-Support von EVCC nutzen
- β Updates automatisch von EVCC
FΓΌr SolarLog
- β Fokus auf Multi-Site Management
- β Keine GerΓ€te-Treiber pflegen
- β EVCC ΓΌbernimmt Hardware-KompatibilitΓ€t
- β Synergie statt Konkurrenz
π Business Model
Pricing fΓΌr Installateure
| EVCC | SolarLog Agent | SolarLog Cloud |
|---|---|---|
| Kostenlos | Kostenlos | 20β¬/Monat/Standort |
Beispiel-Rechnung:
Installateur mit 100 Kunden:
ββ 100x EVCC installiert (kostenlos)
ββ 100x SolarLog Agent (ESP32 @ 16β¬ = 1.600β¬ einmalig)
ββ 100x SolarLog Cloud (20β¬/Monat = 2.000β¬ MRR)
Investition: 1.600β¬
Monatlicher Umsatz: 2.000β¬
ROI: < 1 Monat!
π Roadmap
Phase 1: EVCC API Adapter (Q4 2025)
- β Python-Adapter fΓΌr EVCC API
- β ESP32 Agent-Code
- β Raspberry Pi systemd Service
Phase 2: GerΓ€te-Mapping (Q1 2026)
- EVCC Device-DB importieren
- Auto-Discovery von EVCC-Installationen
- GerΓ€te-Profiles (Kostal, SMA, etc.)
Phase 3: Hybrid-Dashboard (Q2 2026)
- EVCC-Daten in SolarLog Dashboard
- Link zu lokaler EVCC-Instanz
- Unified Monitoring (Multi-Site)
Phase 4: Production (Q3 2026)
- Beta-Test mit 10 Installateuren
- Hardware-Kits verfΓΌgbar
- White-Label Option
π Ressourcen
- EVCC Website: evcc.io
- EVCC Docs: docs.evcc.io
- EVCC GitHub: github.com/evcc-io/evcc
- EVCC Devices: docs.evcc.io/docs/devices/meters
- Demo Video: YouTube
- Screenshot: GitHub