Using evohome_rf (https://github.com/zxdavb/evohome_rf) can give deep insights into the behavior of your system. I though I would show an example here.
Using a HGI80, or evofw3 running on a nanoCUL, you can eavesdrop RF traffic, and see packets such as (with added timestamps):
...translated, this is (payloads truncated for readability):
Here, we see that the controller announces the setpoint and current temperature of all the zones every 185.5 seconds.
You can send a request (RQ) to the controller (and other devices) and get a response (RP):
So, let look at how the TPI cycle works. Firstly, there's the (currently) configured cycle rate, and the minimum on time:
The controller will tell me which device is the heater relay (e.g. combi boiler, communal HW):
...in this case, it's a BDR91A called 13:888888.
I can then ask the relay what's happening there:
... it sends 0x3B00 (tpi_sync) and 0x3EF0 (actuator_enabled) packets to the controller.
I can ask it what the actuator_cycle is:
Using a HGI80, or evofw3 running on a nanoCUL, you can eavesdrop RF traffic, and see packets such as (with added timestamps):
Code:
16:43:35.979 045 I --- 01:145038 --:------ 01:145038 1F09 003 FF073F 16:43:36.003 045 I --- 01:145038 --:------ 01:145038 2309 021 00079E01079E02079E03079E04079E05079E06079E 16:43:36.022 045 I --- 01:145038 --:------ 01:145038 30C9 021 0008250108790208540307B20407ED050801060854
Code:
16:43:35.979 || CTL:123456 | | I | system_sync | FF073F || {'remaining_seconds': 185.5, '_next_sync': '16:46:41'} 16:43:36.003 || CTL:123456 | | I | setpoint | 00079... || [{'zone_idx': '00', 'setpoint': 19.5}, {'zone_idx': '01', 'setpoin... 16:43:36.022 || CTL:123456 | | I | temperature | 00082... || [{'zone_idx': '00', 'temperature': 20.85}, {'zone_idx': '01', 'tem...
You can send a request (RQ) to the controller (and other devices) and get a response (RP):
Code:
16:48:27.636 || HGI:000730 | CTL:123456 | RQ | zone_name | 0000 || {'zone_idx': '00'} 16:48:27.665 || CTL:123456 | HGI:000730 | RP | zone_name | 00004... || {'zone_idx': '00', 'name': 'Main room'}
Code:
16:57:12.210 || HGI:000730 | CTL:123456 | RQ | tpi_params | FC || {'domain_id': 'FC'} 16:57:12.229 || CTL:123456 | HGI:000730 | RP | tpi_params | FC300... || {'domain_id': 'FC', 'cycle_rate': 12.0, 'minimum_on_time': 3.0, 'm...
Code:
16:57:12.420 || HGI:000730 | CTL:123456 | RQ | zone_devices | 000F || {'domain_id': 'FC', 'device_class': 'heating_control'} 16:57:12.436 || CTL:123456 | HGI:000730 | RP | zone_devices | 000F0... || {'domain_id': 'FC', 'device_class': 'heating_control', 'devices': ['13:888888']}
I can then ask the relay what's happening there:
Code:
17:03:35.144 || HGI:000730 | BDR:888888 | RQ | rf_bind | 00 || {} 17:03:35.162 || BDR:888888 | HGI:000730 | RP | rf_bind | 003EF... || [{'00': '3EF0'}, {'00': '3B00'}]
I can ask it what the actuator_cycle is:
Code:
17:03:36.262 || HGI:000730 | BDR:888888 | RQ | actuator_cycle | 00 || {} 17:03:36.277 || BDR:888888 | HGI:000730 | RP | actuator_cycle | 00000... || {'actuator_enabled': True, 'actuator_countdown': 13, 'cycle_countd...
Comment