{
  "spec_version": 1,
  "slug": "raritan-px-intelligent-pdu",
  "manufacturer": "Raritan (Legrand)",
  "model": "PXC / PX2 / PX3 / PX4 intelligent PDUs and PX3TS / PX4TS transfer switches (also Legrand and Server Tech PRO3X / PRO4X)",
  "category": "PDU",
  "supplier_url": "https://www.raritan.com/support/product-documentation",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [
    {
      "address": 0,
      "count": 1,
      "name": "Overcurrent protector 1 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = OCP 1 closed (good), 0 = open (tripped). Coils 0000h-003Fh are the trip status of OCP 1-64."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Overcurrent protector 2 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2,
      "count": 1,
      "name": "Overcurrent protector 3 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3,
      "count": 1,
      "name": "Overcurrent protector 4 status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 256,
      "count": 1,
      "name": "Outlet 1 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = switched on, 0 = switched off. Coils 0100h-017Fh are outlet 1-128; only switched outlets have a writable coil, which the capabilities register's bit 15 marks."
    },
    {
      "address": 257,
      "count": 1,
      "name": "Outlet 2 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 258,
      "count": 1,
      "name": "Outlet 3 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 259,
      "count": 1,
      "name": "Outlet 4 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 260,
      "count": 1,
      "name": "Outlet 5 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 261,
      "count": 1,
      "name": "Outlet 6 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 262,
      "count": 1,
      "name": "Outlet 7 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 263,
      "count": 1,
      "name": "Outlet 8 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 512,
      "count": 1,
      "name": "Shelf power supply 1 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Coils 0200h-0205h cover shelf power supplies 1-6."
    },
    {
      "address": 513,
      "count": 1,
      "name": "Shelf power supply 2 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 514,
      "count": 1,
      "name": "Shelf power supply 3 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 515,
      "count": 1,
      "name": "Shelf power supply 4 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 516,
      "count": 1,
      "name": "Shelf power supply 5 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 517,
      "count": 1,
      "name": "Shelf power supply 6 relay state",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    }
  ],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Register set version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "8 bits major version, 8 bits minor version."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Number of inlets",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2,
      "count": 1,
      "name": "Number of overcurrent protectors",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3,
      "count": 1,
      "name": "Number of outlets",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4,
      "count": 1,
      "name": "Number of transfer switches",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5,
      "count": 1,
      "name": "Number of shelf power supplies",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 6,
      "count": 1,
      "name": "Presence of power bus",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2048,
      "count": 1,
      "name": "Peripheral sensor 1: sensor type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = unassigned, 1 = temperature in °C, 2 = relative humidity in %, 3 = air flow in m/s, 4 = air pressure in Pa, 5 = contact closure, 6 = vibration in G, 7 = water leak, 8 = smoke detector, 9 = ambient light in lux, 10 = dry contact (actuator), 11 = magnetic contact, 12 = passive IR motion, 13 = tamper, 14 = powered dry contact, 15 = absolute humidity in g/m^3, 16 = acceleration in G, 17 = door state, 18 = door lock state, 19 = door handle lock switch."
    },
    {
      "address": 2049,
      "count": 1,
      "name": "Peripheral sensor 1: state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "For numeric sensors: 0 = unavailable, 1 = normal, 2 = below lower critical, 3 = below lower warning, 4 = above upper warning, 5 = above upper critical; FFFFh when a discrete sensor is unavailable."
    },
    {
      "address": 2050,
      "count": 2,
      "name": "Peripheral sensor 1: reading",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Numeric reading in the unit given by the sensor type; each of the 32 peripheral sensors occupies 16 registers starting at 0800h + i*10h."
    },
    {
      "address": 2052,
      "count": 1,
      "name": "Peripheral sensor 1: actuator control",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 2053,
      "count": 1,
      "name": "Peripheral sensor 1: battery voltage",
      "data_type": "UInt16",
      "units": "mV",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Zigbee sensors only; zero when not applicable."
    },
    {
      "address": 8192,
      "count": 1,
      "name": "Transfer switch capabilities",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit 0 = inlet voltage phase-difference sensor is supported."
    },
    {
      "address": 8193,
      "count": 1,
      "name": "Transfer switch: active inlet",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no active inlet, 1 = inlet 1, 2 = inlet 2."
    },
    {
      "address": 8194,
      "count": 1,
      "name": "Transfer switch: preferred inlet",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = inlet 1, 2 = inlet 2."
    },
    {
      "address": 8195,
      "count": 1,
      "name": "Transfer switch: transfer to inlet",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write bits 0-30 = the new active inlet (1 or 2); bit 31 forces the switch even when the phase difference between the inlets is too large. If the new inlet is available it becomes both active and preferred."
    },
    {
      "address": 8196,
      "count": 1,
      "name": "Transfer switch: fault flags",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit 0 = inlet phases out of sync, bit 1 = overload alarm, bit 2 = install fault alarm (PX4TS only)."
    },
    {
      "address": 8197,
      "count": 1,
      "name": "Transfer switch: inlet 1 fault flags",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit 0 = power supply fault, bit 1 = fuse blown, bit 2 = MOV surge protector fault, bit 3 = switch open, bit 4 = switch short."
    },
    {
      "address": 8198,
      "count": 1,
      "name": "Transfer switch: inlet 2 fault flags",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Same bits as inlet 1."
    },
    {
      "address": 8200,
      "count": 2,
      "name": "Transfer switch: inlet phase sync angle",
      "data_type": "Float32",
      "units": "°",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12288,
      "count": 1,
      "name": "Inlet 1: capabilities",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Supported sensors: bit 0 = RMS voltage, bit 1 = RMS current, bit 2 = peak current, bit 4 = unbalanced current, bit 5 = active power, bit 6 = apparent power, bit 7 = power factor, bit 8 = active energy counter, bit 9 = apparent energy counter, bit 10 = phase angle, bit 11 = line frequency, bit 12 = reactive power, bit 13 = reactive energy counter, bit 14 = power quality, bit 15 = surge protector status."
    },
    {
      "address": 12289,
      "count": 1,
      "name": "Inlet 1: capabilities, continued",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bit 0 = residual current, bit 1 = residual DC current, bit 2 = residual AC current, bit 4 = displacement power factor, bit 5 = crest factor, bit 6 = voltage THD, bit 7 = current THD."
    },
    {
      "address": 12290,
      "count": 1,
      "name": "Inlet 1: number of inlet poles",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12291,
      "count": 1,
      "name": "Inlet 1: minimum voltage rating",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12292,
      "count": 1,
      "name": "Inlet 1: maximum voltage rating",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12293,
      "count": 1,
      "name": "Inlet 1: current rating",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12294,
      "count": 1,
      "name": "Inlet 1: displacement power factor rating",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "In hundredths."
    },
    {
      "address": 12295,
      "count": 1,
      "name": "Inlet 1: crest factor rating",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "In hundredths."
    },
    {
      "address": 12296,
      "count": 2,
      "name": "Inlet 1: RMS voltage",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "On a three-phase inlet this is the smallest voltage between any two phases."
    },
    {
      "address": 12298,
      "count": 2,
      "name": "Inlet 1: RMS current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "On a three-phase inlet this is the maximum of the individual phase currents."
    },
    {
      "address": 12300,
      "count": 2,
      "name": "Inlet 1: peak current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12304,
      "count": 2,
      "name": "Inlet 1: unbalanced current",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12306,
      "count": 2,
      "name": "Inlet 1: active power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "On a three-phase inlet this is the total power of all phases."
    },
    {
      "address": 12308,
      "count": 2,
      "name": "Inlet 1: apparent power",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12310,
      "count": 2,
      "name": "Inlet 1: power factor",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12320,
      "count": 2,
      "name": "Inlet 1: phase angle",
      "data_type": "Float32",
      "units": "°",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Phase angle between voltage and current."
    },
    {
      "address": 12322,
      "count": 2,
      "name": "Inlet 1: line frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12324,
      "count": 2,
      "name": "Inlet 1: reactive power",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12330,
      "count": 1,
      "name": "Inlet 1: power quality",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = unknown, 1 = normal, 2 = warning, 3 = critical."
    },
    {
      "address": 12336,
      "count": 1,
      "name": "Inlet 1: surge protector status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = OK, 1 = alarm."
    },
    {
      "address": 12337,
      "count": 1,
      "name": "Inlet 1: residual current status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = unknown, 1 = normal, 2 = warning, 3 = critical, 4 = self-test, 5 = failure."
    },
    {
      "address": 12338,
      "count": 2,
      "name": "Inlet 1: residual current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12340,
      "count": 2,
      "name": "Inlet 1: residual DC current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12342,
      "count": 2,
      "name": "Inlet 1: residual AC current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12344,
      "count": 1,
      "name": "Inlet 1: voltage total harmonic distortion",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "In tenths of a percent."
    },
    {
      "address": 12345,
      "count": 1,
      "name": "Inlet 1: current total harmonic distortion",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "In tenths of a percent."
    },
    {
      "address": 12346,
      "count": 1,
      "name": "Inlet 1: sensor status 1",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "One 4-bit value per sensor (0 = unavailable, 1 = normal, 2 = below lower critical, 3 = below lower warning, 4 = above upper warning, 5 = above upper critical): bits 0-3 = RMS voltage, 4-7 = RMS current, 8-11 = peak current."
    },
    {
      "address": 12347,
      "count": 1,
      "name": "Inlet 1: sensor status 2",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "One 4-bit value per sensor: bits 0-3 = unbalanced current, 4-7 = active power, 8-11 = apparent power, 12-15 = power factor."
    },
    {
      "address": 12348,
      "count": 1,
      "name": "Inlet 1: sensor status 3",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = active energy, 4-7 = apparent energy, 8-11 = phase angle, 12-15 = line frequency."
    },
    {
      "address": 12349,
      "count": 1,
      "name": "Inlet 1: sensor status 4",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = reactive power, 4-7 = reactive energy."
    },
    {
      "address": 12350,
      "count": 1,
      "name": "Inlet 1: sensor status 5",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = residual current, 4-7 = residual DC current, 8-11 = residual AC current."
    },
    {
      "address": 12351,
      "count": 1,
      "name": "Inlet 1: sensor status 6",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = displacement power factor, 4-7 = crest factor, 8-11 = voltage THD, 12-15 = current THD."
    },
    {
      "address": 16384,
      "count": 1,
      "name": "Overcurrent protector 1: capabilities",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bit 1 = RMS current, bit 2 = peak current, bit 15 = trip detection."
    },
    {
      "address": 16385,
      "count": 1,
      "name": "Overcurrent protector 1: capabilities, continued",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bit 0 = residual current, bit 1 = residual DC current, bit 2 = residual AC current."
    },
    {
      "address": 16386,
      "count": 1,
      "name": "Overcurrent protector 1: number of poles",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16389,
      "count": 1,
      "name": "Overcurrent protector 1: current rating",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16394,
      "count": 2,
      "name": "Overcurrent protector 1: RMS current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16396,
      "count": 2,
      "name": "Overcurrent protector 1: peak current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16433,
      "count": 1,
      "name": "Overcurrent protector 1: residual current status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = unknown, 1 = normal, 2 = warning, 3 = critical, 4 = self-test, 5 = failure."
    },
    {
      "address": 16434,
      "count": 2,
      "name": "Overcurrent protector 1: residual current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16436,
      "count": 2,
      "name": "Overcurrent protector 1: residual DC current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16438,
      "count": 2,
      "name": "Overcurrent protector 1: residual AC current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16442,
      "count": 1,
      "name": "Overcurrent protector 1: sensor status 1",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "One 4-bit value per sensor, bits 4-7 = RMS current, 8-11 = peak current."
    },
    {
      "address": 16446,
      "count": 1,
      "name": "Overcurrent protector 1: sensor status 5",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "One 4-bit value per sensor, bits 0-3 = residual current, 4-7 = residual DC current, 8-11 = residual AC current."
    },
    {
      "address": 32768,
      "count": 1,
      "name": "Outlet 1: capabilities",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Supported sensors: bit 0 = RMS voltage, bit 1 = RMS current, bit 2 = peak current, bit 3 = inrush current, bit 4 = unbalanced current, bit 5 = active power, bit 6 = apparent power, bit 7 = power factor, bit 8 = active energy counter, bit 9 = apparent energy counter, bit 10 = phase angle, bit 11 = line frequency, bit 12 = reactive power, bit 13 = reactive energy counter, bit 15 = outlet has a control coil (switched)."
    },
    {
      "address": 32769,
      "count": 1,
      "name": "Outlet 1: capabilities, continued",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bit 4 = displacement power factor, bit 5 = crest factor, bit 6 = voltage THD, bit 7 = current THD."
    },
    {
      "address": 32770,
      "count": 1,
      "name": "Outlet 1: number of outlet poles",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32771,
      "count": 1,
      "name": "Outlet 1: minimum voltage rating",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32772,
      "count": 1,
      "name": "Outlet 1: maximum voltage rating",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32773,
      "count": 1,
      "name": "Outlet 1: current rating",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32774,
      "count": 1,
      "name": "Outlet 1: displacement power factor rating",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "In hundredths."
    },
    {
      "address": 32775,
      "count": 1,
      "name": "Outlet 1: crest factor rating",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "In hundredths."
    },
    {
      "address": 32776,
      "count": 2,
      "name": "Outlet 1: RMS voltage",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32778,
      "count": 2,
      "name": "Outlet 1: RMS current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32780,
      "count": 2,
      "name": "Outlet 1: peak current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32782,
      "count": 2,
      "name": "Outlet 1: inrush current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32784,
      "count": 2,
      "name": "Outlet 1: unbalanced current",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32786,
      "count": 2,
      "name": "Outlet 1: active power",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32788,
      "count": 2,
      "name": "Outlet 1: apparent power",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32790,
      "count": 2,
      "name": "Outlet 1: power factor",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32800,
      "count": 2,
      "name": "Outlet 1: phase angle",
      "data_type": "Float32",
      "units": "°",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Phase angle between voltage and current."
    },
    {
      "address": 32802,
      "count": 2,
      "name": "Outlet 1: line frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32804,
      "count": 2,
      "name": "Outlet 1: reactive power",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32824,
      "count": 1,
      "name": "Outlet 1: voltage total harmonic distortion",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "In tenths of a percent."
    },
    {
      "address": 32825,
      "count": 1,
      "name": "Outlet 1: current total harmonic distortion",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "In tenths of a percent."
    },
    {
      "address": 32826,
      "count": 1,
      "name": "Outlet 1: sensor status 1",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "One 4-bit value per sensor (0 = unavailable, 1 = normal, 2 = below lower critical, 3 = below lower warning, 4 = above upper warning, 5 = above upper critical): bits 0-3 = RMS voltage, 4-7 = RMS current, 8-11 = peak current, 12-15 = inrush current."
    },
    {
      "address": 32827,
      "count": 1,
      "name": "Outlet 1: sensor status 2",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = unbalanced current, 4-7 = active power, 8-11 = apparent power, 12-15 = power factor."
    },
    {
      "address": 32828,
      "count": 1,
      "name": "Outlet 1: sensor status 3",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = active energy, 4-7 = apparent energy, 8-11 = phase angle, 12-15 = line frequency."
    },
    {
      "address": 32829,
      "count": 1,
      "name": "Outlet 1: sensor status 4",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = reactive power, 4-7 = reactive energy."
    },
    {
      "address": 32830,
      "count": 1,
      "name": "Outlet 1: sensor status 5",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "All bits reserved."
    },
    {
      "address": 32831,
      "count": 1,
      "name": "Outlet 1: sensor status 6",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "bits 0-3 = displacement power factor, 4-7 = crest factor, 8-11 = voltage THD, 12-15 = current THD."
    }
  ],
  "combined_registers": [],
  "notes": "Xerus firmware exposes these PDUs as a Modbus/TCP server, which has to be enabled first in the web UI under Device Settings > Network Services. The document covers the Raritan PXC, PX2, PX3 and PX4 families, the PX3TS and PX4TS transfer switches, Legrand intelligent PDUs and the Server Technology PRO3X and PRO4X — one map for all of them, so no separate seed exists for those rebadges. The register set is versioned with the firmware: this seed is the 4.4.0 map (Raritan document 52884). 'All register or coil addresses are hexadecimal' and 'all register addresses listed in this document refer to these entity addresses' — i.e. wire addresses, so they are used unchanged as zero-based; adding 40001 (5-digit) or 400001 (6-digit) gives Modicon numbering, and the document warns that software limited to the 5-digit convention cannot reach the inlet and outlet blocks at all. Multi-register values are big-endian. The document names neither a TCP port nor a unit ID: the address in this seed is a placeholder, and a PDU serves this map at its main controller unit ID, so use the value the PDU's Modbus service is configured with. Blocks repeat: inlet i at 3000h + i*100h, outlet i at 8000h + i*100h, overcurrent protector i at 4000h + i*100h, peripheral sensor i at 0800h + i*10h, each with the offsets listed here (so inlet 2's RMS voltage is 0x310A/0x310B). Only component 1 of each repeated block is listed, with a few coils of each range. Left out because the format has no 64-bit type: the QWord active, apparent and reactive energy counters (18h-1Fh and 26h-29h in each inlet and outlet block). The shelf-power-supply and power-bus blocks (2400h, 2F00h) are not seeded. A write-only transfer action (2003h) is marked W; the coil ranges are read-only for OCP trip status and read-write for switched outlets and shelf power supplies. Source: Raritan 'Xerus Modbus Interface', document PDU_Modbus_4.4.0_52884, served from cdn1.raritan.com."
}
