{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Grant", "model": "Aerona3 (Chofu)", "models": ["Aerona3"], "vendor_website": "grantuk.com", "description": "Air-to-water heat pump made by Chofu, sold as Grant Aerona3", "revision": 2, "revised": "2026-10-18", "source": "Warm Energy Labs Heat Pump Modbus Database (MIT licence); draft from reverse engineering, not tested", "sources": [ { "title": "Heat Pump Modbus Database (Warm Energy Labs)", "url": "https://github.com/Warm-Energy/Heat-Pump-Modbus-Database", "note": "src/aerona/modbus_registers.json, MIT licence, Copyright (c) 2025 Warm Energy Labs Ltd" } ], "notes": [ "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." ], "x_status": "unofficial", "x_origin": "warm-energy", "protocol": "rtu", "baudrate": 19200, "parity": "N", "stopbits": 2, "byte_order": "big", "word_order": "big", "address_base": 0, "registers": [ {"name": "Erase Error History", "area": "coil", "address": 0, "type": "bool", "description": "Erase error history", "access": "RW"}, {"name": "Reboot Operation", "area": "coil", "address": 1, "type": "bool", "description": "Operation at reboot after blackout: 0=disable, 1=enable", "access": "RW"}, {"name": "Heating Zone1 Water Setpoint Mode", "area": "coil", "address": 2, "type": "bool", "description": "0=Fixed set point, 1=Climatic curve", "access": "RW"}, {"name": "Anti Legionella Function", "area": "coil", "address": 6, "type": "bool", "description": "Anti-legionella function: 0=disable, 1=enable", "access": "RW"}, {"name": "HP Unit Control Mode", "area": "coil", "address": 7, "type": "bool", "description": "HP unit turn on/off based on: 0=Room set point, 1=Water set point", "access": "RW"}, {"name": "Configurable Input Heating Enable", "area": "discrete", "address": 3, "type": "bool", "description": "Configurable input (terminal 20-21) / heating enable"}, {"name": "Return Water Temperature", "area": "input", "address": 0, "type": "int16", "unit": "°C", "description": "Return water temperature"}, {"name": "Discharge Temperature", "area": "input", "address": 2, "type": "int16", "unit": "°C", "description": "Discharge temperature"}, {"name": "Defrost Temperature", "area": "input", "address": 5, "type": "int16", "unit": "°C", "description": "Defrost temperature"}, {"name": "Outdoor Air Temperature", "area": "input", "address": 6, "type": "int16", "unit": "°C", "description": "Outdoor air temperature"}, {"name": "Suction Temperature", "area": "input", "address": 8, "type": "int16", "unit": "°C", "description": "Suction temperature"}, {"name": "Outgoing Water Temperature", "area": "input", "address": 9, "type": "int16", "unit": "°C", "description": "Outgoing water temperature"}, {"name": "Operating Mode", "area": "input", "address": 10, "type": "int16", "description": "Operating mode: 0=Off, 1=Heating, 2=Cooling"}, {"name": "Zone1 Room Temperature", "area": "input", "address": 11, "type": "int16", "scale": 0.1, "unit": "°C", "description": "Zone 1 room temperature"}, {"name": "Zone2 Room Temperature", "area": "input", "address": 12, "type": "int16", "scale": 0.1, "unit": "°C", "description": "Zone 2 room temperature"}, {"name": "DHW Operating Mode", "area": "input", "address": 13, "type": "int16", "description": "DHW mode: 0=Disable, 1=Comfort, 2=Economy, 3=Force"}, {"name": "DHW Tank Temperature", "area": "input", "address": 16, "type": "int16", "unit": "°C", "description": "DHW tank temperature"}, {"name": "Humidity Sensor", "area": "input", "address": 20, "type": "int16", "unit": "%", "description": "Humidity sensor reading"}, {"name": "Current Error Code", "area": "input", "address": 21, "type": "int16", "description": "Current error code"}, {"name": "Previous Error Code 1", "area": "input", "address": 22, "type": "int16", "description": "Previous error code 1"}, {"name": "Previous Error Code 2", "area": "input", "address": 23, "type": "int16", "description": "Previous error code 2"}, {"name": "Previous Error Code 3", "area": "input", "address": 24, "type": "int16", "description": "Previous error code 3"}, {"name": "Previous Error Code 4", "area": "input", "address": 25, "type": "int16", "description": "Previous error code 4"}, {"name": "Previous Error Code 5", "area": "input", "address": 26, "type": "int16", "description": "Previous error code 5"}, {"name": "Plate Heat Exchanger Temperature", "area": "input", "address": 32, "type": "int16", "unit": "°C", "description": "Plate heat exchanger temperature"}, {"name": "Heating Zone1 Fixed Water Setpoint", "area": "holding", "address": 2, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Fixed outgoing water set point for heating zone 1", "access": "RW", "write_min": 25, "write_max": 55}, {"name": "Heating Zone1 Max Water Temperature", "area": "holding", "address": 3, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Maximum outgoing water temperature for heating zone 1", "access": "RW", "write_min": 25, "write_max": 55}, {"name": "Heating Zone1 Min Water Temperature", "area": "holding", "address": 4, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Minimum outgoing water temperature for heating zone 1", "access": "RW", "write_min": 25, "write_max": 55}, {"name": "Heating Zone1 Max Outdoor Temperature", "area": "holding", "address": 5, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Maximum outdoor air temperature correlation for heating zone 1", "access": "RW"}, {"name": "Heating Zone1 Min Outdoor Temperature", "area": "holding", "address": 6, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Minimum outdoor air temperature correlation for heating zone 1", "access": "RW"}, {"name": "Heating Zone2 Fixed Water Setpoint", "area": "holding", "address": 7, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Fixed outgoing water set point for heating zone 2", "access": "RW", "write_min": 25, "write_max": 55}, {"name": "Heating Zone2 Max Water Temperature", "area": "holding", "address": 8, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Maximum outgoing water temperature for heating zone 2", "access": "RW", "write_min": 25, "write_max": 55}, {"name": "Heating Zone2 Min Water Temperature", "area": "holding", "address": 9, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Minimum outgoing water temperature for heating zone 2", "access": "RW", "write_min": 25, "write_max": 55}, {"name": "Heating Zone2 Max Outdoor Temperature", "area": "holding", "address": 10, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Maximum outdoor air temperature correlation for heating zone 2", "access": "RW", "enum": {"0": "Off", "1": "Heat", "2": "Cool"}}, {"name": "Heating Zone2 Min Outdoor Temperature", "area": "holding", "address": 11, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Minimum outdoor air temperature correlation for heating zone 2", "access": "RW"}, {"name": "Cooling Zone1 Fixed Water Setpoint", "area": "holding", "address": 13, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Fixed outgoing water set point for cooling zone 1", "access": "RW", "write_min": 5, "write_max": 25, "enum": {"0": "Off", "1": "Heat"}}, {"name": "Cooling Zone2 Fixed Water Setpoint", "area": "holding", "address": 18, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Fixed outgoing water set point for cooling zone 2", "access": "RW", "write_min": 5, "write_max": 25}, {"name": "DHW Priority", "area": "holding", "address": 26, "type": "int16", "description": "DHW production priority: 0=Standard, 1=Priority", "access": "RW"}, {"name": "DHW Comfort Temperature", "area": "holding", "address": 27, "type": "int16", "scale": 0.5, "unit": "°C", "description": "DHW comfort temperature", "access": "RW", "write_min": 40, "write_max": 60}, {"name": "DHW Economy Temperature", "area": "holding", "address": 28, "type": "int16", "scale": 0.5, "unit": "°C", "description": "DHW economy temperature", "access": "RW", "write_min": 40, "write_max": 60}, {"name": "DHW Force Temperature", "area": "holding", "address": 29, "type": "int16", "scale": 0.5, "unit": "°C", "description": "DHW force temperature", "access": "RW", "write_min": 50, "write_max": 70}, {"name": "Pump Run Time", "area": "holding", "address": 37, "type": "int16", "unit": "min", "description": "Pump run time after compressor off", "access": "RW"}, {"name": "Pump Frequency", "area": "holding", "address": 38, "type": "int16", "unit": "Hz", "description": "Pump frequency setting", "access": "RW"}, {"name": "Compressor Start Delay", "area": "holding", "address": 39, "type": "int16", "unit": "min", "description": "Compressor start delay", "access": "RW"}, {"name": "Frost Protection Start Temperature", "area": "holding", "address": 50, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Temperature at which frost protection starts", "access": "RW"}, {"name": "Frost Protection Stop Temperature", "area": "holding", "address": 51, "type": "int16", "scale": 0.5, "unit": "°C", "description": "Temperature at which frost protection stops", "access": "RW"} ] }