Helios Binding for Modbus TCP

Hi,

first of all: many thanks for the binding! Works really good. But today i found this warning in the logs:

2020-12-04 09:38:30.774 [WARN ] [s.internal.HeliosEasyControlsHandler] - HeliosEasyControlsHandler encountered Exception when trying to update property: Illegal value for variable heatExchangerType: 3

Looking into the documentation it looks like there is something wrong:

From the binding doku:

heatExchangerType Heat exchanger type (0 = plastic, 1 = aluminium, 2 = enthalpy)

And from the helios doku https://www.easycontrols.net/de/service/downloads/send/4-software/16-modbus-dokumentation-f%C3%BCr-kwl-easycontrols-ger%C3%A4te page 10 the heat exchanger type (Wärmetauschertyp) starts with the key 1 and ends with 3. Is there a possibility to change this in a config?

br
markus

Hi,
thanks for the info on this bug. I’ve created an issue and just submitted a PR for the corresponding changes that should fix this.

Many thanks Bernhard!

br
markus

hello guys, first of all thank you very much for this post. he has already helped me a lot. i own a helios 300w ec. connected via lan rj45 and the remote controls are connected via rj12. I have created the thing helios-easycontrols according to Helios easyControls - Bindings | openHAB. The Modbus binding is also installed and correctly created (enableDiscovery). Both are online in the paperui under things. there is no error message in the openhab2 log viewer. However, no values are displayed in the basicui. if i change values in the basicui, these are not implemented in the helios kwl. the changes are in the log. What did I do wrong? I am using OH 2.5.11 and rrd4j persistence. Thank you

Hi @Peter85, it would help if you share your thing and item configuration

Can you please format the code Auto highlighting/formatting on code blocks in posts

Bridge modbus:tcp:modbus-gateway "Modbus TCP/IP Gateway" [ host="192.168.178.55", port=502, id=180, enableDiscovery=true ] {

    Thing helios-easycontrols kwl "KWL"

}
//KWL Lüftungsanlage

// Manual operation

Number KWL_Manual                        "Manual operation"                          <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#operatingMode"}

Number KWL_Stage                         "KWL fan stage"                             <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#fanStage"}

Number:Dimensionless KWL_Stage_Percent   "KWL fan stage [%d %unit%]"                 <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#percentageFanStage"}

// Party mode

