{
 "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
 "mbmap": 2,
 "vendor": "ISE",
 "model": "smart connect Modbus Vaillant (geoTHERM/3 auxiliary heater)",
 "vendor_website": "ise.de",
 "description": "Backup heater of a Vaillant geoTHERM/3 through the ise gateway",
 "revision": 1,
 "revised": "2026-11-11",
 "source": "ISE Individuelle Software und Elektronik, ise smart connect Modbus Vaillant, Product Manual (order no. S-0002-007), section 4.5",
 "sources": [
  {
   "title": "ise smart connect Modbus Vaillant, Product Manual",
   "version": "S-0002-007",
   "note": "Section 4.5 Modbus registers and 4.6 data types"
  }
 ],
 "notes": [
  "The gateway (ise smart connect Modbus Vaillant with the ise eBUS adapter) answers Modbus TCP and reads the Vaillant device over eBUS; this map is for unit ID 3, the auxiliary (backup) heater (the manual's Modbus unit ID). The manual covers the Vaillant geoTHERM/3 VWS 220/3 to 460/3 ground-source heat pump only; other Vaillant heat pumps such as the aroTHERM are not covered.",
  "Modbus TCP, port 502 by default (configurable from 2000 to 4000). Functions 0x03, 0x04, 0x06 and 0x10. Addresses are one-based: register 1 is address 1 with address_base 1.",
  "32-bit values (uint32 and IEEE 754 floats) take two registers and the first register holds the least significant word (little word order); they can only be written together with function 0x10.",
  "The gateway polls the heat pump over eBUS every 2 to 60 minutes depending on the value (2 minutes for most sensors, 15 for error history and outside temperature, 60 for counters), so reads show the last polled value. A request to a unit ID whose device is not present gets exception 0x0B."
 ],
 "protocol": "tcp",
 "port": 502,
 "unit_id": 3,
 "byte_order": "big",
 "word_order": "little",
 "address_base": 1,
 "x_status": "official",
 "enums": {
  "backup": {
   "0": "No backup",
   "1": "Comfort",
   "2": "Backup only"
  },
  "status": {
   "0": "Off",
   "1": "On"
  }
 },
 "registers": [
  {
   "name": "Backup commutations",
   "group": "Input registers",
   "area": "input",
   "address": 1,
   "type": "uint32",
   "access": "R"
  },
  {
   "name": "Backup heater operating hours",
   "group": "Input registers",
   "area": "input",
   "address": 3,
   "type": "uint32",
   "access": "R",
   "unit": "h"
  },
  {
   "name": "Backup heater output",
   "group": "Input registers",
   "area": "input",
   "address": 5,
   "type": "uint16",
   "access": "R",
   "enum": "status"
  },
  {
   "name": "Backup hysteresis",
   "group": "Holding registers",
   "area": "holding",
   "address": 6,
   "type": "uint16",
   "access": "RW",
   "unit": "K"
  },
  {
   "name": "Energy integral since backup heater started",
   "group": "Holding registers",
   "area": "holding",
   "address": 7,
   "type": "int16",
   "access": "RW",
   "unit": "°min"
  },
  {
   "name": "Bivalent temperature",
   "group": "Holding registers",
   "area": "holding",
   "address": 8,
   "type": "int16",
   "access": "RW",
   "unit": "°C"
  },
  {
   "name": "Backup heater mode for CH",
   "group": "Holding registers",
   "area": "holding",
   "address": 9,
   "type": "uint16",
   "access": "RW",
   "enum": "backup"
  },
  {
   "name": "Backup heater mode for DHW",
   "group": "Holding registers",
   "area": "holding",
   "address": 10,
   "type": "uint16",
   "access": "RW",
   "enum": "backup"
  }
 ]
}