βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 1: UNBOXING & ERSTKONTAKT β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π¦ Benutzer erhΓ€lt ESP32 E-Paper Display
β
ββ> Strom anschlieΓen (USB oder 5V Netzteil)
β
ββ> ESP32 bootet zum ersten Mal
β
ββ> Keine WLAN-Konfiguration gefunden
β
ββ> β‘ Startet automatisch im SETUP-MODUS
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 2: SETUP-MODUS (Access Point) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ESP32 erstellt eigenes WLAN:
π‘ SSID: "SolarLog-Setup-A1B2"
π Offen (kein Passwort)
ββββββββββββββββββββββββββββββββββ
β E-Paper Display zeigt: β
β β
β ββββββββββββββββββββββββββββ β
β β π§ SETUP-MODUS β β
β β β β
β β π± Verbinden mit: β β
β β SolarLog-Setup-A1B2 β β
β β β β
β β π Browser ΓΆffnet β β
β β automatisch β β
β β β β
β β [βββββββ] Schritt 1/5 β β
β ββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 3: CAPTIVE PORTAL (Automatische Browser-Umleitung) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Benutzer:
β
ββ> Γffnet WLAN-Einstellungen auf Laptop/Smartphone
β
ββ> WΓ€hlt "SolarLog-Setup-A1B2"
β
ββ> Verbindung wird hergestellt
β
ββ> β¨ Browser ΓΆffnet AUTOMATISCH
ββββββββββββββββββββββββββββββββββββββββ
β http://192.168.4.1 β
ββββββββββββββββββββββββββββββββββββββββ€
β π SolarLog ESP32 Setup β
β β
β Willkommen! In 4 Schritten β
β richten wir dein GerΓ€t ein. β
β β
β [Los geht's β] β
ββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 4: SCHRITT-FΓR-SCHRITT KONFIGURATION β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCHRITT 1: WLAN-VERBINDUNG β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Browser-Seite:
β
ββ> [π‘ Netzwerke scannen] Button
β
ββ> ESP32 scannt verfΓΌgbare WLANs
β
ββ> Liste wird angezeigt:
ββββββββββββββββββββββββββββββββββββ
β VerfΓΌgbare Netzwerke: β
β β
β ββββββββββββββββββββββββββββββ β
β β πΆ PV-Anlage-WLAN -65 dBm βπβ
β ββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββ β
β β πΆ FritzBox 7590 -48 dBm βπβ
β ββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββ β
β β πΆ Gast-WLAN -72 dBm β β
β ββββββββββββββββββββββββββββββ β
β β
β Oder manuell eingeben: β
β SSID: [____________] β
β Pass: [____________] β
β β
β [Weiter β] β
ββββββββββββββββββββββββββββββββββββ
Benutzer:
ββ> Klickt auf "PV-Anlage-WLAN"
ββ> Gibt Passwort ein
ββ> Klickt "Weiter"
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCHRITT 2: PORTAL-ANMELDUNG β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Browser-Seite:
ββββββββββββββββββββββββββββββββββββ
β Portal-Verbindung β
β β
β Portal-URL: β
β [solarlog-api.karma.organic] β
β β
β Deine Zugangsdaten: β
β E-Mail: [___________________] β
β Pass: [___________________] β
β β
β [Login & GerΓ€t registrieren] β
ββββββββββββββββββββββββββββββββββββ
Was passiert im Hintergrund:
ESP32 β Portal:
β
ββ> POST /api/v1/auth/login
β {email, password}
β
ββ> β ErhΓ€lt: access_token
β
ββ> POST /api/v1/devices/register
{mac_address: "A1:B2:C3:D4:E5:F6",
model: "ESP32-S3 E-Paper"}
Authorization: Bearer <access_token>
Portal β ESP32:
β
ββ> β Generiert Device-Token
{
device_id: 42,
device_token: "eyJhbGc...",
mqtt_credentials: {...}
}
β
GerΓ€t ist jetzt im Portal registriert!
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCHRITT 3: INVERTER-ERKENNUNG β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Browser-Seite:
ββββββββββββββββββββββββββββββββββββ
β Inverter-Auswahl β
β β
β [π Inverter scannen] β
β β
β β³ Scanne Netzwerk... β
β 192.168.1.1 ... β β
β 192.168.1.2 ... β β
β ... β
β 192.168.1.50 ... β SMA! β
β ... β
β 192.168.1.100 ... β Kostal! β
ββββββββββββββββββββββββββββββββββββ
ESP32 Auto-Discovery:
β
ββ> Scannt lokales Netzwerk (192.168.1.1-254)
β
ββ> Testet jeden Host:
β ββ> HTTP Port 80 (Webinterface?)
β ββ> Modbus Port 502
β ββ> Herstellerspezifische Ports
β
ββ> Identifiziert Inverter-Typ via:
ββ> HTTP Response Header
ββ> Modbus Device ID
ββ> Hersteller-Fingerprinting
Ergebnis:
ββββββββββββββββββββββββββββββββββββ
β Gefundene Inverter: β
β β
β ββββββββββββββββββββββββββββββ β
β β β‘ SMA Sunny Boy 3.0 β β
β β 192.168.1.50 β β
β β 4.2 kW aktuell β β
β ββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββ β
β β β‘ Kostal Plenticore 5.5 β β
β β 192.168.1.100 β β
β β 2.8 kW aktuell β β
β ββββββββββββββββββββββββββββββ β
β β
β Oder manuell: β
β Typ: [SMA βΌ] β
β IP: [____________] β
β β
β [π§ͺ Verbindung testen] β
β [Weiter β] β
ββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCHRITT 4: FEINABSTIMMUNG β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Browser-Seite:
ββββββββββββββββββββββββββββββββββββ
β Einstellungen β
β β
β Display Update: β
β [ 30 Sekunden βΌ] β
β β
β API Daten-Upload: β
β [ 60 Sekunden βΌ] β
β β
β Zeitzone: β
β [ Europe/Berlin βΌ] β
β β
β [β Speichern & Starten] β
ββββββββββββββββββββββββββββββββββββ
ESP32:
β
ββ> Speichert komplette Konfiguration in Flash:
β
β {
β "wifi": {
β "ssid": "PV-Anlage-WLAN",
β "password": "***********"
β },
β "portal": {
β "url": "https://solarlog-api.karma.organic",
β "device_id": 42,
β "device_token": "eyJhbGc..."
β },
β "inverter": {
β "type": "SMA",
β "ip": "192.168.1.50",
β "modbus_unit_id": 3
β },
β "intervals": {
β "display_update": 30,
β "api_upload": 60
β },
β "timezone": "Europe/Berlin"
β }
β
ββ> β
Konfiguration gespeichert!
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCHRITT 5: FERTIGSTELLUNG β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Browser-Seite:
ββββββββββββββββββββββββββββββββββββ
β β
Setup abgeschlossen! β
β β
β Dein ESP32 wurde erfolgreich β
β konfiguriert. β
β β
β Das GerΓ€t startet in 3 Sek. β
β neu und verbindet sich β
β automatisch mit deinem WLAN. β
β β
β NΓ€chste Schritte: β
β 1. Laptop wieder mit normalem β
β WLAN verbinden β
β 2. Portal ΓΆffnen: β
β solarlog.karma.organic β
β 3. GerΓ€t sollte nach ~30 Sek β
β online sein β
β β
β [Zum Portal β] β
ββββββββββββββββββββββββββββββββββββ
ESP32:
β
ββ> Countdown: 3... 2... 1...
β
ββ> π NEUSTART!
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 5: NORMALBETRIEB β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ESP32 bootet neu:
β
ββ> Liest Konfiguration aus Flash
β
ββ> Verbindet mit "PV-Anlage-WLAN"
β ββ> β Verbunden! (IP: 192.168.1.201)
β
ββ> Verbindet mit Portal
β ββ> POST /api/v1/devices/42/heartbeat
β Authorization: Bearer <device_token>
β ββ> β Portal antwortet: "Welcome back!"
β
ββ> Verbindet mit Inverter (192.168.1.50)
β ββ> Modbus Read: Register 30775 (AC Power)
β ββ> β 4237 W
β
ββ> Startet Haupt-Loop:
ββββββββββββββββββββββββββββββββββββββββ
β ENDLOS-SCHLEIFE β
ββββββββββββββββββββββββββββββββββββββββ
Jede 30 Sekunden:
β
ββ> Inverter-Daten lesen
β ββ> Current Power: 4237 W
β ββ> Daily Energy: 28.5 kWh
β ββ> Total Energy: 12450 kWh
β
ββ> E-Paper Display aktualisieren
β
β ββββββββββββββββββββββββββββββββββ
β β SMA Sunny Boy 3.0 β
β β 192.168.1.50 β
β β β
β β β‘ AKTUELL 4.2 kW β
β β βοΈ HEUTE 28.5 kWh β
β β π GESAMT 12.45 MWh β
β β β
β β π‘ Online ββββ 92% β
β β π 18:32 23.10.2025 β
β ββββββββββββββββββββββββββββββββββ
β
ββ> Jede 60 Sekunden zusΓ€tzlich:
β
ββ> Daten an Portal senden
β
ββ> POST /api/v1/devices/42/data
{
"timestamp": "2025-10-23T18:32:15Z",
"current_power": 4237,
"daily_energy": 28.5,
"total_energy": 12450,
"dc_voltage": 385.2,
"dc_current": 11.4,
"ac_voltage": 234.8,
"ac_current": 18.0,
"temperature": 42.5,
"status": "producing"
}
Portal β ESP32:
ββ> β 200 OK {"stored": true}
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 6: PORTAL-ANSICHT (Benutzer-Perspektive) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Benutzer ΓΆffnet Portal im Browser:
https://solarlog.karma.organic
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π Dashboard admin@example.com βΌβ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β π Meine GerΓ€te [+ GerΓ€t hinzu] β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ESP32 E-Paper #42 π’ Online β β
β β MAC: A1:B2:C3:D4:E5:F6 β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Inverter: SMA Sunny Boy 3.0 @ 192.168.1.50 β β
β β β β
β β π Aktuelle Leistung: 4.2 kW β β
β β βοΈ Heute produziert: 28.5 kWh β β
β β π Gesamt produziert: 12.45 MWh β β
β β β β
β β π Status: Producing β β
β β π‘οΈ Temperatur: 42.5Β°C β β
β β π‘ WLAN-SignalstΓ€rke: -65 dBm (gut) β β
β β β±οΈ Letzte Aktualisierung: vor 12 Sekunden β β
β β β° Online seit: 18:31:45 (42 Min) β β
β β β β
β β [π Details] [βοΈ Einstellungen] [π Neu starten] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Klick auf [π Details]: β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β π Produktions-Verlauf β β
β β β β
β β [Heute] [Woche] [Monat] [Jahr] β β
β β β β
β β 30 kWh β€ ββββββ β β
β β β βββββ― β β
β β 20 kWh β βββββ― β β
β β β βββββ― β β
β β 10 kWh β βββββ― β β
β β β βββββ― β β
β β 0 kWh βββββββββββββββ΄βββββββββββββββββββββββββββ β β
β β 06:00 09:00 12:00 15:00 18:00 β β
β β β β
β β π Debug-Logs: β β
β β 18:32:15 [INFO] Data uploaded successfully β β
β β 18:31:15 [INFO] Data uploaded successfully β β
β β 18:30:15 [INFO] Data uploaded successfully β β
β β 18:29:15 [WARN] Inverter read timeout, retry... β β
β β 18:29:16 [INFO] Inverter connected β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FEHLERBEHANDLUNG & RECOVERY β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Szenario 1: WLAN-Verbindung fehlgeschlagen
β
ESP32:
β
ββ> Versuch 1: Verbinden... β Timeout
ββ> Versuch 2: Verbinden... β Auth Failed
ββ> Versuch 3: Verbinden... β No Response
β
ββ> β οΈ 3 Fehlversuche!
β
ββ> Automatischer Fallback:
β
ββ> Startet wieder im AP-Modus
β SSID: "SolarLog-Setup-A1B2"
β
ββ> E-Paper zeigt:
ββββββββββββββββββββββββββββββββ
β β οΈ VERBINDUNGSFEHLER β
β β
β WLAN nicht erreichbar. β
β β
β Bitte neu konfigurieren: β
β 1. Mit ESP32 verbinden β
β 2. Setup-Seite ΓΆffnet sich β
β β
β SSID: SolarLog-Setup-A1B2 β
ββββββββββββββββββββββββββββββββ
Szenario 2: Portal nicht erreichbar
β
ESP32:
β
ββ> Inverter-Daten lesen: β OK
ββ> Display aktualisieren: β OK
ββ> Portal-Upload versuchen: β Connection Refused
β
ββ> Fallback-Strategie:
β
ββ> Daten lokal zwischenspeichern (Buffer fΓΌr 100 Datenpunkte)
β
ββ> Weiter lokale Anzeige aktualisieren
β
ββ> Exponential Backoff:
β ββ> NΓ€chster Versuch in 1 Sekunde
β ββ> NΓ€chster Versuch in 2 Sekunden
β ββ> NΓ€chster Versuch in 4 Sekunden
β ββ> ... max. 60 Sekunden
β
ββ> Sobald Portal wieder erreichbar:
β
ββ> Alle gepufferten Daten nachholen
(Bulk Upload)
Szenario 3: Inverter nicht erreichbar
β
ESP32:
β
ββ> Modbus Read: β Timeout
ββ> Retry 1: β Timeout
ββ> Retry 2: β Connection Refused
β
ββ> E-Paper zeigt:
ββββββββββββββββββββββββββββββββ
β SMA Sunny Boy 3.0 β
β 192.168.1.50 β
β β
β β οΈ INVERTER OFFLINE β
β β
β Letzte bekannte Daten: β
β β‘ AKTUELL 0.0 kW β
β βοΈ HEUTE 28.5 kWh β
β β
β π Versuche neu zu β
β verbinden... β
β β
β π 18:35 23.10.2025 β
ββββββββββββββββββββββββββββββββ
Portal erhΓ€lt:
POST /api/v1/devices/42/data
{
"current_power": 0,
"status": "inverter_offline",
"error": "Modbus read timeout after 3 retries"
}
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WARTUNG & UPDATES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Over-The-Air (OTA) Firmware Update:
Portal-Admin:
β
ββ> LΓ€dt neue Firmware-Version hoch (v1.2.0)
β
ββ> Markiert GerΓ€te fΓΌr Update:
ββ> ESP32 #42
ββ> ESP32 #43
ββ> ESP32 #44
ESP32 #42:
β
ββ> NΓ€chster Heartbeat:
β POST /api/v1/devices/42/heartbeat
β {firmware_version: "1.1.0"}
β
β Portal β ESP32:
β {
β "update_available": true,
β "version": "1.2.0",
β "url": "https://solarlog-api.karma.organic/firmware/v1.2.0.bin",
β "checksum": "sha256:abc123..."
β }
β
ββ> E-Paper zeigt:
β ββββββββββββββββββββββββββββββββ
β β π UPDATE VERFΓGBAR β
β β β
β β v1.1.0 β v1.2.0 β
β β β
β β Download lΓ€uft... β
β β [ββββββββββ] 80% β
β ββββββββββββββββββββββββββββββββ
β
ββ> Download Firmware
ββ> Checksum verifizieren
ββ> Flash schreiben
ββ> Neustart
Nach Neustart:
ββ> POST /api/v1/devices/42/heartbeat
{firmware_version: "1.2.0"}
Portal β ESP32:
ββ> "Update successful! β"
Remote-Konfiguration:
Portal-Benutzer Γ€ndert Einstellung:
β
ββ> "API Upload Intervall: 60s β 300s"
β
ββ> Speichern
Portal:
β
ββ> NΓ€chster Heartbeat von ESP32:
β
ββ> Sendet neue Konfiguration:
{
"config_updated": true,
"intervals": {
"api_upload": 300
}
}
ESP32:
β
ββ> EmpfΓ€ngt neue Config
ββ> Speichert in Flash
ββ> Wendet sofort an
ββ> BestΓ€tigung:
POST /api/v1/devices/42/config-ack
{"applied": true}
ESP32 β Inverter: 120 Requests (alle 30s Display-Update)
ESP32 β Portal: 60 Requests (alle 60s API-Upload)
Portal β ESP32: 1 Request (Heartbeat-Response)
Datenvolumen:
ββ> Upstream (ESP32 β Portal): ~15 KB/Stunde (~360 KB/Tag)
ββ> Downstream (Portal β ESP32): ~2 KB/Stunde (~48 KB/Tag)
ββ> GESAMT: ~17 KB/Stunde (~408 KB/Tag)
Pro GerΓ€t und Monat: ~12 MB
Bei 1000 GerΓ€ten: ~12 GB/Monat
Idle: ~80 mA @ 5V = 0.4W
WiFi aktiv: ~120 mA @ 5V = 0.6W
E-Paper Update: ~150 mA @ 5V = 0.75W (2-3 Sekunden)
Durchschnitt: ~100 mA @ 5V = 0.5W
Pro Tag: 0.5W Γ 24h = 12 Wh = 0.012 kWh
Pro Jahr: 0.012 kWh Γ 365 = 4.4 kWh
Kosten: 4.4 kWh Γ 0.35 β¬/kWh = 1.54 β¬ pro Jahr
MTBF (Mean Time Between Failures): >2 Jahre
VerfΓΌgbarkeit: 99.9%
Max. Offline-Zeit: <5 Minuten (bei WLAN-Ausfall)
Recovery-Zeit: <30 Sekunden