{
  "spec_version": 1,
  "slug": "accuenergy-acuvim-ii",
  "manufacturer": "Accuenergy",
  "model": "Acuvim II (Acuvim-II V3, AXM-WEB2 option)",
  "category": "Power analyzer",
  "supplier_url": "https://www.accuenergy.com/products/acuvim-ii-advanced-power-and-energy-meter/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 19200,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 16384,
      "count": 2,
      "name": "Frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16386,
      "count": 2,
      "name": "Phase A line-to-neutral voltage (Ua)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16388,
      "count": 2,
      "name": "Phase B line-to-neutral voltage (Ub)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16390,
      "count": 2,
      "name": "Phase C line-to-neutral voltage (Uc)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16392,
      "count": 2,
      "name": "Average line-to-neutral voltage (Uavg)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16394,
      "count": 2,
      "name": "Line voltage AB (Uab)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16396,
      "count": 2,
      "name": "Line voltage BC (Ubc)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16398,
      "count": 2,
      "name": "Line voltage CA (Uca)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16400,
      "count": 2,
      "name": "Average line voltage (Ulavg)",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16402,
      "count": 2,
      "name": "Phase A current (Ia)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16404,
      "count": 2,
      "name": "Phase B current (Ib)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16406,
      "count": 2,
      "name": "Phase C current (Ic)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16408,
      "count": 2,
      "name": "Average phase current (Iavg)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16410,
      "count": 2,
      "name": "Neutral current (In)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16412,
      "count": 2,
      "name": "Phase A active power (Pa)",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds W, value shown in kW (P = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16414,
      "count": 2,
      "name": "Phase B active power (Pb)",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds W, value shown in kW (P = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16416,
      "count": 2,
      "name": "Phase C active power (Pc)",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds W, value shown in kW (P = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16418,
      "count": 2,
      "name": "Total system active power (Psum)",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds W, value shown in kW (P = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16420,
      "count": 2,
      "name": "Phase A reactive power (Qa)",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds var, value shown in kvar (Q = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16422,
      "count": 2,
      "name": "Phase B reactive power (Qb)",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds var, value shown in kvar (Q = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16424,
      "count": 2,
      "name": "Phase C reactive power (Qc)",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds var, value shown in kvar (Q = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16426,
      "count": 2,
      "name": "Total reactive power (Qsum)",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds var, value shown in kvar (Q = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16428,
      "count": 2,
      "name": "Phase A apparent power (Sa)",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds VA, value shown in kVA (S = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16430,
      "count": 2,
      "name": "Phase B apparent power (Sb)",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds VA, value shown in kVA (S = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16432,
      "count": 2,
      "name": "Phase C apparent power (Sc)",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds VA, value shown in kVA (S = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16434,
      "count": 2,
      "name": "Total apparent power (Ssum)",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Float register holds VA, value shown in kVA (S = Rx / 1000 in the vendor map)."
    },
    {
      "address": 16436,
      "count": 2,
      "name": "Phase A power factor (PFa)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16438,
      "count": 2,
      "name": "Phase B power factor (PFb)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16440,
      "count": 2,
      "name": "Phase C power factor (PFc)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16442,
      "count": 2,
      "name": "Total power factor (PFsum)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16444,
      "count": 2,
      "name": "Voltage unbalance (U_unbl)",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16446,
      "count": 2,
      "name": "Current unbalance (I_unbl)",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16448,
      "count": 2,
      "name": "Load characteristic (L/C/R)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor values: 76.0 = inductive (L), 67.0 = capacitive (C), 82.0 = resistive (R)."
    },
    {
      "address": 12356,
      "count": 2,
      "name": "Phase A displacement power factor (DPFa)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12358,
      "count": 2,
      "name": "Phase B displacement power factor (DPFb)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12360,
      "count": 2,
      "name": "Phase C displacement power factor (DPFc)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12506,
      "count": 2,
      "name": "System displacement power factor (DPF)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16450,
      "count": 2,
      "name": "Active power demand (P_Dmd)",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16452,
      "count": 2,
      "name": "Reactive power demand (Q_Dmd)",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16454,
      "count": 2,
      "name": "Apparent power demand (S_Dmd)",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 17920,
      "count": 2,
      "name": "Phase A current demand (Ia_Dmd)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 17922,
      "count": 2,
      "name": "Phase B current demand (Ib_Dmd)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 17924,
      "count": 2,
      "name": "Phase C current demand (Ic_Dmd)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12362,
      "count": 2,
      "name": "Predictive active power demand (P_Dmd_Pred)",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12364,
      "count": 2,
      "name": "Predictive reactive power demand (Q_Dmd_Pred)",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12366,
      "count": 2,
      "name": "Predictive apparent power demand (S_Dmd_Pred)",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 18783,
      "count": 2,
      "name": "Residual current (I_res)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16456,
      "count": 2,
      "name": "Import active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16458,
      "count": 2,
      "name": "Export active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16460,
      "count": 2,
      "name": "Import reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16462,
      "count": 2,
      "name": "Export reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16464,
      "count": 2,
      "name": "Total active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16466,
      "count": 2,
      "name": "Net active energy",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16468,
      "count": 2,
      "name": "Total reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 16470,
      "count": 2,
      "name": "Net reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000. The vendor map types this row UInt32 although its range is marked +/-."
    },
    {
      "address": 16472,
      "count": 2,
      "name": "Apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (Ep = Rx / 10); the map also documents a secondary-display mode with / 1000."
    },
    {
      "address": 17952,
      "count": 2,
      "name": "Phase A import active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17954,
      "count": 2,
      "name": "Phase A export active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17956,
      "count": 2,
      "name": "Phase B import active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17958,
      "count": 2,
      "name": "Phase B export active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17960,
      "count": 2,
      "name": "Phase C import active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17962,
      "count": 2,
      "name": "Phase C export active energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17964,
      "count": 2,
      "name": "Phase A import reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17966,
      "count": 2,
      "name": "Phase A export reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17968,
      "count": 2,
      "name": "Phase B import reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17970,
      "count": 2,
      "name": "Phase B export reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17972,
      "count": 2,
      "name": "Phase C import reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17974,
      "count": 2,
      "name": "Phase C export reactive energy",
      "data_type": "UInt32",
      "units": "kvarh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17976,
      "count": 2,
      "name": "Phase A apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17978,
      "count": 2,
      "name": "Phase B apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    },
    {
      "address": 17980,
      "count": 2,
      "name": "Phase C apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Primary-display mode scaling (E = Rx / 10)."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Accuenergy 'Acuvim II V3 Modbus Map' v1.10 (2026-09-25), the vendor's own spreadsheet at https://www.accuenergy.com/wp-content/uploads/Acuvim-II-V3-Modbus-map-v1.10.xlsx , read sheet by sheet ('Basic Real-time (FLOAT)', 'Energy'). The same document's 'Parameter & Status Settings' sheet gives the factory communication defaults used here: communication address 1, baud rate 19200, parity 'Non1' (no parity, 1 stop bit), 8 data bits. Every row below is marked '03H Read' in the map, i.e. a holding register read with function code 03. Addresses are the map's decimal column, which equals its hex column (4000H = 16384), so they are wire addresses (zero-based). The Acuvim II Power Meter User Manual 1040E1303 states the 32-bit format is stored 'with the high word at the front and the low word at the end', which is why word order is HighFirst. Energy rows use the map's primary-display relationship (Rx / 10); the same map documents an alternative secondary-display relationship (Rx / 1000) selected by register 1019H. Deliberate omissions: the 49xx energy block (the vendor's relationship column there repeats the 'Esc=Rx/10' formula for every row and contradicts its own parameter names), the TOU/max-min/harmonic/alarm/IO/data-log sheets, and the 16-bit integer copy of the same measurements in 'Basic Real-time (INT)' (its formulas depend on the programmed PT/CT ratios)."
}
