{
 "manufacturer": "Intesis (HMS Networks)",
 "manufacturer_slug": "intesis",
 "model": "INMBSPAN001A100 Panasonic Aquarea H/J/K/L/M air-to-water to Modbus RTU gateway",
 "model_slug": "inmbspan001a100",
 "short_model": "INMBSPAN001A100",
 "aliases": [
  "INMBSPAN001A100",
  "Aquarea Modbus",
  "Panasonic Aquarea Modbus RTU",
  "Intesis Aquarea",
  "INMBSPAN001A000 (legacy order code)"
 ],
 "equipment_type": "Heat pump gateway (VRF / split AC gateway)",
 "applies_to": "Intesis (HMS Networks) INMBSPAN001A100 gateway connected to Panasonic Aquarea H, J, K, L and M series air-to-water heat pumps, per user manual version 1.0.2 (2026-02-04).",
 "summary": "This Intesis interface connects to a Panasonic Aquarea hydro unit and presents it as a Modbus RTU server. All points are single 16-bit holding registers: system on/off and operating mode, zone setpoints and actual temperatures, DHW tank on/off and setpoint, water temperatures, present power draw, error code, unit configuration, and requests such as powerful, quiet and sterilisation. Some registers apply only to newer K/L/M series units.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 2,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "Each register is listed with a 'Modbus address (base 0)' (protocol address) and a 'PLC address (base 1)'. This map uses the base-0 value as the wire address: System on/off is address 0 (PLC 1)."
 },
 "default_word_order": null,
 "firmware": null,
 "source": {
  "title": "INMBSPAN001A100 User Manual - Panasonic Aquarea H/J/K/L/M Air-to-Water Units to Modbus RTU",
  "doc_number": "User Manual Version 1.0.2",
  "revision_date": "2026-02-04",
  "url": "https://www.hms-networks.com/docs/default-source/products/intesis/manuals-and-guides---manuals/inmbspan001a100-user-manual-v1-0-0-en.pdf",
  "pages": "p. 7 (DIP switches), p. 13 (physical layer, functions, invalid values), pp. 14-29 (register tables), p. 30 (temperature register logic), p. 31 (error codes)"
 },
 "notes": [
  "The download link's file name says v1-0-0 but the PDF it serves is version 1.0.2 dated 2026-02-04; the addresses here are from 1.0.2.",
  "Temperatures follow DIP switch SW4: P1 ON = tenths of a degree (x10, Celsius only), P2 ON = Fahrenheit; both OFF (factory) = whole °C. Units and scale here are for the default; use scale 0.1 if x10 is set.",
  "Temperature ranges go below zero (-127 to 127 °C), so temperatures are typed signed 16-bit. Invalid readings are 0x8000 on signed registers and 0xFFFF on unsigned ones.",
  "What register 12/13 (zone setpoint) and 14/15 (actual) mean depends on zone setup (83/84), setting mode (16/17) and operating mode (4): room, water, water shift or pool; see the table on p. 30.",
  "For registers whose values are range-checked, an out-of-range write is moved to the nearest limit (writing 6 to a 0-5 register applies 5).",
  "Left out: the 32-bit energy totals 120-131 and 366-373 (two registers each, word order not stated); compressor total on time 184-185 (split into MSB/LSB registers with a 24-bit range, packing not stated); the compensation-curve, bivalent, SG Ready capacity and M-series-only settings (150-438) - read them from the manual if needed."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "0",
   "name": "System on/off",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 1,
   "documented": "1",
   "name": "Outdoor temperature",
   "description": "-127 to 127 °C.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2,
   "documented": "2",
   "name": "Outlet water temperature",
   "description": "Flow water, -127 to 127 °C.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "3",
   "name": "Inlet water temperature",
   "description": "Return water, -127 to 127 °C.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4,
   "documented": "4",
   "name": "Operating mode",
   "description": "Values 1-7 can be written; 8-11 are read-only states.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Heat",
    "2": "Heat + tank",
    "3": "Tank",
    "4": "Cool + tank",
    "5": "Cool",
    "6": "Auto",
    "7": "Auto + tank",
    "8": "Auto heat",
    "9": "Auto heat + tank",
    "10": "Auto cool",
    "11": "Auto cool + tank"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5,
   "documented": "5",
   "name": "Heat mode water temperature setting method",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Compensation curve",
    "2": "Direct"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6,
   "documented": "6",
   "name": "Cool mode water temperature setting method",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Compensation curve",
    "2": "Direct"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9,
   "documented": "9",
   "name": "Zone 1/Zone 2 on/off",
   "description": "Only with two zones configured (register 82 = 2).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Zone 1 on / Zone 2 off",
    "2": "Zone 1 off / Zone 2 on",
    "3": "Zone 1 on / Zone 2 on"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10,
   "documented": "10",
   "name": "Zone 1 sensor",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Water temperature",
    "2": "External room sensor",
    "3": "Internal room sensor",
    "4": "Room thermistor",
    "5": "Pool sensor"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11,
   "documented": "11",
   "name": "Zone 2 sensor",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Water temperature",
    "2": "External room sensor",
    "3": "Internal room sensor",
    "4": "Room thermistor",
    "5": "Pool sensor"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12,
   "documented": "12",
   "name": "Zone 1 setpoint temperature",
   "description": "Water shift, water, room or pool setpoint, depending on setup and mode.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 13,
   "documented": "13",
   "name": "Zone 2 setpoint temperature",
   "description": "Water shift, water, room or pool setpoint, depending on setup and mode.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14,
   "documented": "14",
   "name": "Zone 1 actual temperature",
   "description": "Room, water or pool value matching the setpoint type.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 15,
   "documented": "15",
   "name": "Zone 2 actual temperature",
   "description": "Room, water or pool value matching the setpoint type.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16,
   "documented": "16",
   "name": "Zone 1 temperature setting mode",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Room temperature",
    "2": "Compensation curve (water)",
    "3": "Direct (water)",
    "4": "Pool temperature"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 17,
   "documented": "17",
   "name": "Zone 2 temperature setting mode",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Room temperature",
    "2": "Compensation curve (water)",
    "3": "Direct (water)",
    "4": "Pool temperature"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 18,
   "documented": "18",
   "name": "Zone 1 min setpoint",
   "description": "Lower limit for the current setpoint type.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19,
   "documented": "19",
   "name": "Zone 1 max setpoint",
   "description": "Upper limit for the current setpoint type.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20,
   "documented": "20",
   "name": "Zone 2 min setpoint",
   "description": "Lower limit for the current setpoint type.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21,
   "documented": "21",
   "name": "Zone 2 max setpoint",
   "description": "Upper limit for the current setpoint type.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 30,
   "documented": "30",
   "name": "Tank on/off",
   "description": "Domestic hot water tank.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 32,
   "documented": "32",
   "name": "Tank water temperature",
   "description": "Current DHW tank temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 33,
   "documented": "33",
   "name": "Tank water setpoint",
   "description": "40 to 55 or 75 °C depending on unit.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 34,
   "documented": "34",
   "name": "Tank heater",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Internal",
    "2": "External"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35,
   "documented": "35",
   "name": "Tank min setpoint",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36,
   "documented": "36",
   "name": "Tank max setpoint",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 45,
   "documented": "45",
   "name": "Tank mode energy consumption",
   "description": "Present power draw in tank mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 46,
   "documented": "46",
   "name": "Heat mode energy consumption",
   "description": "Present power draw in heat mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 47,
   "documented": "47",
   "name": "Cool / heat recovery mode energy consumption",
   "description": "Present power draw in cool mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 52,
   "documented": "52",
   "name": "Error code",
   "description": "0 = none; 1xxx = Uxx, 2xxx = Hxx, 3xxx = Fxx.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 64,
   "documented": "64",
   "name": "De-ice status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 70,
   "documented": "70",
   "name": "Current error status",
   "description": "Reads 1 until the gateway has talked to the unit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No error",
    "1": "Error"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 81,
   "documented": "81",
   "name": "Tank connection",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No",
    "1": "Yes"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 82,
   "documented": "82",
   "name": "Number of zones",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "1 zone",
    "2": "2 zones"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 83,
   "documented": "83",
   "name": "Zone 1 setup",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Room",
    "2": "Pool"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 84,
   "documented": "84",
   "name": "Zone 2 setup",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Room",
    "2": "Pool"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 85,
   "documented": "85",
   "name": "Direction",
   "description": "Where the heat pump is currently delivering heat.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Room",
    "2": "Tank"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 86,
   "documented": "86",
   "name": "Outdoor type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "STD",
    "2": "TCAP",
    "3": "HWT"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 111,
   "documented": "111",
   "name": "SG Ready control pattern",
   "description": "K series onward.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Normal",
    "2": "HP stop",
    "3": "Capacity 1",
    "4": "Capacity 2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 112,
   "documented": "112",
   "name": "Water pressure",
   "description": "0-5080 mbar; K series onward.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "mbar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 117,
   "documented": "117",
   "name": "Model series",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "H series",
    "2": "J series",
    "3": "K series",
    "4": "L series",
    "5": "M series"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 183,
   "documented": "183",
   "name": "Water outlet temperature target",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 197,
   "documented": "197",
   "name": "Powerful (request)",
   "description": "Temporary boost.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Off",
    "2": "On 30 min",
    "3": "On 60 min",
    "4": "On 90 min"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 198,
   "documented": "198",
   "name": "Quiet (request)",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Off",
    "2": "Level 1",
    "3": "Level 2",
    "4": "Level 3"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 200,
   "documented": "200",
   "name": "System reset (request)",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": {
    "0": "No request",
    "1": "Request"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 202,
   "documented": "202",
   "name": "Sterilization (request)",
   "description": "Starts a tank sterilisation cycle.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": {
    "0": "No request",
    "1": "Request"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 460,
   "documented": "460",
   "name": "Gateway ID",
   "description": "Reads 3328 (0x0D00).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "3328": "INMBSPAN001A100"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 463,
   "documented": "463",
   "name": "Gateway reset",
   "description": "Write 1 to restart the gateway.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 464,
   "documented": "464",
   "name": "Baud rate",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "2400",
    "1": "4800",
    "2": "9600",
    "3": "19200",
    "4": "38400",
    "5": "57600",
    "6": "76800",
    "7": "115200"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 465,
   "documented": "465",
   "name": "Gateway Modbus server address",
   "description": "1-63.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 466,
   "documented": "466",
   "name": "DIP switch value",
   "description": "Switch positions as a binary number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Connect the gateway to the Aquarea hydro unit and the RS-485 bus, set the address on SW3 P1-P6 (default 1), then read holding registers with function 03 and write single registers with function 06: register 0 for on/off, 4 for mode, 12 and 33 for zone and tank setpoints.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 0,
    "why": "System on/off"
   },
   {
    "table": "holding_register",
    "address": 4,
    "why": "Operating mode"
   },
   {
    "table": "holding_register",
    "address": 12,
    "why": "Zone 1 setpoint"
   },
   {
    "table": "holding_register",
    "address": 14,
    "why": "Zone 1 actual temperature"
   },
   {
    "table": "holding_register",
    "address": 33,
    "why": "Tank setpoint"
   },
   {
    "table": "holding_register",
    "address": 32,
    "why": "Tank temperature"
   },
   {
    "table": "holding_register",
    "address": 1,
    "why": "Outdoor temperature"
   },
   {
    "table": "holding_register",
    "address": 2,
    "why": "Outlet water temperature"
   },
   {
    "table": "holding_register",
    "address": 70,
    "why": "Error status"
   },
   {
    "table": "holding_register",
    "address": 52,
    "why": "Error code"
   }
  ],
  "enable": "No software enable. Set the address and baud on the DIP switches with the gateway unpowered; it is powered by the Aquarea unit.",
  "watchdog": null,
  "quirks": [
   "Function 16 works only with a quantity of one register.",
   "Factory serial setting is 9600 baud, 8-N-2; 8-N-1 is detected automatically.",
   "Temperature scale and unit change with DIP switch SW4.",
   "Register 70 reads 1 (error) until the gateway has communicated with the Aquarea unit."
  ],
  "setup": [
   "SW3 P1-P6: Modbus address in binary (P1 = least significant bit).",
   "SW3 P7-P8 plus SW4 P3: baud rate (9600 default).",
   "SW4 P1 = x1/x10, P2 = °C/°F, P4 = 120 ohm termination.",
   "Switch the gateway off (power down the Aquarea) before changing DIP switches."
  ],
  "gotchas": [
   "Zone 1/Zone 2 on/off (register 9) only applies when two zones are configured.",
   "Many registers from 105 upward exist only on K, L or M series units."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/intesis/inmbspan001a100",
 "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."
}
