3- Phase energy monitoring with ESPHome
Was soll durch diese Projekte gemessen werden?
Die folgenden Messungen werden mit einem ESP32-Board durchgeführt:
1- Measuring 3-Phase Electricity
- 3 voltage transformers – one for each phase (2000/100mA)
- 3 × 220 Ω als Burden-Resistor. Es wird bis maximal 28 A reichen.
- 2 × 10 kΩ für Spannungsteiler + 10 µF
2- Gas Metter (Gas pulse counter)
- Reed-Kontakt
3- Umgebungstemperatur
- NTC, z.B. 10 kΩ, mit 10-kΩ-Widerstand
4- RF-Receiver und Buzzer
- 433 MHz TX RX Receiver Superhet RF-Module
Alles zusammen mit einem ESP32, z.B. S2 Mini v1.0.0
Einen Gaszähler kann man in der Regel sehr einfach auslesen.
Für die Messung reicht bei den meisten Gaszählern ein einfacher Reed-Kontakt aus.
Weitere Informationen zu den Arbeitsweisen des Gaszählers finden Sie hier und auf ESPHome unter Pulse counter.
Calibration of the current sensors:
Die Kalibrierung kann mit einem Wattmeter und einem Haartrockner oder einem Wasserkocher durchgeführt werden.
Die Sensoren haben in meinem Fall 2000 Wicklungen und einen 220-Ω-Burden-Widerstand.
Der Spannungsteiler erzeugt aus beiden 10 kΩ-Widerständen eine Spannung von ca. (3,3/2) V für die Transformer-Sensoren.
Die Stromsensoren werden mit den ADC-Pins des ESP32 verbunden.
(Die Phasenverschiebung und Spannung wird nicht berücksichtigt, kann aber mit zusätzlichen Transformatoren auf die weiteren ADC-Pins geführt werden).
Der sogenannte Burden-Resistor wird wie folgt berechnet:
Burden-Widerstand = Turn(Vcc/IP)
Vcc is the max voltage ESP32(3.3v),
IP is the Max Current to be read (30A)
Rb = 2000 (3,3 V/30 A) = 220 Ohm
Zum Programmieren und zur Erstellung der *.yaml-Datei wird ESPHome verwendet.
Die folgende Liste zeigt die Ein- und Ausgangspins des ESP32 S2 Mini.
Achtung: Diese Pins können sich auf verschiedenen Platinen an unterschiedlichen Stellen befinden.
The pins highlighted in green are OK to use. But you need to pay attention because they may have an unexpected behavior mainly at boot.
| GPIOx | Input | Output | Notes |
| GPIO00 | pulled up | OK | Outputs PWM signal at boot, must be LOW to enter flashing mode |
| GPIO01 | OK | ADC1_CH0 (Phase 1) | |
| GPIO02 | OK | OK | ADC1_CH1 |
| GPIO03 | OK | ADC1_CH2 (Phase 2) | |
| GPIO04 | OK | OK | ADC1_CH3 |
| GPIO05 | OK | ADC1_CH4 (Phase 3) | |
| GPIO06 | OK | ADC1_CH5 (NTC) | |
| GPIO07-10 | OK | OK | ADC1_CH6 bis CH9 |
| GPIO11 | OK | Status-LED zur Anzeige von Puls und Alarm | |
| GPIO12-20 | OK | OK | ADC2_1 bis CH9 |
| GPIO13 | OK | Buzzer | |
| GPIO14 | OK | OK | outputs PWM-Signal beim Booten |
| GPIO15 | OK | Build-in LED | |
| GPIO16 | OK | Reed-Kontakt (Switch) | |
| GPIO17 | U1TXD | RF-Transmitter oder Buzzer | |
| GPIO18 | U1RXD | RF-Receiver |
Espressif ESP32 s2 mini document
The ESP32 S2 mini has 18 x 12 bits ADC input channels
Nun zum Diagramm:
Die Schaltung war ursprünglich zur Strommessung gedacht und da mein Gaszähler im selben Raum wie der Schaltschrank ist, habe ich die Schaltung auf einen Gasimpulszähler erweitert.
Mit Hilfe von einem Reed-Contact ist es möglich, die meisten mechanischen Gaszähler zu erfassen. Ob der Gaszähler dafür geeignet ist, können Sie aus dem Typenschild des Gaszählers entnehmen und es sollte auf dem „1 Imp / 0,01 m³“ stehen.
Dieser wird durch einen Impulsmagneten in der letzten Stelle des Rollenzählwerkes ausgelöst.
Es kann auch vorkommen, dass die Rolle stoppt und dann der Kontakt für eine Weile geschlossen ist. Macht es nichts, da für die Zählung die abfallende Flanke eines Pulses berücksichtigt wird.
Dann habe ich darüber nachgedacht, wie es wäre, wenn ich damit auch die Temperatur des Schaltschranks messen würde, und so habe ich die Schaltung mit einem NTC-Thermistor erweitert.
Nach ein paar Tagen fügte ich einen „RF-Receiver“ und einen „Buzzer“ hinzu, um einige meiner 433-MHz-RF-Sensoren (rf-Motion-Sensor, rf-Rauchmelder und Leak-Detektor) integrieren zu können.

ESPHome und 433 MHz Superheterodyne-RF-Empfänger:
Implementing the rf-receiver lets me to receive and decode the signal from some of my RF sensors.
The rf-receiver connects directly to the RX pin of ESP32.
The code is checked into GitHub at: 3-phase power monitoring with ESPHome
Hier ein paar Befehle, um das YAML-File zu kompilieren und hochzuladen.
- python --version Python 3.10.1 - pip3 install wheel - pip3 install esphome esphome config rf_security.yaml esphome compile rf_security.yaml esphome upload rf_security.yaml Or #esphome run rf_security.yaml #esphome run rf_security.yaml --device COM10 esphome logs rf_security.yaml ..
Flashing ESPHome:
Monitoring flow & return temperature’s heat pump

Leave a Reply