Skip to content
David Bonnes edited this page Jun 27, 2020 · 5 revisions

This code is not completely understood. Please add any information you have.

08:58:14.264 079  I --- 20:016443 --:------ 20:016443 31DA 029 00EF007FFFEFEF7FFF7FFF7FFF7FFFF000EF0101000000EFEF7FFF7FFF
18:17:22.868 069  I --- 30:082155 --:------ 30:082155 31DA 029 21EF007FFF29EF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF

Payload Structure

This much is known:

def parser_31da(payload) -> Optional[dict]:
    assert len(payload) == 29

    assert payload[2:10] == "EF007FFF"
    assert payload[12:30] == "EF7FFF7FFF7FFF7FFF"
    assert payload[34:36] == "EF"
    assert payload[42:44] == "00"
    assert payload[46:48] in ("00", "EF")
    assert payload[48:] in ("EF7FFF7FFF", "EF7FFFFFFF")

    rh = int(payload[10:12], 16) / 100 if payload[10:12] != "EF" else None  # not /200!

    return {
        **_idx(payload[:2], msg),
        "relative_humidity": rh,
        "unknown_1": payload[30:32],
        "unknown_2": payload[32:34],
        "unknown_3": payload[36:38],
        "unknown_4": payload[38:40],
        "unknown_5": payload[44:46],
    }

Related Packets

  • 31D9: HVAC Unknown (1/3)
  • 31DA: HVAC Unknown (2/3)
  • 31E0: HVAC Unknown (3/3)
Clone this wiki locally