{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Inepro Metering",
  "model": "PRO2-Mod",
  "models": ["PRO2-Mod"],
  "vendor_website": "ineprometering.com",
  "description": "Inepro PRO2 single-phase DIN rail energy meter with Modbus RTU over RS-485",
  "revision": 2,
  "revised": "2026-10-17",
  "source": "Inepro Metering, \"PRO2 Series user manual\", appendix A3 (Modbus register map)",
  "sources": [{"title": "PRO2 Series user manual", "url": "https://cdn.prod.website-files.com/6617f74190bf0a53bfd776e8/667ec2f1562208b2b57c5742_PRO2%20User%20manual.pdf", "note": "Appendix A3.2, Modbus register map; linked from the PRO2-Mod product page"}],
  "notes": [
    "All registers are holding registers read with FC03. Settings are written with FC06 (one register) or FC10 (floats).",
    "Floats are IEEE 754 in ABCD order (high word first).",
    "Defaults: address 1, 9600 baud, 8 data bits, even parity, 1 stop bit. Baud rate can be lowered to 4800, 2400 or 1200; parity can be none or odd.",
    "Power is given in kW, kvar and kVA, energy in kWh and kvarh.",
    "The register map is shared with the PRO380; the registers it marks as PRO380 only (per-phase L2/L3 and CT values) are left out."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "E",
  "databits": 8,
  "stopbits": 1,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "official",
  "registers": [
    {"name": "Serial number", "group": "Device", "area": "holding", "address": "0x4000", "type": "uint32", "access": "R", "role": "serial", "description": "Read as hexadecimal"},
    {"name": "Meter code", "group": "Device", "area": "holding", "address": "0x4002", "type": "uint16", "access": "R", "description": "Read as hexadecimal"},
    {"name": "Modbus ID", "group": "Device", "area": "holding", "address": "0x4003", "type": "int16", "access": "RW", "write_min": 0, "write_max": 247, "description": "0 = broadcast, default 1"},
    {"name": "Baud rate", "group": "Device", "area": "holding", "address": "0x4004", "type": "int16", "access": "RW", "enum": {"1200": "1200", "2400": "2400", "4800": "4800", "9600": "9600"}, "description": "The value is the baud rate itself"},
    {"name": "Protocol version", "group": "Device", "area": "holding", "address": "0x4005", "type": "float32", "access": "R"},
    {"name": "Software version", "group": "Device", "area": "holding", "address": "0x4007", "type": "float32", "access": "R", "role": "firmware"},
    {"name": "Hardware version", "group": "Device", "area": "holding", "address": "0x4009", "type": "float32", "access": "R"},
    {"name": "Meter amps", "group": "Device", "area": "holding", "address": "0x400B", "type": "int16", "unit": "A", "access": "R"},
    {"name": "S0 output rate", "group": "Device", "area": "holding", "address": "0x400D", "type": "float32", "unit": "imp/kWh", "access": "RW", "description": "10000, 2000, 1000, 100, 10, 1, 0.1 or 0.01"},
    {"name": "Combination code", "group": "Device", "area": "holding", "address": "0x400F", "type": "int16", "access": "RW", "enum": {"1": "1", "4": "4", "5": "5", "6": "6", "9": "9", "10": "10 (forward - reverse)"}},
    {"name": "LCD cycle time", "group": "Device", "area": "holding", "address": "0x4010", "type": "uint16", "unit": "s", "access": "RW", "write_min": 1, "write_max": 30, "description": "Read and written as hexadecimal digits (0x0025 = 25 s)"},
    {"name": "Parity", "group": "Device", "area": "holding", "address": "0x4011", "type": "int16", "access": "RW", "enum": {"1": "Even", "2": "None", "3": "Odd"}},
    {"name": "Current direction", "group": "Device", "area": "holding", "address": "0x4012", "type": "string", "length": 1, "access": "R"},
    {"name": "Error code", "group": "Device", "area": "holding", "address": "0x4015", "type": "int16", "access": "R"},
    {"name": "Power down counter", "group": "Device", "area": "holding", "address": "0x4016", "type": "int16", "access": "RW", "description": "Write 0 to reset"},
    {"name": "Present quadrant", "group": "Device", "area": "holding", "address": "0x4017", "type": "int16", "access": "R"},
    {"name": "Checksum", "group": "Device", "area": "holding", "address": "0x401B", "type": "uint32", "access": "R"},
    {"name": "Active status word", "group": "Device", "area": "holding", "address": "0x401D", "type": "uint32", "access": "R"},
    {"name": "Voltage", "group": "Measurements", "area": "holding", "address": "0x5000", "type": "float32", "unit": "V", "access": "R"},
    {"name": "L1 voltage", "group": "Measurements", "area": "holding", "address": "0x5002", "type": "float32", "unit": "V", "access": "R"},
    {"name": "Grid frequency", "group": "Measurements", "area": "holding", "address": "0x5008", "type": "float32", "unit": "Hz", "access": "R"},
    {"name": "Current", "group": "Measurements", "area": "holding", "address": "0x500A", "type": "float32", "unit": "A", "access": "R"},
    {"name": "L1 current", "group": "Measurements", "area": "holding", "address": "0x500C", "type": "float32", "unit": "A", "access": "R"},
    {"name": "Total active power", "group": "Measurements", "area": "holding", "address": "0x5012", "type": "float32", "unit": "kW", "access": "R"},
    {"name": "Total reactive power", "group": "Measurements", "area": "holding", "address": "0x501A", "type": "float32", "unit": "kvar", "access": "R"},
    {"name": "Total apparent power", "group": "Measurements", "area": "holding", "address": "0x5022", "type": "float32", "unit": "kVA", "access": "R"},
    {"name": "Power factor", "group": "Measurements", "area": "holding", "address": "0x502A", "type": "float32", "access": "R"},
    {"name": "Total active energy", "group": "Energy", "area": "holding", "address": "0x6000", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "T1 total active energy", "group": "Energy", "area": "holding", "address": "0x6002", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "T2 total active energy", "group": "Energy", "area": "holding", "address": "0x6004", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "Forward active energy", "group": "Energy", "area": "holding", "address": "0x600C", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "T1 forward active energy", "group": "Energy", "area": "holding", "address": "0x600E", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "T2 forward active energy", "group": "Energy", "area": "holding", "address": "0x6010", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "Reverse active energy", "group": "Energy", "area": "holding", "address": "0x6018", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "T1 reverse active energy", "group": "Energy", "area": "holding", "address": "0x601A", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "T2 reverse active energy", "group": "Energy", "area": "holding", "address": "0x601C", "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "Total reactive energy", "group": "Energy", "area": "holding", "address": "0x6024", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "T1 total reactive energy", "group": "Energy", "area": "holding", "address": "0x6026", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "T2 total reactive energy", "group": "Energy", "area": "holding", "address": "0x6028", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "Forward reactive energy", "group": "Energy", "area": "holding", "address": "0x6030", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "T1 forward reactive energy", "group": "Energy", "area": "holding", "address": "0x6032", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "T2 forward reactive energy", "group": "Energy", "area": "holding", "address": "0x6034", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "Reverse reactive energy", "group": "Energy", "area": "holding", "address": "0x603C", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "T1 reverse reactive energy", "group": "Energy", "area": "holding", "address": "0x603E", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "T2 reverse reactive energy", "group": "Energy", "area": "holding", "address": "0x6040", "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "Tariff", "group": "Energy", "area": "holding", "address": "0x6048", "type": "int16", "access": "RW", "enum": {"1": "T1", "2": "T2", "11": "T1, not saved", "12": "T2, not saved"}},
    {"name": "Resettable day counter", "group": "Energy", "area": "holding", "address": "0x6049", "type": "float32", "unit": "kWh", "access": "RW", "description": "Write 0 (two registers, FC10) to reset"}
  ]
}
