Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wallbox Abrechnung

Version HACS HA License: MIT

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):

Rechnungsbeispiel Seite 1 Rechnungsbeispiel Seite 2


Inhaltsverzeichnis


Features

  • 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

Beispielausgabe

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“.


Hardware

Eltako DSZ15D EnergiezÀhler

🛒 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)

Technische Daten (aus Datenblatt)

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)

S0-Schnittstelle

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−

Anschlussplan (4-Leiter 3×230/400 V)

          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).


ESP32 Mikrocontroller

🛒 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.


Verdrahtung S0-Schnittstelle

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.


Installation

Via HACS (empfohlen)

  1. HACS → Integrationen → MenĂŒ (⋼) oben rechts → Benutzerdefinierte Repositories
  2. URL eingeben: https://github.com/Feberdin/ha-wallbox-billing
  3. Kategorie: Integration → HinzufĂŒgen
  4. Integration in der Liste suchen und Herunterladen
  5. Home Assistant neu starten

Manuell

  1. Den Ordner custom_components/wallbox_billing/ in dein HA-Konfigurationsverzeichnis kopieren (neben configuration.yaml)
  2. Home Assistant neu starten

Einrichtung

  1. Einstellungen → Integrationen → + Integration hinzufĂŒgen
  2. Nach „Wallbox Abrechnung" suchen und auswĂ€hlen

Schritt 1 – Grundeinstellungen

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

Schritt 2 – E-Mail / SMTP

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.


E-Mail-Konfiguration

Gmail App-Passwort erstellen

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:

  1. Gehe zu myaccount.google.com/apppasswords (du musst in deinem Google-Konto eingeloggt sein)

  2. Klicke auf „App-Passwort erstellen"

  3. Gib einen beliebigen Namen ein, z. B. Home Assistant Wallbox

  4. Klicke auf „Erstellen"

  5. Du bekommst ein 16-stelliges Passwort angezeigt (Format: xxxx xxxx xxxx xxxx)

  6. 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.


SMTP-Übersicht aller Anbieter

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.


Automationen

Monatlicher automatischer Versand

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: single

Tipp: Die Uhrzeit (08:00:00) kann beliebig angepasst werden.


Benachrichtigung nach Versand

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.

Variante A – Benachrichtigung in der HA-OberflĂ€che

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: single

Variante B – Push-Benachrichtigung auf das Smartphone

Voraussetzung: 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: single

Den genauen GerĂ€tenamen findest du unter: Einstellungen → Integrationen → Companion App → Benachrichtigungen. Ersetze DEIN_GERÄTENAME durch den dort angezeigten Namen (z. B. notify.mobile_app_iphone_von_max).


Buttons & manueller Versand

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.


Sensoren

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

Einstellungen nachtrÀglich Àndern

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)

ESPHome-Firmware

Die ESPHome-Konfiguration fĂŒr den ESP32 liegt unter esphome/wallbox.yaml.

Secrets sicher einrichten

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.yaml

Erzeuge 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=100

ZÀ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!

Troubleshooting und Debugging

  • 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.

About

Home Assistant Custom Integration: Wallbox Ladekosten-Abrechnung mit PDF-Versand (ESP32 + Eltako DSZ15D S0)

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages