Steuerung und Auswertung für die Wallbox daheim – über Modbus TCP, mit Weboberfläche und REST-API. Zusammen mit TeslaMate und dem Tesla-Dashboard ergibt sich ein vollständiges Bild vom Hausanschluss bis in den Akku.
Doku mit Screenshots: https://www.ruthner.at/daheimlader/
- Live-Werte der Wallbox: Leistung, Ströme und Spannungen je Phase, Session, Zähler
- Ladesteuerung: Ladestrom 6–16 A, Pause, Automatik „bis HH:MM auf X %“ (startet so spät wie möglich, rechnet mit der gelernten Ladekurve)
- Lastbegrenzung: hält den Netzbezug im 15-Minuten-Mittel unter einer Grenze (5–9,8 kW) – wichtig, wo der Netzbetreiber nach Leistung abrechnet. Kurze Spitzen (Herd, Mikrowelle) werden im Rest der Viertelstunde ausgeglichen; optional Rücksicht auf eine Wärmepumpe
- Ladeverläufe: jede Ladung als Kurve (Hausanschluss, Wallbox, Sollstrom, Grund der Regelung), 90 Tage
- Leitungsverlust zwischen Hausanschluss und Wallbox (mit Shelly 3EM), Kalibrierung per Knopfdruck
- mit TeslaMate: Abgleich Wallbox ↔ Auto, Wirkungsgrad, nutzbare Akkukapazität, Ladekurve, Statistik
| Teil | Pflicht? | Wozu |
|---|---|---|
| Wallbox mit Modbus TCP | ja | Registerliste siehe unten (Ladestrom-Vorgabe in Register 91) |
| Shelly 3EM (Gen1) am Hausanschluss | für Lastbegrenzung und Leitungsverlust | Netzbezug und Spannungen |
| zweiter Shelly 3EM an der Wärmepumpe | nein | Lastbegrenzung drosselt, solange sie läuft |
| TeslaMate (PostgreSQL + MQTT) | nein | Ladekurve, Kapazität, Statistik, Ladeziel/Restzeit |
| Register | Inhalt | Typ |
|---|---|---|
| 0 | Ladezustand (1 Standby, 2 verbunden, 4 lädt, 6 Session beendet) | Uint16 |
| 2 | Steckerzustand | Uint16 |
| 6, 8, 10 | Strom L1–L3 | Uint16 ÷ 10 A |
| 12–13 | Leistung | Uint32 W |
| 28–29 | Zähler gesamt | Uint32 ÷ 10 kWh |
| 32 | maximaler Strom der Wallbox | Uint16 ÷ 10 A |
| 72 | Energie der Session | Uint16 ÷ 10 kWh |
| 78–79 | Dauer der Session | Uint32 s |
| 91 | Ladestrom-Vorgabe (lesen/schreiben), 0 = Pause | Uint16 ÷ 10 A |
| 109, 111, 113 | Spannung L1–L3 | Uint16 ÷ 10 V |
Getestet mit der DaheimLader-Wallbox (nach ihr ist das Projekt benannt; sie meldet sich intern als „M3W_DHL“). Andere Wallboxen brauchen eine angepasste Registerliste in main.py (Abschnitt „Register map“).
git clone https://github.com/wolfiru/daheimlader.git
cd daheimlader
sudo ./install.shDer Installer legt ein Python-venv unter /opt/daheimlader an, einen eigenen Systembenutzer und den systemd-Dienst, und fragt ab: Wallbox (wird sofort gelesen), Shelly, TeslaMate (legt auf Wunsch eine Nur-Lese-Rolle an), MQTT, Strompreis (Durchschnitt inkl. Netzgebühren – oder aus den Teilen ausrechnen), Standort.
Ist auf demselben Rechner das Tesla-Dashboard installiert, trägt er sich dort gleich ein.
Einstellungen: /opt/daheimlader/daheimlader.env (nur für den Dienst lesbar). Ändern: erneut sudo ./install.sh, aktualisieren: git pull && sudo ./install.sh --update.
- Weboberfläche:
http://<rechner>:7070/· Statistik:/statistik· technische Doku:/static/doku.html - Logs:
journalctl -u daheimlader -f - Testbetrieb ohne Schreiben an die Wallbox:
DAHEIM_NUR_LESEN=1in der.env - Regelung prüfen:
python3 tests/sim.pyundpython3 tests/sim2.py(Herd, Mikrowelle, Wärmepumpe, PV, Wallbox-Verzug)
Der DaheimLader schreibt nur den Ladestrom (Register 91) und sendet keine Befehle an das Auto. Elektrische Arbeiten an Wallbox und Hausanschluss gehören in die Hände einer Elektrofachkraft.
MIT – siehe LICENSE.
