This I transferred to python and extended it. I also put it into a custom integration which could be installed via hacs (at least via custom repo for the moment )
The integration can read all the sensors that I find useful at the moment:
It also can change the KWL mode via a select:
And finally it also can change the time and fan speed for the intensive mode:
The integration should work with the new Helios EasyControl 3.0 controller, which communicates via WebSocket, not like the old ones via ModBus over TCP.
The logic is calling the websocket every 60s to read the current data and uses the serial number of the device to generate unique ids.
are you still working on this?
I am working on the same for openhab and did some further deconding of the messages, which might help.
The messages to set variables are all structured the same:
split them into words (2byte) in little endian.
example message (everything in hex):
0400 f900 1550 3d00 4f51
0400 → 0004 → 4 words long message
f900 → 00f9 → no idea. same for all messages that set variables
1550 → 5015 → id of the variable to set (this e.g. is the fan speed for away)
3d00 → 003d → 61 decimal → value of the variable
4f51 → 514f → checksum
The checksum is basically the sum of all previous words. For the example above:
0004+00f9+5015+003d = 514f
The example above sets the fan speed for away to 61%.
Below all variables i figured out so far (already in little endian):
rel. hum. away 1350 (0 or 1)
fan away 1550 (0-100)
temp away 1650 (strange temp. value)
rel. hum. home 1950
fan home 1b50
temp home 1c50
rel. hum. intense 1f50
fan intense 2150
temp intense 2250
time intense 4050 (in minutes)
timer (on/off) intense 0655
Fan in individ. 0850
Fan out individ. 0750
temp individ. 1150
time individ. 5041
timer (on/off) individ. 0755
bypass on/off 4850
filterinterval 3950 (in days)
filter exchange date 4250/4350/4450 (Y/M/D)
0800 f900 4250 1900 4350 0400 4450 1900 00f2
→ 8 words long. 3 times variable + value
Setting the mode is a bit strange
0112 set to 1 is away, set to 0 is home. Further the timers for individual (0512) and intensive (0412) are set to 0:
e.g.
0800 f900 0112 0100 0412 0000 0512 0000 0c37
To set individual or intensive, the timers are set to the respective value (the other one is set to 0):
Timer Int: 0412 (in minutes)
Timer Ind: 0512 (in minutes)
0600 f900 0412 3c00 0512 0000 4425
→ this one sets Intensive (0412) to 3c00 → 003c → 60 minutes and individual (0512) to 0 minutes