Eastron SDM120 / SDM630 Modbus to MQTT Integration Guide
Struggling with weird scientific notation and garbage float values? Here is the complete Modbus RTU wiring and IEEE 754 decoding guide to polling Eastron smart meters accurately.
Heading to the field?
Download the official Application Note (PDF) for offline wiring diagrams and Hex payload analysis.
1. The Challenge with Eastron Meters
Eastron SDM120 (Single-Phase) and SDM630 (Three-Phase) meters are the global gold standard for EV charger sub-metering, solar export limiting, and tenant billing. They are highly accurate and very affordable.
However, integrating them into a custom SCADA, Node-RED, or Home Assistant setup is notoriously difficult. Why? Because Eastron does not use standard 16-bit integers. Every single electrical metric is output as an IEEE 754 32-bit Floating-Point Number. If your software or hardware isn’t configured to decode this specific binary format, you will receive nothing but chaotic garbage values.
2. RS485 Terminal Wiring
Eastron meters have clearly labeled RS485 ports, but the pin numbers vary drastically between the single-phase and three-phase models. Connect them to your RS485 Master gateway using a shielded twisted-pair cable.
| Meter Model | Eastron RS485 Terminal | RS485 Master Gateway |
|---|---|---|
| SDM120 (1-Phase) | Pin 10 (A) | A+ (Data+) |
| Pin 9 (B) | B- (Data-) | |
| SDM630 (3-Phase) | Pin 23 (A) | A+ (Data+) |
| Pin 24 (B) | B- (Data-) |
* Note: Eastron meters are highly sensitive to bus reflection. If you are daisy-chaining multiple meters (e.g., in a tenant building), install a 120Ω termination resistor across A and B on the very last meter.
3. Eastron Modbus Register Map (Key Metrics)
By default, Eastron meters ship with a Baud Rate of 2400 or 9600, with 8 Data Bits, 1 Stop Bit, and NONE or EVEN Parity (Check your meter’s LCD to confirm). The default Slave ID is 1.
Eastron strictly uses Input Registers (Function Code 0x04) for real-time measurements. Each metric spans 2 registers (4 bytes).
| Register (Dec) | Data Type | Description | Unit |
|---|---|---|---|
| 30001 (0x00) | Float32 | Phase 1 Line Voltage | Volts |
| 30007 (0x06) | Float32 | Phase 1 Line Current | Amps |
| 30013 (0x0C) | Float32 | Total Active Power (System) | Watts |
| 30073 (0x48) | Float32 | Total Import Energy | kWh |
| 30343 (0x156) | Float32 | Total Active Energy (Import + Export) | kWh |
The IEEE 754 Endianness Trap
Because standard Modbus RTU is a 16-bit protocol, it has no native concept of “Floats”. Eastron breaks the 32-bit float into two 16-bit words. If your software reads the voltage as 1.43e-42 instead of 230.5, your Byte Order is inverted. You must apply a word-swap (commonly changing from ABCD to CDAB or BADC format) to reconstruct the float correctly.
4. Integration Architecture: DIY vs. Enterprise Gateway
Decoding Float32 data in real-time gives you two options: writing your own parsing scripts (best for single-site hobbyists) or deploying a hardware bridge (best for commercial scalability).
Option A: Software Parsing (Python / Node-RED)
If you are using a Raspberry Pi with a USB-RS485 adapter, you must handle the byte-swapping programmatically.
Python Example (pymodbus):# Eastron returns Big-Endian (ABCD)
# Assume registers return: [17254, 13107]
high_word = 17254
low_word = 13107
float_val = struct.unpack(‘>f’, struct.pack(‘>HH’, high_word, low_word))[0]
print(float_val) # Output: 230.2
Use the node-red-contrib-modbus palette. Set the read type to Input Register and use a Buffer Parser node set to Float (Big Endian) to merge the two 16-bit words.
Option B: Hardware Parsing (Edge Gateway)
For commercial deployments (e.g., managing 20+ EV chargers), relying on USB adapters and OS-level Python scripts introduces point-of-failure risks.
- No Coding Required: A dedicated Edge Gateway (like the Valtoris VT-DTU500) has native IEEE 754 decoding burned into its firmware.
- Click & Configure: You simply select “Float32” in the web UI. The hardware autonomously polls the meter and pushes a clean, structured JSON payload (e.g.,
{"Voltage": 230.2}) directly to your AWS/Azure MQTT broker. - Reliability: Hardware watchdogs and industrial isolation prevent bus lockups.
