Motivation

Über eine Steckdose mit WLAN-Kontrolle hatte ich schon an anderer Stelle (WLAN-Steckdose: An & aus im ganzen Haus und darüber hinaus ...) nachgedacht. Leider mit waren die Versuche recht unbefriedigend. Irgendwann bin ich dann auf das PZEM-004T gestoßen, einem Messmodul für Spannung, Strom, Leistung und Gesamtverbrauch, dessen Messwerte man über eine serielle Schnittstelle abfragen kann. Das hat dem Thema neuen Schwung gegeben.

In­halts­ver­zeich­nis

Das Prinzip

Hardware

WEMOS D1 mini

WS2812

Relais-Karte

Messmodul PZEM-004T

Netzteil

Zusammengebaut

Belastungstest

Software

Features

Download

Ideen für Ausbaustufe 2


Das Prinzip

Ein PZEM-004T liefert lfd. Informationen zu Netzspannung, Strom- und Leistungsaufnahme eines Verbrauchers an einen ESP8266 (Wemos D1 mini). Dieser sammelt die Daten und stellt sie auf einer Web-Site zur Verfügung. Der Verbraucher kann mit Hilfe eines Relais an- und abgeschaltet werden. Die verschiedenen Zustände des Systems werden über eine programmierbare Dreifarben-LED (WS2812) durch eine entsprechende Farbe angezeigt. Die Betriebsspannung (5V) wird von einem einfachen USB-Ladegerät bereit gestellt. So sieht es aus:

Schaltplan

Weitere Optionen sind Datenabruf und Steuerung per HTTP, TCP oder UDP.

Hardware

Die Hardware besteht aus einer Reihe Standard-Modulen die passend verschaltet sind. Es wurde keine eigene Hardware entwickelt. Als Gehäuse dient eine übrig gebliebene MBO-Funksteckdose. Dieses eher ältere Gerät hat den Vorteil, dass das Gehäuse großzügig dimensioniert ist. Steht kein passendes Steckdosen-Gehäuse zu Verfügung kann die Elektronik auch mit einen beliebigen Gehäuse in eine Verlängerungsschnur eingeschleift werden

Verlängerungsschnur

oder man baut sich eine ähnliche Messstation wie Pavlův es gemacht hat:

 Messstation

WEMOS D1 mini

Der Wemos D1 mini wurde als Prozessor-Board wurde wegen seiner geringen Abmessungen gewählt. Es enthält außerdem bereits alle Komponenten, die zum Betrieb und Programmierung eines ESP-12 notwendig sind.

WS2812

Das WS2812-Modul wird mit 5 V betrieben. Die Ansteuerung mit den nur 3,3 V führenden Pins des ESP8266 liegt an den unteren Spannungsgrenze, klappt aber einwandfrei.

Über das Loch der ursprünglich in der Steckdose angebrachten LED (Ø 5 mm) wurde von außen ein transparenter Klebestreifen geklebt. Danach wurde das Loch von innen mit transparentem, aber leicht milchigen Heißkleber aufgefüllt. In den noch heißen Kleber wurde das passend beschnittene WS2812-Modul eingedrückt. So erscheint das gesamte Loch diffus erleuchtet und man sieht die Struktur der LED nicht, wenn Mischfarben angezeigt werden.

Signal-LED Signal-LED
Signal-LED Rückseite Signal-LED Vorderseite

Relais-Karte

Die Relais-Karte ist hier beschrieben: 5V 10A 1 Kanal Relay Modul mit Opto-Koppler. Sie dient zum An- und Abschalten des Verbrauchers.

Der im Auslieferungszustand zwischen VCC und IN+ gesteckte Jumper muss entfernt werden. VCC wird vom Netzteil geliefert und beträgt 5 V. IN+ liegt am 3,3 V Anschluss es ESP. IN- wird von D1 auf Masse gezogen, wenn das Relais anziehen soll. Als Stromsenke verträgt ein ESP8266-PIN einen deutlich größeren Strom als als Stromquelle (s. ESP8266 FAQ).

Das Relais ist so in die Zuleitung des Verbrauchers geschaltet, dass der Verbraucher im Ruhezustand angeschaltet ist (Anschlüsse NC & COM). Er kann also nur aktiv abgeschaltet werden.

Messmodul PZEM-004T

Dieses Modul bekommt man für weniger als 10€ bei ebay vom Chinamann. Das Schöne an diesem Gerät ist die galvanische Trennung der Datenschnittstelle von der Netzspannung.

Der Messspannungseingang dient neben der Spannungsmessung auch zur Erzeugung der internen Spannungsversorgung. Es gibt keine Anschlüsse für die Bereitstellung einer Betriebsspannung. Das Gerät funktioniert also nur so lange, wie die Messspannung anliegt. Das begrenzt die Messspannung auf einen Bereich von etwa 80...260V Wechselspannung.

PZEM-004T PZEM-004T: Schnittstellenschaltplan PZEM-004T: Schnittstelle
Ansicht des Geräts Schaltplan der Schnittstelleneinheit Foto der Schnittstelleneinheit

Um die Schnittstelle mit einem ESP8266 betrieben zu können, muss R17 von 1kΩ auf etwa 500Ω reduziert werden (s. PZEM-004t Power Monitor via MQTT/HTTP auf wifi-iot.com). Die Pin-Spannung des ESP reicht ansonsten nicht aus, den Optokoppler durchzusteuern. Am einfachsten lötet man einen weiteren 1kΩ Widerstand parallel zu R17 auf die Rückseite der Platine:

Reduzierung von R17

