Honeywell Lyric Thermostat

@shellster

Considering thermostats & found this thread along with your component. Thanks for your hard work!

What functions currently don’t work with the Lyric? Both heating & cooling work? Can display in celcius for everyone outside of USA? Any ongoing frustrations I should know about?

As far as I know, everything works. You can use Celsius, if you flip your thermometer to Celsius mode. It supports multi point heating + cooling. I’m working on merging it into the official repo, soon, but you can use the custom stand-alone version for now. If you do find issues, please let me know, via a GitHub issue. I am commiting to supporting this plugin.

I’m facing the same issue as @thetomas with a T6 thermostat model.
Enabling debug I get the following:

2020-01-01 02:44:11 DEBUG (SyncWorker_18) [custom_components.lyric.climate] climate config: {}
2020-01-01 02:44:11 DEBUG (SyncWorker_18) [custom_components.lyric.climate] Set up Lyric climate platform
2020-01-01 02:44:11 ERROR (MainThread) [homeassistant.components.climate] Error while setting up platform lyric
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 150, in _async_setup_platform
    await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/homeassistant/.homeassistant/custom_components/lyric/climate.py", line 71, in setup_platform
    LyricThermostat(device) for _, device in hass.data[DATA_LYRIC].thermostats()
  File "/home/homeassistant/.homeassistant/custom_components/lyric/climate.py", line 71, in <listcomp>
    LyricThermostat(device) for _, device in hass.data[DATA_LYRIC].thermostats()
  File "/home/homeassistant/.homeassistant/custom_components/lyric/climate.py", line 145, in __init__
    self.update()
  File "/home/homeassistant/.homeassistant/custom_components/lyric/climate.py", line 194, in update
    for key in self.device.settings["fan"]["allowedModes"]:
KeyError: 'fan'

It looks this model only supports heating and off, but not any allowed fan value:

'allowedModes': ['Heat', 'Off']
'changeableValues': {'mode': 'Heat', … 
… 'deviceModel': 'T5-T6'}],

So these lines seem buggy:

        for key in self.device.settings["fan"]["allowedModes"]:
            self._fan_modes[key.lower()] = self._fan_possible_modes[key.lower()]

While these ones seem correct for this T6 model:

        for key in self.device.allowedModes:
            self._hvac_modes[key.lower()] = self._hvac_possible_modes[key.lower()]

I’ve just commented the following lines and my T6 thermostat is shown in HA:

#        self._fan_modes = {}

#        for key in self.device.settings["fan"]["allowedModes"]:
#            self._fan_modes[key.lower()] = self._fan_possible_modes[key.lower()]

#        self._fan_mode = self._fan_modes[self.device.fanMode.lower()]

#        self._supported_features |= SUPPORT_FAN_MODE

Now using HA the thermostat mode can be changed between heating and off. Temp setpoint can also be adjusted successfully. HA log shows the changes:

2020-01-01 04:28:18 DEBUG (SyncWorker_14) [custom_components.lyric.climate] Lyric set_temperature-output-value=18.0
2020-01-01 04:28:25 DEBUG (SyncWorker_5) [custom_components.lyric.climate] Lyric set_temperature-output-value=17.0
2020-01-01 04:28:35 DEBUG (SyncWorker_9) [custom_components.lyric.climate] Lyric set_hvac_mode-output-value=Off
2020-01-01 04:28:54 DEBUG (SyncWorker_19) [custom_components.lyric.climate] Lyric set_hvac_mode-output-value=Heat

BTW @shellster Issues seems unavailable for your lyric fork repository in GitHub. Let me know if you need further testing

Thanks. I’ll fix it when I get back from holiday travels, and report back here. Appreciate the feedback. Especially for those with similar, but different thermostats from my own.

Hi Guys,
I am new to the HA. So I have no explanation for the following, any help would be hugely appreciated.

About 10 days ago, installed HA on a Pi3. It instantly found T6 and a few other devices. HA communicated with T6 out of the box and I had to perform no configuration what so ever (apart from pairing). They all (including T6) worked just fine, i.e. have had their components on the overview page and could control them all remotely.) Then I had to reimage and that is where the problem started. The new image could not see the T6 at all. Have tried so many things with no joy. It only appeared once on the HA notification and the pairing was NOT successful.
As said I am new to HA and not sure how come one image can find the device but the very same image (on another SD) fails to communicate with the T6!
Thanks
Amir

