Skip to content

1F09: System Synchronization

David Bonnes edited this page May 9, 2021 · 16 revisions

Sync Cycle

All devices are synchronized with their controller in a periodic cycle of of about 2-3 minutes in duration. This duration varies between HVAC systems but, by necessity, remains constant for a given system.

For example, an Evohome controller sends three unsolicited packets at the start of every cycle:

06:00:37.246 045  I --- 01:145038 --:------ 01:145038 1F09 003 FF073F
06:00:37.248 045  I --- 01:145038 --:------ 01:145038 2309 021 0005DC010...
06:00:37.250 045  I --- 01:145038 --:------ 01:145038 30C9 021 000776010...

Where 2309 is the setpoints, and 3C09 the temperatures, of the zones known to the controller.

At the last cycle before an hour is up, it sends two packets instead:

19:31:02.765 045  I --- 01:145038 --:------ 01:145038 1F09 003 FF073F
19:31:02.804 045  I --- 01:145038 --:------ 01:145038 000A 042 001001F40...

Where 000A is the configuration of the zones known to the controller.

Sleep Cycle

Battery-powered devices, which do not normally have their radios powered on, know to wake up and listen at the start of every cycle for new setpoints, temperatures, etc.

Such devices determine the next sync_cycle when they are turned on, they send an RQ for it, and also send an RQ when they haven't heard from the controller for a while (e.g. they are out of sync, or the controller is turned off). Every sync_cycle, they listen for 000A, 2309, 3C09 (and the next 1F09, sync_cycle) packets.

Battery devices will also send packets when events happen (temp changes, window open, button pressed, dial turned), and they may then listen for any expected response (this exchange may not necessarily be an RQ/RP pair).

They will not listen otherwise (to conserve battery). If they are listening, that does not necessarily mean they will respond to any packet (say a 10E0). It is unknown if, during this time, some devices would respond to certain unsolicited packets.

RQ Packets

If a device has not heard from the controller for a while, it will periodically send an RQ to check/correct its has the correct cycle. The controller will respond with the time remaining until the start of the next cycle:

15:17:44.602 078 RQ --- TRV:189076 CTL:145038  --:------ 1F09 001 00
15:17:44.663 045 RP --- CTL:145038 TRV:189076  --:------ 1F09 003 000280

W Packets

These have been seen in the wild:

16:58:52.002 045  I --- CTL:145038  --:------ CTL:145038 0004 022 010046726...
16:58:52.015 045  W --- CTL:145038  --:------ CTL:145038 1F09 003 F804A6
16:58:52.068 045  I --- CTL:145038  --:------ CTL:145038 2309 003 010708

Note the domain_id of this 1F09 packet is F8.

Decoding

Name Notes
[0:2] domain_id 00, F8 or FF
[2:6] countdown tenths of seconds int(payload[2:6], 16) / 10

Non-Evohome Controllers

Non-Evohome systems use the same protocol, such as:

04:48:33.242981 049  I --- 01:102458 --:------ 01:102458 1F09 003 FF04C4
22:04:28.261001 095  I --- 23:100224 --:------ 23:100224 1F09 003 FF0717
05:21:19.887487 095  I --- 30:077132 --:------ 30:077132 1F09 003 00058C

Each of these devices is the controller for a distinct system, each system being fully independent of the other (note the RSSI for the other two controllers is 095, suggesting a neighbour's system).

Related Packets

  • 000A: Zone Configuration
  • 1F09: System Synchronization
  • 2309: Zone Setpoint
  • 30C9: Zone Temperature
  • 313F: System Datetime
Clone this wiki locally