Datenblatt: AC digital display Multifunction Meter Hier wird ein mit dem Modul betriebenes Multimeter beschrieben. Die wesentlichen Daten, insbesondere das Kommunikationsprotokoll, passen aber. Unklar bleibt jedoch, bei welchen Werten ein Überlauf des Gesamtverbrauchswerts stattfindet. Die Rückmeldung erfolgt binär mit 24 Bit, könnte als bis zu 16.777.215 Wh erfolgen. Es könnte aber auch auf ein möglicherweise angeschlossenes Display Rücksicht genommen werden und der Überlauf bei 9999 kWh (9.999.999 Wh) erfolgen.

Leider gib es keine einfache Möglichkeit, den Gesamtverbrauchswert zurück zu setzen. Das Gerät verfügt über einen Taster "CLR", der fünf Sekunden gedrückt, dann losgelassen und noch einmal für eine Sekunde gedrückt werden muss. Danach beginnt die Gesamtverbrauchszählung wieder bei 0. Man könnte ein Relais oder einen Optokoppler parallel zum Taster anlöten, mit dem man dann den Tastendruck per Software simulieren könnte. Ich habe mich aber für eine einfachere Lösung entschieden (s.u.).

Das Gerät ist so kalibriert, dass von einer einfachen Durchführung des Kabels, dessen Stromfluss gemessen werden soll, durch den Stromtransformator ausgegangen wird. Dann ist eine Strommessung bis zu 100A respektive eine Leistungsmessung bis zu 23 kW (bei Netzspannung) möglich. Führt man das Kabel mehrfach durch den Transformator erhöht man die Empfindlichkeit des Moduls. Insbesondere bei der Messung von Verbrauchen mit einer geringen Leistungsaufnahme kann diese Option interessant sein. Man muss jedoch bedenken, dass hierbei auch gleichzeitig den Messbereich entsprechend reduziert wird. Ich habe mich für vier Windungen entschieden.

Netzteil

Das Netzteil ist ein preiswertes USB-Ladegerät, das von Gehäuse und Netzstecker befreit wurde.

USB Ladegerät USB Ladegerät geöffnet USB Ladegerät
USB Ladegerät geöffnet Datenblatt

Zusammengebaut

Zusammengebaut Zusammengebaut Zusammengebaut
Ist schon etwas eng ... ... aber passt und funktioniert!

... funktionierte fast. Nach etwa 30 Minuten Betriebszeit häuften sich Übertragungsfehler vom PZEM-004T zum EPS8266 . Eine genauere Analyse ergab, dass einige Bits, die eigentlich den Wert 1 haben sollten, als 0 eingelesen wurden. Wahrscheinlich ein Problem mit dem Opto-Koppler oder dessen PullUp-Widerstand. Da der Zusammenbau nicht ganz so einfach war, habe ich versucht, dass Problem per Software zu lösen (s. PZEM-Kommunikation). Voilà, jetzt läuft's. Für eine nächste Version wäre für diesen Punkt eine weitere Überprüfung angesagt!

Belastungstest (fehlgeschlagen)

Nach einigen Betriebsstunden mit kleineren Verbrauchern habe ich dann unsere Spülmaschine angeschlossen. Die ist noch etwas älter und hat dementsprechend einen relativ hohen Stromverbrauch. Das Gerät hat für knapp 10 Minuten etwa 3,5 kW angezeigt, danach nichts mehr. Dafür hat es ekelhaft gerochen. Ursache war eine durchgebrannte Leiterbahn. Die habe ich überbrückt, jetzt geht es wieder. Wenn also Verbraucher mit höherer Leistungsaufnahme angeschlossen werden sollen, ich würde sagen ab etwa 1 kW, sollte man den 230V-Stromkreis stärker auslegen und eine nicht so kompakte Aufbau-Variante wählen.

Durchgebrannte Leiterbahn Durchgebrannte Leiterbahn
Durchgebrannte Leiterbahn ... ... überbrückt.

Software

Die Erläuterungen zur Software sind etwas umfangreicher geworden und wurden auf mehrere Seiten verteilt:

Features

Download

Hinweise zur Installation:

  1. In data/config.txt müssen die Zugangsdaten für das lokale WLAN eingetragen werden.
  2. Desgleichen in EMsettings.h (nicht unbedingt notwendig, aber empfehlenswert).
  3. Zuerst das SPIIFFS mit dem Inhalt von data füllen (bei Visual Micro: vMicro -> Publish Server Data Files, bei Arduino-IDE: Werkzeuge -> ESP8266 Sketch Data Upload, vorher arduino-esp8266fs-plugin installieren!).
  4. Projekt kompilieren und hochladen. Arduino-IDE-Nutzer können die Visual-Studio-Dateien ignorieren (s.u.).

Das RAR-Archiv enthält folgende Dateien:

 

Download Download

Ideen für Ausbaustufe 2

Access-Point errichten, zur Anpassung der Außensteuerung ohne WLAN-Zugang.

Erweiterung der Signal-LED-Anzeige: Ist der Verbraucher aktiv, zieht also Strom?

Aufbau einer Messreihe, d.h. Verbrauchsmessungen über einen definierten Zeitraum. Abstände der Messpunkte und Messdauer konfigurierbar. Anzeige als Web-Seite und Download als CSV-Datei über alle öffentlichen Schnittstellen.

Handy-App analog zum Web-Interface.

Die Schnittstellendaten/-meldungen sollten den Gerätenamen enthalten, damit Geräte unterscheidbar werden.

Die bestehende UPD-Schnittstelle funktioniert eigentlich nur bei der Verwendung von Broadcast-Meldung. Peer-To-Peer-Schnittstelle über individuelle IPs oder Ports einrichten. Dabei eine Art "UPnP-Service", über den die aktiven Geräte abgefragt und P2P-Verbindungen aufgebaut werden können.