{
  "spec_version": 1,
  "slug": "janitza-umg-96-rm-e",
  "manufacturer": "Janitza",
  "model": "UMG 96RM-E",
  "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"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 19000,
      "count": 2,
      "name": "Voltage L1-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19002,
      "count": 2,
      "name": "Voltage L2-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19004,
      "count": 2,
      "name": "Voltage L3-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19006,
      "count": 2,
      "name": "Voltage L1-L2",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19008,
      "count": 2,
      "name": "Voltage L2-L3",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19010,
      "count": 2,
      "name": "Voltage L3-L1",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19012,
      "count": 2,
      "name": "Current I L1",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19014,
      "count": 2,
      "name": "Current I L2",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19016,
      "count": 2,
      "name": "Current I L3",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19018,
      "count": 2,
      "name": "Vector sum current IN (I1+I2+I3)",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19020,
      "count": 2,
      "name": "Real power P1 L1N",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19022,
      "count": 2,
      "name": "Real power P2 L2N",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19024,
      "count": 2,
      "name": "Real power P3 L3N",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19026,
      "count": 2,
      "name": "Real power sum Psum3",
      "data_type": "Float32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19028,
      "count": 2,
      "name": "Apparent power S1 L1N",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19030,
      "count": 2,
      "name": "Apparent power S2 L2N",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19032,
      "count": 2,
      "name": "Apparent power S3 L3N",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19034,
      "count": 2,
      "name": "Apparent power sum Ssum3",
      "data_type": "Float32",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19036,
      "count": 2,
      "name": "Fundamental reactive power Q1 L1N",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19038,
      "count": 2,
      "name": "Fundamental reactive power Q2 L2N",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19040,
      "count": 2,
      "name": "Fundamental reactive power Q3 L3N",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19042,
      "count": 2,
      "name": "Fundamental reactive power sum Qsum3",
      "data_type": "Float32",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19044,
      "count": 2,
      "name": "cos phi UL1 IL1 (fundamental)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19046,
      "count": 2,
      "name": "cos phi UL2 IL2 (fundamental)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19048,
      "count": 2,
      "name": "cos phi UL3 IL3 (fundamental)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19050,
      "count": 2,
      "name": "Measured frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19052,
      "count": 2,
      "name": "Rotation field",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = right, 0 = none, -1 = left."
    },
    {
      "address": 19054,
      "count": 2,
      "name": "Real energy L1",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19056,
      "count": 2,
      "name": "Real energy L2",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19058,
      "count": 2,
      "name": "Real energy L3",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19060,
      "count": 2,
      "name": "Real energy L1..L3",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19062,
      "count": 2,
      "name": "Real energy L1, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19064,
      "count": 2,
      "name": "Real energy L2, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19066,
      "count": 2,
      "name": "Real energy L3, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19068,
      "count": 2,
      "name": "Real energy L1..L3, consumed",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19070,
      "count": 2,
      "name": "Real energy L1, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19072,
      "count": 2,
      "name": "Real energy L2, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19074,
      "count": 2,
      "name": "Real energy L3, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19076,
      "count": 2,
      "name": "Real energy L1..L3, delivered",
      "data_type": "Float32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19078,
      "count": 2,
      "name": "Apparent energy L1",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19080,
      "count": 2,
      "name": "Apparent energy L2",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19082,
      "count": 2,
      "name": "Apparent energy L3",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19084,
      "count": 2,
      "name": "Apparent energy L1..L3",
      "data_type": "Float32",
      "units": "VAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19086,
      "count": 2,
      "name": "Reactive energy L1",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19088,
      "count": 2,
      "name": "Reactive energy L2",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19090,
      "count": 2,
      "name": "Reactive energy L3",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19092,
      "count": 2,
      "name": "Reactive energy L1..L3",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19094,
      "count": 2,
      "name": "Reactive energy inductive L1",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19096,
      "count": 2,
      "name": "Reactive energy inductive L2",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19098,
      "count": 2,
      "name": "Reactive energy inductive L3",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19100,
      "count": 2,
      "name": "Reactive energy inductive L1..L3",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19102,
      "count": 2,
      "name": "Reactive energy capacitive L1",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19104,
      "count": 2,
      "name": "Reactive energy capacitive L2",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19106,
      "count": 2,
      "name": "Reactive energy capacitive L3",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19108,
      "count": 2,
      "name": "Reactive energy capacitive L1..L3",
      "data_type": "Float32",
      "units": "varh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19110,
      "count": 2,
      "name": "THD voltage L1-N",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19112,
      "count": 2,
      "name": "THD voltage L2-N",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19114,
      "count": 2,
      "name": "THD voltage L3-N",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19116,
      "count": 2,
      "name": "THD current L1",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19118,
      "count": 2,
      "name": "THD current L2",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19120,
      "count": 2,
      "name": "THD current L3",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [],
  "combined_registers": [],
  "notes": "The UMG 96RM-E has its own Ethernet interface, so it is read directly over Modbus TCP (port 502, slave address 1 by default). Every row is the \"Frequently required readings\" block of Janitza's \"UMG 96RM-E - Modbus-address list and Formulary\", document 1.040.085.8.o (07/2025, from firmware 3.01 / hardware release 104), published at https://assets.janitza.com/ce18jq9ih0x6/b80ca06dda38d37f864115/703a1d1d3014935a5c3327ed6b978d37/janitza-mal-umg96rme-en.pdf ; the addresses are used as wire addresses (the list itself says the Little-Endian variant is the same address + 32768, so this is the Big-Endian, high-byte-first layout). All values are IEEE-754 single precision floats read with function code 03 and refreshed every 200 ms. Float and integer measured values already include the set current/voltage transformer factors; the short (16-bit) block does not. The list is deliberately limited to the frequently used measurements plus THD: harmonics 2-63, minimum/maximum/mean values, drag indicators, limit-value monitoring, logos and the 10000/10002 configuration registers (transformer ratios, nominal values, Modbus settings) are documented in the same address list. Everything listed here is read-only."
}
