Control Modes - Complete Support Matrix
This document provides an overview of all 32 control modes defined in the GENI protocol and their support status on the Grundfos ALPHA HWR pump.
Executive Summary
The ALPHA HWR is a domestic hot water recirculation pump designed for residential heating systems. Hardware testing reveals it supports 6 out of 32 control modes - those specifically related to hot water recirculation applications.
Support Statistics: - Fully Supported: 6 modes (19%) - Not Supported: 26 modes (81%)
Complete Mode Support Matrix
| Mode | Name | Support | SubID | Register | Notes |
|---|---|---|---|---|---|
| 0 | CONSTANT_PRESSURE | Full | 15 | 0x18 | Constant head pressure |
| 1 | PROPORTIONAL_PRESSURE | Full | 17 | 0x01 | Proportional pressure curve |
| 2 | CONSTANT_SPEED | Full | 13 | 0x02 | Fixed RPM operation |
| 5 | AUTO_ADAPT | Raises | 11 | - | No wire byte on this pump; set_mode refuses it |
| 7 | CLOSED_LOOP_SENSOR | Not Supported | - | - | Generic sensor control |
| 8 | CONSTANT_FLOW | Full | 39 | 0x08 | Constant flow rate — setpoints are SI m³/s on the wire |
| 9 | CONSTANT_LEVEL | Not Supported | - | - | Water level control (tanks/sumps) |
| 10 | FLOW_ADAPT | Not Supported | - | - | Adaptive flow control |
| 11 | CONSTANT_DIFF_PRESSURE | Not Supported | - | - | Differential pressure sensors required |
| 12 | CONSTANT_DIFF_TEMP | Not Supported | - | - | Temperature differential control |
| 13 | AUTO_ADAPT_RADIATOR | Mode only | 19 | 0x0D | Switches; setpoint not implemented |
| 14 | AUTO_ADAPT_UNDERFLOOR | Mode only | 21 | 0x0E | Switches; setpoint not implemented |
| 15 | AUTO_ADAPT_RADIATOR_AND_UNDERFLOOR | Mode only | 23 | 0x0F | Switches; setpoint not implemented |
| 16 | CONSTANT_DOSING | Not Supported | - | - | Chemical dosing (pools/industrial) |
| 17 | DISINFECTANT_CONTROL | Not Supported | - | - | Chemical dosing (pools/water treatment) |
| 18 | FLOCCULENT_CONTROL | Not Supported | - | - | Chemical dosing (water treatment) |
| 19 | PH_CONTROL | Not Supported | - | - | pH dosing (pools/industrial) |
| 20 | PID_CONTROL | Not Supported | - | - | Generic PID algorithm |
| 21 | CONSTANT_RELATIVE_SETPOINT | Not Supported | - | - | Relative setpoint adjustment |
| 22 | LEVEL_CONTROL | Not Supported | - | - | Water level control |
| 23 | ZONE_PUMP_CONTROL | Not Supported | - | - | Multi-zone systems |
| 24 | USER_DEFINED | Not Supported | - | - | Custom mode |
| 25 | DHW_ON_OFF_CONTROL | Full | 91/421 | 0x19 | Cycle time control (on/off minutes) |
| 26 | PROPORTIONAL_DIFF_PRESSURE | Raises | - | - | Not in this firmware; set_mode refuses it |
| 27 | TEMPERATURE_RANGE_CONTROL | Full | 91/430 | 0x1B | Temperature range control (min/max) — the HWR mode. The pump validates this object not at all; the client's 20–70 °C bound is the only guard. |
| 28 | COMFORT_VALVE_CONTROL | Not Supported | - | - | Valve control |
| 29 | ON_OFF_CONTROL | Not Supported | - | - | Simple on/off |
| 30 | CONSTANT_VOLTAGE | Not Supported | - | - | Voltage control (industrial/testing) |
| 128 | SYSTEM_AIR_VENTING | Not Supported | - | - | Air venting control |
| 254 | NONE | N/A | - | - | No control mode active |
Supported Modes (6 modes)
1. Constant Pressure (Mode 0) - Full Support
Description: Maintains constant head pressure regardless of flow rate.
Use Case: Standard residential circulation, consistent pressure delivery
Hardware Support: - SubID 15 in Object 86 (factory configuration) - Mode switching works reliably - Register 0x18 for setpoint writes - Limits: 0.10-4.57 m (typical)
Implementation:
CLI:
2. Proportional Pressure (Mode 1) - Full Support
Description: Adjusts pressure proportionally to flow rate along a curve.
Use Case: Energy-efficient operation, reduces pressure at low flow
Hardware Support: - SubID 17 in Object 86 - Mode switching works reliably - Register 0x17 for setpoint writes - Limits: 0.10-4.57 m (typical)
Implementation:
CLI:
3. Constant Speed (Mode 2) - Full Support
Description: Maintains constant motor RPM regardless of system conditions.
Use Case: Testing, diagnostics, special applications
Hardware Support: - SubID 13 in Object 86 - Mode switching works reliably - Register 0x04 for setpoint writes - Limits: 1000-4500 RPM (typical)
Implementation:
CLI:
4. Constant Flow (Mode 8) - Full Support
Description: Maintains constant flow rate by adjusting pump speed.
Use Case: Applications requiring precise flow control
Hardware Support: - SubID 39 in Object 86 - Mode switching works reliably - Register 0x15 for setpoint writes - Limits: 0.10-3.00 m³/h (typical)
Implementation:
CLI:
5. Temperature Control with AutoAdapt (Mode 27) - Full Support
Description: Temperature range control with automatic flow adjustment (AutoAdapt feature).
Use Case: Hot water recirculation maintaining temperature within specified range with automatic flow optimization (1-4 gpm)
Hardware Support:
- This is the ALPHA HWR's primary temperature control mode
- Confirmed via live hardware verification (factory default mode)
- Uses Object 91 (Setpoint), SubID 430 (0x01AE) for configuration
- Supports dual setpoints (Minimum and Maximum Temperature)
- AutoAdapt: Flow rate automatically adjusts between 1-4 gpm based on system demand
Implementation:
# Set temperature range: 35°C min, 39°C max
await client.control.set_temperature_range_control(35.0, 39.0)
CLI:
Note: This mode combines temperature range control WITH the AutoAdapt flow adjustment feature. The "AutoAdapt" mentioned in ALPHA HWR documentation refers to this mode's automatic flow adjustment capability, not to modes 13/14/15 (which are for heating system pumps).
6. Cycle Time Control (Mode 25) - Full Support
Description: Operates the pump in on/off cycles at configurable intervals for domestic hot water (DHW) recirculation.
Use Case: DHW recirculation systems where intermittent pump operation maintains water temperature while saving energy.
Hardware Support:
- Mode switching works reliably (mode byte 0x19, suffix 38 C6 76 EF)
- Successfully operates on ALPHA HWR hardware
- Supports configurable ON/OFF durations (1-60 minutes)
Configuration object: Object 91 Sub 421
(dhw_on_off_control_configuration_obj), holding
[flow setpoint f32 m³/s][on minutes][off minutes] — measured as
0.227 m³/h, 5, 15. Not Sub 430, which is the temperature-range object
and which this used to read and write by mistake. Sub 421 is written as a
read-modify-write so the flow setpoint it also carries survives.
Implementation:
result = await client.control.set_cycle_times(5, 15) # verified
print(result.status, result.on_minutes, result.off_minutes)
CLI:
Unsupported Modes
Why These Modes Are Not Supported
The ALPHA HWR is a residential hot water recirculation pump, not a general-purpose industrial pump or heating system pump. The unsupported modes fall into these categories:
1. Heating System Modes (Not DHW)
Modes 13, 14 and 15 target radiator and underfloor heating rather than DHW
recirculation. They are partially supported, which is worth stating
precisely: the mode switches, and the setpoint does not. set_mode accepts
them; the deprecated pressure setters are documented in the library's own
source as using "incorrect pressure-based setpoints"; and
set_temperature_control() switches the mode and then returns False with
"not yet implemented" — so a False there does not mean nothing changed.
Details in autoadapt_modes.md. Use Mode 27 instead.
Note: The ALPHA HWR uses Mode 27 (TEMPERATURE_RANGE_CONTROL) for temperature control with AutoAdapt flow adjustment. Modes 13/14/15 are GENI protocol modes for heating system pumps.
2. Sensor Requirements Not Met
- Mode 11 (CONSTANT_DIFF_PRESSURE): Requires differential pressure sensors
- Mode 26 (PROPORTIONAL_DIFF_PRESSURE): Requires differential pressure sensors
- Mode 12 (CONSTANT_DIFF_TEMP): Requires temperature differential sensors
2. Chemical Dosing (Pools/Industrial)
- Mode 16 (CONSTANT_DOSING): Chemical metering pumps
- Mode 17 (DISINFECTANT_CONTROL): Chlorine/disinfectant dosing
- Mode 18 (FLOCCULENT_CONTROL): Flocculation dosing
- Mode 19 (PH_CONTROL): pH adjustment dosing
3. Level Control (Tanks/Sumps)
- Mode 9 (CONSTANT_LEVEL): Water level maintenance
- Mode 22 (LEVEL_CONTROL): Water level regulation
4. Specialized Applications
- Mode 7 (CLOSED_LOOP_SENSOR): Generic external sensor control
- Mode 10 (FLOW_ADAPT): Adaptive flow algorithms
- Mode 20 (PID_CONTROL): Generic PID control
- Mode 21 (CONSTANT_RELATIVE_SETPOINT): Relative setpoint adjustment
- Mode 23 (ZONE_PUMP_CONTROL): Multi-zone systems
- Mode 24 (USER_DEFINED): Custom control algorithms
- Mode 28 (COMFORT_VALVE_CONTROL): Valve control systems
- Mode 29 (ON_OFF_CONTROL): Simple on/off operation
- Mode 30 (CONSTANT_VOLTAGE): Voltage control (motor testing)
- Mode 128 (SYSTEM_AIR_VENTING): Automated air venting
Technical Discovery
All 32 GENI protocol modes were systematically tested on real ALPHA HWR hardware to determine compatibility. The categories below reflect the results of this hardware-in-the-loop verification.
Investigation Details
- Hardware: Grundfos ALPHA HWR (Family 52, Type 7, Version 2)
- Tool:
tools/probe_all_modes.py
Summary Table
| Category | Tested | Supported |
|---|---|---|
| Pressure/Flow Control | 4 | 4 |
| Temperature Control | 1 | 1 |
| DHW Cycle Control | 1 | 1 (limited) |
| Heating System Modes | 3 | 0 |
| Industrial/Dosing/Other | 23 | 0 |
| Total | 32 | 5 fully + 1 limited |
Implementation Status
Library Support
Verified setters — return a
WriteResult saying what the pump actually
stored, which is not always what you asked for:
set_setpoint(mode, value)— modes 0, 1, 2, 8set_mode_verified(mode)— mode only, no setpoint, no run-state changeset_enabled(on)— run stateset_temperature_range(min_c, max_c, autoadapt=None)— mode 27set_cycle_times(on_min, off_min)— mode 25
Primitive setters — return bool, do not read back. True means the
frame was accepted, not that your value is in the pump:
set_constant_pressure(value_m)— mode 0set_proportional_pressure(value_m)— mode 1set_constant_speed(value_rpm)— mode 2set_constant_flow(value_m3h)— mode 8 (converted to SI m³/s on the wire)set_temperature_range_control(min_c, max_c, autoadapt=True)— mode 27set_cycle_time_control(on_min, off_min)— mode 25read_limiters()— Object 86 Sub 600 (MaxFlow) and Sub 601 (MinFlow)
Deprecated Methods (for heating systems, not ALPHA HWR):
- set_temperature_control(on_temp, off_temp, heating_type) - Uses modes 13/14/15 (not for DHW)
- set_autoadapt_radiator(value_m) - Mode 13 (not for DHW)
- set_autoadapt_underfloor(value_m) - Mode 14 (not for DHW)
- set_autoadapt_combined(value_m) - Mode 15 (not for DHW)
Refused outright:
- Mode 5 (AUTO_ADAPT) and mode 26 (PROPORTIONAL_DIFF_PRESSURE) raise
ValueError — the pump has no wire byte for either. Mode 5 used to fall
through to Constant Speed and report success.
CLI Support
Available Commands:
alpha-hwr control set-pressure <meters>
alpha-hwr control set-proportional <meters>
alpha-hwr control set-speed <rpm>
alpha-hwr control set-flow <m3h>
alpha-hwr control set-temperature --min <temp_c> --max <temp_c> [--autoadapt/--no-autoadapt]
alpha-hwr control set-cycle-time --on <minutes> --off <minutes>
alpha-hwr control limiters
alpha-hwr control get-cycle-time
Deprecated Commands (removed from CLI):
These methods still exist in the service layer for GENI protocol compatibility but are not exposed in the CLI since they are not applicable to ALPHA HWR (they are for heating system pumps, not DHW pumps).
Recommendations
For Users
- Use Supported Modes Only: Stick to the 5 fully supported modes + Mode 25 (cycle time control) for reliable operation.
- Temperature Control: Use Mode 27 (
set-temperature --min --max) which includes AutoAdapt flow adjustment. - Understand Pump Limitations: ALPHA HWR is optimized for domestic hot water recirculation, not heating systems or industrial applications.
For Developers
- No Further Investigation Needed: All GENI protocol modes have been verified for ALPHA HWR compatibility.
- Mode 25 Protocol: See issue #14 for ongoing work to document the cycle time parameter protocol.
- Documentation Complete: Support matrix is fully documented for the 5 ALPHA HWR modes.
References
- AutoAdapt Modes:
docs/protocol/autoadapt_modes.md - Investigation Results:
mode_investigation_results.json - GENI Protocol: Grundfos GENI profile specification