Stromverbrauch messen mit ESP32 & Home Assistant
DIY Energiemonitor mit ESP32 und SCT-013 Stromsensor bauen. Stromverbrauch in Echtzeit messen und in Home Assistant auswerten.
Affiliate-Hinweis: Einige Links in diesem Artikel sind Affiliate-Links. Beim Kauf über diese Links erhalten wir eine kleine Provision — für dich ändert sich am Preis nichts.
Was kostet dein Kühlschrank im Jahr? Wie viel Strom zieht die Wärmepumpe wirklich? Welches Gerät frisst heimlich Standby-Strom? Die meisten wissen es nicht — weil der Stromzähler im Keller nur eine Gesamtzahl zeigt. Mit einem ESP32, einem Stromsensor und Home Assistant baust du dir in ein bis zwei Stunden einen Energiemonitor, der dir den Verbrauch in Echtzeit anzeigt.
Warum selber bauen?
Fertige Energiemonitore gibt es natürlich auch — Shelly 3EM, Shelly Plug S, oder kommerzielle Ganzhaus-Lösungen. Aber der DIY-Weg hat klare Vorteile:
- Günstiger: 20-25 € statt 90 € (Shelly 3EM) oder 200 €+ (kommerzielle Lösungen)
- Flexibler: Messe einzelne Leitungen, alle drei Phasen, oder beides
- Lerneffekt: Du verstehst, wie Strommessung funktioniert
- Erweiterbar: Später weitere Sensoren oder Kanäle ergänzen, ohne neues Gerät zu kaufen
- Kein Cloud-Zwang: Alles bleibt lokal
Was du brauchst
| Komponente | Preis (ca.) | Beschreibung |
|---|---|---|
| ESP32 DevKit | 5–8 € | Mikrocontroller mit ADC |
| SCT-013-030 | 8–12 € | Nicht-invasiver Stromsensor (30A) |
| 10µF Kondensator | 0,50 € | Glättung des Messsignals |
| 2x 10kΩ Widerstände | 0,50 € | Spannungsteiler (Bias) |
| 3,5mm Klinkenbuchse | 1 € | Anschluss für den SCT-013 |
| Breadboard + Kabel | 5 € | Zum Aufbauen |
Gesamtkosten: ca. 20–25 € — ESP32 DevKit auf Amazon | SCT-013-000 Stromwandler 100A/50mA
Welchen SCT-013 nehmen?
Es gibt verschiedene Varianten:
| Modell | Messbereich | Output | Für |
|---|---|---|---|
| SCT-013-030 | 0-30A | 0-1V | Einzelne Sicherungskreise (empfohlen) |
| SCT-013-050 | 0-50A | 0-1V | Größere Verbraucher |
| SCT-013-100 | 0-100A | 0-50mA | Hauptleitung (braucht Bürde-Widerstand) |
Für den Einstieg ist der SCT-013-030 die beste Wahl. Er gibt direkt eine Spannung aus (0-1V), die der ESP32 ohne zusätzlichen Widerstand lesen kann.
Wie funktioniert das?
Der SCT-013 ist ein Stromwandler (Current Transformer, CT). Du klemmst ihn einfach um ein stromführendes Kabel — ohne es aufzuschneiden. Das ist der entscheidende Vorteil: Keine Elektroinstallation nötig, kein Risiko.
Das Prinzip:
- Strom durch ein Kabel erzeugt ein Magnetfeld
- Der SCT-013 umschließt das Kabel und misst dieses Magnetfeld
- Er wandelt es in ein proportionales elektrisches Signal um
- Der ESP32 liest das Signal über den ADC (Analog-Digital-Wandler) ein
- ESPHome rechnet den ADC-Wert in Ampere/Watt um
⚠️ Wichtig: Der SCT-013 wird um eine einzelne Ader geklemmt, nicht um das ganze Kabel. Bei einem dreiadrigen Kabel (Phase, Null, Erde) misst du nur die Phase (braun oder schwarz). Wenn du das ganze Kabel umschließt, heben sich die Magnetfelder auf und du misst: nichts.
Schaltung aufbauen
Der SCT-013 gibt ein Wechselstromsignal aus — es pendelt um 0V. Aber der ADC des ESP32 kann nur positive Spannungen (0–3,3V) messen. Deshalb brauchen wir einen Spannungsteiler, der das Signal auf 1,65V Mittelspannung (Bias) anhebt:
SCT-013 → Klinkenbuchse
|
10kΩ | 10kΩ
3.3V ──┤├──┬──┤├── GND
|
├── GPIO36 (ADC1_CH0, VP)
|
10µF
|
GND
Verkabelung Schritt für Schritt
- Klinkenbuchse auf dem Breadboard platzieren
- Spannungsteiler: Ein 10kΩ Widerstand von 3.3V zum Mittelpunkt, ein 10kΩ vom Mittelpunkt zu GND
- ADC-Pin: Mittelpunkt mit GPIO36 (VP) des ESP32 verbinden — das ist ein ADC1-Pin, der auch bei aktivem WLAN funktioniert
- Kondensator: 10µF zwischen Mittelpunkt und GND (Glättung des Signals)
- SCT-013: Über die Klinkenbuchse zum Mittelpunkt
⚠️ GPIO-Auswahl: Verwende unbedingt einen ADC1-Pin (GPIO32-GPIO39). ADC2-Pins (GPIO0, 2, 4, 12-15, 25-27) funktionieren nicht wenn WLAN aktiv ist — und das ist bei ESPHome immer der Fall.
Fotos / Fritzing-Diagramm
Wenn du unsicher bist: Suche nach „SCT-013 ESP32 Fritzing” — es gibt dutzende Schaltpläne und Fotos in der Community.
ESPHome Konfiguration
Erstelle ein neues Gerät im ESPHome-Dashboard oder ergänze deine bestehende YAML:
sensor:
# ADC-Rohwert einlesen
- platform: adc
pin: GPIO36
id: adc_sensor
attenuation: auto
update_interval: 1s
# CT-Clamp: ADC-Wert in Ampere umrechnen
- platform: ct_clamp
sensor: adc_sensor
name: "Stromstärke"
id: current_sensor
update_interval: 5s
filters:
- calibrate_linear:
- 0.0 -> 0
- 0.327 -> 5.0
- 0.654 -> 10.0
# Leistung berechnen (Strom × Spannung)
- platform: template
name: "Leistung"
id: power_sensor
unit_of_measurement: "W"
device_class: power
state_class: measurement
lambda: |-
return id(current_sensor).state * 230.0;
update_interval: 5s
# Tagesverbrauch in kWh
- platform: total_daily_energy
name: "Tagesverbrauch"
power_id: power_sensor
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.001 # W → kWh
# Diagnostik: WLAN-Signal
- platform: wifi_signal
name: "Energiemonitor WLAN"
update_interval: 120s
Was die einzelnen Sensoren machen:
- adc: Liest den Rohwert vom GPIO (0-3.3V als Float)
- ct_clamp: Rechnet die ADC-Schwankung in RMS-Strom (Ampere) um
- template (Leistung): Multipliziert Strom × 230V = Watt
- total_daily_energy: Summiert die Leistung über den Tag auf → kWh
Kalibrierung — der wichtigste Schritt
Die Genauigkeit steht und fällt mit der Kalibrierung. Ohne Kalibrierung weichen die Werte um 10-30% ab.
Schritt-für-Schritt:
- Referenzgerät besorgen — z.B. ein Shelly Plug S oder ein günstiges Energiemessgerät aus der Steckdose (~10 €)
- Kein Verbraucher einschalten → ADC-Wert in den ESPHome-Logs ablesen (Null-Punkt, sollte nahe 0 sein)
- Bekannte Last einschalten — Wasserkocher (~2000W), Heizlüfter, oder ähnliches mit konstantem Verbrauch
- ADC-Wert ablesen — im ESPHome-Log den
ct_clamp-Rohwert lesen - Referenz-Stromstärke berechnen: 2000W ÷ 230V = 8,7A
calibrate_linearanpassen:
filters:
- calibrate_linear:
- 0.0 -> 0 # Kein Strom → 0A
- 0.568 -> 8.7 # Dein gemessener ADC-Wert → berechnete Ampere
- Zweiten Messpunkt mit einem anderen Verbraucher prüfen — wenn die Werte passen, bist du fertig
Tipp: Für genauere Kalibrierung nutze 3 Messpunkte (0W, ~500W, ~2000W). Je mehr Punkte, desto genauer die lineare Interpolation.
Integration in Home Assistant
Nach dem Flash tauchen die Sensoren automatisch in Home Assistant auf.
Energie-Dashboard
Das eingebaute Energie-Dashboard ist perfekt für deinen DIY-Monitor:
- Einstellungen → Dashboards → Energie
- Stromverbrauch → „Verbrauch hinzufügen” → deinen Sensor auswählen
- Optional: Strompreis eintragen (z.B. 0,30 €/kWh) → Home Assistant berechnet die Kosten
- Warte 24 Stunden für die ersten Tages-Graphen
Strompreis-Tracking
Für dynamische Stromtarife (z.B. Tibber, aWATTar):
sensor:
- platform: template
sensors:
stromkosten_heute:
friendly_name: "Stromkosten heute"
unit_of_measurement: "€"
value_template: >
{{ (states('sensor.tagesverbrauch') | float * 0.30) | round(2) }}
Automationen
Warnung bei hohem Verbrauch:
automation:
- alias: "Hoher Stromverbrauch"
trigger:
- platform: numeric_state
entity_id: sensor.leistung
above: 3000
for: "00:05:00"
action:
- service: notify.mobile_app_dein_handy
data:
title: "⚡ Hoher Stromverbrauch!"
message: "Über 3000W seit 5 Minuten. Aktuell: {{ states('sensor.leistung') }}W"
Standby-Vampir erkennen:
automation:
- alias: "Standby-Verbrauch erkennen"
trigger:
- platform: numeric_state
entity_id: sensor.leistung
above: 5
below: 20
for: "02:00:00"
condition:
- condition: time
after: "01:00:00"
before: "05:00:00"
action:
- service: notify.mobile_app_dein_handy
data:
title: "🧛 Standby-Vampir!"
message: "Nachts {{ states('sensor.leistung') }}W Grundlast. Lohnt sich zu prüfen."
Erweiterungsmöglichkeiten
Alle drei Phasen messen
In Deutschland hat jeder Hausanschluss drei Phasen (L1, L2, L3). Für eine Gesamtmessung brauchst du drei SCT-013:
sensor:
- platform: ct_clamp
sensor: adc_l1
name: "Phase L1"
id: current_l1
# ... (gleiche Config wie oben)
- platform: ct_clamp
sensor: adc_l2
name: "Phase L2"
id: current_l2
- platform: ct_clamp
sensor: adc_l3
name: "Phase L3"
id: current_l3
- platform: template
name: "Gesamtleistung"
lambda: |-
return (id(current_l1).state + id(current_l2).state + id(current_l3).state) * 230.0;
Smart Meter auslesen (Alternative)
Viele moderne Stromzähler haben eine IR-Schnittstelle (die blinkende LED oder den optischen Port). Mit einem ESP32 und einem Fototransistor kannst du den Zähler direkt auslesen — genauer als jeder CT-Clamp und ohne Kalibrierung.
Suche nach „Home Assistant Glow” oder „SML Lesekopf” — beides populäre DIY-Projekte dafür.
Kosten vs. fertige Lösungen
| Lösung | Preis | Genauigkeit | Phasen | Aufwand |
|---|---|---|---|---|
| DIY (ESP32 + SCT-013) | 20–25 € | ±5% (kalibriert) | 1 (3 möglich) | Hoch |
| Home Assistant Glow | ~10 € | ±1% | Gesamt | Mittel |
| Shelly Plug S | ~15 € | ±1% | 1 Gerät | Niedrig |
| Shelly 3EM Gen3 | ~90 € | ±1% | Alle 3 | Niedrig |
| SML Lesekopf | ~15 € | ±0.1% | Gesamt | Mittel |
Empfehlung: Für den Gesamtverbrauch ist der Home Assistant Glow oder ein SML-Lesekopf die einfachste und genaueste Lösung. Der SCT-013-Weg lohnt sich, wenn du einzelne Sicherungskreise messen willst (z.B. Küche, Wärmepumpe, Server).
Sicherheitshinweise
- Nie das Kabel aufschneiden — der SCT-013 wird nur drumherum geklemmt
- Nie den SCT-013 öffnen, während er an einer stromführenden Leitung klemmt — das kann zu Spannungsspitzen führen
- Arbeiten im Sicherungskasten nur bei ausgeschalteter Sicherung oder durch einen Elektriker
- Keine Garantie für Genauigkeit — für die Abrechnung mit dem Energieversorger gilt nur der offizielle Zähler
Weiterführende Artikel
- ESP32 mit ESPHome einbinden — Der Einstieg in DIY-Sensoren
- Shelly Plug S — Steckdosen-Energiemonitoring ohne Basteln
- Home Assistant Automationen — Automatisch auf Verbrauch reagieren
- MQTT Broker einrichten — Alternative Anbindung
Fazit
Für 20–25 € weißt du endlich, wohin dein Strom fließt. Die Kombination aus ESP32, SCT-013 und Home Assistant gibt dir Echtzeit-Daten, Langzeit-Statistiken und die Möglichkeit, auf Basis deines Verbrauchs zu automatisieren. Ist die Kalibrierung einmal gemacht, läuft das Ding jahrelang wartungsfrei im Hintergrund. Und ja — es macht süchtig, den eigenen Verbrauch zu optimieren.