Read an Eastron SDM230 Energy Meter with QModMaster

The Eastron SDM230 is a single-phase DIN-rail energy meter that publishes voltage, current, active power, power factor and cumulative kWh over RS-485 using Modbus RTU. It is one of the most common meters in home-energy monitoring projects, and it is an ideal first device to read with QModMaster (free, open source, LGPLv3) because its register map is simple and well documented.

The parameters below come from Eastron’s SDM230 Modbus protocol document via the Ubidots help article “Connect Eastron SDM230 to Ubidots over Modbus RTU”, which states its table was verified against that document (their note, August 2026). Eastron has changed register maps between hardware revisions (SDM230-Modbus, SDM230M, V2, V3) — confirm your exact variant against the current document before trusting an address in production.

Step 1 — Wire the meter and set the serial parameters

Connect the SDM230 to your power network per the datasheet, then connect the meter’s RS-485 A and B terminals to your USB-to-RS485 adapter. Practical wiring rules from the evidence source:

  • Terminate the bus with 120 Ω at both physical ends only.
  • Run the RS-485 pair in a separate conduit from the power conductors.
  • If the meter does not answer, swap A and B — the labelling is not standardised between vendors.
SettingFactory defaultHolding register
Baud rate960040029 (0x001C)
ParityNone40019 (0x0012)
Stop bits140019 (0x0012)
Slave ID140021 (0x0014)

All four are changeable from the meter’s front panel (or by writing the holding registers shown), but the master has to match all four exactly. Set them on the bench before the meter goes into the panel — it is far harder once it is behind a cover.

Step 2 — The SDM230 register map (from the evidence source)

All measurements live in input registers, read with function code 04. Holding registers (4xxxx) hold configuration only — baud rate, parity, node address, register order — and are read with FC03 / written with FC16. Every value is a 32-bit IEEE-754 float across two registers:

ParameterRegisterDecimal addressUnit
Line to neutral volts300010V
Current300076A
Active power3001312W
Apparent power3001918VA
Reactive power3002524VAr
Power factor3003130—
Phase angle3003736°
Frequency3007170Hz
Import active energy3007372kWh
Export active energy3007574kWh
Import reactive energy3007776kVArh
Export reactive energy3007978kVArh
Total active energy30343342kWh
Total reactive energy30345344kVArh

Note the two address columns: the meter’s documentation numbers registers as 30001, but the protocol-level (0-based) address of that register is 0. QModMaster’s Start Address field takes the decimal address — so you enter 0, not 30001. The full story is in our Modbus register address offset guide.

Step 3 — First read in QModMaster: line voltage

  • In QModMaster, select Modbus RTU mode.
  • Choose your adapter’s serial port and set 9600 baud, 8 data bits, no parity, 1 stop bit (unless you changed the meter from factory defaults).
  • Set Slave ID to 1 (the factory default).
  • Select FC04 — Read Input Registers.
  • Set Start Address to 0, Quantity to 2 — this reads “Line to neutral volts” (register 30001).
  • Click Connect / Read, then use the View menu to switch the display to Float: the two raw registers combine into one IEEE-754 value.

On a live single-phase circuit you should see something near your mains voltage (e.g. ~230 V in Europe). Next, read current (Start Address 6, Quantity 2) and active power (Start Address 12, Quantity 2) the same way. For lifetime energy, read Start Address 342, Quantity 2 (total active energy, kWh).

Step 4 — When the readings are wrong

  • Garbage values or NaN: this is the signature of a byte/word order mismatch, not a wiring fault. The SDM230 sends the most significant register first by default. If QModMaster assumes the opposite order, swap the two 16-bit words before reinterpreting as a float, or change the meter’s “Register Order” holding register to match your master. Details: Modbus float wrong value — byte order fix.
  • No response at all: the master must match baud, parity, stop bits and slave ID exactly. Try swapping A/B, check that the slave ID is still 1 (or the value you set), and confirm the bus is terminated with 120 Ω at both ends.
  • Plausible but wrong values: double-check the offset — entering 30001 instead of 0 in the Start Address field reads the wrong register. See the address offset guide.
Bench gear for this test: you need a USB-to-RS485 adapter to talk to the SDM230 (the adapter I use for QModMaster tests), and a handheld multimeter is handy for sanity-checking the meter’s voltage reading (see the multimeter).

Frequently asked questions

Related Guides

Similar Posts