Skip to content

10E0: Device Information

David Bonnes edited this page Feb 9, 2020 · 23 revisions

Some devices will periodically send device information with solicitation:

059  I --- 34:064023 63:262142 --:------ 10E0 038 000001C8380A0100F1FF1C0307E1030B07DE5438375246323032350000000000000000000000
069  I --- 30:082155 63:262142 --:------ 10E0 038 000001C90011006CFEFFFFFFFFFF090907E0425244472D30324A415330310000000000000000

Some devices send it upon startup, whilst other Round thermostats appear to send this data once every 24 hours.

2020-02-04T17:17:36.227 051  I --- 34:205645 63:262142 --:------ 10E0 038 000001C838.
2020-02-05T17:17:35.439 047  I --- 34:205645 63:262142 --:------ 10E0 038 000001C838...
2020-02-06T17:17:34.672 051  I --- 34:205645 63:262142 --:------ 10E0 038 000001C838...
2020-02-07T17:17:33.910 049  I --- 34:205645 63:262142 --:------ 10E0 038 000001C838...

Some devices (Controller, Opentherm Bridge) will respond to an RQ with this data.

095 RQ --- 18:002858 01:073076 --:------ 10E0 001 00
045 RP --- 01:073076 18:002858 --:------ 10E0 038 000002FF0163FFFFFFFF140B07E1010807DD45766F20436F6C6F720000000000000000000000
Payload decode: To do

Python Code

def parser_10e0(payload, msg) -> Optional[dict]:  # device_info
    def _date(seqx) -> Optional[str]:
        try:  # the seqx might be "FFFFFFFF"
            return dt(
                year=int(seqx[4:8], 16), 
                month=int(seqx[2:4], 16), 
                day=int(seqx[:2], 16)
            ).strftime("%Y-%m-%d")
        except ValueError:
            return None

    assert len(payload) / 2 in [30, 38]  # a non-evohome seen with 30

    return {  # TODO: add version?
        "description": _str(payload[36:]),
        "date_1": _date(payload[20:28]),  # could be 'FFFFFFFF'
        "date_2": _date(payload[28:36]),
        "unknown_0": payload[:20],
    }
Clone this wiki locally