Se rendre au contenu

rbAmp vs PZEM-004T — Which AC Energy Monitor for ESP32 & Home Assistant?

29 juillet 2026 par
rbAmp vs PZEM-004T — Which AC Energy Monitor for ESP32 & Home Assistant?
Administrator

rbAmp vs PZEM-004T: which AC energy monitor should you build with?

The PZEM-004T is the default first energy meter for a reason — it's a few dollars, it works, and half the tutorials on the internet use one. So let's be straight about this up front: if you want to meter a single circuit for the lowest possible cost and you're happy with what a fixed-function module gives you, buy the PZEM. This page is about the point where you outgrow it — accuracy, real power, data integrity, an open integration stack, and adding more circuits without a pile of serial ports.

At a glance

rbAmp Basic (UI1) PZEM-004T (V3)
Interface I²C bus UART / Modbus-RTU (TTL)
Native ESPHome ✅ first-class component via community pzemac platform
Client libraries ESPHome · Arduino · Python · ESP-IDF Modbus (roll your own) / community
Power measured True active power (W), on-device per-channel mean(u×i), phase-compensated Active power (W)
Rated accuracy ±0.5% of reading per channel (matched rbAmp CT, calibrated range) ±1% (datasheet)
Energy integrity Atomic period latch — host integrates; ESPHome persists to ESP32 NVS (survives reboot) Cumulative Wh in onboard EEPROM
Add more circuits More modules on the same I²C bus Another UART / another ESP per meter
Current sensor Swappable SCT-013 / matched rbAmp CT Bundled CT (100 A split-core, typical)
Cloud / lock-in None — local, open protocol None (local Modbus)
Bidirectional (import+export) Standard/Pro — in development No
Out-of-box simplicity Needs an ESP32 host + config Wire it, read Modbus — done
Cost per single device Higher Lowest (a few dollars)

(rbAmp Basic and PZEM are both single-circuit here — the fair basic-tier comparison. Accuracy figures are per channel with the matched rbAmp CT, after calibration and across the bulk of the range; accuracy widens near the very low end. A generic SCT-013 through a generic burden is looser.)

Where the PZEM is the right call

No spin — the PZEM genuinely wins some buyers, and pretending otherwise would make everything else here less trustworthy:

  • Cost of a single device. Nothing beats a bare single-circuit module on price. If you're metering one circuit and counting pennies, rbAmp won't undercut it — and we won't pretend to.
  • Out-of-the-box simplicity. The PZEM is a self-contained meter: give it power and a UART and it reports. rbAmp is a measurement module that expects an ESP host and a config — more capable, but not "wire-and-forget."
  • Energy persists with no host at all. The PZEM keeps its cumulative kWh in its own EEPROM, so the total survives power loss even with nothing attached. (rbAmp survives reboots too — via the ESP32's NVS in ESPHome — but it leans on that host; the PZEM doesn't need one.)

If those three points describe your project, stop reading and buy the PZEM. Really.

Where rbAmp earns its keep

An open, local stack — not a bare UART

The PZEM gives you a Modbus register map; the integration is yours to build (or you lean on the community pzemac ESPHome platform). rbAmp ships an open, local, no-cloud, no-lock-in stack — a first-class ESPHome component plus Arduino, Python, and ESP-IDF libraries over a documented local I²C protocol. You drive the same hardware from Home Assistant, an Arduino controller, or a Raspberry Pi, and nothing phones home. For a setup you intend to live with and extend, the stack is the difference that compounds.

True active power, calibrated and phase-compensated per channel

rbAmp computes true active power (watts), not apparent (VA) — on-device, per channel, as the mean of instantaneous voltage×current over the line cycle, with per-channel gain and phase-angle calibration. That phase compensation is what keeps reactive and low-power-factor loads honest. Rated ±0.5% of reading per channel, guaranteed with the factory-paired rbAmp CT, versus the PZEM's datasheet ±1%. With a generic SCT-013 the clamp's own unit-to-unit spread dominates — a few percent out of the box, tightening to ±0.5–1% after a one-point calibration — so the guaranteed ±0.5% class is the paired-CT product. Either way it's a real, defensible gap in the regime that matters.

