Helios Binding for Modbus TCP

What does your events.log show now, though? It’s a diagnostic move, not a solution.

2019-04-25 13:39:16.277 [ome.event.ItemCommandEvent] - Item ‘KWL_Partybetrieb_Dauer’ received command 180

In event.log no further entry is set where it has been changed back to 60min. But in sitemap is changed immediately to 60min.

Which suggests the command did not get sent to the device or was ignored by the device or old read values are stuck in the binding.

You are running the updated binding from January? I don’t know anything else about Helios.

Yes I use the new binding.

I have now deleted my cache and tmp folder after stopping Openhab. It works after the reboot.
Thank you for your help rossko57.

But that with the status of the bypass does not work yet.

My apologies, apparently I’m using my own binding wrong… :slightly_frowning_face:
Since I don’t actually actively do anything with the KWL’s bypass functionality, I never noticed this.

But I’ve just checked the Helios specification and the summer_winter variable actually only shows if it’s summer or winter time.

The bypass itself can’t be activated or deactivated directly. You can only control its functionality via time or temperature based settings.
While I can’t find any variables that would control the time based settings (which means you have to set this via the KWL’s web interface), you can set a room temperature (bypass_room_temp) or minimum outside temperature (bypass_min_outside_temp) which trigger the bypass to open.

Sorry for any confusion I caused. I hope that helps!

Since I was happy too early.
That was not the solution, I have the phenomenon again.

Logfile:
Item changed by me:

2019-04-26 09:31:04.510 [ome.event.ItemCommandEvent] - Item 'KWL_Partybetrieb_Dauer' received command 120
2019-04-26 09:31:13.523 [vent.ItemStateChangedEvent] - KWL_Partybetrieb_Dauer changed from 60 to 120

Item changes itself:

2019-04-26 09:31:52.336 [vent.ItemStateChangedEvent] - KWL_Partybetrieb_Dauer changed from 120 to 60

Then again changed by me but with start command.

2019-04-26 09:32:04.611 [ome.event.ItemCommandEvent] - Item 'KWL_Partybetrieb_Dauer' received command 120
2019-04-26 09:32:04.636 [vent.ItemStateChangedEvent] - KWL_Partybetrieb_Dauer changed from 60 to 120
2019-04-26 09:32:09.950 [ome.event.ItemCommandEvent] - Item 'KWL_Partybetrieb' received command ON
2019-04-26 09:32:13.411 [vent.ItemStateChangedEvent] - KWL_Partybetrieb changed from OFF to ON

Then again by itself

2019-04-26 09:33:09.843 [vent.ItemStateChangedEvent] - KWL_Partybetrieb_Dauer changed from 120 to 60

And then the party mode is activated for 60min even though I have selected 120min.
No matter what duration I choose. The (Partybetrieb) party operation is always started for 60min.

Hi bern77

Where ist the openhab.cfg File in openhabian (OH2)? I can’t find the directory.

Thank you for your help.

Hi Schaechi,

the openhab.cfg file has to be put into the /etc/openhab2/services folder. It’s not there from the start so you’ll have to create it yourself.
Hope that helps!

Hi Bernhard, many thanks for that binding. I have set it up on an new openhabian. Had to fix some dependencie-Problems but now it´s working perfect.

Is there a possibility to ad the Sensor-values (eg. VOC, CO2, Temperature + Humidity) as well?

Hi Martin,
yes, actually the binding includes all possible variables specified in the protocol.
Please see the attached file for a list of all variables of the binding (I’m not 100% but I think this should be the latest version of the list):
helios.html.pdf (80.9 KB)

1 Like

I’m happy to report that I’ve now found the time to upgrade the binding to the openHAB2 architecture. :grinning:

The code can be found on GitHub: https://github.com/bern77/openhab-addons/tree/2.5.x/bundles/org.openhab.binding.modbus.helioseasycontrols
I’ve also uploaded the bundle file.

At this point a big “Thank You” to @ssalonen for his great guidance and support to base the new version of the Helios KWL binding on the existing Modbus binding. This means there are no more included external libraries required.

In my openHAB production container the binding runs smoothly…

I hope this might be useful for someone else as well!

3 Likes

Very good job! It works very well!

I tried to get the status of summerWinter:

