{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Eastron", "model": "SDM230", "models": ["SDM230", "SDM230-Modbus", "SDM230-2T"], "vendor_website": "eastroneurope.com", "description": "Single-phase DIN rail energy meter, direct connection, with two tariffs on the SDM230-2T", "revision": 2, "revised": "2026-10-17", "source": "Eastron, \"Eastron SDM230-2T Smart Meter Modbus Protocol Implementation\", V1.1", "sources": [{"title": "Eastron SDM230-2T Smart Meter Modbus Protocol Implementation", "version": "V1.1", "url": "https://www.eastroneurope.com/images/uploads/products/protocol/SDM230-MODBUS_Protocol.pdf"}], "notes": [ "Measurements are float32 input registers (FC04); settings are float32 holding registers (FC03 read, FC16 write, one parameter per write).", "Requests must cover an even number of registers; at most 30 values per read.", "The tariff registers (1300h-1574h) are for the two-tariff SDM230-2T." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "databits": 8, "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 0, "max_read_registers": 60, "x_status": "official", "registers": [ {"name": "Voltage", "group": "Measurements", "area": "input", "address": "0x0000", "type": "float32", "unit": "V", "access": "R"}, {"name": "Current", "group": "Measurements", "area": "input", "address": "0x0006", "type": "float32", "unit": "A", "access": "R"}, {"name": "Active power", "group": "Measurements", "area": "input", "address": "0x000C", "type": "float32", "unit": "W", "access": "R"}, {"name": "Apparent power", "group": "Measurements", "area": "input", "address": "0x0012", "type": "float32", "unit": "VA", "access": "R"}, {"name": "Reactive power", "group": "Measurements", "area": "input", "address": "0x0018", "type": "float32", "unit": "var", "access": "R"}, {"name": "Power factor", "group": "Measurements", "area": "input", "address": "0x001E", "type": "float32", "access": "R"}, {"name": "Phase angle", "group": "Measurements", "area": "input", "address": "0x0024", "type": "float32", "unit": "°", "access": "R"}, {"name": "Frequency", "group": "Measurements", "area": "input", "address": "0x0046", "type": "float32", "unit": "Hz", "access": "R"}, {"name": "Import active energy", "group": "Energy", "area": "input", "address": "0x0048", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Export active energy", "group": "Energy", "area": "input", "address": "0x004A", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Import reactive energy", "group": "Energy", "area": "input", "address": "0x004C", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Export reactive energy", "group": "Energy", "area": "input", "address": "0x004E", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Total system power demand", "group": "Demand", "area": "input", "address": "0x0054", "type": "float32", "unit": "W", "access": "R"}, {"name": "Maximum total system power demand", "group": "Demand", "area": "input", "address": "0x0056", "type": "float32", "unit": "W", "access": "R"}, {"name": "Import system power demand", "group": "Demand", "area": "input", "address": "0x0058", "type": "float32", "unit": "W", "access": "R"}, {"name": "Maximum import system power demand", "group": "Demand", "area": "input", "address": "0x005A", "type": "float32", "unit": "W", "access": "R"}, {"name": "Export system power demand", "group": "Demand", "area": "input", "address": "0x005C", "type": "float32", "unit": "W", "access": "R"}, {"name": "Maximum export system power demand", "group": "Demand", "area": "input", "address": "0x005E", "type": "float32", "unit": "W", "access": "R"}, {"name": "Current demand", "group": "Demand", "area": "input", "address": "0x0102", "type": "float32", "unit": "A", "access": "R"}, {"name": "Maximum current demand", "group": "Demand", "area": "input", "address": "0x0108", "type": "float32", "unit": "A", "access": "R"}, {"name": "Total active energy", "group": "Energy", "area": "input", "address": "0x0156", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Total reactive energy", "group": "Energy", "area": "input", "address": "0x0158", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Resettable total active energy", "group": "Energy", "area": "input", "address": "0x0180", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Resettable total reactive energy", "group": "Energy", "area": "input", "address": "0x0182", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Total active energy tariff 1", "group": "Tariffs", "area": "input", "address": "0x130C", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Total active energy tariff 2", "group": "Tariffs", "area": "input", "address": "0x130E", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Import active energy tariff 1", "group": "Tariffs", "area": "input", "address": "0x1314", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Import active energy tariff 2", "group": "Tariffs", "area": "input", "address": "0x1316", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Export active energy tariff 1", "group": "Tariffs", "area": "input", "address": "0x131C", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Export active energy tariff 2", "group": "Tariffs", "area": "input", "address": "0x131E", "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Total reactive energy tariff 1", "group": "Tariffs", "area": "input", "address": "0x1324", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Total reactive energy tariff 2", "group": "Tariffs", "area": "input", "address": "0x1326", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Import reactive energy tariff 1", "group": "Tariffs", "area": "input", "address": "0x132C", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Import reactive energy tariff 2", "group": "Tariffs", "area": "input", "address": "0x132E", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Export reactive energy tariff 1", "group": "Tariffs", "area": "input", "address": "0x1334", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Export reactive energy tariff 2", "group": "Tariffs", "area": "input", "address": "0x1336", "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Maximum import active power demand tariff 1", "group": "Tariffs", "area": "input", "address": "0x13D2", "type": "float32", "unit": "kW", "access": "R"}, {"name": "Maximum import active power demand tariff 2", "group": "Tariffs", "area": "input", "address": "0x13D4", "type": "float32", "unit": "kW", "access": "R"}, {"name": "Maximum export active power demand tariff 1", "group": "Tariffs", "area": "input", "address": "0x1454", "type": "float32", "unit": "kW", "access": "R"}, {"name": "Maximum export active power demand tariff 2", "group": "Tariffs", "area": "input", "address": "0x1456", "type": "float32", "unit": "kW", "access": "R"}, {"name": "Maximum total active power demand tariff 1", "group": "Tariffs", "area": "input", "address": "0x1560", "type": "float32", "unit": "W", "access": "R"}, {"name": "Maximum current demand tariff 1", "group": "Tariffs", "area": "input", "address": "0x1566", "type": "float32", "unit": "A", "access": "R"}, {"name": "Maximum total active power demand tariff 2", "group": "Tariffs", "area": "input", "address": "0x156E", "type": "float32", "unit": "W", "access": "R"}, {"name": "Maximum current demand tariff 2", "group": "Tariffs", "area": "input", "address": "0x1574", "type": "float32", "unit": "A", "access": "R"}, {"name": "Pulse 1 width", "group": "Setup", "area": "holding", "address": "0x000C", "type": "float32", "unit": "ms", "access": "RW", "description": "60, 100 or 200 ms, default 100"}, {"name": "Network parity and stop bits", "group": "Setup", "area": "holding", "address": "0x0012", "type": "float32", "access": "RW", "enum": {"0": "No parity, 1 stop bit", "1": "Even parity, 1 stop bit", "2": "Odd parity, 1 stop bit", "3": "No parity, 2 stop bits"}, "description": "Default 0"}, {"name": "Network node", "group": "Setup", "area": "holding", "address": "0x0014", "type": "float32", "access": "RW", "write_min": 1, "write_max": 247, "description": "Modbus address, default 1"}, {"name": "Network baud rate", "group": "Setup", "area": "holding", "address": "0x001C", "type": "float32", "access": "RW", "enum": {"0": "2400", "1": "4800", "2": "9600", "5": "1200"}, "description": "Default 2 (9600)"}, {"name": "Pulse 1 energy type", "group": "Setup", "area": "holding", "address": "0x0056", "type": "float32", "access": "RW", "enum": {"1": "Import active", "2": "Total active", "4": "Export active", "5": "Import reactive", "6": "Total reactive", "8": "Export reactive"}, "description": "Default 4"}, {"name": "Reset maximum demand", "group": "Commands", "area": "holding", "address": "0xF010", "type": "uint32", "access": "W", "enum": {"0": "Reset"}, "description": "The protocol writes 00 00 here; requests must cover an even number of registers, so this sends two zero registers with FC16"}, {"name": "Demand interval, slide time, scroll time and backlight time", "group": "Setup", "area": "holding", "address": "0xF500", "type": "uint32", "access": "RW", "description": "BCD, one byte each from the high byte: demand interval (min), slide time (min), scroll time (s), backlight time (min). Default 15-01-00-60. Demand interval 0 = demand not updated; scroll 0 = no scrolling; backlight 0 = always on"}, {"name": "Pulse 1 constant", "group": "Setup", "area": "holding", "address": "0xF910", "type": "uint16", "access": "RW", "enum": {"0": "0.001 kWh/imp", "1": "0.01 kWh/imp", "2": "0.1 kWh/imp", "3": "1 kWh/imp"}, "description": "Default 0"}, {"name": "Measurement mode", "group": "Setup", "area": "holding", "address": "0xF920", "type": "uint16", "access": "RW", "enum": {"1": "Total = import", "2": "Total = import + export", "3": "Total = import - export"}, "description": "Default 2"}, {"name": "Running time", "group": "Device", "area": "holding", "address": "0xF930", "type": "float32", "unit": "h", "access": "R", "description": "Continuous working time"} ] }