Energy-data integrity: host-defined intervals, no on-device drift

The two designs handle energy differently, and it's worth understanding rather than sloganizing. The PZEM keeps a cumulative Wh counter in its own EEPROM — which is genuinely convenient (it survives reboots on its own), but it also means the device owns the accumulation. rbAmp instead closes each measurement window with an atomic period latch: the module freezes that period's accumulators in a single command and the host integrates true active power over the exact elapsed wall-clock time. There's no per-read quantization drift and no on-device counter to age — the host, not the device, defines the billing interval. That total still survives a reboot: the ESPHome component persists it to the ESP32's NVS, so it comes back after a power blip with no gap or reset in Home Assistant (on a bare Arduino you persist it yourself). For tariff-zone tracking and reconciled long-term energy, that host-owned integration is the model you want.

Resolution that sees the small stuff

With the low-range matched rbAmp CT, rbAmp resolves small standby and parasitic loads that consumer-class whole-home meters read as zero — the low-current regime a general-purpose meter blurs into its noise floor. If chasing vampire/standby draw is part of why you're metering, that discrimination is the point.

Scaling: a bus, not a pile of serial ports

This is where the PZEM hits a wall that has its own genre of forum threads. One PZEM needs one UART; a second circuit needs a second UART (you have one or two) or a second ESP. rbAmp modules share one I²C bus — add circuits on the same two wires behind one ESP32. When you're ready for the whole panel, that's the difference between a clean bus and a tangle of SoftwareSerial. (See: the whole panel on one ESP32.)

Already on a PZEM?

You don't have to lose your Home Assistant history to switch — matched entity names carry your graphs across. The step-by-step is here: Migrating from PZEM-004T to rbAmp.

The honest verdict

  • Buy the PZEM if you want the cheapest possible single-circuit meter, you like a self-contained device, and fixed-function is fine.
  • Choose rbAmp if you want per-channel accuracy and real active power, host-owned energy integrity for tariff tracking, resolution that catches standby loads, and — above all — an open local stack you can extend across Home Assistant, Arduino, or Python without ever touching a cloud. It's the meter you don't outgrow.

Questions & answers

Is rbAmp more accurate than a PZEM-004T? Per channel, yes — with the factory-paired rbAmp CT it's rated ±0.5% of reading (guaranteed) versus the PZEM's ±1% datasheet figure, and it measures true active power with per-channel phase compensation. With a generic SCT-013 clamp you start within a few percent and reach ±0.5–1% after a one-point calibration — the clamp, not the module, sets that budget. Figures assume the bulk of the range; accuracy widens for any meter near the very low end.

Can I use a PZEM with ESPHome? Yes — via the community pzemac platform over a UART. rbAmp integrates through a first-class ESPHome component over I²C, plus Arduino, Python, and ESP-IDF libraries.

Does the PZEM lose its energy total when it reboots? No — the PZEM stores its cumulative Wh in onboard EEPROM, so its total survives power loss with no host at all. rbAmp takes the other approach: the host integrates energy over exact wall-clock intervals, so there's no on-device counter to drift — and in ESPHome that total is persisted to the ESP32's NVS, so it also survives a reboot with no gap in Home Assistant (on a bare Arduino, you persist it yourself).

Can I put several PZEMs on one ESP32? Only up to your available UARTs (usually one or two), and SoftwareSerial gets flaky under WiFi load. rbAmp modules share one I²C bus, so you scale by adding modules on the same two wires.

Do I have to rewire everything to switch from a PZEM? No — keep your Home Assistant entity names byte-for-byte and your history carries across. See the migration guide.

See also


Documentation & source code
📖 rbAmp ESPHome component reference · 💻 rb-amp/rbamp-esphome on GitHub — issues, examples, ⭐
rbAmp vs Shelly EM — Modular DIY Metering vs Turnkey Certified