{
 "manufacturer": "Janitza",
 "manufacturer_slug": "janitza",
 "model": "UMG 96RM-E power analyser (Ethernet, Modbus TCP / RTU)",
 "model_slug": "umg-96rm-e",
 "short_model": "UMG 96RM-E",
 "aliases": [
  "UMG96RM-E",
  "UMG 96 RM-E",
  "UMG96RME",
  "Janitza UMG96RM-E"
 ],
 "equipment_type": "Power meter (power analyser)",
 "applies_to": "UMG 96RM-E from firmware 3.01 / hardware release 104, per address list 1.040.085.8.n (06/2024).",
 "summary": "The UMG 96RM-E is the Ethernet version of Janitza's UMG 96RM power analyser, with RS-485 as well. Measurements are big-endian 32-bit floats and the 19000-19120 'frequently required readings' block holds volts, amps, power, CosPhi, frequency, energy and THD. This map covers that block, total PF, the fourth current input, temperature inputs, digital output status and the main communication, transformer and reset parameters.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 115200,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": null,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "Addresses are printed as the protocol address and sent unchanged: 19000 is requested as 19000. The parameter list starts at address 0 (device address), which only fits 0-based numbering. In a 1-based or Modicon tool enter 19001 / 419001."
 },
 "default_word_order": "ABCD",
 "firmware": "From firmware 3.01 / hardware release 104",
 "source": {
  "title": "Power Analyser UMG 96RM-E - Modbus-address list and Formulary (from firmware version 3.01 / hardware release 104)",
  "doc_number": "1.040.085.8.n",
  "revision_date": "2024-06",
  "url": "https://www.janitza.com/files/download/manuals/current/UMG96RM/E/janitza-mal-umg96rme-en.pdf",
  "pages": "Transfer parameters, byte order p. 5; parameter I pp. 14-15; parameter II p. 16; frequently required readings p. 19; float values pp. 20-21"
 },
 "notes": [
  "Byte order: the list says its addresses return data big-endian (high byte first, high word in the lower register = ABCD). Adding 32768 to an address returns the same value little-endian; that mirror block is not listed.",
  "Access (R / RW) is copied from the list's RD/WR column. Digital output status rows (10080-10084) are marked read-only.",
  "Unlike the basic UMG 96RM list, 19068 is printed here as the L1-L3 consumed total (index [0]), so it is included.",
  "Transfer parameters conflict: p. 5 says 2 stop bits with no parity, while parameter 3 defaults to 0 = 1 stop bit, no parity. Default stop bits are left blank; check parameter 3.",
  "Left out: the SHORT and INT copies of measured values (fixed resolutions, and short values skip the CT/VT ratios), tariff energy, harmonics, min/max/mean blocks, comparators and the network rows at 25646-25719 (strings whose layout is not clear enough to decode).",
  "Left out: 508 (write to EEPROM) because the list does not say when it is needed.",
  "The address list covers registers and serial framing only; it does not name the Modbus TCP port, so the port is left blank here."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "0",
   "name": "Device address",
   "description": "RS-485 Modbus address; 0 and 248-255 reserved. Default 1.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 1,
   "documented": "1",
   "name": "Baud rate",
   "description": "Default 4 (115.2 kbps).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "9600",
    "1": "19200",
    "2": "38400",
    "3": "57600",
    "4": "115200"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "3",
   "name": "Stop bits / parity",
   "description": "Default 0.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "1 stop bit, no parity",
    "1": "2 stop bits, no parity",
    "2": "1 stop bit, even parity",
    "3": "1 stop bit, odd parity"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10,
   "documented": "10",
   "name": "CT L1 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12,
   "documented": "12",
   "name": "CT L1 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14,
   "documented": "14",
   "name": "VT L1 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16,
   "documented": "16",
   "name": "VT L1 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 18,
   "documented": "18",
   "name": "CT L2 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20,
   "documented": "20",
   "name": "CT L2 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 26,
   "documented": "26",
   "name": "CT L3 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 28,
   "documented": "28",
   "name": "CT L3 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 506,
   "documented": "506",
   "name": "Delete min/max values",
   "description": "Write 1 to clear stored minimum and maximum values.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 507,
   "documented": "507",
   "name": "Delete energy values",
   "description": "Write 1 to clear all energy counters.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 750,
   "documented": "750",
   "name": "Software release",
   "description": "Firmware version number.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 761,
   "documented": "761",
   "name": "Module number",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No module",
    "1": "Profibus",
    "2": "CBM",
    "3": "Ethernet"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 826,
   "documented": "826",
   "name": "CosPhi total (fundamental)",
   "description": "Fundamental real power sum / apparent power sum.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 834,
   "documented": "834",
   "name": "Power factor total",
   "description": "Total real power / total apparent power.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10080,
   "documented": "10080",
   "name": "Digital output 1 status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10081,
   "documented": "10081",
   "name": "Digital output 2 status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10085,
   "documented": "10085",
   "name": "Current L4",
   "description": "Fourth current input.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10865,
   "documented": "10865",
   "name": "Temperature input 1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10867,
   "documented": "10867",
   "name": "Temperature input 2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19000,
   "documented": "19000",
   "name": "Voltage L1-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19002,
   "documented": "19002",
   "name": "Voltage L2-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19004,
   "documented": "19004",
   "name": "Voltage L3-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19006,
   "documented": "19006",
   "name": "Voltage L1-L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19008,
   "documented": "19008",
   "name": "Voltage L2-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19010,
   "documented": "19010",
   "name": "Voltage L1-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19012,
   "documented": "19012",
   "name": "Current L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19014,
   "documented": "19014",
   "name": "Current L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19016,
   "documented": "19016",
   "name": "Current L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19018,
   "documented": "19018",
   "name": "Neutral current (vector sum)",
   "description": "Calculated vector sum of the three phase currents.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19020,
   "documented": "19020",
   "name": "Real power L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19022,
   "documented": "19022",
   "name": "Real power L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19024,
   "documented": "19024",
   "name": "Real power L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19026,
   "documented": "19026",
   "name": "Real power total",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19028,
   "documented": "19028",
   "name": "Apparent power L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19030,
   "documented": "19030",
   "name": "Apparent power L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19032,
   "documented": "19032",
   "name": "Apparent power L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19034,
   "documented": "19034",
   "name": "Apparent power total",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19036,
   "documented": "19036",
   "name": "Reactive power L1 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19038,
   "documented": "19038",
   "name": "Reactive power L2 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19040,
   "documented": "19040",
   "name": "Reactive power L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19042,
   "documented": "19042",
   "name": "Reactive power total (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19044,
   "documented": "19044",
   "name": "CosPhi L1 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19046,
   "documented": "19046",
   "name": "CosPhi L2 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19048,
   "documented": "19048",
   "name": "CosPhi L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19050,
   "documented": "19050",
   "name": "Frequency",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19052,
   "documented": "19052",
   "name": "Rotation field",
   "description": "Float: 1 = clockwise, 0 = none, -1 = anticlockwise.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19054,
   "documented": "19054",
   "name": "Real energy L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19056,
   "documented": "19056",
   "name": "Real energy L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19058,
   "documented": "19058",
   "name": "Real energy L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19060,
   "documented": "19060",
   "name": "Real energy L1-L3",
   "description": "Three-phase total, not split into consumed and delivered.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19062,
   "documented": "19062",
   "name": "Real energy L1, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19064,
   "documented": "19064",
   "name": "Real energy L2, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19066,
   "documented": "19066",
   "name": "Real energy L3, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19068,
   "documented": "19068",
   "name": "Real energy L1-L3, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19070,
   "documented": "19070",
   "name": "Real energy L1, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19072,
   "documented": "19072",
   "name": "Real energy L2, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19074,
   "documented": "19074",
   "name": "Real energy L3, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19076,
   "documented": "19076",
   "name": "Real energy L1-L3, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19084,
   "documented": "19084",
   "name": "Apparent energy L1-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19092,
   "documented": "19092",
   "name": "Reactive energy L1-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19100,
   "documented": "19100",
   "name": "Reactive energy inductive L1-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19108,
   "documented": "19108",
   "name": "Reactive energy capacitive L1-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19110,
   "documented": "19110",
   "name": "THD voltage L1-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19112,
   "documented": "19112",
   "name": "THD voltage L2-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19114,
   "documented": "19114",
   "name": "THD voltage L3-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19116,
   "documented": "19116",
   "name": "THD current L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19118,
   "documented": "19118",
   "name": "THD current L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19120,
   "documented": "19120",
   "name": "THD current L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Read holding registers (function 03) from 19000: 60 registers give volts, amps, power, CosPhi, frequency and per-phase energy as big-endian floats, and 19060-19077 adds total, consumed and delivered real energy in Wh. Over Ethernet use Modbus TCP; on RS-485 use RTU at the device address (parameter 0).",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 19000,
    "why": "Voltage L1-N"
   },
   {
    "table": "holding_register",
    "address": 19012,
    "why": "Current L1"
   },
   {
    "table": "holding_register",
    "address": 19026,
    "why": "Total real power"
   },
   {
    "table": "holding_register",
    "address": 19034,
    "why": "Total apparent power"
   },
   {
    "table": "holding_register",
    "address": 834,
    "why": "Total power factor"
   },
   {
    "table": "holding_register",
    "address": 19050,
    "why": "Frequency"
   },
   {
    "table": "holding_register",
    "address": 19068,
    "why": "Consumed energy total"
   },
   {
    "table": "holding_register",
    "address": 19076,
    "why": "Delivered energy total"
   }
  ],
  "enable": "Modbus TCP runs on the Ethernet port; RS-485 address, baud rate and stop bits/parity are parameters 0, 1 and 3 (front buttons or Modbus).",
  "watchdog": null,
  "quirks": [
   "Addresses are used as printed (0-based).",
   "Floats are ABCD; add 32768 to an address for little-endian.",
   "Energy is in Wh and varh, not kWh.",
   "Rotation field (19052) is a float: 1, 0 or -1."
  ],
  "setup": [
   "RS-485 defaults: address 1, 115.2 kbps.",
   "Set CT/VT ratios (parameters 10-32) so the float values read in primary units.",
   "Writing 1 to 507 clears all energy counters; 506 clears min/max values."
  ],
  "gotchas": [
   "The RS-485 default is 115.2 kbps (parameter 1 = 4); set the master to match or lower the meter rate.",
   "This list is for the -E model; the basic UMG 96RM uses a different address list."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/janitza/umg-96rm-e",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
