← ChangeLog | Inhaltsverzeichnis | Weiter: Hardware-Leitfaden →
1. Anwendungsübersicht
1.1 Zweck
ACRouter ist ein Open-Source-Controller zur automatischen Umleitung überschüssiger Solarenergie auf resistive Lasten (z. B. Warmwasserbereiter), anstatt sie ins Netz einzuspeisen. Außerdem optimiert er den Energieverbrauch während Hoch- und Niedrigtarifzeiten mit Verbrauchsgrenzen.
Hauptziel: Die Netzeinspeisung minimieren, indem die Last-Leistung dynamisch auf Basis der aktuellen Bilanz zwischen Erzeugung und Verbrauch gesteuert wird. Kosten des Stromverbrauchs aus dem Netz senken.
Hauptvorteile:
- ✅ Automatische Verwaltung überschüssiger Solarenergie
- ✅ Optimierung von Niedrigtarifen und Verbrauchsgrenzen
- ✅ Reduzierte Stromkosten (Eigenverbrauch)
- ✅ Niedrigere Anlagenkosten. Keine Batterien zur Energiespeicherung erforderlich
- ✅ Einspeiseschutz (ECO-Modus)
- ✅ Flexible Konfiguration über Weboberfläche
- ✅ Mehrere Betriebsmodi unterstützt
- ✅ Steuerung mehrerer Verbrauchsgeräte. Dimmer und Relais.
- ✅ Offener Quellcode
1.2 Funktionen
Messung und Überwachung
- Netzspannungsmessung (ZMPT107 AC-Spannungssensor)
- Strommessung an 3 Punkten (SCT-013/ACS-712 Stromsensoren):
- Laststrom (Last)
- Netzstrom (Netz) - Import/Export-Erkennung
- Solarerzeugungsstrom (Solar)
- Wirkleistungsberechnung in Echtzeit
- Aktualisierungsfrequenz: 200 ms (5 Mal pro Sekunde)
- Messgenauigkeit: 12-Bit ADC mit DMA (bis zu 80 kHz auf 8 Kanälen)
Laststeuerung
- Phasenanschnitt-Dimmer-Steuerung (TRIAC-Dimmer)
- Stufenlose Leistungsregelung 0–100 %
- Synchronisierung mit Nulldurchgangsdetektor
- Unterstützung für bis zu 2 Dimmer-Kanäle, erweiterbar auf verfügbare GPIO
- Relaisausgänge (ROADMAP: Entwicklung Phase 2)
- 2 unabhängige Relais, erweiterbar auf verfügbare GPIO
- Programmierbare Polarität (Active HIGH/LOW)
Steuerungsalgorithmen
- Proportionalregler (P-Regler)
- Ausgleich P_grid → 0
- Einstellbarer Verstärkungsfaktor (Kp)
- Betriebsmodi: OFF, AUTO, ECO, OFFGRID, MANUAL, BOOST
- Flimmerreduzierung - Glättung von Dimmer-Änderungen
Kommunikation
- WiFi: AP-Modus (192.168.4.1) + STA-Modus (Verbindung zum Router)
- WebServer: REST API + Material-UI-Oberfläche
- Serielle Konsole: Kommandozeile für Konfiguration (115200 Baud)
- OTA-Updates: Firmware-Updates über Funk (Phase 2)
Konfiguration und Speicherung
- NVS (Non-Volatile Storage):
- ACRouter-Einstellungen (Modus, Kp, Sollwert)
- WiFi-Konfiguration (SSID, Passwort)
- Hardware-Konfiguration (GPIO-Pins, Sensortypen)
- Weboberfläche:
- Dashboard mit Echtzeit-Messwerten
- WiFi-Einstellungsseite
- Hardware-Konfigurationsseite
- Betriebsmodus-Auswahl
- Serielles Terminal (Konsole):
- Echtzeit-Messwertanzeige
- Kommandozeile für Hardware- und Geräteparameter-Konfiguration
- Betriebsmodus-Auswahl
1.3 Funktionsweise
Automatische Steuerung
- Leistungsmessung:
- Spannung und Ströme werden alle 200 ms gemessen
- Effektivwertberechnung (RMS - Root Mean Square)
-
Wirkleistungsberechnung (P = U × I × cos φ)
-
Bilanzermittlung:
- P_solar = Leistung der Solarpanels
- P_load = aktueller Hausverbrauch
- P_grid = Import/Export ins Netz
-
P_dimmer = gesteuerte Last-Leistung
-
Steuerungsalgorithmus:
- Ziel: P_grid → 0 (kein Export/Import)
- Proportionalregler: ΔDimmer = Kp × P_grid
- Wird auf den Dimmer mit Grenzen 0–100 % angewendet
Überwachung über Weboberfläche
- Echtzeit-Messwerte:
- Netzspannung (V)
- Ströme: Netz, Solar, Last (A)
- Leistung: Netz, Solar, Last, Dimmer (W)
- Dimmer-Stufe (%)
-
Aktueller Betriebsmodus
-
Systeminformationen:
- Firmware-Version
- Betriebszeit
- Heap-Speicher (freies RAM)
- WiFi-RSSI (Signalpegel)
Konfiguration über Weboberfläche
- Betriebsmodus-Auswahl (6 Schaltflächen)
- Manuelle Dimmer-Steuerung (Schieberegler 0–100 %)
- WiFi-Einrichtung (Netzwerk-Scan, Verbindung)
- GPIO-Pin- und Sensortyp-Konfiguration
- Sensor-Kalibrierung (Multiplikator, Offset)
- Geräte-Neustart
1.4 Betriebsmodi
OFF (0) - Deaktiviert
Beschreibung: Dimmer ist vollständig deaktiviert (0 %), System ist inaktiv.
Usage:
- Maintenance
- Load disconnection
- Sensor testing without control
Behavior:
- Dimmer level = 0%
- Measurements continue (200 ms)
- Web interface is available
- Serial commands work
AUTO (1) - Automatisch (Solar-Router)
Beschreibung: Hauptmodus des Solar-Routers. Automatischer Ausgleich von P_grid → 0.
Algorithmus:
// Every 200 ms
P_error = P_grid; // Positive = import, negative = export
delta = Kp * P_error; // Proportional controller
dimmer_level += delta;
dimmer_level = constrain(dimmer_level, 0, 100);
Behavior:
- P_grid > 0 (import from grid) → Increase dimmer (more load)
- P_grid < 0 (export to grid) → Decrease dimmer (less load)
- P_grid ≈ 0 → Dimmer stabilized
Settings:
- Kp (gain) - gain coefficient (default: 0.05)
- Higher Kp = faster response, but possible oscillations
- Lower Kp = smoother, but slower
- setpoint - target P_grid value (usually 0 W)
Beispiel:
Initial state:
P_solar = 2000 W
P_load = 500 W
P_grid = -1500 W (export!)
Dimmer = 0%
After 5 seconds (AUTO mode, Kp=0.05):
P_solar = 2000 W
P_load = 500 W
Dimmer = 75% (~1500 W to water heater)
P_grid = 0 W ✅ (balance achieved)
ECO (2) - Sparmodus (Anti-Export)
Beschreibung: Verhindert die Einspeisung ins Netz. Import ist erlaubt, Export ist verboten.
Algorithmus:
if (P_grid < 0) { // Export to grid
// Decrease dimmer (reduce load)
delta = Kp * P_grid; // Negative delta
dimmer_level += delta;
} else {
// Import is allowed, do not increase dimmer
// Keep current level
}
dimmer_level = constrain(dimmer_level, 0, 100);
Behavior:
- P_grid < 0 (export) → Decrease dimmer (avoid export)
- P_grid > 0 (import) → Do not change dimmer (import is allowed)
- P_grid = 0 → Dimmer is stable
Applications:
- Export tariff is unfavorable or absent
- Need to use only excess energy
- Export protection when there is no grid export contract
Beispiel:
Situation 1: Solar excess
P_solar = 3000 W
P_load = 1000 W
P_grid = -500 W (export)
→ ECO mode will increase dimmer by ~500 W → P_grid = 0
Situation 2: Solar shortage
P_solar = 500 W
P_load = 1000 W
P_grid = +500 W (import)
→ ECO mode will NOT change dimmer (import is allowed)
OFFGRID (3) - Netzunabhängig
Beschreibung: Modus für autonome Systeme mit Batterien. Nutzt überschüssige Solarenergie für die Last.
Algorithmus:
// Balance by solar panel current
P_available = P_solar - P_load; // Available power
if (P_available > 0) {
// There is solar excess → increase dimmer
dimmer_level = map(P_available, 0, P_dimmer_max, 0, 100);
} else {
// No excess → turn off dimmer (save battery)
dimmer_level = 0;
}
Behavior:
- Uses only solar energy
- Does not consider P_grid (no grid)
- Priority: main load → batteries → dimmer
- Dimmer works only when there is solar excess
Applications:
- Systems without grid connection
- Solar panels + batteries
- Maximize solar energy usage
Beispiel:
Daytime (sunny):
P_solar = 1500 W
P_load = 800 W
P_available = 700 W
→ Dimmer = 50% (~700 W to water heater)
→ Battery is not discharging
Evening (no sun):
P_solar = 0 W
P_load = 800 W (from battery)
→ Dimmer = 0% (battery saving)
MANUAL (4) - Manueller Modus
Beschreibung: Dimmer wird auf eine feste Stufe eingestellt (keine Automatisierung).
Behavior:
- Dimmer level is set by user (0-100%)
- No automatic regulation
- Level is maintained until manually changed
Applications:
- Load testing
- Night tariff (set to 100%)
- Temperature control (set to 50%)
- System debugging
Settings:
- manual_level - dimmer level (0-100%)
Beispiel:
# Via Serial commands
set-manual 75 # Set dimmer to 75%
set-mode 4 # Switch to MANUAL mode
# Via web interface
1. Select MANUAL mode
2. Move slider to 75%
3. Click "Apply"
BOOST (5) - Maximale Leistung
Beschreibung: Dimmer auf 100 % (erzwungene Aufheizung).
Behavior:
- Dimmer level = 100% (constant)
- Ignores all sensors
- Maximum power to load
Applications:
- Fast water heater heating
- Using cheap tariff
- Emergency mode
Warnings:
- ⚠️ High grid consumption
- ⚠️ Possible load overheating
- ⚠️ Monitor temperature manually
Beispiel:
Night tariff (23:00-07:00):
1. Switch to BOOST mode
2. Water heater heats at maximum
3. In the morning switch back to AUTO
Result:
Heating from cheap tariff
Daytime operation in AUTO mode (solar)
1.5 Modusvergleichstabelle
| Modus | Dimmer-Steuerung | P_grid-Ausgleich | Import erlaubt | Export erlaubt | Anwendungsfall |
|---|---|---|---|---|---|
| OFF | 0 % (fest) | ❌ Nein | N/A | N/A | Wartung |
| AUTO | Automatisch | ✅ Ja (→ 0) | ✅ Ja | ✅ Ja | Standard Solar-Router |
| ECO | Auto (Anti-Export) | ⚠️ Teilweise | ✅ Ja | ❌ Nein | Kein Exportvertrag |
| OFFGRID | Auto (nur Solar) | ❌ Nein | N/A | N/A | Netzunabhängige Systeme |
| MANUAL | Fest (Benutzer) | ❌ Nein | ✅ Ja | ✅ Ja | Test / Nachttarif |
| BOOST | 100 % (fest) | ❌ Nein | ✅ Ja | ❌ Nein | Schnelle Aufheizung |
1.6 Anwendungsszenarien
Szenario 1: Standard Solar-Router
Equipment:
- 3 kW solar panels
- Sensors: Solar, Grid, Load, Voltage
- Load: 2 kW water heater
Modus: AUTO
Operation:
1. During the day there is excess solar energy
2. P_grid is negative (export to grid)
3. Controller increases dimmer → water heater heating
4. P_grid balances → 0 (zero export/import)
5. All solar energy is used locally
Szenario 2: Einspeiseschutz (ECO)
Equipment:
- 5 kW solar panels
- No grid export contract
- Sensors: Solar, Grid, Voltage
- Load: Water heater element
Modus: ECO
Operation:
1. During the day solar excess → export to grid begins
2. ECO mode detects P_grid < 0
3. Dimmer increases → water heating
4. Export prevented (P_grid ≥ 0)
5. Evening sun sets → dimmer decreases
6. Import allowed (grid purchase when needed)
Szenario 3: Autonomes System (OFFGRID)
Equipment:
- 2 kW solar panels
- 10 kWh batteries
- No grid connection
- Sensors: Solar, Load, Voltage
- Load: Tank heating element
Modus: OFFGRID
Operation:
1. System is autonomous (no grid)
2. During the day solar excess → water heating
3. At night heating element is off (no sun)
4. Batteries are used for main load
5. Maximize solar energy usage
Szenario 4: Nachttarif + Warmwasserbereiter
Equipment:
- Two-tariff meter (day/night)
- Sensors: Grid, Voltage
- Load: Water heater
Modus: MANUAL (Nacht) / OFF (Tag)
Operation:
1. Night (23:00-07:00): MANUAL 100% (cheap tariff)
2. Day (07:00-23:00): OFF (expensive tariff)
3. Programmable via schedule (Phase 2: SCHEDULE mode)
1.7 Systemarchitektur
┌─────────────────────────────────────────────────────────────┐
│ ESP32 Controller │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ PowerMeter │ │ Router │ │ DimmerHAL │ │
│ │ ADC │→ │ Controller │→ │ (Zero-cross) │ │
│ └─────────────┘ └──────────────┘ └────────────────────┘ │
│ ↓ ↓ │
│ Measurements TRIAC Control │
│ (200ms cycle) (50Hz sync) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ WiFi Manager │ │
│ │ ┌──────────────┐ ┌────────────────────────────┐ │ │
│ │ │ AP Mode │ │ WebServer (Material UI) │ │ │
│ │ │ 192.168.4.1 │ │ + REST API │ │ │
│ │ └──────────────┘ └────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ ConfigManager + HardwareConfigManager │ │
│ │ (NVS Storage) │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↑ ↓
┌────────────┐ ┌──────────────────┐
│ Sensors │ │ Dimmer Output │
├────────────┤ ├──────────────────┤
│ ZMPT107 │ │ TRIAC │
│ (Voltage) │ │ (0-100%) │
│ SCT-013 │ │ │
│ ACS-712 │ │ Load: │
│ (Current) │ │ Heater/Boiler │
│ x3 sensors │ │ (up to 2kW) │
└────────────┘ └──────────────────┘
1.8 Zielgruppe
ACRouter ist konzipiert für:
- DIY-Enthusiasten - einen Solar-Router selbst bauen
- Hausbesitzer mit Solarpanels - Eigenverbrauch optimieren
- Entwickler - Grundlage für eigene Projekte (Open Source)
- Ausbildungsprojekte - IoT, Energiemanagement, ESP32 erlernen
- Kleinunternehmen - Stromkosten senken
1.9 Einschränkungen und Warnungen
⚠️ WICHTIG:
- Elektrische Sicherheit
- Arbeiten mit 230V Netzspannung ist gefährlich
- Elektrofachkraft-Qualifikation erforderlich
- Galvanische Trennung der Sensoren ist zwingend erforderlich
-
FI-Schutzschalter (RCD) ist zwingend erforderlich
-
Lastkompatibilität für Dimmer
- Geeignet nur für resistive Lasten (Heizelemente, Heizgeräte)
- NICHT geeignet für induktive Lasten (Motoren, Transformatoren)
-
NICHT geeignet für Elektronik (LED-Treiber, Netzteile)
-
Leistung
- Maximum ist begrenzt durch das TRIAC-Modul (üblicherweise 2 kW)
- Kühlung ist bei hohen Lasten erforderlich
-
Überhitzungsschutz wird empfohlen
-
Messgenauigkeit
- Kalibrierung ist für Genauigkeit erforderlich
- Abweichung ±5–10 % mit Grundeinstellungen
-
Temperatur beeinflusst die Sensoren
-
Netzanforderungen
- Stabile Netzfrequenz (50/60 Hz)
- Qualitätsspannung ohne starke Schwankungen
- Nulldurchgangsdetektor ist kritisch für TRIAC
← ChangeLog | Inhaltsverzeichnis | Weiter: Hardware-Leitfaden →