{
  "spec_version": 1,
  "slug": "intesis-inmbspan001-panasonic",
  "manufacturer": "HMS Networks (Intesis)",
  "model": "INMBSPAN001R000 – Panasonic air conditioners (Ecoi, EcoG, PACi) to Modbus RTU gateway",
  "category": "Protocol gateway",
  "supplier_url": "https://www.hms-networks.com/docs/default-source/products/intesis/manuals-and-guides---manuals/user-manual-inmbspan001r000.pdf",
  "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",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 1,
      "count": 1,
      "name": "AC unit mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Auto, 1 = Heat, 2 = Dry, 3 = Fan, 4 = Cool; the available values depend on the indoor unit."
    },
    {
      "address": 2,
      "count": 1,
      "name": "AC unit fan speed",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Auto, 1 = Low, 2 = Mid, 3 = High."
    },
    {
      "address": 3,
      "count": 1,
      "name": "AC unit vane position",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Auto, 1 = POS1 (horizontal), 2 = POS2 (horizontal), 3 = POS3 (medium), 4 = POS4 (vertical), 5 = POS5 (vertical), 10 = Swing."
    },
    {
      "address": 4,
      "count": 1,
      "name": "AC unit temperature setpoint",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "-32768 = initialization value; 16..32 °C (raw 160..320 at the factory degC x10 setting), 61..90 °F."
    },
    {
      "address": 5,
      "count": 1,
      "name": "AC unit temperature reference",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "RW",
      "description": "-32768 = the value from the indoor unit's own sensor is invalid; when register 22 carries a valid value it takes over. The manual's footnote for this register states a 0.5 °C decimal precision."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Window contact",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = closed (default), 1 = open."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Gateway disablement",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = INMBSPAN001R000 enabled (default), 1 = disabled. Stored in non-volatile memory."
    },
    {
      "address": 8,
      "count": 1,
      "name": "AC remote control disablement",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = remote control enabled (default), 1 = disabled. Stored in non-volatile memory."
    },
    {
      "address": 9,
      "count": 1,
      "name": "AC unit operation time",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0..65535 hours, counts the time the indoor unit is in the 'On' state. Stored in non-volatile memory."
    },
    {
      "address": 10,
      "count": 1,
      "name": "AC unit alarm status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no alarm condition, 1 = alarm condition."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error; 65535 (= -1) = communication error between gateway and AC unit; any other value is listed in the manual's error-code table."
    },
    {
      "address": 13,
      "count": 1,
      "name": "'Open Window' switch-off timeout",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0..30 minutes; factory setting 30."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Modbus RTU baud rate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "2400 / 4800 / 9600 (default) / 19200 / 38400 / 57600 / 76800 / 115200 bps."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Modbus slave address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1..63."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Max number of fan speeds",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Maximum fan speed the indoor unit offers."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Indoor unit ambient temperature from external sensor",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "RW",
      "description": "-32768 = no external sensor value; otherwise a temperature supplied from the Modbus side (0.5 °C precision per the manual's footnote)."
    },
    {
      "address": 23,
      "count": 1,
      "name": "AC setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "Current setpoint in the indoor unit; equals register 4 when no external temperature is provided (0.5 °C precision)."
    },
    {
      "address": 24,
      "count": 1,
      "name": "Current AC max setpoint",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value; the range is specific to the indoor unit."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Current AC min setpoint",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value; the range is specific to the indoor unit."
    },
    {
      "address": 31,
      "count": 1,
      "name": "Window status (feedback)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = not active (default), 1 = active (window open)."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Auto mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "The mode the unit runs in when set to auto: 0 = Auto, 1 = Heat, 2 = Dry, 3 = Fan, 4 = Cool."
    },
    {
      "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 is not disabling on/off (default), 1 = it is."
    },
    {
      "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 sign."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Filter status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off (default), 1 = lit."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Switch value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "DIP-switch value of the gateway."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Device ID",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x1500."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Gateway firmware version."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Input reference temperature (feedback)",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value; the external reference actually supplied through register 22 (0.5 °C precision)."
    },
    {
      "address": 66,
      "count": 1,
      "name": "Return path temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value; the range is specific to the indoor unit."
    },
    {
      "address": 67,
      "count": 1,
      "name": "Number of indoor units connected",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Indoor units the gateway drives."
    },
    {
      "address": 81,
      "count": 1,
      "name": "Error address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of the indoor unit that reports the error."
    },
    {
      "address": 82,
      "count": 1,
      "name": "Outdoor demand rate (DV)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0x00 = thermo off, 0xFF = no limit (normal operation), 40..150 = operating range of the equipment as a current in A."
    },
    {
      "address": 83,
      "count": 1,
      "name": "Outdoor demand rate max value",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Shown as a portion of 100 %, see section 4.2.4 of the manual."
    },
    {
      "address": 84,
      "count": 1,
      "name": "Outdoor demand rate min value",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Shown as a portion of 100 %, see section 4.2.4 of the manual."
    },
    {
      "address": 97,
      "count": 1,
      "name": "Block periodic sendings",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = non-blocked (default), 1 = blocked."
    },
    {
      "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": 1150,
      "count": 1,
      "name": "Machine mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = normal (default), 1 = autochangeover, 2 = limited setpoint."
    },
    {
      "address": 4001,
      "count": 1,
      "name": "Indoor unit master: force thermo off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no limit, 1 = thermo forced off."
    },
    {
      "address": 4002,
      "count": 1,
      "name": "Indoor unit master: error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error; 65535 (= -1) = communication error; other values are in the indoor unit manual."
    },
    {
      "address": 4003,
      "count": 1,
      "name": "Indoor unit master: setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value (0.5 °C precision)."
    },
    {
      "address": 4004,
      "count": 1,
      "name": "Indoor unit master: room temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value."
    },
    {
      "address": 4011,
      "count": 1,
      "name": "Indoor unit slave: force thermo off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no limit, 1 = thermo forced off."
    },
    {
      "address": 4012,
      "count": 1,
      "name": "Indoor unit slave: error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error; 65535 (= -1) = communication error; other values are in the indoor unit manual."
    },
    {
      "address": 4013,
      "count": 1,
      "name": "Indoor unit slave: setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.5,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value (0.5 °C precision)."
    },
    {
      "address": 4014,
      "count": 1,
      "name": "Indoor unit slave: room temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "-32768 = initialization value."
    }
  ],
  "combined_registers": [],
  "notes": "Source: HMS Networks / Intesis user manual 'INMBSPAN001R000 Panasonic air conditioners to Modbus RTU Interface', v2.8, section 4.2 'Modbus Registers' (4.2.1 control and status, 4.2.2 configuration, 4.2.3 master/slave indoor units). The gateway is Modbus RTU (RS-485) and exposes its own fixed holding-register map that mirrors the 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 'protocol addresses' (the manual also prints a base-1 'PLC address', which is always this address + 1). Temperature registers are signed 16-bit and their magnitude follows the gateway's DIP switches (degC x1, degC x10 or degF), so the 0.1 scale factors below assume the factory default degC x10; with the x1 setting the readings are whole degrees. This is the only one of the Intesis HVAC gateways in this library whose manual marks a group of temperature registers with a 0.5 °C decimal precision (footnote 4 of the manual); those rows carry a 0.5 scale factor and the rest the degC x10 default. Registers 4001 and up are per-indoor-unit status for the two indoor units the gateway can handle in master/slave operation."
}
