{
  "spec_version": 1,
  "slug": "carlo-gavazzi-em530-em540",
  "manufacturer": "Carlo Gavazzi",
  "model": "EM530 / EM540",
  "category": "Energy meter",
  "supplier_url": "https://www.gavazziautomation.com/nl-nl/product/EM530DINAV53XS1X",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "LowFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 258,
      "count": 2,
      "name": "Voltage L-N, system",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 260,
      "count": 2,
      "name": "Voltage L-L, system",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 262,
      "count": 2,
      "name": "Active power, system",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 264,
      "count": 2,
      "name": "Apparent power, system",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 266,
      "count": 2,
      "name": "Reactive power, system",
      "data_type": "Int32",
      "units": "var",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 268,
      "count": 2,
      "name": "Power factor, system",
      "data_type": "Int32",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 270,
      "count": 2,
      "name": "Phase sequence",
      "data_type": "Int32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "-1 = L1-L3-L2, 1 = L1-L2-L3."
    },
    {
      "address": 272,
      "count": 2,
      "name": "Frequency",
      "data_type": "Int32",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 274,
      "count": 2,
      "name": "Active energy imported, total",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 276,
      "count": 2,
      "name": "Reactive energy imported, total",
      "data_type": "Int32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 278,
      "count": 2,
      "name": "Active energy exported, total",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 280,
      "count": 2,
      "name": "Reactive energy exported, total",
      "data_type": "Int32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 282,
      "count": 2,
      "name": "Active power demand, system",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 284,
      "count": 2,
      "name": "Active power demand peak, system",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 286,
      "count": 2,
      "name": "Voltage L1-L2",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 288,
      "count": 2,
      "name": "Voltage L1-N",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 290,
      "count": 2,
      "name": "Current L1",
      "data_type": "Int32",
      "units": "A",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 292,
      "count": 2,
      "name": "Active power L1",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 294,
      "count": 2,
      "name": "Apparent power L1",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 296,
      "count": 2,
      "name": "Reactive power L1",
      "data_type": "Int32",
      "units": "var",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 298,
      "count": 2,
      "name": "Power factor L1",
      "data_type": "Int32",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 300,
      "count": 2,
      "name": "Voltage L2-L3",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 302,
      "count": 2,
      "name": "Voltage L2-N",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 304,
      "count": 2,
      "name": "Current L2",
      "data_type": "Int32",
      "units": "A",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 306,
      "count": 2,
      "name": "Active power L2",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 308,
      "count": 2,
      "name": "Apparent power L2",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 310,
      "count": 2,
      "name": "Reactive power L2",
      "data_type": "Int32",
      "units": "var",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 312,
      "count": 2,
      "name": "Power factor L2",
      "data_type": "Int32",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 314,
      "count": 2,
      "name": "Voltage L3-L1",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 316,
      "count": 2,
      "name": "Voltage L3-N",
      "data_type": "Int32",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 318,
      "count": 2,
      "name": "Current L3",
      "data_type": "Int32",
      "units": "A",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 320,
      "count": 2,
      "name": "Active power L3",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 322,
      "count": 2,
      "name": "Apparent power L3",
      "data_type": "Int32",
      "units": "VA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 324,
      "count": 2,
      "name": "Reactive power L3",
      "data_type": "Int32",
      "units": "var",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 326,
      "count": 2,
      "name": "Power factor L3",
      "data_type": "Int32",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 328,
      "count": 2,
      "name": "Active energy imported, partial",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 330,
      "count": 2,
      "name": "Reactive energy imported, partial",
      "data_type": "Int32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 332,
      "count": 2,
      "name": "Active energy imported, L1",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 334,
      "count": 2,
      "name": "Active energy imported, L2",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 336,
      "count": 2,
      "name": "Active energy imported, L3",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 338,
      "count": 2,
      "name": "Active energy imported, tariff 1",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 340,
      "count": 2,
      "name": "Active energy imported, tariff 2",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 346,
      "count": 2,
      "name": "Active energy exported, partial",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 348,
      "count": 2,
      "name": "Reactive energy exported, partial",
      "data_type": "Int32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 350,
      "count": 2,
      "name": "Apparent energy, total",
      "data_type": "Int32",
      "units": "kVAh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 352,
      "count": 2,
      "name": "Apparent energy, partial",
      "data_type": "Int32",
      "units": "kVAh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [
    {
      "address": 4098,
      "count": 1,
      "name": "Measuring system",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0,
      "offset": 0,
      "access": "RW",
      "description": "0 = 3Pn (three phase with neutral, default), 1 = 3P, 2 = 2P."
    },
    {
      "address": 4099,
      "count": 2,
      "name": "Current transformer ratio",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "CT ratio with one decimal place: 10 = CT 1.0 (default), 20000 = CT 2000.0."
    },
    {
      "address": 4112,
      "count": 2,
      "name": "Demand integration time",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = 1 min, 1 = 5 min, 2 = 10 min, 3 = 15 min (default), 4 = 20 min, 5 = 30 min, 6 = 60 min."
    },
    {
      "address": 8192,
      "count": 1,
      "name": "RS-485 instrument address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 to 247; factory default 1."
    },
    {
      "address": 8193,
      "count": 1,
      "name": "RS-485 baud rate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = 9.6 kbps (default), 2 = 19.2, 3 = 38.4, 4 = 57.6, 5 = 115.2 kbps."
    },
    {
      "address": 8194,
      "count": 1,
      "name": "RS-485 parity",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = no parity (default), 2 = even parity."
    },
    {
      "address": 8195,
      "count": 1,
      "name": "RS-485 stop bits",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = one stop bit (default), 1 = two stop bits."
    },
    {
      "address": 8196,
      "count": 1,
      "name": "RS-485 reply delay",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 to 1000 ms."
    },
    {
      "address": 16387,
      "count": 1,
      "name": "Reset total counters",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 1 to reset the total energy, total hour and offset counters."
    },
    {
      "address": 16388,
      "count": 1,
      "name": "Reset partial counters",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 1 to reset the partial energy and partial hour counters."
    }
  ],
  "combined_registers": [],
  "notes": "RS-485 device: reach it through a Modbus RTU-to-TCP gateway using the factory serial settings above (slave address 1, 9600 bps, 8N1). Source: Carlo Gavazzi 'EM530/EM540 Modbus communication protocol' version 1.3, 13 February 2024 (public version), tables 4.2, 4.6, 4.7, 4.8, 4.18 and 4.19. 32-bit values are stored low word first (LSW -> MSW). Measurements are transmitted in tenths (V, W, var, VA, kWh, kvarh, kVAh) or thousandths (A, PF). EM530/EM540 is a current-transformer meter: set the CT ratio in register 0x1003 (default 10 = CT 1.0) before trusting current, power and energy readings."
}