Switch KWL_SommerWinter					"[MAP(helios_sw.map):%s]"											{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:summerWinter"}

But i don’t get a update. Could it be updated only once a day?

Thanks, but apparently not good enough :wink:
Thanks for the info - I’ve corrected the bug and committed a new version!

Now it’s working!

2020-04-15 14:22:27.575 [vent.ItemStateChangedEvent] - KWL_SommerWinter changed from NULL to ON


Is it now possible to get the status of the bypass?

As per my last post on the subject, I’m afraid this isn’t something the protocol specification supports…

Actually… this was all bullshit. :astonished:

It made me curious and so I just looked into the device’s Website and its code. There is a variable to indicate the bypass status and I’ve managed to read it.
While at it I’ve included also the variables to read/write the day and month of the time when the bypass should be activated…

Enjoy :grinning:

1 Like
Switch KWL_Bypass						"KWL - Bypass offen"							<switch>		(gKWL, gKWL_Status, gMQTT)	{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassStatus"}
Number KWL_Bypass_von_Tag				"Bypass von Tag [%d]"							<calendar>		(gKWL)						{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassFromDay"}
Number KWL_Bypass_von_Monat				"Bypass von Monat [%d]"							<calendar>		(gKWL)						{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassFromMonth"}
Number KWL_Bypass_bis_Tag				"Bypass bis Tag [%d]"							<calendar>		(gKWL)						{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassToDay"}
Number KWL_Bypass_bis_Monat				"Bypass bis Monat [%d]"							<calendar>		(gKWL)						{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassToMonth"}
Number KWL_Bypass_Raum_Temp				"Bypass Raumtemperatur [%d°C]"					<temperature>	(gKWL)						{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassRoomTemperature"}
Number KWL_Bypass_Min_Aussentemp		"Bypass min. Außentemperatur [%d°C]"			<tempearatur>	(gKWL)						{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:bypassMinOutsideTemperature"}
1 Like

You make my day. THX :smiley:

I have a new problem.
I cannot operate helios via openhab.
e.g. I don’t get the party mode:

2020-04-16 12:53:16.214 [ome.event.ItemCommandEvent] - Item 'KWL_Partybetrieb_Stufe' received command 4
2020-04-16 12:53:16.252 [nt.ItemStatePredictedEvent] - KWL_Partybetrieb_Stufe predicted to become 4
2020-04-16 12:53:20.723 [ome.event.ItemCommandEvent] - Item 'KWL_Partybetrieb_Dauer' received command 180
2020-04-16 12:53:20.756 [nt.ItemStatePredictedEvent] - KWL_Partybetrieb_Dauer predicted to become 180
2020-04-16 12:53:20.786 [vent.ItemStateChangedEvent] - KWL_Partybetrieb_Dauer changed from 120 to 180
2020-04-16 12:53:31.099 [ome.event.ItemCommandEvent] - Item 'KWL_Partybetrieb' received command ON
2020-04-16 12:53:31.108 [nt.ItemStatePredictedEvent] - KWL_Partybetrieb predicted to become NULL

Items:

Switch KWL_Partybetrieb 				"Partybetrieb" 													(KWL, KWL_save_cha) 											{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:partyMode"}
Number KWL_Partybetrieb_Dauer 			"Partybetrieb Dauer" 											(KWL) 															{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:partyModeDuration"}
Number KWL_Partybetrieb_Stufe 			"Partybetrieb Lüfterstufe [Stufe %d]" 							(KWL) 															{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:partyModeFanStage"}
Number KWL_Partybetrieb_Restdauer 		"Partybetrieb Restdauer [%d min]" 								(KWL) 															{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:partyModeRemainingTime"}

Sitemap:

Frame label="Party mode" {
        Switch item=KWL_Partybetrieb mappings=[OFF=off, ON=on]
        Selection item=KWL_Partybetrieb_Stufe mappings=[0=off, 1="Stage 1", 2="Stage 2", 3="Stage 3", 4="Stage 4"]
        Selection item=KWL_Partybetrieb_Dauer mappings=[60="60 Minutes", 120="120 Minutes", 180="180 Minutes", 240="240 Minutes"]
        Text item=KWL_Partybetrieb_Restdauer
    }

Who sees the mistake? And can help me.


I found the bug myself. The example at gitHub is wrong. It must be called partyModeStatus and not PartyMode BTW Look very carefully in your table. A letter is missing. :wink:
And the same thing happened at … standbyMode | standbyModeStatus

WRONG:
Switch KWL_Partybetrieb 				"Partybetrieb" 													(KWL, KWL_save_cha) 											{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:partyMode"}
CORRECTLY:
Switch KWL_Partybetrieb 				"Partybetrieb" 													(KWL, KWL_save_cha) 											{channel="modbus:helios-ventilation-easycontrols:modbus-gateway:kwl:partyModeStatus"}

@bern77 Please adapt your description. :face_with_monocle: