Lennox icomfort

A WiFi controlled climate component with an API makes it feel like a good match for HA.

@ironlion27 are you looking for a component for the iComfort WiFi or the iComfort 30 series? I have a custom component for the iComfort WiFi that I use and my new goal is to make it an official component. Until then you can find my custom component at https://github.com/thevoltagesource/LennoxiComfort

3 Likes

Awesome! Thanks @tvs

This is really great! I’m new to HA, got it up and running quickly, and now I have a nice thermostat card on my home screen. I have 3 thermostats in my house and one has 3 zones, so maybe I can help with those areas. Thanks so much!

1 Like

Ya it’s the S30 model that seems to only have IFTTT but no actual API. Can’t figure a way to control them via HA.

holy crap. you’re a hero. thank you for this, @tvs! i had given up hope that i’d be able to control my icomfort thermostat from homeassistant, but you’ve done it! it works like a charm and is way faster than the myicomfort site or the awful icomfort android app.

I’m glad you are able to take advantage of it. I am usually running a bit behind on keeping my installation up to date so if you find an issue when upgrading please open an issue on the GitHub repo.

Besides the crazy effort to talk to the thermostat I am also irritated that it doesn’t report when the system is dehumidifying or tell me what stage the compressor is running at. So I am building a hardware device to monitor the compressor so I can track the that info in home assistant.

1 Like

isn’t it always dehumidifying when running in AC mode, and never dehumidifying while idle?

Sorry, confusion comes in with the terminology, mode vs state. Since this thermostat allows you to set a cool set point and a humidity set point, Lennox has cooling profiles that affect how the system runs based on what is needed at the moment. When the system is in cool mode, the system can go into one of three operating states, ‘system cooling’, ‘system cooling & dehumidifying’ or ‘system dehumidifying’. The thermostat reports those first two operating states to the cloud service as ‘cooling’ but the last state does not get reported to the cloud service at all. So, HA is limited knowing when the system is running for the purpose of cooling but is left in the dark is the system is running solely to dehumidify. I wanted to create an automation based on when the compressor last ran. Since I live in Texas on the gulf coast, my system runs in dehumidify mode a lot and the gap in data was keeping me from successfully implementing my automation.

The hardware I built allows me to directly monitor the signals to the compressor. So now I know every time the compressor turns on and how long it runs. It also allows me to track which stage my dual-stage compressor is running in. This is useful to see if the system is running like it should and because more data is always a good thing!

Hi All, I just got the myicomfort setup with hass.io and my thermostat. It is working well, however the one thing that is missing is the 2nd zone for my system. I tried to add zone = 0 and zone =1, however that is not allowed and neither is creating two climate keys. Is there a simple way of adding my second zone? Thank you in advance.

@elvisio33 - We got this all working for you now, right? I updated the readme on the repository to make this clearer for future users.

Everyone - This integration is now in the HACS. This makes installing (first time and updates) much easier. Major kudos to @ludeeus for such a cool interface and to @CyberGlitch for pointing out how I could make my integration available thru the store.

Multi-Zone Users - v2.1 uses an updated version of the backend API that fixes a bug where the managed zone would switch to zone 0 due to a malformed response from the cloud API.

1 Like

Hello Jacob,
Yes, thanks to you all is well and working beautifully and no thanks to Lennox! Happy holidays
!.
Thank you.
elviso33

This is great! I just started playing with HASS 3 days ago, and I’m still getting all my devices in before I start working on automations. I got your component added in, but I can’t for the life of me get it to accept my username and password for the lennox cloud API connection… In homeassistant.log I get:

2020-12-21 06:02:01 ERROR (SyncWorker_3) [myicomfort.api] Username or password incorrect.
2020-12-21 06:02:01 ERROR (SyncWorker_3) [custom_components.myicomfort.climate] Failed to connect to thermostat cloud API.

I added the cloud_apiusername and cloudapi_password to the secrets.yaml file, but no luck. I even changed my cloud password to remove special characters in case that was messing up the YAML parsing. I could use a little nudge in the correct direction. Thanks in advance!

-Pete

Hi Pete. First I want to confirm that you have the WiFi iComfort thermostat and you can control it with myicomfort.com and that you don’t have a S30/E30/M30 controlled through lennoxicomfort.com. While both are WiFi thermostats, because there are separate API stacks, my code can only manage the ‘WiFi iComfort’. If that is the one you have then i would suggest trying without using the secrets file first just to make it simple.

climate:
  - platform: myicomfort
    name: firstfloor
    username: jacob
    password: Password1
    system: 0
    zone: 0
    min_temp: 55
    max_temp: 90

Let me know if this helps.

Yes, I do go to myicomfort.com, and login with my credentials and control my thermostat. (NOT lennoxicomfort.com)

I will try that right now and let you know. Thanks for everything!

OK. I found my error. I had “cloud_svc: airease” which is what was on the github doc which I cut and pasted. I read it thoroughly this time, and change cloud_svc to lennox, and the login appeared to work.

So my Configuration YAML for climate now looks like this:

climate:
  - platform: myicomfort
    name: homeclimate
    username: Notme
    password: Obfuscated
    system: 0
    zone: 0
    min_temp: 55
    max_temp: 90
    cloud_svc: lennox

I was super excited. When I went to the integrations, I didn’t see anything in there, so I re-checked my home-assistant.log and it had the following error:

2020-12-22 00:09:21 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 619, in _update_entity_states
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 283, in async_update_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 322, in _async_write_ha_state
    attr.update(self.state_attributes or {})
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 258, in state_attributes
    if self.hvac_action:
  File "/config/custom_components/myicomfort/climate.py", line 226, in hvac_action
    return HVAC_ACTIONS[self._api.state]
IndexError: list index out of range

I rebooted the device, and this time it came up without any error in the home-assistant.log file, but still no sign of the new integration. I’ve tried another browser, tried it in incognito-mode, and cleared all browsing data to make sure it isn’t a caching issue. No luck.

Any help is greatly appreciated.
Sorry to be a pest, and thanks again!
-Pete

EDIT: I just noticed that the entity is there! Added a card to my dashboard and VOILA!
Thanks! You have been a great help for me. Your component is awesome!

Sweet! I’m glad it is working for you.

-Jacob

Thanks for the work on this…installation was quick and easy. I have been trying to find a way to automate a change in temperature based on time but having problems trying to sort out exactly what to include. Is this something that can be done with the myicomfort component you’ve written?

Thanks

Ray