{
 "manufacturer": "Intesis (HMS Networks)",
 "manufacturer_slug": "intesis",
 "model": "IN485MIT001A000 Mitsubishi Electric Ecodan air-to-water to Modbus RTU / BACnet MS/TP gateway",
 "model_slug": "in485mit001a000",
 "short_model": "IN485MIT001A000",
 "aliases": [
  "IN485MIT001A000",
  "Ecodan Modbus",
  "Mitsubishi Ecodan Modbus RTU",
  "Intesis Ecodan",
  "HMS Ecodan gateway"
 ],
 "equipment_type": "Heat pump gateway (VRF / split AC gateway)",
 "applies_to": "Intesis (HMS Networks) IN485MIT001A000 gateway on the CN105 socket of Mitsubishi Electric Ecodan air-to-water heat pumps, set to Modbus RTU, per user manual version 1.0.3 (2025-12-02).",
 "summary": "This Intesis gateway plugs into the CN105 connector of a Mitsubishi Electric Ecodan air-to-water heat pump and makes it a Modbus RTU server (or a BACnet MS/TP device, chosen by DIP switch). All points are single 16-bit holding registers: system on/off, heat/cool mode, Zone 1 and Zone 2 setpoints and control type, DHW setpoint, eco and boost, water temperatures, compressor and pump status, run hours, flow and energy counters, plus error codes.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": null,
  "baud": 2400,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 2,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "The manual gives each register a 'Modbus address (base 0)' and a 'PLC address (base 1)' column. This map uses the base-0 value as the wire address, so On/off is address 130 (PLC 131)."
 },
 "default_word_order": null,
 "firmware": null,
 "source": {
  "title": "IN485MIT001A000 User Manual - Mitsubishi Electric Ecodan Air-to-Water Units to BACnet MS/TP and Modbus RTU",
  "doc_number": "User Manual Version 1.0.3",
  "revision_date": "2025-12-02",
  "url": "https://www.hms-networks.com/docs/default-source/products/intesis/manuals-and-guides---manuals/user-manual-in485mit001a000.pdf",
  "pages": "pp. 7-8 (DIP switches), pp. 10-11 (wiring), p. 26 (functions, physical layer), pp. 27-36 (register tables), p. 37 (virtual temperature), p. 40 (error codes)"
 },
 "notes": [
  "Temperatures follow DIP switch SW2: position 7 OFF = whole degrees (x1, factory default), ON = tenths (x10, 19.2 = 192); position 8 OFF = °C (default), ON = °F. Units and scale here are for the defaults; use scale 0.1 if you set x10.",
  "Every register starts at 0x8000 (-32768) until the gateway has read the unit; the manual writes this value as negative, so temperatures are typed signed 16-bit.",
  "An invalid write resets a temperature register to 0x8000; other registers keep their old value.",
  "Zone 2 custom, unit and applied limit registers (241-252) mirror Zone 1's (161-172) and are left out to keep the map short; so are the Zone 1 unit limits (165-168), DHW applied limits (281-282) and the gateway-only registers not needed for control.",
  "Error code (108) is the code shown on Mitsubishi centralised controllers and sub code (109) the Ecodan screen code, both as hex digits in a 16-bit value (e.g. 0x0601 reads 1537 in decimal); the conversion table is in section 10 of the manual."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 101,
   "documented": "101",
   "name": "Indoor unit address",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 107,
   "documented": "107",
   "name": "Error flag",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No error",
    "1": "Error present"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 108,
   "documented": "108",
   "name": "Error code",
   "description": "Code as shown on Mitsubishi central controllers (hex, e.g. 0x5101); 0 = none.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 109,
   "documented": "109",
   "name": "Error sub code",
   "description": "Code as shown on the Ecodan screen, encoded (hex, e.g. 0x0601 = P1); 0 = none.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 114,
   "documented": "114",
   "name": "Refrigerant error flag",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No error",
    "1": "Error present"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 116,
   "documented": "116",
   "name": "Operating time counter",
   "description": "Heat pump run hours; rolls over to 0 after 65535.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 118,
   "documented": "118",
   "name": "Remote control lock",
   "description": "1 = only the BMS can control the unit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Unlocked",
    "1": "Locked"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 119,
   "documented": "119",
   "name": "Modbus control lock",
   "description": "1 = BMS commands are ignored; keep at 0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Unlocked",
    "1": "Locked"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 130,
   "documented": "130",
   "name": "On/off",
   "description": "Turns the whole Ecodan system on or off.",
   "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": 131,
   "documented": "131",
   "name": "Operation",
   "description": "Demand for climate and/or DHW present.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not operating",
    "1": "Operating"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 140,
   "documented": "140",
   "name": "Zones on/off",
   "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": 141,
   "documented": "141",
   "name": "Zones operation",
   "description": "Demand for climate in any zone.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not operating",
    "1": "Operating"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 142,
   "documented": "142",
   "name": "Zones mode",
   "description": "Sets both zones to heat or cool.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Heat",
    "2": "Cool"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 146,
   "documented": "146",
   "name": "Zone 1 on/off",
   "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": 147,
   "documented": "147",
   "name": "Zone 1 operation",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not operating",
    "1": "Operating"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 149,
   "documented": "149",
   "name": "Zone 1 control type",
   "description": "Cooling allows only flow temperature control.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Flow (outlet water) temperature control",
    "1": "Room thermostat (room temperature) control",
    "2": "Weather compensation curve"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 160,
   "documented": "160",
   "name": "Zone 1 setpoint",
   "description": "Requested Zone 1 temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 161,
   "documented": "161",
   "name": "Zone 1 custom lower limit heat",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 162,
   "documented": "162",
   "name": "Zone 1 custom upper limit heat",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 163,
   "documented": "163",
   "name": "Zone 1 custom lower limit cool",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 164,
   "documented": "164",
   "name": "Zone 1 custom upper limit cool",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 169,
   "documented": "169",
   "name": "Zone 1 applied lower limit heat",
   "description": "Limit currently in force.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 170,
   "documented": "170",
   "name": "Zone 1 applied upper limit heat",
   "description": "Limit currently in force.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 171,
   "documented": "171",
   "name": "Zone 1 applied lower limit cool",
   "description": "Limit currently in force.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 172,
   "documented": "172",
   "name": "Zone 1 applied upper limit cool",
   "description": "Limit currently in force.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 180,
   "documented": "180",
   "name": "Zone 1 reference temperature",
   "description": "Current control reference for Zone 1.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 181,
   "documented": "181",
   "name": "Zone 1 Modbus room thermostat ambient",
   "description": "Write a room temperature from the BMS; enables virtual temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 184,
   "documented": "184",
   "name": "Zone 1 outlet water temperature",
   "description": "Zone 1 flow thermistor.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 185,
   "documented": "185",
   "name": "Zone 1 inlet water temperature",
   "description": "Zone 1 return thermistor.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 230,
   "documented": "230",
   "name": "Zone 2 on/off",
   "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": 231,
   "documented": "231",
   "name": "Zone 2 operation",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not operating",
    "1": "Operating"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 235,
   "documented": "235",
   "name": "Zone 2 control type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Flow (outlet water) temperature control",
    "1": "Room thermostat (room temperature) control",
    "2": "Weather compensation curve"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 240,
   "documented": "240",
   "name": "Zone 2 setpoint",
   "description": "Requested Zone 2 temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 254,
   "documented": "254",
   "name": "Zone 2 reference temperature",
   "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": 256,
   "documented": "256",
   "name": "Zone 2 Modbus room thermostat ambient",
   "description": "Write a room temperature from the BMS; enables virtual temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 258,
   "documented": "258",
   "name": "Zone 2 outlet water temperature",
   "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": 259,
   "documented": "259",
   "name": "Zone 2 inlet water temperature",
   "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": 270,
   "documented": "270",
   "name": "DHW on/off",
   "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": 271,
   "documented": "271",
   "name": "DHW operation",
   "description": "Demand for hot water present.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not operating",
    "1": "Operating"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 276,
   "documented": "276",
   "name": "DHW setpoint",
   "description": "Requested tank temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 277,
   "documented": "277",
   "name": "DHW custom lower limit",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 278,
   "documented": "278",
   "name": "DHW custom upper limit",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 279,
   "documented": "279",
   "name": "DHW tank lower limit",
   "description": "Absolute minimum supported by the tank.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 280,
   "documented": "280",
   "name": "DHW tank upper limit",
   "description": "Absolute maximum supported by the tank.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 285,
   "documented": "285",
   "name": "DHW tank temperature",
   "description": "From the tank thermistor(s).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 290,
   "documented": "290",
   "name": "DHW eco mode",
   "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": 298,
   "documented": "298",
   "name": "DHW boost",
   "description": "Tank electric heater on/off.",
   "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": 300,
   "documented": "300",
   "name": "DHW legionella",
   "description": "Anti-legionella cycle running.",
   "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": 304,
   "documented": "304",
   "name": "Outdoor ambient temperature",
   "description": "From the outdoor unit.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 305,
   "documented": "305",
   "name": "Refrigerant temperature",
   "description": "In the outdoor unit.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 306,
   "documented": "306",
   "name": "Outlet water temperature (outdoor unit)",
   "description": "Flow water.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 308,
   "documented": "308",
   "name": "Inlet water temperature (outdoor unit)",
   "description": "Return water.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 360,
   "documented": "360",
   "name": "Holiday mode",
   "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": 362,
   "documented": "362",
   "name": "Emergency operation",
   "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": 363,
   "documented": "363",
   "name": "Defrost/normal operation",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Defrost",
    "1": "Normal operation"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 365,
   "documented": "365",
   "name": "3-way valve",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Climate",
    "1": "DHW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 366,
   "documented": "366",
   "name": "Backup heater level 1",
   "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": 367,
   "documented": "367",
   "name": "Backup heater level 2",
   "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": 369,
   "documented": "369",
   "name": "Compressor operation",
   "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": 370,
   "documented": "370",
   "name": "Compressor operating time",
   "description": "Write 0 to reset; rolls over after 65535.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "h",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 371,
   "documented": "371",
   "name": "Pump operation",
   "description": "Circulation pump.",
   "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": 372,
   "documented": "372",
   "name": "Pump operating time",
   "description": "Write 0 to reset; rolls over after 65535.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "h",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 373,
   "documented": "373",
   "name": "Water flow rate",
   "description": "From the flow sensor.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "l/h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 378,
   "documented": "378",
   "name": "Energy consumption total",
   "description": "Write 0 to reset all energy registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 379,
   "documented": "379",
   "name": "Energy consumption zones heat",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 380,
   "documented": "380",
   "name": "Energy consumption zones cool",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 381,
   "documented": "381",
   "name": "Energy consumption DHW",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 383,
   "documented": "383",
   "name": "Heat mode supported",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No",
    "1": "Yes"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 384,
   "documented": "384",
   "name": "Cool mode supported",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No",
    "1": "Yes"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 385,
   "documented": "385",
   "name": "DHW supported",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No",
    "1": "Yes"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 460,
   "documented": "460",
   "name": "Device identifier",
   "description": "Reads 0x3100 (12544).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "12544": "IN485MIT001A000"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 461,
   "documented": "461",
   "name": "FW version MSB",
   "description": "First two firmware digits (1.2.x.x reads 0x0C).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 462,
   "documented": "462",
   "name": "FW version LSB",
   "description": "Last two firmware digits.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 463,
   "documented": "463",
   "name": "Device 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": {
    "1": "2400",
    "2": "4800",
    "3": "9600",
    "4": "19200",
    "5": "38400",
    "6": "57600",
    "7": "76800",
    "8": "115200"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 465,
   "documented": "465",
   "name": "Modbus server address",
   "description": "1-63, from DIP switches.",
   "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": "SW1/SW2 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": "Plug the supplied cable into CN105 on the Ecodan board, set SW1 position 5 ON for Modbus RTU, pick the baud on SW1 6-8 and the address on SW2 1-6, reboot, then read holding registers with function 03 (max 50 per request) and write one register at a time with 06.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 130,
    "why": "System on/off"
   },
   {
    "table": "holding_register",
    "address": 142,
    "why": "Heat/cool mode"
   },
   {
    "table": "holding_register",
    "address": 160,
    "why": "Zone 1 setpoint"
   },
   {
    "table": "holding_register",
    "address": 276,
    "why": "DHW setpoint"
   },
   {
    "table": "holding_register",
    "address": 180,
    "why": "Zone 1 reference temperature"
   },
   {
    "table": "holding_register",
    "address": 285,
    "why": "DHW tank temperature"
   },
   {
    "table": "holding_register",
    "address": 304,
    "why": "Outdoor temperature"
   },
   {
    "table": "holding_register",
    "address": 107,
    "why": "Error flag"
   },
   {
    "table": "holding_register",
    "address": 109,
    "why": "Ecodan error code"
   },
   {
    "table": "holding_register",
    "address": 119,
    "why": "Modbus control lock (keep 0)"
   }
  ],
  "enable": "SW1 position 5 ON selects Modbus RTU (factory default is BACnet MS/TP). Keep register 119 (Modbus control lock) at 0 or BMS commands are ignored.",
  "watchdog": null,
  "quirks": [
   "Function 16 is accepted only with a quantity of one register.",
   "At most 50 registers per read.",
   "Factory serial setting is 2400 baud, 8-N-2; 8-N-1 is detected automatically.",
   "Temperature scale and unit change with SW2 positions 7 and 8."
  ],
  "setup": [
   "SW1 5 = protocol (ON = Modbus RTU); SW1 6-8 = baud (all OFF = 2400 for Modbus).",
   "SW2 1-6 = Modbus address 1-63 (binary, position 1 = least significant); SW2 7 = x1/x10; SW2 8 = °C/°F.",
   "SW3 1 ON = 120 ohm termination; SW3 2-3 ON = bus biasing.",
   "Wire B-, A+ and SG; the gateway is powered from the Ecodan via the 1.5 m CN105 cable, which should not be lengthened.",
   "DIP changes take effect only after a gateway reboot (or write 1 to register 463)."
  ],
  "gotchas": [
   "Writing 1 to register 118 locks out the Ecodan's own remote control.",
   "Writing a room temperature to 181/256 switches on virtual temperature; the unit then follows the BMS value.",
   "In cooling, only control type 0 (flow temperature) is allowed, and only one zone may use room temperature control."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/intesis/in485mit001a000",
 "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."
}
