{
  "spec_version": 1,
  "slug": "midea-md-ac-mbs-4-8-32",
  "manufacturer": "Midea",
  "model": "MD-AC-MBS-4 / -8 / -32 (Intesis INMBSMID004/008/032 interface for multi-indoor-unit Midea VRF systems)",
  "category": "Protocol gateway",
  "supplier_url": "https://www.midea.es/",
  "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": "AC unit On/Off, global",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Global command: 0 = Off, 1 = On."
    },
    {
      "address": 1,
      "count": 1,
      "name": "AC unit Mode, global",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Global command: 0 = Auto, 1 = Heat, 2 = Dry, 3 = Fan, 4 = Cool."
    },
    {
      "address": 2,
      "count": 1,
      "name": "AC unit Fan speed, global",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Global command: 0 = Auto, 1 = SP1, 2 = SP2, 3 = SP3."
    },
    {
      "address": 3,
      "count": 1,
      "name": "AC unit Vane position, global",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Global command: 0 = Auto/Stop (default), 10 = Swing."
    },
    {
      "address": 4,
      "count": 1,
      "name": "AC unit Temperature setpoint, global",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "W",
      "description": "Global command: -32768 = initialisation value, 17.0-30.0 °C in the factory x10 °C magnitude."
    },
    {
      "address": 8,
      "count": 1,
      "name": "Remote lock, global",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Global command: 0 = Off (default), 1 = On."
    },
    {
      "address": 1000,
      "count": 1,
      "name": "Indoor unit 1 On/Off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Per-unit block base 1000 + 20n + 0; 0 = Off, 1 = On."
    },
    {
      "address": 1001,
      "count": 1,
      "name": "Indoor unit 1 Mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1000 + 20n + 1: 0 = Auto (default), 1 = Heat, 2 = Dry, 3 = Fan, 4 = Cool."
    },
    {
      "address": 1002,
      "count": 1,
      "name": "Indoor unit 1 Fan speed",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1000 + 20n + 2: 0 = Auto (default), 1 = SP1, 2 = SP2, 3 = SP3."
    },
    {
      "address": 1003,
      "count": 1,
      "name": "Indoor unit 1 Up/Down vane position",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1000 + 20n + 3: 0 = Off (default), 10 = Swing."
    },
    {
      "address": 1004,
      "count": 1,
      "name": "Indoor unit 1 Temperature setpoint",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "1000 + 20n + 4: -32768 = initialisation value, 17.0-30.0 °C (°C x10) or 63-86 °F."
    },
    {
      "address": 1005,
      "count": 1,
      "name": "Indoor unit 1 Temperature reference",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "1000 + 20n + 5: -32768 = initialisation value; range set by the indoor unit."
    },
    {
      "address": 1006,
      "count": 1,
      "name": "Indoor unit 1 Alarm status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1000 + 20n + 6: 0 = No alarm, 1 = Alarm."
    },
    {
      "address": 1007,
      "count": 1,
      "name": "Indoor unit 1 Error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1000 + 20n + 7: 0 = no active error, 65535 = communication error with the AC unit, otherwise the error table in section 7 of the manual."
    },
    {
      "address": 1008,
      "count": 1,
      "name": "Indoor unit 1 Remote lock",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1000 + 20n + 8: 0 = Off (default), 1 = On."
    },
    {
      "address": 1009,
      "count": 1,
      "name": "Indoor unit 1 Address assignation",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1000 + 20n + 9: assigns the indoor-unit address in slot n, range 0-63."
    },
    {
      "address": 2000,
      "count": 1,
      "name": "Device ID",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x2200 for the INMBSMID family."
    },
    {
      "address": 2031,
      "count": 1,
      "name": "Capacity",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "4 = INMBSMID004I000 (4 indoor units), 8 = INMBSMID008I000, 32 = INMBSMID032I000."
    },
    {
      "address": 2040,
      "count": 1,
      "name": "Modbus RTU baud rate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Read-back of the DIP setting: 2400/4800/9600 (default)/19200/38400/57600/76800/115200 bps."
    },
    {
      "address": 2041,
      "count": 1,
      "name": "Device's Modbus slave address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Read-back of the SW3 DIP-switch address (1-63); factory 1."
    },
    {
      "address": 2050,
      "count": 1,
      "name": "Software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": ""
    },
    {
      "address": 2099,
      "count": 1,
      "name": "Reset / reboot device",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 1 to reset the interface."
    }
  ],
  "combined_registers": [],
  "notes": "Source: the same Midea vendor document as the single-unit seed — “MD-AC-MBS-1 — Modbus interface for Midea air conditioning units, user's manual” (the Midea edition of HMS/Intesis INMBSMID---I000 r1.3 EN), https://www.midea.es/wp-content/uploads/2021/04/210406_MU_F_CTR_MD-AC-MBS-1-4-8-32-EN.pdf — sections 4.3 and 4.6. This is the multi-indoor-unit product (4, 8 or 32 indoor units), whose map is different from the single-unit INMBSMID001 of the sibling seed: it adds the global write-only command block at protocol addresses 0-8, a 20-register block per indoor unit starting at 1000 and a 2000-block for the interface itself. The seed lists the global block, the block of indoor unit 1 (1000 + 20n + 0...9, i.e. n = 0) and the device block; indoor units 2...32 repeat the same ten rows at 1000 + 20n + x, which the app can reach with a second device entry. Factory line settings as in the single-unit seed: 9600 bps, 8 data bits, no parity, 2 stop bits, slave address 1. Temperature registers are °C x10 by default, hence scale 0.1. Global command registers are write-only (W); the device identifies itself with device ID 0x2200 and the capacity register (4/8/32). The manual's inner title page names Frigicoll air conditioners (the brand this Midea-hosted edition is written for); the order code MD-AC-MBS-4/8/32 is the Frigicoll/Intesis code for the same interface family as the single-unit seed."
}
