{
  "spec_version": 1,
  "slug": "panasonic-aquarea-paw-aw-mbs",
  "manufacturer": "Panasonic",
  "model": "Aquarea H generation heat pump via PAW-AW-MBS-H Modbus interface",
  "category": "Heat pump",
  "supplier_url": "https://www.panasonicproclub.com/uploads/ES/catalogues/manual-instalacion/Manual%20PAW-AW-MBS-H_User_Manual_v1.2_r1.3_EN.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": "System on/off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on (default)."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Outdoor temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range -127...127 °C (or °F) depending on the temperature format DIP switch SW4; the switch is set to degrees x1 by default, x10 and Fahrenheit are selectable."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Outlet water temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...127 °C."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Inlet water temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...127 °C."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Operating mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = heat, 2 = heat tank, 3 = tank, 4 = cool tank, 5 = cool, 6 = auto (default), 7 = auto tank, 8 = auto heat, 9 = auto heat tank, 10 = auto cool, 11 = auto cool tank."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Heat mode water temperature setting method",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = compensation curve, 2 = direct (default)."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Cool mode water temperature setting method",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = compensation curve, 2 = direct (default)."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Zone 1 / zone 2 on/off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = zone 1 on / zone 2 off, 2 = zone 1 off / zone 2 on, 3 = both on. Only effective when the hydro unit is configured for two zones (register 82 = 2)."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Zone 1 sensors",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = water temperature, 2 = external room sensor, 3 = internal room sensor, 4 = room thermistor, 5 = pool sensor."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Zone 2 sensors",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = water temperature, 2 = external room sensor, 3 = internal room sensor, 4 = room thermistor, 5 = pool sensor."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Zone 1 setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Active parameter depends on zone setup, temperature setting mode and operating mode: -5...5 for water shift, 5...20 cool water, 5...55/65 heat water, 18...35 cool room, 10...30 heat room, 15...35 pool."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Zone 2 setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Same ranges as zone 1."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Zone 1 current temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Water outlet, room or pool temperature, range -127...127 °C."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Zone 2 current temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Water outlet, room or pool temperature, range -127...127 °C."
    },
    {
      "address": 16,
      "count": 1,
      "name": "Zone 1 temperature setting mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = room temperature, 2 = compensation curve (water temperature), 3 = direct (water temperature), 4 = pool temperature."
    },
    {
      "address": 17,
      "count": 1,
      "name": "Zone 2 temperature setting mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = room temperature, 2 = compensation curve (water temperature), 3 = direct (water temperature), 4 = pool temperature."
    },
    {
      "address": 18,
      "count": 1,
      "name": "Zone 1 minimum setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19,
      "count": 1,
      "name": "Zone 1 maximum setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 20,
      "count": 1,
      "name": "Zone 2 minimum setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 21,
      "count": 1,
      "name": "Zone 2 maximum setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 30,
      "count": 1,
      "name": "Tank on/off",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on."
    },
    {
      "address": 32,
      "count": 1,
      "name": "Tank current water temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range -127...127 °C."
    },
    {
      "address": 33,
      "count": 1,
      "name": "Tank water setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 40...66/75 °C."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Tank heater",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = internal, 2 = external."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Tank minimum water setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 36,
      "count": 1,
      "name": "Tank maximum water setpoint temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 45,
      "count": 1,
      "name": "Tank mode energy consumption",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...50800 W."
    },
    {
      "address": 46,
      "count": 1,
      "name": "Heat mode energy consumption",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...50800 W."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Cool mode energy consumption",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...50800 W."
    },
    {
      "address": 52,
      "count": 1,
      "name": "Error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error, 1xxx = H + error, 2xxx = F + error; the code is explained in the interface manual's error-code section."
    },
    {
      "address": 64,
      "count": 1,
      "name": "Device status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = off, 2 = on."
    },
    {
      "address": 70,
      "count": 1,
      "name": "Current error status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no error, 1 = error."
    },
    {
      "address": 81,
      "count": 1,
      "name": "Tank connection",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no, 1 = yes."
    },
    {
      "address": 82,
      "count": 1,
      "name": "Number of zones",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = one zone, 2 = two zones."
    },
    {
      "address": 83,
      "count": 1,
      "name": "Zone 1 setup",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = room, 2 = pool."
    },
    {
      "address": 84,
      "count": 1,
      "name": "Zone 2 setup",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = room, 2 = pool."
    },
    {
      "address": 85,
      "count": 1,
      "name": "Direction",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = room, 2 = tank."
    },
    {
      "address": 86,
      "count": 1,
      "name": "Outdoor type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = STD, 2 = TCAP, 3 = HWT."
    },
    {
      "address": 187,
      "count": 1,
      "name": "Tank mode energy generation",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...50800 W."
    },
    {
      "address": 188,
      "count": 1,
      "name": "Heat mode energy generation",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...50800 W."
    },
    {
      "address": 189,
      "count": 1,
      "name": "Cool mode energy generation",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0...50800 W."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Panasonic / Intesis 'IntesisBox PAW-AW-MBS-H v.1.2 - Modbus RTU (EIA-485) Interface for Panasonic Air to Water systems, compatible with Panasonic Aquarea H generation models', user manual issue date 02/2019, r1.3 EN, published on Panasonic's installer portal (URL above). This is the Panasonic-branded interface (PAW-AW-MBS-H) that exposes the Aquarea hydro unit as a Modbus RTU slave. Factory settings from sections 4.1 and 4.3: 8N2 (8 data bits, no parity, 2 stop bits), 9600 bps and slave address 1 by default ('By default, the interface is set to: Modbus slave address 1, baud rate 9600 bps'); 2400/4800/19200/38400/57600/76800/115200 bps, 8N1 and addresses 0...63 are selectable by DIP switch, and a change needs a power cycle. Addressing: every table prints two columns, '(protocol address)' and '(PLC address)'; the stored numbers are the protocol addresses (register 0 = PLC register 1), i.e. zero_based, and the document's own cross-references use them that way ('registers 12 and 13 (Modbus Protocol Address)'). All registers are 16-bit big-endian; temperatures are signed. Temperature scale: this seed uses x1, the SW4 default in table 4.3 ('temperature values in Modbus register are represented in degrees (x1)'); footnote 1 under the register tables calls decidegrees (x10) the default instead - the document contradicts itself, so check SW4 and multiply by 10 if x10 is selected. Left out: addresses the H-generation map does not define (31, 48-51, 53-63, 65-69, 71-80, 87-186, 190+), and the error-code table itself (the manual points to its section 7, a code list, not registers). Only the H generation is covered - J and K use a different interface - and the register set depends on the hydro unit's configuration, which registers 81-86 report."
}
