-
Notifications
You must be signed in to change notification settings - Fork 9
1100: Boiler Relay Information
David Bonnes edited this page Feb 2, 2020
·
15 revisions
Boiler/relay control configuration.
00:09:57.152 045 I --- 01:145038 --:------ 01:145038 1100 008 FC181000007FFF01
00:09:57.169 045 W --- 01:145038 13:237335 --:------ 1100 008 00181000007FFF01
00:09:57.216 049 I --- 13:106039 --:------ 13:106039 1100 008 00181000007FFF01
04:39:30.936 095 I --- --:------ --:------ 12:227486 1100 005 0018040400
04:39:31.934 095 I --- --:------ --:------ 12:227486 1100 005 0018040400
04:39:32.934 095 I --- --:------ --:------ 12:227486 1100 005 0018040400
06:47:22.204 045 I --- 12:010740 --:------ 12:010740 1100 008 00180404FF009601
06:47:26.203 045 I --- 12:010740 --:------ 12:010740 1100 008 00180404FF009601
16:00:42.630 045 I --- 01:145038 --:------ 01:145038 1100 008 FC0C1400007FFF01
16:00:42.648 045 RQ --- 01:145038 13:237335 --:------ 1100 008 000C1400007FFF01
16:00:42.664 061 RP --- 13:237335 01:145038 --:------ 1100 008 000C1400007FFF01
This packet has two lengths, either 5 or 8 bytes. Even if it is 8 bytes long, the latter 3 bytes may not be used (and will be set to 7FFF01
.
This packet is used by non-evohome systems, e.g. a DTS92 connected directly to a BDR91A.
segment | size | description |
---|---|---|
domain_id | [0:2] | 0xFC=boiler, otherwise 0x00 |
cycle_rate | [2:4] | cycles/hour * 4 |
minimum_on_time | [4:6] | minimum on time, minutes * 4 |
minimum_off_time | [6:8] | minimum off time, minutes * 4 |
unknown | [8:10] | optional, always 0x00 or 0xFF ? |
proportional_band_width | [10:14] | optional, degrees C * 100 |
unknown | [14:16] | optional, always 0x01 ? |
def parser_1100(payload, msg) -> Optional[dict]: # boiler_params (domain/zone/device)
assert len(payload) / 2 in [5, 8]
assert payload[:2] in ["00", "FC"]
assert payload[2:4] in ["0C", "18", "24", "30"]
assert payload[4:6] in ["04", "08", "0C", "10", "14"]
assert payload[6:8] in ["00", "04", "08", "0C", "10", "14"]
assert payload[8:10] in ["00", "FF"]
def _parser(seqx) -> dict:
return {
"cycle_rate": int(payload[2:4], 16) / 4,
"minimum_on_time": int(payload[4:6], 16) / 4,
"minimum_off_time": int(payload[6:8], 16) / 4,
"unknown_0": payload[8:10],
}
if len(payload) / 2 == 5:
return _parser(payload)
assert payload[14:] == "01"
return {
**_parser(payload[:10]),
"proportional_band_width": _temp(payload[10:14]),
"unknown_1": payload[14:],
}
def _temp(seqx) -> Optional[float]:
"Temperatures are two's complement numbers."
if seqx == "7FFF":
return None
temp = int(seqx, 16)
return (temp if temp < 2 ** 15 else temp - 2 ** 16) / 100
0001
RF Check0004
Zone name0008
Relay demand0009
Relay failsafe000A
Zone config000C
Zone actuators0016
RF signal test0100
Localisation0404
Zone schedule0418
System fault1030
Mix zone config1060
Battery state10A0
DHW setpoint10E0
Device info1100
Boiler relay info1260
DHW temperature12B0
Window sensor1F09
System Sync1F41
DHW mode1FC9
RF bind1FD4
Opentherm ticker22C9
UFH setpoint22D9
Boiler setpoint2309
Zone setpoint2349
Setpoint override2E04
Controller mode30C9
Zone temperature313F
System datetime3150
Heat demand3220
Opentherm message3B00
Actuator sync3EF0
Actuator info3EF1
Actuator unknown
0002
External sensor0005
Zone management0006
Schedule sync000E
Unknown01D0
Unknown01E9
Unknown042F
Unknown1280
Outdoor humidity1290
Outdoor temp12A0
Indoor humidity2249
Now/next setpoint22D0
UFH unknown22F1
Ventilation unit command22F3
Ventilation unit temp. high2389
Unknown2D49
Unknown3120
Unknown31D9
HVAC Unknown31DA
HVAC Unknown31E0
HVAC Unknown