{
  "spec_version": 1,
  "slug": "intesis-inmbsdai001-daikin",
  "manufacturer": "HMS Networks (Intesis)",
  "model": "INMBSDAI001I000 Daikin domestic AC to Modbus RTU gateway",
  "category": "Protocol gateway",
  "supplier_url": "https://www.hms-networks.com/p/inmbsdai001i000-daikin-ac-domestic-units-to-modbus-rtu-interface",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 2
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "On/Off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Operation mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = auto, 1 = heat, 2 = dry, 3 = fan, 4 = cool. The modes available depend on the AC model."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Fan speed",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = auto, 1-6 = speed 1-6, 10 = fan stop. The speeds available depend on the AC model."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Vane up/down position",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = auto, 1-9 = position 1-9, 10 = swing. The positions available depend on the AC model."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Temperature setpoint (user)",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Indoor unit reference temperature",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Ambient temperature the indoor unit uses as reference. Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Window contact protocol input",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = closed (default), 1 = open."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Control objects disablement",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = control objects enabled (default), 1 = control objects disabled through the gateway registers. Stored in non-volatile memory; send 0 if the gateway stops responding."
    },
    {
      "address": 8,
      "count": 1,
      "name": "Remote control disablement",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = remote control enabled (default), 1 = remote control disabled. Stored in non-volatile memory."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Operation time",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0-65535 hours; stored in non-volatile memory."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Alarm status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error, 1 = error present."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error, 1 = error present, 65535 (-1 signed) = communication error between gateway/remote controller and the AC unit; other values are listed in the manual's error code table."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Open window timeout",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Minutes before the AC unit is turned off after the window contact opens (0-30, default 30)."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Baud rate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Baud rate currently selected with DIP switch SW2."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Modbus slave address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Modbus server address 1-63, set with DIP switch SW3."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Maximum number of fan speeds",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of fan speeds configured for the AC unit."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Input sensor temperature",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Ambient temperature provided by an external Modbus sensor (virtual temperature function). Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 23,
      "count": 1,
      "name": "AC real setpoint",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Setpoint actually sent to the indoor unit. Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 24,
      "count": 1,
      "name": "Actual AC maximum setpoint",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Actual AC minimum setpoint",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Vane left/right position",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = auto, 1-5 = position 1-5, 10 = swing. Available positions depend on the AC model."
    },
    {
      "address": 31,
      "count": 1,
      "name": "Window contact functional status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = not active (default), 1 = active (window open)."
    },
    {
      "address": 40,
      "count": 1,
      "name": "Window contact On/Off disablement",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = the window contact does not disable On/Off, 1 = it does."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Filter reset",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 1 to reset the filter signal."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Filter status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = filter clean, 1 = filter alarm."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Switch value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Current value of the DIP switches."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Input reference temperature (feedback)",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 66,
      "count": 1,
      "name": "Return path temperature",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 81,
      "count": 1,
      "name": "Error address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Indoor unit address that reports the error."
    },
    {
      "address": 86,
      "count": 1,
      "name": "Filter signal address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Indoor unit address that reports the filter signal."
    },
    {
      "address": 87,
      "count": 1,
      "name": "Thermostat on",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = the AC system is within the setpoint temperature, 1 = it is working to reach the setpoint."
    },
    {
      "address": 88,
      "count": 1,
      "name": "Operation mode role",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = ROLE_MASTER, 2 = ROLE_SLAVE, 3 = ROLE_FREE (alone)."
    },
    {
      "address": 94,
      "count": 1,
      "name": "Firmware version MSB",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "First two numbers of the firmware version in hexadecimal (version 1.2.3.4 gives 1.2)."
    },
    {
      "address": 95,
      "count": 1,
      "name": "Firmware version LSB",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Last two numbers of the firmware version in hexadecimal (version 1.2.3.4 gives 3.4)."
    },
    {
      "address": 98,
      "count": 1,
      "name": "Master/slave",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = slave, 1 = master."
    },
    {
      "address": 99,
      "count": 1,
      "name": "Reset",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 1 to reset the gateway."
    },
    {
      "address": 129,
      "count": 1,
      "name": "Virtual temperature active",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = not active, 1 = active."
    },
    {
      "address": 130,
      "count": 1,
      "name": "Window contact step",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = idle (window closed), 1 = timeout 1, 2 = timeout 2, 3 = window contact action applied."
    },
    {
      "address": 1000,
      "count": 1,
      "name": "Window contact reload last value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = no (default), 1 = yes."
    },
    {
      "address": 1001,
      "count": 1,
      "name": "Window contact lock when open",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = no, 1 = yes."
    },
    {
      "address": 1002,
      "count": 1,
      "name": "Window timeout",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Window timeout in minutes (0-30)."
    },
    {
      "address": 1150,
      "count": 1,
      "name": "Machine mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = normal, 1 = autochangeover, 2 = limited setpoint."
    },
    {
      "address": 1153,
      "count": 1,
      "name": "Machine minimum setpoint, cool",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Default 24 degC / 75 degF. Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 1154,
      "count": 1,
      "name": "Machine maximum setpoint, cool",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Default 28 degC / 82 degF. Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 1155,
      "count": 1,
      "name": "Machine minimum setpoint, heat",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Default 19 degC / 66 degF. Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 1156,
      "count": 1,
      "name": "Machine maximum setpoint, heat",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Default 23 degC / 73 degF. Value in the temperature unit selected by DIP switch SW2 (degC or degF, x1 or x10 depending on the unit and AC model); -32768 means the value has not been initialised."
    },
    {
      "address": 1220,
      "count": 1,
      "name": "Remote lock on NVM",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = remote lock is disabled after reset, 1 = the value of register 8 (remote control disablement) is kept."
    },
    {
      "address": 1230,
      "count": 1,
      "name": "Initial wait as master",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Startup delay in seconds (default 0)."
    },
    {
      "address": 2000,
      "count": 1,
      "name": "Device identifier",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Device identifier register; the manual prints 2050 as the value column entry for this register."
    },
    {
      "address": 2005,
      "count": 1,
      "name": "Left/right vanes map",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit field with the left/right vane positions the AC unit supports (bits 0-4 = auto/off and positions 1-5, bit 5 = swing, bit 15 = invalid/enabled)."
    }
  ],
  "combined_registers": [],
  "notes": "The gateway is Modbus RTU (RS-485) and exposes its own fixed holding-register map that mirrors the Daikin indoor unit: reach it through a Modbus RTU-to-TCP gateway using the factory serial settings above (9600 bps, 8-N-2, Modbus server address 1; the gateway auto-detects 8-N-1 and 8-N-2). All registers are 16-bit unsigned holding registers, big-endian; the addresses in this file are the manual's base-0 Modbus addresses (the manual also prints a base-1 PLC address). Temperature registers are signed 16-bit and their unit/scale follows DIP switch SW2 (degC or degF, x1 or x10), so no scale factor is applied here. The Modbus server supports polling at most 50 registers per request. Source: HMS Networks / Intesis user manual 'INMBSDAI001I000 Daikin AC Domestic units to Modbus RTU Interface', version 1.0.2, section 5.2 'Modbus Registers'. The TCP variant INMBSDAI001O000 uses the same register map."
}
