Skip to content
brucemiranda edited this page Nov 22, 2022 · 16 revisions

The controller will respond to a RQ / 0004 with the name of that zone:

16:16:49.159 095 RQ --- 18:013393 01:145038 --:------ 0004 002 0600
16:16:49.186 045 RP --- 01:145038 18:013393 --:------ 0004 022 060042617468726F6F6D00000...

When you press the button on a HR92, it will RQ the zone name to display on its LCD display.

Payload Structure

The payload has 2 byte header (for the zone index), followed by a 20-byte null-terminated string:

0600-42617468726F6F6D000000000000000000000000

In the Evohome UI, zone names appear to be limited to 12 characters.

After removing the header, the payload - like most strings - can be decoded using the method described here:

{'zone_idx': '06', 'name': 'Bathroom'}

A payload of "7F" * 20 will be returned if a RQ is sent for a non-existent zones.

Sample code

def parser_0004(payload) -> Optional[dict]:
    assert len(payload) / 2 == 22
    assert int(payload[:2], 16) < 12  # zone idx
    assert payload[2:4] == "00"

    if payload[4:] == "7F" * 20:
        return {"zone_idx": parser[:2]}
    return {"zone_idx": parser[:2], "name": _str(payload[4:])}

Other Verbs

The W verb can be used to change the name of a zone:

The I verb messages appear on startup of the controller.

Clone this wiki locally