Lennox iComfort S30/M30/E30 binding

I think at this point I’m ready to present working demo of binding for Lennox iComfort S30 thermostat. This binding works only with new Lennox thermostats (not WiFi model, I don’t have that model anymore but my old binding should still work if needed).

This release is a working demo which I’m currently testing myself and would welcome anybody wishing to use it and provide feedback. Only limited functionality is available at the moment, additional channels planed and will be added in the future, please request what kind of channels / functionality you want to see to be included.

Few words about internal operation of the binding. Only local connections are supported (currently I don’t have plans to include cloud connection, if needed please provide justification, I don’t see requirements for that). Binding works by requesting data messages from the system and parsing them, however I can request a message, it comes randomly and could be a slight delay with presented information (in case it was changed directly on thermostat / app).

On the first run binding will generate APP ID and save it, it is recommended to re-use that ID in case of configuration wipe. In my testing on the first run after ID was generated binding failed to connect to the thermostat system, seems like binding restart fixed that. I’m currently trying to determine why so if this happening to you please provide log and restart the binding.

Not all internal logic is implemented yet, so possible you experience some unwanted results especially with schedules, again please provide debug logs and I’ll be working on polishing the code.

Current JAR file is available here:

Code in the repository here:

My current goal is to polish the code and add required functionality to add binding to the marketplace for a wide audience.

Final note: API is not available from Lennox and everything is based on reverse engineering by me and PeteRager creator of original api code in python: GitHub - PeteRager/lennoxs30api: API for communication with Lennox S30 / E30 climate controls using Lennox cloud or local connection I’m very grateful for his work!

I am thrilled to see this!
I will be trying this out, time permitting. I have a Lennox S30, 2 zones.
Is there a way to know if the fan is running when in circulating mode?

I wish to thank Konstantin_Panchenko for his excellent work on this binding. I very much appreciate having this binding available. It’s nicely thought out.

I’ll share my fresh eyes experience in the hopes this can help move this along from alpha to beta to production.

Implementation - I followed the process under “Openhab Bundle Management”.

bundle:install https://github.com/kpanchen/org.openhab.binding.icomforts30/releases/download/3.4.0_b/org.openhab.binding.icomforts30-3.4.0-SNAPSHOT.jar
bundle: list
I had to restart the process: bundle:restart ###

I configured the Bridge then zones. Note: Zones start at 0 for the binding and 1 on the S30 panel. I missed that in the docs the first pass. I added 2 zone Things.

All Things connected.
I created items for all the channels and added them to a development sitemap.


Changing the set points and watching the thermostat, the changes happen quickly. However, the openhab Item values are slow to show the changes. They flip back to the original and eventually get updated. Sometimes not.

The zone status is also slow to reflect the heat is going until a minute or 2 of fan activity. I found that refreshing the screen seemed to speed this along. Not sure why that would be. It might just be coincidental.

There is also a delay when reporting the system status or set point changes made at the thermostat. I changed one zone setpoint on the thermostat, which never updated openhab. I watched a zone go thru an entire heating cycle without updating the status. I wonder if there’s some trigger to start an openhab channel update that is not working?

There’s an error in the sitemap example for “Away”. The mapping caused errors. I removed the mapping and it worked great, quick and reliable.

I restarted the iComfort process via ssh login, waited for the things to connect then tried changing a zone setpoint. It took 2 clicks for the sitemap to accept the change, but the thermostat never updated. After about 3 minutes, it started working again. Setpoint quickly updated the thermostat but did not update the openhab Item to that value. I tried again, and it worked on both. Tried again, and only worked to update the thermostat.

I will play with this a bit more. If there are things I should try to get more reliable results, please let me know.

Side note - I have been using the openhab-to-AmazonEcho-to-Lennox interface to make HVAC changes. I have found this process unreliable so I built a rule that initiates the change from the sitemap and repeats it until it becomes confirmed. Most of the time I use the thermostat or mobile app to manage the HVAC.

I hope to use this binding to integrate with other automation. I’d like to run my ceiling fans to help circulate the HVAC heating or cooling.

One feature that would be a nice add to the binding is to report when the fan is circulating air.

Thank you for such detailed response and testing, really appreciate it.

There’s an error in the sitemap example for “Away”

Classical copy/paste issue, another one was in Operation Mode mappings, fixed.

There is also a delay when reporting the system status

Yes, unfortunately this is the nature of Lennox implementation, it is not possible to request update from the system. The way it works you need to subscribe to a certain messages and system will provide update at a random time. Currently the only way to speed up update is to ask system for messages more often (“Pump Interval”) and update Front End (“Refresh Interval”). I have some ideas how that could be speed up but requires a major changes in the way “message pump subscription” works.

I’ll try to implement this after “logon timeout” issue I’m currently working on resolved, this issue is impacting the whole binding functionality when it is saying thing is on-line but communication with the device already lost and no data exchange happening at all.

Again thank you for testing and if possible enable debug logging and provide log.

I set debug and posted the logs.

At around 8:51am, I changed the upstairs zone setpoint and all worked correctly. However, it changed the fan mode from auto to circulate. I tried repeatedly to change that back to auto. Each time, it changed back to circulate. Looking at the thermostat, the setpoint change started a hold which might be the reason the change back to auto gets overridden. I canceled the hold at the thermostat but the fan stayed on circulate. At 9:08am, I tried to change to auto and it reverted again.

Around this time, the thermostat dropped to one zone and reported status as System with only one zone. I toggled the thermostat zones ON/OFF to off then on and it went back to 2 zones.

I hope the logs helps.
debug.log (417.8 KB)

Another enhancement request - Add a channel for outside temperature.

Thank you, I’ll have a look. At the moment I don’t support scheduling, want to polish major functionality first. Also I have only one zone so might need more help with testing for multiple zones.

Add a channel for outside temperature.

Thanks, put this on the radar.


More testing … debug log uploaded

2/26/23 9:24am - changed zone 1 (upstairs) temp setting in OH by lowering a few degrees. HVAC failed to change.
9:25am - changed zone 0 (downstairs) temp setting in OH, HVAC failed to update
9:26am - Changed HVAC thermostat zone 1 from 64 to 63 degrees, did not update OH
9:27am - Changed zone 1 fan from circulate to auto in OH. It flipped back in about 15 sec. No change to HVAC.
9:28am - Changed zone 1 fan from circulate to auto on HVAC thermostat - change remained on thermostat but failed to update OH

from 9:47am - more tests:
OH changed zone 1 temp setting - failed to update HVAC
Changed zone 0 OH temp setting - HVAC temp did change!
Changed zone 0 temp setting at HVAC thermostat and OH got updated!
Changed zone 1 temp setting in OH from 64 to 62, HVAC did not update
Changed zone 1 temp setting at HVAC thermostat 64 to 62, OH did not update
oh.log (195.2 KB)

Sometimes the updates to temps in OH work and sometimes not.
Sometimes the updates to temp settings on HVAC thermostat update OH and sometimes not.
The fan mode changes never seem to work.
Away seems to work reliably.
Status seems to work reliably (HVAC_HEATING).

Today, I tried to reinstall to see if any code changes occurred. I started getting a warning in the log:

No Client EndPointIdentificationAlgorithm configured for Client@2c75210d[provider=null,keySt

I checked the appID to make sure it was the same as last. It was. I restarted Openhab and the bundle would not start. I restarted the bundle and it started working but gave the same error message.

Attached is the debug log for the OH restart and bundle restart. I changed the appID in the log for security.
oh restart.log (235.8 KB)