Honeywell Lyric Thermostat

Sorry, no time yet…

Oke then we will have to wait :wink:

Hi all :slight_smile:
i’m trying to set up the lyric in hassio but when i click “Request Authorization” i get this error: {“code”:400, “message”:“The redirect URL provided does not match the redirect URL registered for the app.”}.

Is this plugin working stable for people now? If so could someone post the updated install method with updated links for downloads please. I have read through the thread several times but always get lost.

It’s seems stable for me and on latest version of HA, I recall following this post to get it installed.

Great! Thanks so much!
And thanks to bram and everybody that has contributed to this project and all the other projects available for home assistant.

Hi, i have this problem: when i select my lyric thermostat i get : 505 internal server error.

here the log error:

Error handling request
Traceback (most recent call last):
File “/usr/local/lib/python3.6/site-packages/aiohttp/web_protocol.py”, line 406, in start
resp = await task
File “/usr/local/lib/python3.6/site-packages/aiohttp/web_app.py”, line 435, in _handle
resp = await handler(request)
File “/usr/local/lib/python3.6/site-packages/aiohttp/web_middlewares.py”, line 120, in impl
return await handler(request)
File “/usr/local/lib/python3.6/site-packages/homeassistant/components/http/static.py”, line 66, in staticresource_middleware
return await handler(request)
File “/usr/local/lib/python3.6/site-packages/homeassistant/components/http/real_ip.py”, line 34, in real_ip_middleware
return await handler(request)
File “/usr/local/lib/python3.6/site-packages/homeassistant/components/http/ban.py”, line 67, in ban_middleware
return await handler(request)
File “/usr/local/lib/python3.6/site-packages/homeassistant/components/http/auth.py”, line 99, in auth_middleware
return await handler(request)
File “/usr/local/lib/python3.6/site-packages/homeassistant/components/http/view.py”, line 118, in handle
result = await result
File “/usr/local/lib/python3.6/asyncio/coroutines.py”, line 212, in coro
res = func(*args, **kw)
File “/config/custom_components/lyric.py”, line 201, in get
data = request.GET
AttributeError: ‘Request’ object has no attribute ‘GET’

I get the following error after pressing request authorization and logging in the honeywell page.
The page url is http://192.168.1.122:8123/api/lyric/authenticate?code and I have also tried it with secute (https). Any idea’s?

500 Internal Server Error

Server got itself in trouble

Error log

9-01-29 16:33:30 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.5/site-packages/aiohttp/web_protocol.py", line 406, in start
    resp = await task
  File "/usr/lib/python3.5/asyncio/futures.py", line 380, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.5/asyncio/tasks.py", line 304, in _wakeup
    future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
    raise self._exception
  File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "/srv/homeassistant/lib/python3.5/site-packages/aiohttp/web_app.py", line 435, in _handle
    resp = await handler(request)
  File "/srv/homeassistant/lib/python3.5/site-packages/aiohttp/web_middlewares.py", line 120, in impl
    return await handler(request)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/http/static.py", line 66, in staticresource_middleware
    return await handler(request)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/http/real_ip.py", line 34, in real_ip_middleware
    return await handler(request)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/http/ban.py", line 67, in ban_middleware
    return await handler(request)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/http/auth.py", line 99, in auth_middleware
    return await handler(request)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/http/view.py", line 118, in handle
    result = await result
  File "/usr/lib/python3.5/asyncio/coroutines.py", line 210, in coro
    res = func(*args, **kw)
  File "/home/homeassistant/.homeassistant/custom_components/lyric.py", line 201, in get
    data = request.GET
AttributeError: 'Request' object has no attribute 'GET'

I assume 192.168.1.122 is the IP address of HA and not your T5?

I actually just start getting rate limit errors from the API, so all of a sudden mine has stopped working in HA.

I have turned off the module for a short while to see if it clears…first time I’ve had trouble with the App since I got it working back in Nov.

I will say it’s not the easiest app to get going and I think some changes were made to the to python files that needed to be used per Honeywell Lyric Thermostat

I got past the 500 error by inserting a slash ‘/’ after authenticate. I also did not have ?code at the end. That said, my errors read almost exactly like yours. The only difference is that the line numbers are different.

Using a browser I see this
https://192.168.86.53:8123/api/lyric/authenticate gave me the 500 error
https://192.168.86.53:8123/api/lyric/authenticate/ gave me the 404: Not Found
https://192.168.86.53:8123/api/lyric/ gave me the 404: Not Found
https://192.168.86.53:8123/api/ gave me the 401: Unauthorized
https://192.168.86.53:8123/ displays my HA login screen

Later in the day …

