{
  "spec_version": 1,
  "slug": "janitza-umg-96-pa",
  "manufacturer": "Janitza",
  "model": "UMG 96-PA / UMG 96-PAMID+",
  "category": "Power analyzer",
  "supplier_url": "https://www.janitza.com/en/downloads/modbus-address-list",
  "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": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 1000,
      "count": 2,
      "name": "Voltage L1-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1002,
      "count": 2,
      "name": "Voltage L2-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1004,
      "count": 2,
      "name": "Voltage L3-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1006,
      "count": 2,
      "name": "Voltage L1-L2",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1008,
      "count": 2,
      "name": "Voltage L2-L3",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1010,
      "count": 2,
      "name": "Voltage L3-L1",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1012,
      "count": 2,
      "name": "Current L1",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1014,
      "count": 2,
      "name": "Current L2",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1016,
      "count": 2,
      "name": "Current L3",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1018,
      "count": 2,
      "name": "Current sum (calculated neutral current)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1020,
      "count": 2,
      "name": "Active power L1",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1022,
      "count": 2,
      "name": "Active power L2",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1024,
      "count": 2,
      "name": "Active power L3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1026,
      "count": 2,
      "name": "Active power sum",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1028,
      "count": 2,
      "name": "Reactive power L1",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1030,
      "count": 2,
      "name": "Reactive power L2",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1032,
      "count": 2,
      "name": "Reactive power L3",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1034,
      "count": 2,
      "name": "Reactive power sum",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1036,
      "count": 2,
      "name": "Apparent power L1",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1038,
      "count": 2,
      "name": "Apparent power L2",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1040,
      "count": 2,
      "name": "Apparent power L3",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1042,
      "count": 2,
      "name": "Apparent power sum",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1044,
      "count": 2,
      "name": "cos phi L1",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1046,
      "count": 2,
      "name": "cos phi L2",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1048,
      "count": 2,
      "name": "cos phi L3",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1050,
      "count": 2,
      "name": "cos phi sum",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1052,
      "count": 2,
      "name": "Active power of the fundamental oscillation L1",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1054,
      "count": 2,
      "name": "Active power of the fundamental oscillation L2",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1056,
      "count": 2,
      "name": "Active power of the fundamental oscillation L3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1214,
      "count": 2,
      "name": "THD voltage L1",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1216,
      "count": 2,
      "name": "THD voltage L2",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1218,
      "count": 2,
      "name": "THD voltage L3",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1220,
      "count": 2,
      "name": "THD current L1",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "The vendor table prints \"THD current L1\" for all three of 1220, 1222 and 1224."
    },
    {
      "address": 1222,
      "count": 2,
      "name": "THD current L2",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1224,
      "count": 2,
      "name": "THD current L3",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1226,
      "count": 2,
      "name": "Frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1248,
      "count": 2,
      "name": "Rotation field",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = right, 0 = none, -1 = left."
    },
    {
      "address": 5000,
      "count": 2,
      "name": "Active energy L1, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5002,
      "count": 2,
      "name": "Active energy L2, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5004,
      "count": 2,
      "name": "Active energy L3, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5006,
      "count": 2,
      "name": "Active energy sum, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5008,
      "count": 2,
      "name": "Active energy L1, consumed, high tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5010,
      "count": 2,
      "name": "Active energy L2, consumed, high tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5012,
      "count": 2,
      "name": "Active energy L3, consumed, high tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5014,
      "count": 2,
      "name": "Active energy sum, consumed, high tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5016,
      "count": 2,
      "name": "Active energy L1, consumed, low tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5018,
      "count": 2,
      "name": "Active energy L2, consumed, low tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5020,
      "count": 2,
      "name": "Active energy L3, consumed, low tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5022,
      "count": 2,
      "name": "Active energy sum, consumed, low tariff",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5024,
      "count": 2,
      "name": "Apparent energy L1",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5026,
      "count": 2,
      "name": "Apparent energy L2",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5028,
      "count": 2,
      "name": "Apparent energy L3",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5030,
      "count": 2,
      "name": "Apparent energy, total",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5048,
      "count": 2,
      "name": "Reactive energy L1, inductive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5050,
      "count": 2,
      "name": "Reactive energy L2, inductive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5052,
      "count": 2,
      "name": "Reactive energy L3, inductive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5054,
      "count": 2,
      "name": "Reactive energy sum, inductive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5072,
      "count": 2,
      "name": "Active energy L1, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5074,
      "count": 2,
      "name": "Active energy L2, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5076,
      "count": 2,
      "name": "Active energy L3, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5078,
      "count": 2,
      "name": "Active energy sum, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5080,
      "count": 2,
      "name": "Reactive energy L1, capacitive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5082,
      "count": 2,
      "name": "Reactive energy L2, capacitive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5084,
      "count": 2,
      "name": "Reactive energy L3, capacitive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5086,
      "count": 2,
      "name": "Reactive energy sum, capacitive",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [],
  "combined_registers": [],
  "notes": "RS-485 device: reach it through a Modbus RTU-to-TCP gateway using the serial settings above. Sources: Janitza \"UMG 96-PA / UMG 96-PAMID+ - Modbus address list and Formulary\", document 1.360.292.e (from firmware 3.54), sections \"Measured values\" (registers 991-1278) and \"Energy values\" (registers 5000-5090), published as the English PDF inside https://assets.janitza.com/ce18jq9ih0x6/75730e79d6b9bb7b43018d/f90faad4edfd24d91b2db81eee1a4791/janitza-mal-umg96pa-fw3-en.zip , and the device manual \"UMG 96-PA / UMG 96-PAMID\" (janitza-bhb-umg96pa-fw1-en) section 12.3 for the communication defaults. Addresses are used as wire addresses; the address list says the Little-Endian variant is the same address + 32768, so this is the Big-Endian, high-byte-first layout, and every value here is an IEEE-754 single precision float read with function code 03/04. The device manual gives the factory communication settings as device address 1 (range 1...250), data frame \"1 stop bit, no parity\" with 8 data bits and baud rate \"Auto\" - the UMG 96-PA detects the bus speed, so a gateway can use any of the supported rates (9600, 19200, 38400, 57600, 115200 bps); 9600 8N1 is entered above because this format needs a fixed number. The \"frequently required measured values\" block at 19000 repeats part of these values and is not listed to avoid duplicate rows; it is, however, the block whose energy labels the vendor table prints twice (19054 and 19062 both read \"Real energy L1, consumed\"), so the 5000-block is used for the energy counters instead. Not listed: min/max/mean value blocks, drag indicators, comparator groups, Fourier analysis, the MID+ shift register, the 19000 block and the RCM module values - all documented in the same address list."
}
