Eine Home Assistant Custom Integration zur automatischen Erstellung und dem Versand von monatlichen Erstattungsanforderungen fĂŒr Ladekosten des Dienstfahrzeuges an der privaten Wallbox.
Die Integration erstellt ein professionelles PDF-Dokument mit allen relevanten Daten und versendet es direkt per E-Mail an den Arbeitgeber.
Rechnungsbeispiel (Vorschau):
- Features
- Beispielausgabe
- Hardware
- Installation
- Einrichtung
- E-Mail-Konfiguration
- Automationen
- Buttons & manueller Versand
- Sensoren
- Einstellungen nachtrÀglich Àndern
- ESPHome-Firmware
- PDF-Rechnung auf Knopfdruck oder per Automation mit:
- Name, ZĂ€hlernummer, Abrechnungszeitraum
- ZĂ€hlerstand zu Beginn und Ende des Zeitraums (mit exakter Uhrzeit)
- Verbrauch in kWh
- Strompreis je kWh
- Gesamtbetrag in EUR
- Optionale 2. Seite mit TagesĂŒbersicht (kWh und EUR pro Tag, PlausibilitĂ€tsprĂŒfung)
- Versand per E-Mail (SMTP) mit PDF als Anhang und HTML-Zusammenfassung im E-Mail-Text
- Monatliche Automation möglich (Service
wallbox_billing.send_invoice) - 3 Buttons: Abrechnung senden, Test-Rechnung (kein State-Update), Beispiel-PDF
- 4 Sensoren fĂŒr aktuellen Verbrauch, Kosten, letztes Abrechnungsdatum und ZĂ€hlerstand
- Alle Einstellungen jederzeit ĂŒber die HA-OberflĂ€che Ă€nderbar
- Persistente Speicherung des letzten ZĂ€hlerstandes ĂŒber HA-Neustarts hinweg
Eine echte Beispielausgabe (inkl. TagesĂŒbersicht auf Seite 2) findest du hier:
Die Ausgabe ist reprĂ€sentativ fĂŒr den Versand ĂŒber den Button âBeispiel-PDF sendenâ.
đ Bei Amazon kaufen: Eltako DSZ15D-3x80A DrehstromzĂ€hler (Affiliate-Link â beim Kauf ĂŒber diesen Link unterstĂŒtzt du das Projekt ohne Mehrkosten)
Der Eltako DSZ15D-3x80A ist ein MID-geeichter DrehstromzĂ€hler mit S0-Schnittstelle, ideal fĂŒr die Erfassung von Wallbox-Ladeenergie.
đ Bedienungsanleitung & Datenblatt (PDF, Eltako)
| Eigenschaft | Wert |
|---|---|
| Betriebsspannung | 3Ă230/400 V, 50 Hz |
| Maximalstrom | 3Ă80 A |
| Referenzstrom I_ref | 3Ă0,5â10 (80) A |
| Anlaufstrom | 40 mA |
| Genauigkeitsklasse | B (±1 %) |
| Eigenverbrauch | 0,5 W je Pfad |
| Anzeige | LC-Display, 7 Stellen |
| Betriebstemperatur | â25 °C bis +55 °C |
| Schutzart | IP50 (Einbau in IP51-Schrank) |
| Abmessungen | 4 TE = 70 mm breit, 58 mm tief (DIN-EN 60715 TH35) |
| MID-geeicht | â (EG-BaumusterprĂŒfbescheinigung 0120/SGS0204) |
| Eigenschaft | Wert |
|---|---|
| Norm | DIN EN 62053-31 |
| AusfĂŒhrung | Potenzialfrei (Optokoppler) |
| Spannung | min. 5 V DC, max. 30 V DC |
| Strom | max. 20 mA |
| Impedanz | 100 Ω |
| ImpulslÀnge | 30 ms |
| Impulse | 1.000 Imp./kWh |
| Klemmen | SO+ und SOâ |
SO-Ausgang
+ â
| |
N E1 E2 SO+ SOâ
| | | | |
ââââââŽâââââŽâââââŽâââââ (Oberklemmen)
[ DSZ15D Display ]
âL1 âL1 âL2 âL2 âL3 âL3
| | | | | |
L1âââââââ L2âââââââ L3âââââââ
Wichtig: Installation nur durch eine Elektrofachkraft! Falsche Verdrahtung kann zu Brandgefahr oder elektrischen SchlĂ€gen fĂŒhren.
Die SO+ und SOâ-Klemmen werden mit dem ESP32 (GPIO14) verbunden â entweder direkt oder ĂŒber einen Pull-up-Widerstand (je nach Spannungspegel).
đ Bei Amazon kaufen: ESP32 Entwicklungsboard (Affiliate-Link â beim Kauf ĂŒber diesen Link unterstĂŒtzt du das Projekt ohne Mehrkosten)
Als Mikrocontroller wird ein handelsĂŒbliches ESP32-Entwicklungsboard (esp32dev) mit ESPHome verwendet. Der ESP32 zĂ€hlt die S0-Impulse des DSZ15D, integriert den Energieverbrauch und stellt den ZĂ€hlerstand als Sensor in Home Assistant bereit.
Eine ausfĂŒhrliche Anleitung zur Verdrahtung des S0-Ausgangs eines StromzĂ€hlers an einen ESP-Mikrocontroller (inkl. Schaltplan und ESPHome-Konfiguration) findest du hier:
đ S0-Pulse eines StromzĂ€hlers zĂ€hlen â simon42 Community
KurzĂŒbersicht der Verbindung:
| DSZ15D Klemme | ESP32 Pin | Hinweis |
|---|---|---|
| SO+ | 3,3 V oder GPIO (mit Pull-up) | Plusseite des Optokopplers |
| SOâ | GPIO14 | Impulseingang |
| â | GND | Gemeinsame Masse |
Die ESPHome-Konfiguration (Pulse Counter, 1000 Imp./kWh, GPIO14) liegt im Repository unter
esphome/wallbox.yaml.
- HACS â Integrationen â MenĂŒ (âź) oben rechts â Benutzerdefinierte Repositories
- URL eingeben:
https://github.com/Feberdin/ha-wallbox-billing - Kategorie: Integration â HinzufĂŒgen
- Integration in der Liste suchen und Herunterladen
- Home Assistant neu starten
- Den Ordner
custom_components/wallbox_billing/in dein HA-Konfigurationsverzeichnis kopieren (nebenconfiguration.yaml) - Home Assistant neu starten
- Einstellungen â Integrationen â + Integration hinzufĂŒgen
- Nach âWallbox Abrechnung" suchen und auswĂ€hlen
| Feld | Beschreibung | Beispiel |
|---|---|---|
| Energiesensor | ESPHome-Sensor mit dem ZĂ€hlerstand | sensor.esp32_wallbox_wallbox_zahlerstand |
| Dein Name | Wird auf der PDF als Absender angezeigt | Max Mustermann |
| ZÀhlernummer | Seriennummer des EnergiezÀhlers | DSZ15D-001 |
| Strompreis (âŹ/kWh) | Aktueller Hausstrompreis | 0,3400 |
| Startwert (kWh) | ZĂ€hlerstand der letzten Abrechnung | 4523,456 |
| Startdatum | Datum der letzten Abrechnung | 01.02.2026 |
| Feld | Beschreibung |
|---|---|
| EmpfÀnger-E-Mail | E-Mail-Adresse des Arbeitgebers |
| SMTP-Host | Mailserver deines E-Mail-Anbieters |
| Port | Meist 587 (TLS) oder 465 (SSL) |
| Absender-E-Mail | Deine E-Mail-Adresse |
| Benutzername | Deine E-Mail-Adresse (oder leer lassen) |
| Passwort | Dein Passwort oder App-Passwort |
| TLS | Bei Port 587: Ein |
| SSL | Bei Port 465: Ein |
Alle Einstellungen können jederzeit unter Einstellungen â Integrationen â Wallbox Abrechnung â Konfigurieren geĂ€ndert werden.
Google lĂ€sst fĂŒr externe Apps wie Home Assistant kein normales Google-Passwort zu. Stattdessen wird ein App-Passwort benötigt.
Voraussetzung: 2-Faktor-Authentifizierung muss bei Google aktiviert sein.
Schritt-fĂŒr-Schritt:
-
Gehe zu myaccount.google.com/apppasswords (du musst in deinem Google-Konto eingeloggt sein)
-
Klicke auf âApp-Passwort erstellen"
-
Gib einen beliebigen Namen ein, z. B.
Home Assistant Wallbox -
Klicke auf âErstellen"
-
Du bekommst ein 16-stelliges Passwort angezeigt (Format:
xxxx xxxx xxxx xxxx) -
Kopiere dieses Passwort und trage es in der Integration unter Passwort ein (Leerzeichen werden beim EinfĂŒgen automatisch ignoriert)
Gmail SMTP-Einstellungen:
| Feld | Wert |
|---|---|
| SMTP-Host | smtp.gmail.com |
| Port | 587 |
| TLS | Ein |
| SSL | Aus |
| Benutzername | deine vollstÀndige Gmail-Adresse |
| Passwort | das 16-stellige App-Passwort |
Hinweis: Das App-Passwort gilt nur fĂŒr diese eine Anwendung und kann jederzeit unter myaccount.google.com/apppasswords widerrufen werden.
| Anbieter | Host | Port | TLS | SSL | Hinweis |
|---|---|---|---|---|---|
| Gmail | smtp.gmail.com |
587 |
â | â | App-Passwort erforderlich |
| Gmail (SSL) | smtp.gmail.com |
465 |
â | â | App-Passwort erforderlich |
| GMX | mail.gmx.net |
587 |
â | â | Normales Passwort |
| Web.de | smtp.web.de |
587 |
â | â | Normales Passwort |
| T-Online | securesmtp.t-online.de |
587 |
â | â | Normales Passwort |
| iCloud | smtp.mail.me.com |
587 |
â | â | App-Passwort erforderlich |
| Outlook.com | smtp-mail.outlook.com |
587 |
â | â | Nur private Konten ohne 2FA |
Outlook / Microsoft 365: Microsoft hat Basic-Authentifizierung fĂŒr persönliche Microsoft 365-Konten seit September 2024 deaktiviert. FĂŒr private Outlook.com-Konten ohne 2FA kann es noch funktionieren. Empfehlung: Gmail oder GMX verwenden.
Diese Automation sendet die Abrechnung automatisch am 1. jeden Monats um 08:00 Uhr.
Einrichten: Einstellungen â Automationen â + Neu erstellen â oben rechts YAML bearbeiten â folgenden Code einfĂŒgen:
alias: "Wallbox Abrechnung â Monatlich senden"
description: "Erstellt und sendet am 1. jeden Monats die Wallbox-Abrechnung per E-Mail"
trigger:
- platform: time
at: "08:00:00"
condition:
- condition: template
value_template: "{{ now().day == 1 }}"
action:
- service: wallbox_billing.send_invoice
data: {}
mode: singleTipp: Die Uhrzeit (
08:00:00) kann beliebig angepasst werden.
Die Integration feuert nach jedem erfolgreichen Versand das Event wallbox_billing_invoice_sent. Diese Automation zeigt daraufhin eine Benachrichtigung an â egal ob der Versand durch die monatliche Automation oder durch manuellen Button-Klick ausgelöst wurde.
alias: "Wallbox Abrechnung â Benachrichtigung"
description: "Zeigt eine Meldung in Home Assistant an wenn die Abrechnung versendet wurde"
trigger:
- platform: event
event_type: wallbox_billing_invoice_sent
action:
- service: notify.persistent_notification
data:
title: "Wallbox Abrechnung versendet"
message: "Die monatliche Erstattungsanforderung wurde erfolgreich per E-Mail gesendet."
mode: singleVoraussetzung: Home Assistant Companion App auf dem Smartphone installiert.
alias: "Wallbox Abrechnung â Push-Benachrichtigung"
description: "Sendet eine Push-Nachricht aufs Handy wenn die Abrechnung versendet wurde"
trigger:
- platform: event
event_type: wallbox_billing_invoice_sent
action:
- service: notify.mobile_app_DEIN_GERĂTENAME
data:
title: "Wallbox Abrechnung versendet"
message: "Die Erstattungsanforderung wurde erfolgreich per E-Mail gesendet."
mode: singleDen genauen GerĂ€tenamen findest du unter: Einstellungen â Integrationen â Companion App â Benachrichtigungen. Ersetze
DEIN_GERĂTENAMEdurch den dort angezeigten Namen (z. B.notify.mobile_app_iphone_von_max).
In Home Assistant erscheint nach der Einrichtung das GerĂ€t âWallbox Abrechnung" mit drei Buttons:
| Button | Funktion |
|---|---|
| Rechnung erstellen & senden | Erstellt die PDF mit echten aktuellen Werten und sendet sie per E-Mail. Speichert anschlieĂend den aktuellen ZĂ€hlerstand als neuen Startwert. |
| Test-Rechnung senden | Erstellt und sendet die PDF mit echten Werten (Subject: âTEST: âŠ"), ohne ZĂ€hlerstand oder Datum zu Ă€ndern. Ideal zum Testen der E-Mail-Zustellung und des PDF-Layouts. |
| Beispiel-PDF senden | Generiert eine PDF mit Dummy-Daten (Max Mustermann, fiktive Verbrauchswerte) und sendet sie an die konfigurierte E-Mail. NĂŒtzlich zur ĂberprĂŒfung des PDF-Layouts ohne echte Daten. |
Wichtig: Nach dem echten Versand (Button oder Automation) wird der aktuelle ZĂ€hlerstand automatisch als neuer Startwert fĂŒr den nĂ€chsten Abrechnungszeitraum gespeichert. Test- und Beispiel-Buttons Ă€ndern keine Werte.
| Sensor | Einheit | Beschreibung |
|---|---|---|
sensor.wallbox_abrechnung_verbrauch_seit_letzter_abrechnung |
kWh | Verbrauch seit letzter Abrechnung |
sensor.wallbox_abrechnung_kosten_seit_letzter_abrechnung |
EUR | Kosten seit letzter Abrechnung |
sensor.wallbox_abrechnung_letzte_abrechnung |
Datum | Datum der letzten Abrechnung |
sensor.wallbox_abrechnung_zahlerstand_letzte_abrechnung |
kWh | ZĂ€hlerstand bei letzter Abrechnung |
Alle Einstellungen (Strompreis, EmpfĂ€nger-E-Mail, SMTP-Daten, Name, ZĂ€hlernummer, TagesĂŒbersicht) können jederzeit geĂ€ndert werden:
Einstellungen â Integrationen â Wallbox Abrechnung â Konfigurieren
Dort sind auch die neuen Optionen fĂŒr die TagesĂŒbersicht verfĂŒgbar:
| Option | Standard | Beschreibung |
|---|---|---|
| TagesĂŒbersicht im PDF anhĂ€ngen | Ein | FĂŒgt eine 2. PDF-Seite mit Tagesverbrauch und -kosten aus dem HA Recorder hinzu |
| Ablesezeit Recorder (Stunde) | 0 | Stunde (0â23), zu der tĂ€glich der ZĂ€hlerstand aus dem Recorder abgelesen wird (0 = Mitternacht) |
Die ESPHome-Konfiguration fĂŒr den ESP32 liegt unter esphome/wallbox.yaml.
Die API-VerschlĂŒsselung, das OTA-Passwort und das Passwort des Fallback-WLANs
stehen niemals direkt in wallbox.yaml. Erstelle lokal die ignorierte Datei:
cp esphome/secrets.example.yaml esphome/secrets.yamlErzeuge fĂŒr jeden Eintrag einen neuen, unabhĂ€ngigen Wert. Der API-SchlĂŒssel muss ein Base64-kodierter 32-Byte-Wert sein; die beiden Passwörter sollten ebenfalls zufĂ€llig und eindeutig sein. Eine lokale Erzeugung ist beispielsweise möglich mit:
openssl rand -base64 32
openssl rand -hex 24
openssl rand -hex 24Ăbertrage keine Ausgabe dieser Befehle in Git, Issues, Logs oder Screenshots. Nachdem ein Wert versehentlich veröffentlicht wurde, muss er auf dem ESP32 geĂ€ndert werden; das bloĂe Löschen aus Git macht ihn nicht wieder geheim.
Vor einem Commit:
python3 -m unittest discover -s tests -p 'test_*.py' -v
gitleaks dir . --redact=100ZÀhlerstand manuell setzen (z. B. nach Anbieterwechsel oder GerÀtetausch):
In Home Assistant unter dem ESP32-GerĂ€t â Zahl âWallbox ZĂ€hlerstand setzen" â gewĂŒnschten Wert eingeben.
Entwickelt fĂŒr Home Assistant mit ESPHome + Eltako DSZ15D ĂŒber S0-Schnittstelle.
Affiliate-Hinweis: Die mit đ gekennzeichneten Links sind Amazon Affiliate-Links. Beim Kauf ĂŒber diese Links erhalte ich eine kleine Provision ohne Mehrkosten fĂŒr dich. Danke fĂŒr deine UnterstĂŒtzung!
- ESPHome-GerĂ€t offline: Stromversorgung, WLAN und Home-Assistant-API-Status prĂŒfen.
- OTA nach Secret-Rotation nicht möglich: den zuletzt gĂŒltigen OTA-Zugang verwenden oder das GerĂ€t kontrolliert per USB neu flashen.
- Abrechnung unplausibel: S0-Impulsrate, ZĂ€hlerstand und Automationszeitraum prĂŒfen.
Keine API-, OTA-, WLAN- oder SMTP-Werte in Logs, Issues oder Screenshots kopieren.