Switch KWL_Party_Mode                    "Party mode"                                <parents>     (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeStatus"}

Number KWL_Party_Mode_Duration           "Party mode duration"                       <clock>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeDuration"}

Number KWL_Party_Mode_Stage              "Party mode fan stage"                      <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeFanStage"}

Number KWL_Party_Mode_Remaining          "Party mode remaining time [%d min]"        <clock>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#partyModeRemainingTime"}

// Standby mode

Switch KWL_Standby_Mode                  "Standby mode"                              <fan_off>     (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeStatus"}

Number KWL_Standby_Mode_Duration         "Standby mode duration"                     <clock>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeDuration"}

Number KWL_Standby_Mode_Stage            "Standby mode fan stage"                    <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeFanStage"}

Number KWL_Standby_Mode_Remaining        "Standby mode remaining time [%d min]"      <clock>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:operation#standbyModeRemainingTime"}

// Status infos

Number:Temperature KWL_Temp_Outide_Air   "Temperature outside air [%.1f °C]"         <temperature> (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureOutsideAir"}

Number:Temperature KWL_Temp_Supply_Air   "Temperature supply air [%.1f °C]"          <temperature> (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureSupplyAir"}

Number:Temperature KWL_Temp_Outgoing_Air "Temperature outgoing air [%.1f °C]"        <temperature> (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureOutgoingAir"}

Number:Temperature KWL_Temp_Extract_Air  "Temperature extract air [%.1f °C]"         <temperature> (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#temperatureExtractAir"}

Number KWL_Supply_Air_RPM                "RPM supply air [%d]"                       <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#supplyAirRpm"}

Number KWL_Extract_Air_RPM               "RPM extract air [%d]"                      <fan>         (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#extractAirRpm"}

Number KWL_Filter_Change                 "Filter change [MAP(helios_yes_no.map):%s]" <none>        (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:unitConfig#filterChange"}

Number KWL_Filter_Change_Remaining       "Filter change [%d %unit%]"                 <clock>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#filterChangeRemainingTime"}

Number KWL_Errors                        "Number errors [%d]"                        <error>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfErrors"}

String KWL_Errors_String                 "Error messages [%s]"                       <error>       (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#errorsMsg"}

Number KWL_Warnings                      "Number warnings [%d]"                      <warning>     (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfWarnings"}

String KWL_Warnings_String               "Warning messages [%s]"                     <warning>     (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#warningsMsg"}

Number KWL_Infos                         "Number infos [%d]"                         <info>        (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#noOfInfos"}

String KWL_Infos_String                  "Info messages [%s]"                        <info>        (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#infosMsg"}

DateTime KWL_Datum                       "KWL Date and time [%1$td/%1$tm]"           <calendar>    (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#sysdate"}

Switch KWL_Bypass                       "KWL - Bypass offen"                        <switch>        (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:general#bypassStatus"}

DateTime KWL_Bypass_von                 "Bypass von [%1$td/%1$tm]"                  <calendar>      (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:unitConfig#bypassFrom"}

DateTime KWL_Bypass_bis                 "Bypass bis [%1$td/%1$tm]"                  <calendar>      (RRD4J,gKWL) {channel="modbus:helios-easycontrols:modbus-gateway:kwl:unitConfig#bypassTo"}

From a first look at your configuration I don’t see anything off with it. If the things are both online in PaperUI the communication with the device per se should work.
I think it’s best to try removing all but one item from the items file and see if you can get this to work, then add items to mabye identify the issue.

Do you see the device’s properties in PaperUI? (e.g. dateFormat or articleDescription).

Does it work with OH3?

many thanks @bern77 I’ll try it out like you wrote. where exactly should i look in the paperui? I haven’t tried it in the OH3. I got an error message after switching off the thing kwl and then switching it on again:

2020-12-30 17:56:37.541 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 1/1 error: Connection refused (Connection refused). Connection TCPMasterConnection@1e8129c[socket=Socket[unconnected]]. Endpoint ModbusTCPSlaveEndpoint@fff6aa[address=192.168.178.55,port=502]

2020-12-30 17:56:37.542 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - re-connect reached max tries 1, throwing last error: Connection refused (Connection refused). Connection TCPMasterConnection@1e8129c[socket=Socket[unconnected]]. Endpoint ModbusTCPSlaveEndpoint@fff6aa[address=192.168.178.55,port=502]

2020-12-30 17:56:37.543 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - Error connecting connection TCPMasterConnection@1e8129c[socket=Socket[unconnected]] for endpoint ModbusTCPSlaveEndpoint@fff6aa[address=192.168.178.55,port=502]: Connection refused (Connection refused)

2020-12-30 17:56:37.544 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Could not connect to endpoint ModbusTCPSlaveEndpoint@fff6aa[address=192.168.178.55,port=502] -- aborting request ModbusWriteRegisterRequestBlueprint@1207c57[slaveId=180,reference=1,functionCode=WRITE_MULTIPLE_REGISTERS,registers=ModbusRegisterArrayImpl(76 30 32 31 32 39 00 00),maxTries=5] [operation ID cfd33572-7509-4b5d-8849-031f967173b8]

Good morning @Peter85,

since I’ve already migrated to OH3 I can’t post a screenshot. But if you view the KWL thing’s details, there should be ‘Properties’ section you can expand. If these properties are filled with meaningful contents this is also proof that the communication with the device works, so the problem must be in the items definition.

If you get an error of ‘connection refused’, are you certain you have the correct IP address for your device?
I can reproduce such an error if entering the wrong IP address… Generally I think it would be best to assign a static DHCP lease to your device to rule out communication issues on this level.

Hey @ bern77, thanks for your message. I looked for ‘Properties’ under things KWL. These are not available to me. For other things I can choose “show properties”. I just “logged” an item. Can you do something with that?
grafik
It is the correct IP of the Helios KWL EC300. I have a password for online operation. Is that required for OH?

The item info from the REST API also shows that the state of the item is NULL, i.e. no update from the device was received.

You shouldn’t need a password if you use the Modbus/TCP interface.

Did you activate the modbus interface in the device’s web interface? In my case it is under configuration / device (don’t know the exact wording in English since I’m usig it in German).

Hey Bernhard, happy new year! These are my configurations in the web interface.


grafik

Bridge modbus:tcp:modbus-gateway "Modbus TCP/IP Gateway" [ host="192.168.178.55", port=502, id=180, enableDiscovery=true ] {

    Thing helios-easycontrols kwl "KWL"

}

On the remote control KWL-BEC in the service menu, the IP address is 192.168.178.055.

Hi @Peter85,
happy New Year to you too!

Very strange, I use the exact same settings.

My guess would still be that the problem is somewhere in the networking rather than the OH config. If you get an error of ‘connection refused’ maybe the KWL’s IP address / port can’t be reached from openHAB. Are OH and the KWL in the same subnet? Are there any firewall rules which could prevent communication?

Another thing could be the KWL’s software version. The Modbus TCP specification indicates a minimum version of 2.01. Can you please check this in your system configuration?

1 Like

I just switched to OH4 and Helios binding is not working any longer.

I’ve set via UI:
IP Address: http://192.168.50.100/
Port: 502
ID: 180
Discovery: On

Then created the easy controls binding.
Nothing to set up here.

I do not reveice any values.

a) Log-Viewer does not state any errors.
b) all bindings are online (green)
c) Helios KWL EC 370 W with Modbus activated.

Any suggestiions on deep diving to an error statement?

Just got a message in logviewer:
[s.internal.HeliosEasyControlsHandler] - HeliosEasyControlsHandler encountered Exception when trying to read variable refNo from the device: null

You also have to configure at least the KWL’s IP address for the HeliosEasyControl binding (without a protocol).
You could also try to configure your Bridge and Thing based on a text file, following the documentation here: Helios easyControls - Bindings | openHAB

So here some screenshots:
Things:

Bridge:

KWL:

Nothing to set in KWL thing.
Using text file in a version with parity via UI sounds weird…

Please specify the IP Address without the protocol, i.e.

192.168.50.100

Jesus, yes, true mistake. Copied from Browser URL (http) is hidden but copied.

But still after correcting my mistake, I did not receive any values.

Last hope and solution: Deleting the easycontrols thing and re-created it.
Now I receive values again.

Thx a lot.

Continuing the discussion from Helios Binding for Modbus TCP:

Hello,

I am having difficulties with reading via Modbus. In the case below, I wanted to read the outside temperature:

Ping is okay.

Mbe driver: