Skip to content

Device Information

The Grundfos ALPHA HWR provides limited device identification information.

BLE Advertisement Data

The pump broadcasts device info in its BLE advertisement service data.

Service UUID

0000fdd0-0000-1000-8000-00805f9b34fb (GENI service)

Service Data Format

[flags...][product_family][product_type][product_version][...]

Fields:

  • Byte 3: Product Family (52 = ALPHA)
  • Byte 4: Product Type (7 = HWR)
  • Byte 5: Product Version (firmware-dependent)

Class 7 String Reading - SUPPORTED

The ALPHA HWR (Family 52, Type 7) supports reading detailed device identification via Class 7 ReadString operations.

Supported Parameters

The following string parameters can be read once the device is connected and subscribed:

  • ID 1: Product Name (e.g., LPHA HWR, cleaned up to ALPHA HWR)
  • ID 9: Serial Number Suffix (e.g., 0000479)
  • ID 50: Software Version String (e.g., 2601618V04.02.01.02539)
  • ID 52: Hardware Version (reported as Backend SW, e.g., 2601617V01.03.00.00469)
  • ID 58: BLE Version (e.g., 2811431V06.00.01.00001)

Response Behavior

The pump returns the string encoded as UTF-8 (or ASCII), typically null-terminated and padded with trailing nulls.

Note on Serial Number: The full serial number is formed by prepending a "1" to the suffix from ID 9 (e.g., 1 + 0000479 = 10000479).

Request:  2707e7f8070109...  (Read String ID 9)
Response: 240ef8e70701093030303034373900... (Suffix: "0000479")

There is no authentication requirement

Corrected 2026-08-18. This section used to read: "Class 7 reading requires the device to be Authenticated via the handshake sequence (Legacy Magic + Class 10 Magic + Auth Extend). If the device is not authenticated, Class 7 requests may return empty payloads or fail."

That is not true, and nothing in this repository ever supported it. Ten connection cycles that sent none of those packets — including two with the BLE bond cleared and re-paired, and five across pump power cycles — read all five Class 7 strings every time, fifty reads with no failures and no empty payloads. The independent ESPHome implementation likewise has no session check anywhere in its Class 7 read path.

The claim entered in this repository's initial documentation commit, hedged as "may return ... or fail", and bench_findings.md — the record of measured rather than inferred behaviour — says nothing about it. See esphome-alpha-hwr issue #174.

Available Information

  1. Product Identification (BLE Advertisement):
    • Broad scan for ALPHA HWR pumps.
    • Match by Service UUID 0000fdd0-0000-1000-8000-00805f9b34fb or Grundfos Company ID 0000fe5d-0000-1000-8000-00805f9b34fb in service data.
    • Extract Family (Byte 3), Type (Byte 4), and Version (Byte 5) from service data.

Via Class 7 Strings (Detailed Info)

Detailed information, including serial numbers and firmware versions, is available via Class 7 ReadString operations. This requires an active connection with notifications subscribed.

# Full device info - connects and reads Class 7 strings
device_info = await client.device_info.read_info(connect=True)
if device_info:
    print(f"Serial Number: {device_info.serial_number}")
    print(f"SW Version: {device_info.software_version}")
    print(f"HW Version: {device_info.hardware_version}")
    print(f"BLE Version: {device_info.ble_version}")

Implementation

Python API

from alpha_hwr import AlphaHWRClient

async with AlphaHWRClient(address) as client:
    # Get full device info (connects if necessary)
    device_info = await client.device_info.read_info(connect=True)

    if device_info:
        print(f"Serial: {device_info.serial_number}")
        print(f"Software: {device_info.software_version}")
        print(f"Hardware: {device_info.hardware_version}")
    else:
        print("Device info not available")

CLI

# Read detailed info from a connected device
alpha-hwr info

Capabilities Summary

  • Serial number: Available via Class 7 (ID 9)
  • Software version: Available via Class 7 (ID 50)
  • Hardware version: Available via Class 7 (ID 52)
  • BLE version: Available via Class 7 (ID 58)
  • Product family/type/version: Available via BLE advertisement or Class 2 registers
  • Class 2 Registers: See docs/protocol/telemetry.md
  • Opening reads: Not required for Class 7 string reading, despite what this document long claimed (see docs/protocol/connection.md)