Basic AC Power Wattmeter for SCT-013 clamps — single, dual, or triple-load configuration on a clean I²C bus. Drop-in PZEM / JSY / HLW replacement that integrates natively with Home Assistant via ESPHome. Bring your own SCT-013 clamp (any voltage-output variant) and you have a complete wattmeter with tariff-grade Wh accounting in minutes.
- You already own SCT-013 clamps from earlier projects
- You can't power down the wiring for install (clip-on is non-invasive)
- Your tariff went hourly and your UART meter loses energy in the read-reset gap
- You need 2 or 3 loads measured on one module with shared voltage reference
- Your PZEM / JSY works, but you need a second one and your ESP32 UARTs are taken
Choose your channel count
| Variant | Voltage input | Current channels (SCT-013) | What it measures | Energy (Wh) |
|---|---|---|---|---|
| UI1 | 1 (line-to-neutral) | 1 jack | U, I, P, PF, frequency, energy — one load | ✅ |
| UI2 | 1 (shared) | 2 jacks | Shared U + per-channel I, P, PF on two loads | ✅ |
| UI3 | 1 (shared) | 3 jacks | Shared U + per-channel I, P, PF on three loads | ✅ |
Five lines of YAML — module in Home Assistant
rbamp:
- id: rbamp_main
address: 0x50
data_ready_pin: GPIO4
sensor:
- platform: rbamp
rbamp_id: rbamp_main
What you get
I²C bus architecture
Multiple modules share two ESP32 signal lines (SDA + SCL). Default address 0x50; reprovision each module to a unique 7-bit address in 0x08..0x77 before sharing the bus. Up to ~16 modules on a single I²C bus, Basic and Standard tiers mix without distinction.
Atomic period latch
Master sends CMD_LATCH_PERIOD; the module returns period_avg_P_W (float32 average active power for the period). Master multiplies by wall-clock dt to get Wh. No read-reset gap. Drift-free tariff metering at hourly cadence and beyond.
5 kHz hardware sampling
True-RMS calculation over 1000 samples per 200 ms window on-module via DMA. Your ESP32 reads pre-computed values, not raw ADC samples. Frees the host MCU for application logic.
Native ESPHome integration
Auto-discovery via the rbamp-esphome external_component. Roughly 5 lines of YAML for a single module. All sensors surface as native Home Assistant entities — U_rms, I_rms, P_active, PF, frequency, energy accumulator.
What's in the box
- rbAmp Basic SCT-013 Wattmeter module (PCB)
- 1 / 2 / 3 × 3.5 mm stereo jacks on the board for SCT-013 clamps (depends on variant: UI1 / UI2 / UI3)
- Screw terminals for the voltage input (one set, line + neutral)
- Quick reference card with link to documentation
SCT-013 clamps are NOT included. Buy separately — we recommend YHDC SCT-013-030 (30 A, 1 V output) as the default for residential single-load monitoring, or SCT-013-100 (100 A, 1 V output) for main-feed monitoring.
Compatible clamps: any voltage-output SCT-013 (5 / 10 / 30 / 50 / 100 A — all with 1 V full-scale output). NOT compatible: SCT-013-000 (current output 50 mA — use the rbAmp Basic CT TA Wired variant for current-output sensors).
Real-time data (refreshed every 200 ms)
| Register | Description |
|---|---|
U_rms |
RMS line voltage (V) |
I_rms[ch] |
RMS current per channel (A) — 1, 2, or 3 channels depending on variant |
P_active |
Active power per channel (W, signed — direction-flow diagnostic) |
Q_reactive |
Reactive power (var, signed: + inductive, − capacitive) |
PF |
Power factor (signed: leading / lagging) |
Frequency |
Line frequency (Hz) |
period_avg_P_W |
Atomic period latch — average active power for the current period (see Atomic period latch section below for master-side Wh computation) |
Atomic period latch (UI configurations)
| Item | Description |
|---|---|
CMD_LATCH_PERIOD |
Master-issued command. Atomic snapshot: closes the current period + opens the next, in one I²C transaction. |
period_avg_P_W |
Float32 register. Average active power for the closed period — master reads this after each LATCH. |
| Atomicity guarantee | Every 200 ms power sample lands in either the previous or the next period — never in a read-reset gap. Drift-free Wh accounting against utility meter. |
| Mode 1 — continuous | One LATCH per period boundary. Optimal for tariff billing: 1-min logs, 15-min peak demand, hourly tariff zones, daily totals. Minimum I²C transactions. |
| Mode 2 — event-based | Two LATCHes for arbitrary start / end. Clean period for event-driven accounting: contactor close / open, EV charging session start / stop. |
| Master computation | Wh = period_avg_P_W × dt / 3600 where dt = master's wall-clock interval between LATCHes (in seconds). |
| Multi-channel (UI2 / UI3) | Single CMD_LATCH_PERIOD atomically snapshots all channels simultaneously. Per-channel period_avg_P_W[ch] registers — read each after one LATCH, compute per-channel Wh against the same wall-clock dt. |
Compatibility
- ESPHome — native
external_componentwith auto-discovery (rbamp-esphome on GitHub) - Home Assistant — via ESPHome, all sensors as native HA entities
- Arduino / PlatformIO — high-level library (rbamp-arduino on GitHub)
- Raspberry Pi — Python via I²C (rbamp-examples on GitHub)
- Tasmota — Berry driver
- Any I²C master — documented register map at /docs/modules-basic-standard-api-reference
Specifications
| Spec | Value |
|---|---|
| Supply voltage (VCC) | 5 V DC (on-board 3.3 V regulator) |
| I²C / DataReady logic level | 3.3 V (ESP32 / Raspberry Pi GPIO direct, no level shifter) |
| Current draw | <20 mA typical |
| I²C address | 0x50 default, reprovisionable to 0x08..0x77 |
| DataReady pin | Open-drain, idle HIGH, ~10 µs LOW pulse every 200 ms — falling-edge interrupt |
| AC voltage range | 90–280 VAC, 50/60 Hz |
| AC current range | 0.25–100 A (depends on SCT-013 model) |
| U_rms accuracy | ±2–3% |
| Accuracy (current) | module ~0.5% + sensor (SCT-013) 1–3% — total = module + sensor |
| Current noise floor | ~150–200 mA (SCT-013 clamp-limited) |
| Sampling rate | 5 kHz per channel (5,000 samples per second) |
| Real-time integration window | 200 ms |
| ADC resolution | 12-bit |
| AC mains isolation | Full galvanic (isolated voltage front-end + SCT-013 clamp toroid + I²C bus) |
| Connector for SCT-013 | 3.5 mm stereo jack (TRS) per channel |
| Connector for voltage input | Screw terminals (line + neutral) |
Installation safety
⚠️ SCT-013 clip-on install is non-invasive — clamp around a live conductor without powering down the wiring. Careful jaw alignment matters: poor seating adds 1–2% error. All work must follow local electrical codes. For panel-level work, a qualified electrician is strongly recommended.
⚠️ The module ships as a bare PCB. The Basic line does not include enclosures — for DIN-rail housings or panel boxes, use third-party project enclosures.
This module is not certified for revenue metering (utility-grade billing). For commercial accounting, use a certified meter alongside rbAmp for diagnostic / per-circuit detail.
Warranty and support
- 12-month warranty on electrical defects
- GitHub Discussions — public support channel at github.com/rb-amp
- Documentation — Quick Start · API Reference · Migration from PZEM-004T
Upgrade pointer
Looking for higher accuracy? rbAmp Standard tier delivers sub-0.5% real-world accuracy, sub-10 mA noise floor, signed power for solar bidirectional, diagnostic alarms, and traceable factory calibration. Drop-in upgrade on the same I²C bus (different address range).