If I had to guess (but not sure) the original HA discovered the T6 using the Homekit plugin and not this plugin that this thread is referring too.

The Homekit plug for Honeywell in is deprecated but still works (Honeywell Lyric thermostat with Homekit_controller(Deprecated)).

If you want the T6 to be rediscovered by the new instance using Homekit, I believe you need to reset the T6 https://www.honeywellhome.com/en/questions/how-do-i-reset-my-honeywell-home-device#homekit

I actually use both, because a big plus with using Homekit is that it talks with the thermostat directly, not cloud services.

you need to reset the T6. Its still paired with the old ha install, thats why you cannot see it.

@ski522 , @Wim_L

Many thanks for your help and support. That did the trick.
This community rocks :wink:

Hello.
I have been all over this thread all day trying to figure out what to do to correct this ; 500 Internal Server Error

Server got itself in trouble.

I even installed the HACS and used the automatic install of lyric integration but I still get the same error when I try to configure.
Any suggestions?

Chas

If memory serves you’ll see this if you use your public WAN IP instead of the LAN IP your Lyric has.

Tried setting this up for my Honeywell T9’s. I am currently stuck at the ‘500 Internal Server Error’.
My Home Assistant version - 0.104.2
My Callback URL is: http://10.99.99.37:8123/api/lyric/authenticate
My Base URL is: http: base_url: http://10.99.99.37:8123

My API client ID and Secret are in configuration.yaml

I have setup a folder with the following path:
config/custom_components/lyric

Inside the lyric folder I have:
init.py
climate.py
manifest.json
services.yaml

The above came from https://github.com/shellster/lyric version 1.0.4

Any tips/ suggestions / pointers welcome?

If you’re running HA using https, then you need to use https in the callback URL as well, I know that has tripped people up in the past.

As of right now its plain HTTP

OK My 500 error was caused by line 198 of init.py. Changed data = request.get to data = request.query. I am now stuck here:

The following integrations and platforms could not be set up:

  • lyric.climate

Please check your config.

@smithtec That ip address you are using is how you access your system from outside? Your callback address should be something the Honeywell site can connect to. Ip addresses starting with 10 seem to be internals…

@shellster

Would be possible to enhance this custom component to show the current state of the fan? I always have the fan_mode set to Auto and would like to know when the fan is actually running. I think that information is available in the response received from Honeywell site (I may be wrong).

Thanks for putting this together!

The network requirements/network topology needed to make this work doesn’t seem to be documented. This seems to have raised a number of questions.

From the comments here it looks like you need to enter an HTTPS (SSL) URL for your home assistant installation into the Honeywell developer site.

Is SSL required?

If so, does a self signed SSL cert work?

But it’s not clear what will be using that HTTPS URL to connect to Home Assistant. Is it the Honeywell (cloud) servers, or is it the thermostat it self?

If it is the Honeywell (cloud) servers, I believe the requirements are:

  1. Your home assistant install needs to be exposed (accessible) from the Internet (so you need to open a port for it on your router, etc.)
  2. Your home assistant install needs to be https, so you need an SSL certificate.

If it is the thermostat itself that connects to Home Assistant, then external connectivity isn’t required, but an SSL certificate would still be needed if only HTTPS is supported.

Thanks to everyone who has worked on this.

I’ve hopefully fixed the fan issues reported above in the custom_component. Also resubmitted a PR to homeassistant: https://github.com/home-assistant/home-assistant/pull/31387

To the question about the fan stuff: There doesn’t appear to be a good way to display that info that is baked into the home-assistant widget. At least I don’t know how to do it. If you click the three dots at the top right, you can set the fan, and see the current status. The fan settings are pretty limited, and the API from Honeywell doesn’t give you a lot of fan status updates, so I’ve done the best I can.

I’m now on HA 0.104.3 and have had the native homekit controller component working flawlessly for a couple of weeks (no custom component).

There has been a lot of work done on the homekit component, and my thermostat (Lyric T5) seems to be supported now.

I simply reset the homekit pairing on the thermostat and used the HA front end to add it. Worked perfect first try.

For anyone not familiar, this allows for local control and sidesteps all the Honeywell api issues folks have had.

Hi shellster, I updated to your from the previous release (Dec 24) to your new changes you pushed last night and now I can’t connect to my T9. Any tips? I am asked to reconnect my Honeywell Dev account and it finishes successfully on the website. However, after I’m instructed to close my window, configurator is giving me this error: Failed to configure, please try again.