ISE smart connect Modbus Vaillant (geoTHERM/3 heat pump) Modbus register map
Vaillant geoTHERM/3 heat pump through the ise Modbus TCP gateway
- Official
- 58 registers
- Modbus TCP
- Revision 1 · 2026-11-11
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP
- Unit ID
- 1
- TCP port
- 502
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 1-based · wire address = address − 1
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 11 holding registers, 47 input registers
- Groups
- 2
- Translation tables
- 8
- Revision
- 1 · 2026-11-11
- Added
- ()
- File
- maps/ise/smart-connect-vaillant-geotherm3.mbmap.json · 16 KB · history
- SHA-256
- d7b01dad77ebafa92b86097298930f69df5103f3442f827181819fdb8bab424a
- Manufacturer
- ise.de
Sources and notes
- ise smart connect Modbus Vaillant, Product Manual · version S-0002-007 Section 4.5 Modbus registers and 4.6 data types
Source: ISE Individuelle Software und Elektronik, ise smart connect Modbus Vaillant, Product Manual (order no. S-0002-007), section 4.5
- 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 1, the geoTHERM/3 heat pump (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.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 1 | uint16 | R | ||||
| IR | 2 | uint16 | R | ||||
| IR | 3 | uint16 | R | ||||
| IR | 4 | float32 CDAB | R | °C | |||
| IR | 6 | uint16 | R | ||||
| IR | 7 | float32 CDAB | R | °C | |||
| IR | 9 | uint16 | R | ||||
| IR | 10 | float32 CDAB | R | bar | |||
| IR | 12 | uint16 | R | ||||
| IR | 13 | uint32 CDAB | R | ||||
| IR | 15 | uint32 CDAB | R | h | |||
| IR | 17 | uint16 | R | ||||
| IR | 18 | uint16 | R | ||||
| IR | 19 | float32 CDAB | R | bar | |||
| IR | 21 | uint16 | R | ||||
| IR | 22 | float32 CDAB | R | bar | |||
| IR | 24 | uint16 | R | ||||
| IR | 25 | int16 | R | °C | |||
| IR | 26 | uint16 | R | ||||
| IR | 27 | int16 | R | °C | |||
| IR | 28 | uint16 | R | ||||
| IR | 29 | int16 | R | °C | |||
| IR | 30 | uint16 | R | ||||
| IR | 31 | uint16 | R | ||||
| IR | 32 | uint16 | R | ||||
| IR | 33 | uint16 | R | ||||
| IR | 34 | uint16 | R | ||||
| IR | 35 | uint16 | R | ||||
| IR | 36 | uint16 | R | ||||
| IR | 37 | uint16 | R | ||||
| IR | 38 | uint16 | R | ||||
| IR | 39 | uint16 | R | ||||
| IR | 40 | uint16 | R | ||||
| IR | 41 | uint32 CDAB | R | kWh | |||
| IR | 43 | uint16 | R | ||||
| IR | 44 | int16 | R | °C | |||
| IR | 45 | uint16 | R | ||||
| IR | 46 | int16 | R | °C | |||
| IR | 47 | uint16 | R | ||||
| IR | 48 | int16 | R | °C | |||
| IR | 49 | uint16 | R | ||||
| IR | 50 | float32 CDAB | R | bar | |||
| IR | 52 | int16 | R | °min | |||
| IR | 53 | uint16 | R | ||||
| IR | 54 | int16 | R | °C | |||
| IR | 55 | uint16 | R | ||||
| IR | 56 | uint16 | R | ||||
| HR | 57 | uint16 | RW | % | |||
| HR | 58 | uint16 | RW | K | |||
| HR | 59 | int16 | RW | °min | |||
| HR | 60 | uint16 | RW | % | |||
| HR | 61 | uint16 | RW | ||||
| HR | 62 | uint16 | RW | °C | |||
| HR | 63 | uint16 | RW | °C | |||
| HR | 64 | float32 CDAB | RW | ||||
| HR | 66 | uint16 | RW | °C | |||
| HR | 67 | uint16 | RW | °C | |||
| HR | 68 | uint16 | RW | °C |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).