I switched to the py files in this post: (Honeywell Lyric Thermostat - #437 by cheelio) and my HA errors went away. I now just have a warning about the fact that I’m using ‘lyric’ code that has not been tested by HA developers which is to be expected.

However, HA now returns the following error whenever I try to configure the lyric device

   code:   400
   message:   "The redirect URL provided does not match the redirect URL registered for the app."

I’ve given Honeywell’s API the following call-back link: https://xxxxxx.duckdns.org:8123/api/lyric/authenticate/ which translates to https://192.168.86.53:8123/api/lyric/authenticate/ on the local network. As noted above, when I use that URL in a browser it returns a “404: Not Found” error. That makes me wonder if something is missing on the HA end.

Thanks for creating this component! :smile: I had some trouble configuring it because my base_url is set with a trailing slash and this was causing a double slash in the url.

I fixed this via PR#1 (Although that fixed the url issue for me it didn’t fix the configuration of the component itself. I had to use Cheelio’s code for that. (Same PR will work for it)

Lyric yaml is simple and set up for debugging purpose:

lyric:
  client_id: !secret lyric_client_id
  client_secret: !secret lyric_client_secret

logger:
  default: error
  logs:
    custom_components.lyric: debug
    custom_components.climate.lyric: debug

I had to use my private IP of HA at Honeywell’s API, not your public.

Thanks, I finally got by the Honeywell authentication. Both the base IP and Honeywell had to be configured with the private IP address.

The only problem I now have is that “Fan mode” is greyed out. The main reason I purchased a Honeywell thermostat was that I wanted to automate the fan control. I have a two story house, and sometimes the first floor is too cold while the second floor is too warm. When that happens, I want to automatically turn on the fan to even things out.

Does anyone have an idea for how to activate the fan mode control?

I took a look at custom_components/lyric.py. it appears to view fan mode as a boolean. My thermostat has three fan modes: “auto”, “circulate”, and “on”. I don’t program in Python, but I’d guess that’s part of the problem.

Btw: If anyone is counting, I have a Lyric T6Pro and I can control both heat and cool modes now.

Can you clarify what you meanwith the base IP and Honeywell?

The Honeywell Callback URL as shown in the post by ski522, and the “base_url” specified in the "http: section of Home Assistant’s configuration.yaml. Both must be the private IP address.

Hey guys,

I was able to get through initial setup. The front end displayed the intial thermostat values correctly, but everytime I change a value it is unresponsive and I get the following in the HA log:

HTTP Error Lyric API: 400 Client Error: User Input Error for url: https://api.honeywell.com/v2/devices/thermostats/LCC-B82CA00F315E?locationId=890140&apikey=sF8cgw6b7JiEv9reiDqRZYadeErsVwpt

Any thoughts?

I have connection and indeed. The temperature was set on 18 Celcius. I set it to 17.5 and the lyric lightsup and changed to 17.5. Change to higher or lower value only thing is that the lyric lightsup but stays on 17.5

Update: After serveral reboots of the raspberry pi it is stable.

I’m not sure what was going on last night but it’s working great today.

I had the same errors occurring, not sure what the problem is. But it seems to need one more reboot to fix it.

Haven’t taken a look at it yet, maybe there is no config file or thermostat info and it errors out that way.

Here is a summary of the installation steps for those who follow:

If you find any errors, please send me a message and I will amend the text. This summary summarizes the work of @Bram_Kragten, @cheelio, @ski522 and others who blazed the trail.

Part 1: Obtain client key & secret from Honeywell

  1. Visit Honeywell Developers , and sign in. Create an account if you don’t have one already.
  2. Fill in account details.
  3. Submit changes
  4. Click “My Apps ” at top of page, under your account.
  5. Click “Create New App
  6. Fill in details:
  1. Click “Save Changes”
  2. On the apps page, click on the just created app.
  3. The “Consumer Key” and “Consumer Secret” are shown now. Be sure to copy these fields before you leave the Honeywell site. You’ll need to insert them into the configuration.yaml or secrets.yaml file.

Part 2: Download Lyric files and install them in Home Assistant

The “custom_components” folder must exist in the same Home Assistant root folder … where your configuration.yaml resides. Custom_components must contain a subfolder named “climate”. Copy the lyric.py files to these folders based upon the file-path notated in the link names.

Part 3: Modify Home Assistant YAML files:

  1. Store the key and secret that you obtained from Honeywell in your secrets.yaml file. example below:
        lyric_client_key: kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
        lyric_client_secret: ssssssssssssssssssssssss
  1. Add the Lyric Thermostat to your configuration.yaml file. example below:
###############################################
#         Honeywell Lyric Thermostat          #
###############################################
lyric:
  client_id: !secret lyric_client_key
  client_secret: !secret lyric_client_secret
  1. Check “base_url” in your configuration.yaml. To authenticate with Honeywell, your “base_url” must concatenate with “/api/lyric/authenticate” to produce the “Callback URL” that you registered with Honeywell.
###############################################
#                    http                     #
###############################################
http:
  base_url: https://192.168.1.215:8123

Part 4: Reboot Home Assistant

After a reboot, Home Assistant should present a card to configure the Lyric Thermostat. You will be asked to authenticate with the Honeywell Developer’s site, and ultimately, the Home Assistant front-end should display a Climate card for the Lyric Thermostat that will look something like:

Lyric%20Card

Known issues:

  • Lyric fan controls are not currently supported
  • Lyric outdoor temperature sensors are not currently supported
  • Lyric indoor humidity sensor is not currently supported
  • Advanced features, like the control of dual heating systems are not supported.
3 Likes