Stellen Sie sich vor, Sie könnten genau sehen, welches Gerät in Ihrem Zuhause der heimliche Stromfresser ist. Welches Gerät, das im Standby-Modus vor sich hindämmert, Ihre Stromrechnung unnötig in die Höhe treibt. Mit dem Aufstieg der Smart-Home-Technologien ist diese Vision längst keine Science-Fiction mehr. Doch anstatt teure Komplettsysteme zu kaufen, bietet sich eine faszinierende und kostengünstige Do-it-yourself-Lösung an: der Raspberry Pi. Dieser winzige, aber leistungsstarke Einplatinencomputer verwandelt sich in Ihre persönliche Energie-Detektivstation und hilft Ihnen, Ihren Stromverbrauch präzise zu überwachen und so bares Geld zu sparen und die Umwelt zu schonen.
### Warum den Stromverbrauch überwachen? Die Vorteile auf einen Blick
In einer Zeit, in der Energiepreise steigen und der Klimawandel immer präsenter wird, ist es wichtiger denn je, ein Bewusstsein für den eigenen Energieverbrauch zu entwickeln. Aber warum sollten Sie sich die Mühe machen, diesen mit einem Raspberry Pi zu messen?
1. Kostenersparnis: Der offensichtlichste Vorteil. Indem Sie die größten Stromverbraucher identifizieren, können Sie gezielte Maßnahmen ergreifen: alte Geräte ersetzen, Standby-Verbräuche vermeiden oder Nutzungszeiten optimieren. Schon kleine Veränderungen können sich auf Ihrer Jahresabrechnung bemerkbar machen.
2. Umweltschutz: Weniger Stromverbrauch bedeutet weniger CO2-Emissionen. Jeder eingesparte Kilowattstunde trägt dazu bei, unseren ökologischen Fußabdruck zu verkleinern und wertvolle Ressourcen zu schonen.
3. Bewusstsein schaffen: Viele Menschen unterschätzen den Energiehunger ihrer Geräte. Eine Visualisierung des Stromverbrauchs – sei es durch Echtzeitdaten oder historische Übersichten – schafft ein tiefes Verständnis und motiviert zu einem nachhaltigeren Umgang mit Energie.
4. Geräteoptimierung: Manchmal ist es nicht der defekte Kühlschrank, sondern ein schlecht konfiguriertes System oder ein Dauerläufer, der unnötig Strom zieht. Eine Messung hilft, solche „Energielecks” zu finden.
5. Fehlerdiagnose: Plötzlich hohe Verbräuche können auf Defekte an Geräten hinweisen, bevor diese komplett ausfallen.
Mit dem Raspberry Pi haben Sie die volle Kontrolle und Flexibilität, ein System zu bauen, das genau auf Ihre Bedürfnisse zugeschnitten ist und Ihnen diese Vorteile zugänglich macht.
### Der Raspberry Pi: Ihr persönlicher Energie-Detektiv
Der Raspberry Pi ist weit mehr als nur ein Spielzeug für Bastler. Seine kompakte Größe, der geringe Stromverbrauch und die enorme Vielseitigkeit machen ihn zur idealen Schaltzentrale für Ihr Energieüberwachungsprojekt. Er kann Daten lesen, verarbeiten, speichern und visualisieren – all das zu einem Bruchteil der Kosten kommerzieller Lösungen. Seine große Community bietet zudem unzählige Anleitungen und Unterstützung für nahezu jedes erdenkliche Projekt. Wir nutzen seine GPIO-Pins (General Purpose Input/Output) und seine Rechenleistung, um Sensordaten zu erfassen und in nutzbare Informationen zu verwandeln.
### Die benötigten Komponenten: Was Sie für Ihr Projekt brauchen
Bevor wir mit dem Aufbau beginnen, stellen wir sicher, dass wir alle notwendigen Teile beisammenhaben. Hier ist eine Einkaufsliste:
1. Raspberry Pi: Ein Modell 3B+, 4 oder neuer ist ideal, da diese ausreichend Rechenleistung und Konnektivität bieten. Ein Raspberry Pi Zero 2 W könnte ebenfalls funktionieren, ist aber für die Visualisierung mit Grafana weniger leistungsstark.
2. Micro-SD-Karte: Mindestens 16 GB, besser 32 GB, Klasse 10 oder höher, um das Betriebssystem und die Daten zu speichern.
3. Netzteil für den Raspberry Pi: Das Originalnetzteil ist oft die beste Wahl, um Stabilitätsprobleme zu vermeiden. Achten Sie auf ausreichende Leistung (z.B. 5V, 3A für den Pi 4).
4. Gehäuse für den Raspberry Pi (optional): Schützt Ihren Pi vor Staub und Beschädigungen.
5. PZEM-004T v3.0 AC Strommessmodul: Dies ist das Herzstück unserer Messung. Es ist ein erschwingliches Modul, das Spannung, Strom, Leistung, Energie und Frequenz für Wechselstrom misst. Es verfügt über einen integrierten Stromwandler und eine serielle Schnittstelle (UART) zur Datenübertragung.
* Wichtiger Hinweis zum PZEM-004T: Die v3.0 ist wichtig, da sie eine stabile serielle Schnittstelle bietet. Ältere Versionen sind schwieriger auszulesen.
6. USB-zu-TTL-Seriell-Konverter: Dieses kleine Board übersetzt die seriellen Signale des PZEM-004T in ein Format, das der Raspberry Pi über USB lesen kann. Ein FT232RL- oder CP2102-basierter Konverter ist gut geeignet.
7. Jumper-Kabel: Male-to-Female, um den PZEM-004T mit dem USB-zu-TTL-Konverter zu verbinden.
8. Steckdose/Kabel: Eine handelsübliche Schuko-Steckdose und ein passendes Kabel, um das zu messende Gerät an das PZEM-004T anzuschließen. Alternativ können Sie das Modul auch direkt in eine Verlängerung integrieren.
9. Schraubendreher und eventuell Seitenschneider: Für die Verkabelung.
10. Monitor, Tastatur, Maus (nur für die Ersteinrichtung, später SSH): Oder ein Computer mit BalenaEtcher/Raspberry Pi Imager.
### Schritt 1: Den Raspberry Pi vorbereiten
Bevor wir uns der Verkabelung widmen, bringen wir den Raspberry Pi auf Vordermann.
1. Betriebssystem installieren: Laden Sie das neueste Raspberry Pi OS Lite (64-bit) herunter. Die Lite-Version ist ideal, da sie keine grafische Oberfläche hat und somit Ressourcen für unsere Anwendung spart. Verwenden Sie den Raspberry Pi Imager, um das Image auf Ihre SD-Karte zu schreiben.
* **Tipp**: Mit dem Imager können Sie direkt SSH aktivieren und WLAN-Zugangsdaten sowie einen Benutzernamen/Passwort festlegen. Das erspart Ihnen den Anschluss von Monitor und Tastatur.
2. Erste Konfiguration:
* Legen Sie die SD-Karte in den Raspberry Pi ein und starten Sie ihn.
* Verbinden Sie sich über SSH von Ihrem Computer aus (z.B. mit PuTTY unter Windows oder dem Terminal unter Linux/macOS): `ssh benutzername@ip-adresse-des-pi`.
* Führen Sie ein Update und Upgrade durch, um sicherzustellen, dass alle Pakete auf dem neuesten Stand sind:
„`bash
sudo apt update
sudo apt upgrade -y
„`
* Aktivieren Sie bei Bedarf die serielle Schnittstelle über `sudo raspi-config` unter „Interface Options” -> „P6 Serial Port”. Für die Nutzung eines USB-zu-TTL-Konverters ist dies meist nicht direkt notwendig, aber es schadet nicht, die systeminterne Schnittstelle zu überprüfen, falls Sie diese später direkt nutzen möchten.
### Schritt 2: Das PZEM-004T v3.0 Modul verkabeln (Achtung: Arbeiten mit 230V!)
Dieser Schritt erfordert äußerste Vorsicht. Wenn Sie sich unsicher fühlen, ziehen Sie eine Elektrofachkraft hinzu. Wir arbeiten hier mit Netzspannung!
1. Trennung vom Stromnetz: Stellen Sie sicher, dass keine Komponente unter Strom steht, während Sie verkabeln.
2. Verbindung zum USB-zu-TTL-Konverter:
* Verbinden Sie die RX-Leitung des PZEM-004T mit der TX-Leitung des USB-zu-TTL-Konverters.
* Verbinden Sie die TX-Leitung des PZEM-004T mit der RX-Leitung des USB-zu-TTL-Konverters.
* Verbinden Sie VCC (5V) des PZEM-004T mit 5V des USB-zu-TTL-Konverters.
* Verbinden Sie GND des PZEM-004T mit GND des USB-zu-TTL-Konverters.
* Stecken Sie den USB-zu-TTL-Konverter in einen freien USB-Port Ihres Raspberry Pi.
3. Integration in die Steckdose/Verlängerung:
* Das PZEM-004T v3.0 misst den Strom über einen integrierten Stromwandler (manchmal auch als separates Teil dabei, das durch das Stromkabel geführt wird). Für die Spannungsmessung muss das Modul direkt an die Netzspannung angeschlossen werden.
* Nehmen Sie ein geeignetes Gehäuse für Ihr Projekt, um das PZEM-004T und die Verkabelung sicher zu verstauen.
* Führen Sie ein Netzkabel (z.B. von einer abgeschnittenen Verlängerung) in das Gehäuse.
* Verbinden Sie die Phase (braun) und den Neutralleiter (blau) des Netzkabels mit den entsprechenden Klemmen des PZEM-004T (V in und N in).
* Das zu messende Gerät wird an eine weitere Steckdose angeschlossen, die ebenfalls in das Gehäuse integriert ist. Hier wird nur die Phase des zu messenden Geräts durch den Stromwandler des PZEM-004T geführt, während der Neutralleiter und der Schutzleiter direkt durchverbunden werden.
* Achten Sie darauf, dass alle Verbindungen fest und isoliert sind. Die Klemmen des PZEM-004T sind in der Regel beschriftet (V, A, N).
* **Sicherheitshinweis**: Vergewissern Sie sich, dass der Schutzleiter (grün-gelb) des Netzkabels und der Steckdose stets direkt miteinander verbunden und nicht über das PZEM-Modul geführt werden!
### Schritt 3: Software installieren und Daten auslesen
Jetzt wird es spannend! Wir installieren die notwendige Software, um die Daten vom PZEM-004T auszulesen.
1. Seriellen Port identifizieren:
Wenn der USB-zu-TTL-Konverter angeschlossen ist, erscheint er als serielles Gerät. Finden Sie den Namen des Ports mit:
„`bash
ls -l /dev/serial/by-id/
„`
Sie sollten etwas Ähnliches wie `/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0` oder `/dev/ttyUSB0` sehen. Merken Sie sich diesen Pfad.
2. Python-Bibliothek für PZEM-004T:
Es gibt verschiedene Python-Bibliotheken, um das PZEM-004T auszulesen. Eine beliebte Option ist die Bibliothek von `denis-gorin` auf GitHub.
Installieren Sie `pip` und die Bibliotheken `pyserial` und `pzem-004t-v3`:
„`bash
sudo apt install python3-pip -y
pip3 install pyserial pzem-004t-v3
„`
3. Erstes Auslesen der Daten:
Erstellen Sie ein Python-Skript (z.B. `pzem_read.py`):
„`python
import serial
from pzem_004t_v3 import PZEM004T
# Passen Sie den seriellen Port an Ihren Raspberry Pi an
SERIAL_PORT = ‘/dev/ttyUSB0’ # Oder der Pfad, den Sie mit ls -l /dev/serial/by-id/ gefunden haben
BAUD_RATE = 9600
try:
pzem = PZEM004T(SERIAL_PORT, BAUD_RATE)
data = pzem.read_all()
if data:
print(f”Spannung: {data[‘voltage’]:.2f} V”)
print(f”Strom: {data[‘current’]:.3f} A”)
print(f”Leistung: {data[‘power’]:.2f} W”)
print(f”Energie: {data[‘energy’]:.3f} kWh”)
print(f”Frequenz: {data[‘frequency’]:.2f} Hz”)
print(f”Power Factor: {data[‘pf’]:.2f}”)
else:
print(„Fehler beim Lesen der Daten.”)
except serial.SerialException as e:
print(f”Serieller Port Fehler: {e}”)
except Exception as e:
print(f”Allgemeiner Fehler: {e}”)
„`
Führen Sie das Skript aus: `python3 pzem_read.py`. Sie sollten nun die ersten Messwerte sehen!
### Schritt 4: Daten speichern mit InfluxDB
Um die Daten über längere Zeit zu speichern und analysieren zu können, ist eine Zeitreihendatenbank wie InfluxDB ideal.
1. InfluxDB installieren:
„`bash
wget -qO- https://repos.influxdata.com/influxdb.key | gpg –dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
export INFLUXDB_VERSION=2.7
echo „deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main” | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt update
sudo apt install influxdb -y
sudo systemctl enable –now influxdb
„`
Nach der Installation ist InfluxDB unter `http://
2. Daten in InfluxDB schreiben:
Installieren Sie die InfluxDB-Client-Bibliothek für Python:
„`bash
pip3 install influxdb-client
„`
Erweitern Sie Ihr Python-Skript (z.B. `pzem_logger.py`), um die Daten kontinuierlich zu lesen und in InfluxDB zu schreiben:
„`python
import serial
from pzem_004t_v3 import PZEM004T
from influxdb_client import InfluxDBClient, Point, WriteOptions
from influxdb_client.client.write_api import SYNCHRONOUS
import time
# InfluxDB Konfiguration
INFLUX_URL = „http://localhost:8086” # Oder die IP Ihres Pi, falls InfluxDB woanders läuft
INFLUX_TOKEN = „YOUR_INFLUXDB_TOKEN” # Ersetzen Sie dies durch Ihr InfluxDB Token
INFLUX_ORG = „your_org” # Ersetzen Sie dies durch Ihre Organisation
INFLUX_BUCKET = „power_data” # Ersetzen Sie dies durch Ihren Bucket-Namen
# PZEM Konfiguration
SERIAL_PORT = ‘/dev/ttyUSB0’
BAUD_RATE = 9600
READ_INTERVAL = 5 # Sekunden zwischen den Messungen
# InfluxDB Client initialisieren
client = InfluxDBClient(url=INFLUX_URL, token=INFLUX_TOKEN, org=INFLUX_ORG)
write_api = client.write_api(write_options=SYNCHRONOUS)
pzem = PZEM004T(SERIAL_PORT, BAUD_RATE)
print(f”Starte PZEM-004T Datenlogger auf {SERIAL_PORT}…”)
while True:
try:
data = pzem.read_all()
if data:
point = (
Point(„power_measurement”)
.tag(„location”, „steckdose_1”) # Optional: Tag für den Standort
.field(„voltage”, data[‘voltage’])
.field(„current”, data[‘current’])
.field(„power”, data[‘power’])
.field(„energy”, data[‘energy’])
.field(„frequency”, data[‘frequency’])
.field(„power_factor”, data[‘pf’])
)
write_api.write(bucket=INFLUX_BUCKET, org=INFLUX_ORG, record=point)
print(f”Daten geschrieben: {data[‘power’]:.2f} W”)
else:
print(„Fehler beim Lesen der Daten.”)
except serial.SerialException as e:
print(f”Serieller Port Fehler: {e}”)
except Exception as e:
print(f”Allgemeiner Fehler: {e}”)
finally:
time.sleep(READ_INTERVAL)
„`
Starten Sie dieses Skript, um Daten zu sammeln. Für einen Dauerbetrieb sollten Sie es als Systemdienst (Systemd-Service) einrichten.
### Schritt 5: Daten visualisieren mit Grafana
Was nützen Daten, wenn man sie nicht sehen kann? Grafana ist das perfekte Werkzeug, um Ihre gesammelten Stromverbrauchsdaten in ansprechenden Dashboards darzustellen.
1. Grafana installieren:
„`bash
sudo apt install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings/
wget -q -O – https://apt.grafana.com/gpg.key | gpg –dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo „deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main” | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y
sudo systemctl enable –now grafana-server
„`
Grafana ist nun unter `http://
2. Datenquelle in Grafana hinzufügen:
* Melden Sie sich bei Grafana an.
* Gehen Sie zu „Configuration” (Zahnrad-Symbol) -> „Data Sources”.
* Klicken Sie auf „Add data source” und wählen Sie „InfluxDB”.
* Konfigurieren Sie die Datenquelle:
* Name: `PZEM_Stromdaten` (oder ein beliebiger Name)
* Query Language: `Flux`
* URL: `http://localhost:8086`
* Auth -> Bearer Token: Aktivieren und Ihr InfluxDB-Token eingeben.
* InfluxDB Details -> Organization: Ihre Organisation
* Default Bucket: `power_data` (Ihr Bucket-Name)
* Klicken Sie auf „Save & test”. Es sollte „Data source is working” erscheinen.
3. Dashboard erstellen:
* Gehen Sie zu „Dashboards” -> „New dashboard” -> „Add a new panel”.
* Wählen Sie Ihre InfluxDB-Datenquelle.
* Schreiben Sie eine Flux-Abfrage, um z.B. die aktuelle Leistung anzuzeigen:
„`flux
from(bucket: „power_data”)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == „power_measurement” and r._field == „power”)
|> last()
„`
* Wählen Sie als Visualisierung z.B. einen „Gauge” für die aktuelle Leistung oder ein „Graph” für den Verlauf über die Zeit.
* Wiederholen Sie dies für Spannung, Strom, Energie etc. und erstellen Sie so ein umfassendes Dashboard, das Ihnen einen Echtzeit-Überblick über Ihren Stromverbrauch gibt.
### Erweiterte Funktionen und nächste Schritte
Ihr Stromüberwachungssystem ist nun funktionsfähig! Aber das ist erst der Anfang:
* Automatisierung: Integrieren Sie die Daten in ein Smart-Home-System wie Home Assistant oder OpenHAB. So können Sie Aktionen auslösen, z.B. eine Benachrichtigung, wenn ein Gerät über einen bestimmten Schwellenwert hinaus Strom verbraucht oder länger als erwartet eingeschaltet ist.
* Mehrere Steckdosen: Erweitern Sie das System, um den Verbrauch an mehreren Steckdosen gleichzeitig zu messen. Dafür benötigen Sie weitere PZEM-004T Module und eventuell einen USB-Hub, um sie alle an den Raspberry Pi anzuschließen, oder Sie nutzen die GPIO-Pins für mehrere serielle Schnittstellen (erfordert spezifischere Konfiguration).
* Cloud-Integration: Wenn Sie Ihre Daten von überall aus abrufen möchten, können Sie diese auch in einer Cloud-Datenbank (z.B. InfluxDB Cloud) speichern. Beachten Sie dabei die Datenschutzaspekte.
* Gehäuse und Design: Entwerfen Sie ein elegantes Gehäuse für Ihr System, um es optisch ansprechend und sicher zu gestalten. Ein 3D-Drucker kann hier wahre Wunder wirken.
* Energieprognosen: Nutzen Sie die gesammelten Daten, um Muster zu erkennen und zukünftige Verbräuche zu prognostizieren.
### Troubleshooting und häufige Probleme
* PZEM-004T liefert keine Daten:
* Überprüfen Sie die Verkabelung RX/TX. Oft werden diese vertauscht. RX zu TX und TX zu RX ist korrekt.
* Stellen Sie sicher, dass der serielle Port korrekt ist (`/dev/ttyUSB0` oder der `by-id` Pfad).
* Überprüfen Sie, ob das zu messende Gerät angeschlossen und eingeschaltet ist. Das PZEM benötigt eine Last, um Strom zu messen.
* Stellen Sie sicher, dass das PZEM selbst mit 230V versorgt wird.
* InfluxDB/Grafana nicht erreichbar:
* Überprüfen Sie, ob die Dienste laufen: `sudo systemctl status influxdb` und `sudo systemctl status grafana-server`.
* Kontrollieren Sie die Firewall (falls aktiv): `sudo ufw status`. Eventuell müssen Sie Ports freigeben (8086 für InfluxDB, 3000 für Grafana).
* Stellen Sie sicher, dass der Raspberry Pi im selben Netzwerk wie Ihr zugreifender Computer ist.
* Python-Skript funktioniert nicht:
* Überprüfen Sie Fehlermeldungen in der Konsole.
* Stellen Sie sicher, dass alle Bibliotheken installiert sind (`pip3 install …`).
* Überprüfen Sie die InfluxDB-Token, Organisation und Bucket-Namen im Skript.
### Fazit: Werden Sie zum Energieexperten in Ihrem Zuhause!
Mit diesem Projekt haben Sie nicht nur eine kostengünstige und leistungsstarke Lösung zur Strommessung an Ihrer Steckdose geschaffen, sondern auch ein tiefes Verständnis für die Funktionsweise Ihrer Haushaltsgeräte entwickelt. Der Raspberry Pi ist Ihr Schlüssel, um Energiefresser zu entlarven, Ihre Energieeffizienz zu steigern und langfristig Kosten zu sparen. Starten Sie noch heute Ihr eigenes Energie-Detektiv-Projekt und übernehmen Sie die Kontrolle über Ihren Stromverbrauch! Es ist ein kleiner Schritt mit großer Wirkung für Ihren Geldbeutel und unseren Planeten.