{ "$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 domestic hot water)", "vendor_website": "ise.de", "description": "Domestic hot water circuit 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 2, the domestic hot water circuit (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": 2, "byte_order": "big", "word_order": "little", "address_base": 1, "x_status": "official", "enums": { "op_dhw": { "1": "On", "2": "Off", "3": "Auto" }, "sensor": { "0": "No fault", "85": "Short-circuit", "170": "Interrupt" }, "status": { "0": "Off", "1": "On" } }, "registers": [ { "name": "Cylinder hot water temperature sensor state", "group": "Input registers", "area": "input", "address": 1, "type": "uint16", "access": "R", "enum": "sensor" }, { "name": "Cylinder hot water temperature", "group": "Input registers", "area": "input", "address": 2, "type": "int16", "access": "R", "unit": "°C" }, { "name": "3-way valve setting", "group": "Input registers", "area": "input", "address": 3, "type": "uint16", "access": "R", "enum": "status" }, { "name": "Hot water circuit operating mode", "group": "Holding registers", "area": "holding", "address": 4, "type": "uint16", "access": "RW", "enum": "op_dhw" }, { "name": "Target hot water temperature", "group": "Holding registers", "area": "holding", "address": 5, "type": "uint16", "access": "RW", "unit": "°C" }, { "name": "Maximum hot water target value", "group": "Holding registers", "area": "holding", "address": 6, "type": "uint16", "access": "RW", "unit": "°C" } ] }