Command Line Interface (CLI) Guide
The alpha-hwr command-line tool provides a modern, user-friendly interface for interacting with your Grundfos ALPHA HWR pump. Built with Typer and Rich, it offers beautiful terminal output and intuitive command structure.
Table of Contents
- Installation
- Configuration
- Basic Usage
- Monitoring Commands
- History and Events
- Control Commands
- Device Information
- Clock Management
- Schedule Management
- Configuration Backup & Restore
- Output Formats
- Troubleshooting
Installation
The CLI is automatically installed with the alpha-hwr package:
Verify installation:
Get help:
Configuration
Device Address
The CLI needs your pump's Bluetooth address. You can provide it in two ways:
1. Command-line option (recommended for scripts):
2. Configuration file (recommended for interactive use):
Create ~/.config/alpha-hwr/config.json:
Address Format:
- macOS: UUID format (e.g.,
A1B2C3D4-E5F6-7890-1234-567890ABCDEF) - Linux/Windows: MAC address (e.g.,
00:11:22:33:44:55)
Finding Your Pump's Address
Use a BLE scanner app (nRF Connect, LightBlue) or run this Python snippet:
python -c "
import asyncio
from bleak import BleakScanner
async def scan():
devices = await BleakScanner.discover(timeout=10.0)
for d in devices:
if d.name and 'ALPHA' in d.name:
print(f'{d.address} - {d.name}')
asyncio.run(scan())
"
Basic Usage
All commands follow this pattern:
Command Groups:
monitor- Real-time telemetry monitoringhistory- Historical trends and timestampsevents- Event log accesscontrol- Pump control operationsdevice- Device information and statisticsclock- Real-time clock managementschedule- Schedule managementconfig- Configuration backup/restore
Global Options:
--device/-d ADDRESS- Device address (overrides config file)--help- Show help message--version- Show version
Get help for any command:
Monitoring Commands
Live Monitoring
Continuously display real-time telemetry data:
# Default: table format, 1-second updates
alpha-hwr monitor live
# Custom update interval
alpha-hwr monitor live --interval 2.0
# JSON output (for automation)
alpha-hwr monitor live --format json
# Specify device explicitly
alpha-hwr monitor live --device "AA:BB:CC:DD:EE:FF"
Example Output (Table):
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Metric ┃ Value ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Flow Rate │ 2.5 m³/h │
│ Head Pressure │ 1.5 m │
│ Power │ 50.0 W │
│ Speed │ 2500 RPM │
│ Water Temp │ 45.5 °C │
│ Electronics │ 35.2 °C │
│ Status │ Running │
└────────────────┴──────────┘
Press Ctrl+C to stop monitoring.
Single Snapshot
Take a one-time telemetry reading:
# Table format (default)
alpha-hwr monitor snapshot
# JSON format
alpha-hwr monitor snapshot --format json
Example JSON Output:
{
"timestamp": "2026-01-30T12:00:00Z",
"flow_m3h": 2.5,
"head_m": 1.5,
"power_w": 50.0,
"speed_rpm": 2500,
"media_temp_c": 45.5,
"pcb_temp_c": 35.2,
"running": true
}
History and Events
Historical Trends
View historical trend data for flow, head, temperature, and power-on time:
# Show last 10 cycles (high resolution)
alpha-hwr history trends
# Show last 100 cycles (full history)
alpha-hwr history trends --detailed
Event Log
View the pump's event log (last 20 entries):
# List all events
alpha-hwr events list
# Show specific entry details
alpha-hwr events show 0
# Show event metadata
alpha-hwr events metadata
Cycle Timestamps
View timestamps for recent pump cycles:
# Show last 10 cycle timestamps
alpha-hwr history timestamps
# Show last 100 cycle timestamps
alpha-hwr history timestamps --count 100
Control Commands
Start and Stop
# Start with specific mode
alpha-hwr control start --mode constant_pressure
# Stop the pump
alpha-hwr control stop
Remote Control Mode
By default, the pump operates in "Auto" mode where both the physical panel and Bluetooth commands are accepted. You can use Remote Mode to prioritize digital control:
# Prioritize Bluetooth commands and lock physical panel
alpha-hwr control enable-remote
# Return to normal operation (physical panel enabled)
alpha-hwr control disable-remote
Note: Use Remote Mode when you want to ensure your automation logic isn't overridden by someone pressing buttons on the pump.
Set Control Mode
The pump supports multiple control modes specifically optimized for hot water recirculation.
Temperature Control
Maintains temperature within a specified range (Mode 27):
# Set range 35-39°C with AUTOADAPT enabled (default)
alpha-hwr control set-temperature --min 35 --max 39
# Set custom range with no autoadapt and a flow limit
alpha-hwr control set-temperature --min 40 --max 45 --no-autoadapt --flow-limit 1.5
Cycle Time Control
Operates the pump in on/off cycles (Mode 25):
# Set 5 minutes ON, 15 minutes OFF
alpha-hwr control set-cycle-time --on 5 --off 15
# View current cycle times
alpha-hwr control get-cycle-time
Constant Speed
Runs at fixed RPM (Mode 2):
Constant Pressure
Maintains fixed head pressure (Mode 0):
Constant Flow
Maintains specific flow rate (Mode 8):
Proportional Pressure
Adjusts pressure based on flow rate (Mode 1):
Flow Limitation
Set a global maximum flow limit to prevent corrosion:
Device Information
Scan for Pumps
Scan for nearby ALPHA HWR pumps advertising on BLE:
# Default: 10-second scan
alpha-hwr device scan
# Custom timeout
alpha-hwr device scan --timeout 5.0
Basic Information
Display pump identification and firmware details:
Example Output:
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Field ┃ Value ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│ Product Name │ ALPHA HWR │
│ Product Family │ ALPHA (52) │
│ Product Type │ HWR (7) │
│ Serial Number │ 12345678 │
│ Software Version │ 2.34.0 │
│ Hardware Version │ 1.5.2 │
│ BLE Version │ 1.2.3 │
└────────────────────┴──────────────────────┘
Device Statistics
View cumulative operating statistics:
# Show operating hours and start count
alpha-hwr device stats
# JSON format
alpha-hwr device stats --format json
Example Output:
Active Alarms
Check for active alarms and warnings:
# Show current alarms
alpha-hwr device alarms
# JSON format for automation
alpha-hwr device alarms --format json
Clock Management
View Clock
Check the pump's internal real-time clock (RTC) and compare it with system time:
Synchronize Clock
Synchronize the pump's clock with your computer's time:
Note: Correct clock time is essential for accurate scheduling and event logging.
Schedule Management
The pump supports weekly schedules across 5 independent layers (0-4).
View Schedule
Display current schedule configuration:
# Show all schedule layers
alpha-hwr schedule show
# Show specific layer
alpha-hwr schedule show --layer 0
# JSON format
alpha-hwr schedule show --format json
Example Output:
Schedule Status: Enabled
Layer 0:
Monday: 06:00 - 08:00 (Enabled)
Tuesday: 06:00 - 08:00 (Enabled)
Wednesday: 06:00 - 08:00 (Enabled)
Thursday: 06:00 - 08:00 (Enabled)
Friday: 06:00 - 08:00 (Enabled)
Saturday: (Disabled)
Sunday: (Disabled)
Layer 1:
Monday: 18:00 - 22:00 (Enabled)
Tuesday: 18:00 - 22:00 (Enabled)
...
Enable/Disable Schedule
# Enable the schedule globally
alpha-hwr schedule enable
# Disable the schedule globally
alpha-hwr schedule disable
Set Schedule Entry
Add or modify a schedule entry:
# Set Monday 06:00-08:00 on Layer 0
alpha-hwr schedule set-entry \
--day monday \
--start 06:00 \
--end 08:00 \
--layer 0
# Set multiple days with weekday shorthand
alpha-hwr schedule set-entry \
--days mon,tue,wed,thu,fri \
--start 06:00 \
--end 08:00 \
--layer 0
Clear Schedule
Remove schedule entries:
# Clear specific layer
alpha-hwr schedule clear --layer 0
# Clear all layers
alpha-hwr schedule clear --all
Import/Export Schedule
# Export current schedule to JSON
alpha-hwr schedule export my_schedule.json
# Import schedule from JSON
alpha-hwr schedule import my_schedule.json
Schedule JSON Format:
{
"enabled": true,
"layers": [
{
"layer": 0,
"entries": [
{
"day": "Monday",
"enabled": true,
"start_hour": 6,
"start_minute": 0,
"end_hour": 8,
"end_minute": 0
}
]
}
]
}
Configuration Backup & Restore
Backup Configuration
Save current pump configuration to a file:
# Backup to default location (~/.config/alpha-hwr/backup.json)
alpha-hwr config backup
# Backup to specific file
alpha-hwr config backup --output my_backup.json
# Include schedule in backup
alpha-hwr config backup --include-schedule
# Compact JSON format
alpha-hwr config backup --compact
What's backed up: - Control mode and setpoint - Device settings - Optionally: weekly schedule (all layers)
Restore Configuration
Restore configuration from a backup file:
# Restore from default backup
alpha-hwr config restore
# Restore from specific file
alpha-hwr config restore --input my_backup.json
# Dry run (show what would be restored without applying)
alpha-hwr config restore --dry-run
# Restore only specific components
alpha-hwr config restore --mode-only
alpha-hwr config restore --schedule-only
List Backups
Show available backup files:
# List backups in default directory
alpha-hwr config list-backups
# Show backup details
alpha-hwr config list-backups --details
Output Formats
Most commands support multiple output formats:
Table Format (Default)
Beautiful formatted tables with Rich:
JSON Format
Machine-readable output for scripts:
alpha-hwr monitor snapshot --format json
alpha-hwr device info --format json
alpha-hwr schedule show --format json
Use cases: - Automation scripts - Integration with other tools - Data logging and analysis
Example: Log telemetry to file
Troubleshooting
Connection Issues
Symptom: Failed to connect to device
Solutions:
-
Verify device address:
-
Check Bluetooth is enabled:
- macOS: System Preferences → Bluetooth
- Linux:
sudo systemctl status bluetooth -
Windows: Settings → Bluetooth
-
Disconnect from other apps:
- Ensure no other applications are connected to the pump
-
Disconnect from other BLE connections
-
Increase connection timeout:
Authentication Failed
Symptom: Authentication failed
Solutions:
- Restart pump: Power cycle the pump
- Reset BLE: Restart Bluetooth adapter
- Clear pairing: Re-pair the device
Command Not Found
Symptom: alpha-hwr: command not found
Solutions:
-
Verify installation:
-
Check PATH:
-
Reinstall:
No Telemetry Data
Symptom: Telemetry shows all zeros or times out
Solutions:
- Check pump is running: Pump must be started
- Wait after start: Allow 2-3 seconds for telemetry to stabilize
- Verify authentication: Ensure authentication succeeded
Advanced Usage
Scripting Examples
Log telemetry every minute:
#!/bin/bash
while true; do
timestamp=$(date -Iseconds)
telemetry=$(alpha-hwr monitor snapshot --format json)
echo "$timestamp $telemetry" >> pump_log.jsonl
sleep 60
done
Set mode based on time of day:
#!/bin/bash
hour=$(date +%H)
if [ $hour -ge 6 ] && [ $hour -lt 9 ]; then
# Morning: high pressure
alpha-hwr control set-mode constant-pressure --setpoint 3.0
elif [ $hour -ge 18 ] && [ $hour -lt 22 ]; then
# Evening: medium pressure
alpha-hwr control set-mode constant-pressure --setpoint 2.0
else
# Off hours: stop
alpha-hwr control stop
fi
Monitor and alert on low flow:
#!/bin/bash
while true; do
flow=$(alpha-hwr monitor snapshot --format json | jq -r '.flow_m3h')
if (( $(echo "$flow < 0.5" | bc -l) )); then
echo "ALERT: Low flow detected: $flow m³/h"
# Send notification (e.g., via email, SMS, webhook)
fi
sleep 10
done
Environment Variables
Configure via environment variables:
# Set device address
export ALPHA_HWR_DEVICE_ADDRESS="AA:BB:CC:DD:EE:FF"
# Set Bluetooth adapter (Linux)
export ALPHA_HWR_ADAPTER="hci0"
# Enable debug logging
export ALPHA_HWR_DEBUG=1
# Now use CLI without --device flag
alpha-hwr monitor live
Command Reference
Monitor Commands
| Command | Description |
|---|---|
monitor live |
Continuous real-time monitoring |
monitor snapshot |
Single telemetry reading |
History Commands
| Command | Description |
|---|---|
history trends |
Show historical trend data |
history timestamps |
Show cycle timestamps |
Event Commands
| Command | Description |
|---|---|
events list |
List event log entries |
events show |
Show entry details |
events metadata |
Show event log metadata |
Control Commands
| Command | Description |
|---|---|
control start |
Start pump |
control stop |
Stop pump |
control set-temperature |
Set temperature range control (Mode 27) |
control set-cycle-time |
Set DHW cycle time control (Mode 25) |
control get-cycle-time |
Get DHW cycle time configuration |
control set-pressure |
Set constant pressure mode (Mode 0) |
control set-speed |
Set constant speed mode (Mode 2) |
control set-flow |
Set constant flow mode (Mode 8) |
control set-proportional |
Set proportional pressure mode (Mode 1) |
control set-flow-limit |
Set maximum flow limit (GPM) |
control set-mode <mode> |
Set control mode with setpoint (generic) |
Device Commands
| Command | Description |
|---|---|
device scan |
Scan for nearby pumps |
device info |
Show device information |
device stats |
Show operating statistics |
device alarms |
Show active alarms |
Clock Commands
| Command | Description |
|---|---|
clock view |
View pump clock |
clock sync |
Sync pump clock with system |
Schedule Commands
| Command | Description |
|---|---|
schedule show |
Display current schedule |
schedule enable |
Enable schedule globally |
schedule disable |
Disable schedule globally |
schedule set-entry |
Add/modify schedule entry |
schedule clear |
Clear schedule entries |
schedule export |
Export schedule to JSON |
schedule import |
Import schedule from JSON |
Config Commands
| Command | Description |
|---|---|
config backup |
Backup pump configuration |
config restore |
Restore from backup |
config list-backups |
List available backups |
Getting Help
For command-specific help, use --help:
alpha-hwr --help
alpha-hwr monitor --help
alpha-hwr control set-mode --help
alpha-hwr schedule set-entry --help
For issues or questions:
- GitHub Issues: https://github.com/eman/alpha-hwr
- Documentation: See docs/ directory
- Protocol Reference: See docs/protocol/