Helios EasyControl 3.0 to HomeAssistant MQTT

Just wanted to share - I have Helios device with the EasyControl 3.0 controller.

The controller does not provide ModBus data over TCP as the older versions did, only through WebSocket.

I reverse-engineered the protocol from the javascript sources and created small utility in nodeJS that creates unique HomeAssistant MQTT device for the Helios (based on its serial number) and supplies it with key parameters every 60 seconds.

The sources are here: GitHub - sanchosk/helios2mqtt

At the moment I am running the code on another machine in my network that is permanently on, using GNU screen to keep it in the background with auto-start using cron. However, for future, I’ll look into how to write own integration (possibly using HACS) and I might transform it.

Should anyone be willing to help with the effort or just to provide general suggestions, I am more than happy to receive inputs!

@sanchosk : Thank you for your effort! Very cool! What a weird protocol…
Based on your work I am planning on creating a homebridge/homekit integration. Have you figured out how to change the device state? I am guessing that we have to set VlxDevConstants.EXT_CYC_ACTIVE_PROFILE?

2 Likes

To be honest, I did not even try, I was aiming at read-only thing, but I can take a look, should not be that difficult to reverse-engineer that part of code :slight_smile:

1 Like

I did some debugging and figured out the commands:


    // set home:
    // const data = new Uint16Array(9);
    // data[0] = 8, data[1] = 249, data[2] = 4609, data[3] = 0, data[4] = 4612, data[5] = 0, data[6] = 4613, data[7] = 0, data[8] = 14091;
    // set away:
    // const data = new Uint16Array(9);
    // data[0] = 8, data[1] = 249, data[2] = 4609, data[3] = 1, data[4] = 4612, data[5] = 0, data[6] = 4613, data[7] = 0, data[8] = 14092;
    // set boost:
    // const data = new Uint16Array(7);
    // data[0] = 6, data[1] = 249, data[2] = 4612, data[3] = 30, data[4] = 4613, data[5] = 0, data[6] = 9510;

1 Like

That was faster than I even managed to fetch the repo on new computer :slight_smile:
Congrats!

@sanchosk I have plugin creating experience under HACS. If you intrested in I can contribute to finalize your code in this format. What do you think?

2 Likes

Absolutely!
If you can, any contribution is welcomed!

Ok. How can we do that? Is there any develompent roadmap, or any planning where I can connect?

As I don’t know how to integrate, my dev roadmap is more or less at the end for now. The git repo is linked in the first post - feel free to provide some PR, I’ll be happy to test and help as much as I can…

1 Like

@csula I`m also interested in such a plugin. And can help with testing on KWL 360 W device. What is your plan?

Hi! Currently I’ve a non calculated life event which is takes all my time. I hope in May I can start the work and will be finished @ June. This is the plan right now.

6 Likes

Hey, do you have more info about that ?

1 Like

I’m joining the club with my KWL360. Seriously, Helios couldn’t make this any weirder. They also don’t have mobile app and they expect us to manage device in browser on mobile devices. :smiley: Anyway, any updates on this? I think 90% of what I’d use the integration for is to change ventilation modes.

Good Morning :smiley:

i stummeld upon this post after I got my KWL360 and after I couldn’t find anything what made me happy I took the code from sanchosk und transfered it to python.

So at the moment my python version can read alll Sensors that sanchosk could read, further I could change the Mode of the KWL, and also the Timing and Fan Speed for the intensiv mode.

I am putting that all into my first hass addon. Which at the moment is capable of the following: Set up via UI (you have to enter the ip address of the KWL), maybe I also will add a field for the minimal update intervall …

After that you will get the following sensors:
grafik

If anybode is already interesed in that version of the integration let my know and I try to put it already online :smiley:

I is only bench lvl tested, so I could not guarantee anything :sweat_smile:

For any feedback and/or constructiv critism I would be open :wink:

Hope it is OK for sanchosk that I hijacked his thread here.

And again thank you for your initial work

I really appreciate the effort!
I’ll be happy to test it for my use-case, for sure!
Just drop it to some git repo.
Thanks again!

Here you go:

3 Likes

wow, great work!

fr3w3 (and sanchosk), just wanted to say thanks for making this work. :+1: After initial testing it’s working flawlessly on my end. :ok_hand: It also does pretty much everything I want it to do. The only thing I’m not quite sure how to operate “Time for intensive mode”. Perhaps it would be better to have a control for setting for how long (in minutes) you want the intensive mode to run since you triggered it. At least that’s how it works on the EasyControls device I have on my wall.

The time for intensive mode is the same as in the webserver of the KWL. In the webserver you configure a time for that mode. If you activate the mode it is active for that time and change then back to the “At Home” mode again.
At least it behaves like that with my KWL.

Is it different for other KWLs?

This is exactly how our KWL works, too.