{
  "spec_version": 1,
  "slug": "schneider-iem3000-ethernet",
  "manufacturer": "Schneider Electric",
  "model": "iEM3000 series (Ethernet models, e.g. iEM3155 / iEM3255 / iEM3355)",
  "category": "Energy meter",
  "supplier_url": "https://www.se.com/in/en/faqs/FA370395",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 29,
      "count": 20,
      "name": "Meter name",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "20 registers of UTF-8 text."
    },
    {
      "address": 49,
      "count": 20,
      "name": "Meter model",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 69,
      "count": 20,
      "name": "Manufacturer",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 129,
      "count": 2,
      "name": "Serial number",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1636,
      "count": 1,
      "name": "Firmware version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "DLF format X.Y.ZTT."
    },
    {
      "address": 2999,
      "count": 2,
      "name": "Current L1",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Address 0x0BB7, register 3000."
    },
    {
      "address": 3001,
      "count": 2,
      "name": "Current L2",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3003,
      "count": 2,
      "name": "Current L3",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3005,
      "count": 2,
      "name": "Neutral current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Only available on models with a neutral input, e.g. iEM3555."
    },
    {
      "address": 3009,
      "count": 2,
      "name": "Average current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3019,
      "count": 2,
      "name": "Voltage L1-L2",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3021,
      "count": 2,
      "name": "Voltage L2-L3",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3023,
      "count": 2,
      "name": "Voltage L3-L1",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3025,
      "count": 2,
      "name": "Average voltage L-L",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3027,
      "count": 2,
      "name": "Voltage L1-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3029,
      "count": 2,
      "name": "Voltage L2-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3031,
      "count": 2,
      "name": "Voltage L3-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3035,
      "count": 2,
      "name": "Average voltage L-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3053,
      "count": 2,
      "name": "Active power phase 1",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3055,
      "count": 2,
      "name": "Active power phase 2",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3057,
      "count": 2,
      "name": "Active power phase 3",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3059,
      "count": 2,
      "name": "Total active power",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3061,
      "count": 2,
      "name": "Reactive power phase 1",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3063,
      "count": 2,
      "name": "Reactive power phase 2",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3065,
      "count": 2,
      "name": "Reactive power phase 3",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3067,
      "count": 2,
      "name": "Total reactive power",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Not available on iEM3150 / iEM3250 / iEM3350."
    },
    {
      "address": 3069,
      "count": 2,
      "name": "Apparent power phase 1",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3071,
      "count": 2,
      "name": "Apparent power phase 2",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3073,
      "count": 2,
      "name": "Apparent power phase 3",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3075,
      "count": 2,
      "name": "Total apparent power",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Not available on iEM3150 / iEM3250 / iEM3350."
    },
    {
      "address": 3077,
      "count": 2,
      "name": "Power factor phase 1",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Signed complex format: -1 to 0 = quadrant 2, -2 to -1 = quadrant 3, 0 to 1 = quadrant 1, 1 to 2 = quadrant 4."
    },
    {
      "address": 3079,
      "count": 2,
      "name": "Power factor phase 2",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3081,
      "count": 2,
      "name": "Power factor phase 3",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3083,
      "count": 2,
      "name": "Total power factor",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3109,
      "count": 2,
      "name": "Frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45099,
      "count": 2,
      "name": "Total active energy imported",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Address 0xB02B, register 45100. The same counter is also available as a 64-bit integer at 0x0C83."
    },
    {
      "address": 45101,
      "count": 2,
      "name": "Total active energy exported",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45103,
      "count": 2,
      "name": "Total reactive energy imported",
      "data_type": "Float32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45105,
      "count": 2,
      "name": "Total reactive energy exported",
      "data_type": "Float32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45107,
      "count": 2,
      "name": "Partial active energy imported",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45109,
      "count": 2,
      "name": "Partial reactive energy imported",
      "data_type": "Float32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45111,
      "count": 2,
      "name": "Active energy imported phase 1",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45113,
      "count": 2,
      "name": "Active energy imported phase 2",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45115,
      "count": 2,
      "name": "Active energy imported phase 3",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45119,
      "count": 2,
      "name": "Active energy imported, rate A",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Multi-tariff models only (iEM3155 / iEM3255 / iEM3355)."
    },
    {
      "address": 45121,
      "count": 2,
      "name": "Active energy imported, rate B",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45123,
      "count": 2,
      "name": "Active energy imported, rate C",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45125,
      "count": 2,
      "name": "Active energy imported, rate D",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "combined_registers": [
    {
      "id": "active-power-l1-l2",
      "label": "Active power L1 + L2 (calculated)",
      "operator": "+",
      "operand_a": {
        "register_type": "holding_registers",
        "register_address": 3053
      },
      "operand_b": {
        "register_type": "holding_registers",
        "register_address": 3055
      },
      "units": "kW",
      "scale_factor": 1,
      "offset": 0
    },
    {
      "id": "active-power-total-calculated",
      "label": "Active power, all phases (calculated)",
      "operator": "+",
      "operand_a": {
        "combined_id": "active-power-l1-l2"
      },
      "operand_b": {
        "register_type": "holding_registers",
        "register_address": 3057
      },
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "description": "Sum of the three phases, next to the device's own total at 3059."
    },
    {
      "id": "active-energy-net",
      "label": "Active energy, imported minus exported (calculated)",
      "operator": "-",
      "operand_a": {
        "register_type": "holding_registers",
        "register_address": 45099
      },
      "operand_b": {
        "register_type": "holding_registers",
        "register_address": 45101
      },
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0
    }
  ],
  "notes": "Addresses are the hexadecimal \"Address\" column of the iEM3000 Modbus register list in the Schneider user manual (DOCA0005EN) converted to decimal; that column is the address used in the Modbus frame, and the manual's \"Register\" column is address + 1 (0x0BB7 = register 3000). Only function code 03 reads the data (the meter also supports 16 for writing by command and 43/14 for device identification). All measurement and energy values are IEEE 754 single precision; the energy counters use kWh/kVARh rather than Wh, and a second copy of most counters exists as 64-bit integers (0x0C83 onwards) which is not listed here because this format has no 64-bit integer type. Power values are in kW/kVAR/kVA. iEM3150 / iEM3250 / iEM3350 have no reactive or apparent power, no neutral current and no multi-tariff counters. Configuration registers in the 0x07xx to 0x10xx range (power system, transformer ratios, tariff mode) are written with function code 16 as commands, not with a plain register write, so they are not listed."
}
