Grant Aerona3 (Chofu) Modbus register map
Air-to-water heat pump made by Chofu, sold as Grant Aerona3
- Unofficial
- 46 registers
- Modbus RTU
- Revision 2 · 2026-10-18
Unofficial: Copied from an unofficial source and not tested. Read it as a draft and check a value on the real device before you rely on the rest. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 1default
- Serial
- 19200 8N2 · 19200 baud, 8 data bits, none parity, 2 stop bits
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 21 holding registers, 19 input registers, 5 coils, 1 discrete input
- Revision
- 2 · 2026-10-18
- Added
- ()
- File
- maps/grant/aerona3.mbmap.json · 9 KB · history
- SHA-256
- 699612d37b5ebc4e1a4f9c74824019c1254b15829e1538d642aa8d6590097c48
- Manufacturer
- grantuk.com
Sources and notes
- Heat Pump Modbus Database (Warm Energy Labs) src/aerona/modbus_registers.json, MIT licence, Copyright (c) 2025 Warm Energy Labs Ltd
Source: Warm Energy Labs Heat Pump Modbus Database (MIT licence); draft from reverse engineering, not tested
- Draft map from reverse engineering in the source; not tested on a device.
- Writing to a heat pump can damage it: check before you write.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| CO | 0 | bool | RW | Erase error history | |||
| CO | 1 | bool | RW | Operation at reboot after blackout: 0=disable, 1=enable | |||
| CO | 2 | bool | RW | 0=Fixed set point, 1=Climatic curve | |||
| CO | 6 | bool | RW | Anti-legionella function: 0=disable, 1=enable | |||
| CO | 7 | bool | RW | HP unit turn on/off based on: 0=Room set point, 1=Water set point | |||
| DI | 3 | bool | R | Configurable input (terminal 20-21) / heating enable | |||
| IR | 0 | int16 | R | °C | Return water temperature | ||
| IR | 2 | int16 | R | °C | Discharge temperature | ||
| IR | 5 | int16 | R | °C | Defrost temperature | ||
| IR | 6 | int16 | R | °C | Outdoor air temperature | ||
| IR | 8 | int16 | R | °C | Suction temperature | ||
| IR | 9 | int16 | R | °C | Outgoing water temperature | ||
| IR | 10 | int16 | R | Operating mode: 0=Off, 1=Heating, 2=Cooling | |||
| IR | 11 | int16 | R | °C | ×0.1 | Zone 1 room temperature | |
| IR | 12 | int16 | R | °C | ×0.1 | Zone 2 room temperature | |
| IR | 13 | int16 | R | DHW mode: 0=Disable, 1=Comfort, 2=Economy, 3=Force | |||
| IR | 16 | int16 | R | °C | DHW tank temperature | ||
| IR | 20 | int16 | R | % | Humidity sensor reading | ||
| IR | 21 | int16 | R | Current error code | |||
| IR | 22 | int16 | R | Previous error code 1 | |||
| IR | 23 | int16 | R | Previous error code 2 | |||
| IR | 24 | int16 | R | Previous error code 3 | |||
| IR | 25 | int16 | R | Previous error code 4 | |||
| IR | 26 | int16 | R | Previous error code 5 | |||
| IR | 32 | int16 | R | °C | Plate heat exchanger temperature | ||
| HR | 2 | int16 | RW | °C | ×0.5 | Fixed outgoing water set point for heating zone 1 | |
| HR | 3 | int16 | RW | °C | ×0.5 | Maximum outgoing water temperature for heating zone 1 | |
| HR | 4 | int16 | RW | °C | ×0.5 | Minimum outgoing water temperature for heating zone 1 | |
| HR | 5 | int16 | RW | °C | ×0.5 | Maximum outdoor air temperature correlation for heating zone 1 | |
| HR | 6 | int16 | RW | °C | ×0.5 | Minimum outdoor air temperature correlation for heating zone 1 | |
| HR | 7 | int16 | RW | °C | ×0.5 | Fixed outgoing water set point for heating zone 2 | |
| HR | 8 | int16 | RW | °C | ×0.5 | Maximum outgoing water temperature for heating zone 2 | |
| HR | 9 | int16 | RW | °C | ×0.5 | Minimum outgoing water temperature for heating zone 2 | |
| HR | 10 | int16 | RW | °C | ×0.5 | Maximum outdoor air temperature correlation for heating zone 2 | |
| HR | 11 | int16 | RW | °C | ×0.5 | Minimum outdoor air temperature correlation for heating zone 2 | |
| HR | 13 | int16 | RW | °C | ×0.5 | Fixed outgoing water set point for cooling zone 1 | |
| HR | 18 | int16 | RW | °C | ×0.5 | Fixed outgoing water set point for cooling zone 2 | |
| HR | 26 | int16 | RW | DHW production priority: 0=Standard, 1=Priority | |||
| HR | 27 | int16 | RW | °C | ×0.5 | DHW comfort temperature | |
| HR | 28 | int16 | RW | °C | ×0.5 | DHW economy temperature | |
| HR | 29 | int16 | RW | °C | ×0.5 | DHW force temperature | |
| HR | 37 | int16 | RW | min | Pump run time after compressor off | ||
| HR | 38 | int16 | RW | Hz | Pump frequency setting | ||
| HR | 39 | int16 | RW | min | Compressor start delay | ||
| HR | 50 | int16 | RW | °C | ×0.5 | Temperature at which frost protection starts | |
| HR | 51 | int16 | RW | °C | ×0.5 | Temperature at which frost protection stops |
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).