Honeywell Lyric Thermostat

Thank you so much! I will do that. You rock!

I am running Hassio 0.52.1 and I have two of these Honeywell t6 pro thermostats:

I am a noob but wannt to get these setup using this method that was created.

  1. Is there a hassio addon created for this?
  2. Will these steps created by @Bram_Kragten, work with this setup?

You donā€™t need an addon, this is just a Home Assistant component.

You can just use the normal setup, create a custom_components folder in your config directory and follow the steps.

@all
There are no more errors reported, so I guess everything is fine? Will create a PR soon.

Ok thanks Bram, I will tackle it when i get home. Thanks for getting back so fast!

@Bram_Kragten Thanks for the advice. I am really wanting to get this to work.

I created the folders ā€œ\HASSIO\config\custom_componentsā€ and ā€œ\HASSIO\config\custom_components\climateā€

I then followed the instructions Honeywell Lyric Thermostat

Which had links to the two files to put in the newly created folders. Which generated a little confusion as to if I should be using the folder name ā€œcustom_componentsā€ or ā€œcomponentsā€
but I stuck with ā€œcustom_componentsā€ like you said.
I created the honeywell app with http instead of https and my ip n the link and replaced CLIENT_ID and CLIENT_SECRET with the values generated by the honeywell site.

I get the configurator and get it configured and the ā€œClimateā€ window pops up with my Two thermostats but then it doesnā€™t update themā€¦ I see the services being calledā€¦but it doesnā€™t ā€œtakeā€

I get this error in my logsā€¦

2017-08-31 19:24:38 ERROR (MainThread) [homeassistant.components.climate] Error while setting up platform lyric
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/homeassistant/config.py", line 273, in load_yaml_config_file
    conf_dict = load_yaml(config_path)
  File "/usr/lib/python3.6/site-packages/homeassistant/util/yaml.py", line 67, in load_yaml
    with open(fname, encoding='utf-8') as conf_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/custom_components/climate/services.yaml'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/homeassistant/helpers/entity_component.py", line 164, in _async_setup_platform
    SLOW_SETUP_MAX_WAIT, loop=self.hass.loop)
  File "/usr/lib/python3.6/asyncio/tasks.py", line 352, in wait_for
    return fut.result()
  File "/usr/lib/python3.6/asyncio/futures.py", line 244, in result
    raise self._exception
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/climate/lyric.py", line 81, in setup_platform
    path.join(path.dirname(__file__), 'services.yaml'))
  File "/usr/lib/python3.6/site-packages/homeassistant/config.py", line 276, in load_yaml_config_file
    getattr(err, 'filename', err)))
homeassistant.exceptions.HomeAssistantError: Config file not found: /config/custom_components/climate/services.yaml

followed by these errors when I try to change itā€¦

2017-08-31 19:30:26 ERROR (SyncWorker_3) [lyric] Error Lyric API: 400 Client Error: User Input Error for url: https://api.honeywell.com/v2/devices/thermostats/LCC-00D02DC80741?locationId=355799&apikey=4J9PfB1lsUTKUATBvoSX9QYCBLLiktGd with data: {'mode': 'Cool', 'heatSetpoint': 69, 'coolSetpoint': 71.0, 'thermostatSetpointStatus': 'HoldUntil', 'autoChangeoverActive': False}
None

Any ideas? did I download the wrong files? Am I missing a third file? Should I be using a different folder name?

I am new to this and really really appreciate your help.

As the error suggests, you also need to copy services.yaml file inside custom_components\climate\. You can find it here.

It looks like I uploaded an old version to PyPI by accidentā€¦ I bumped the version now, maybe someone wants to give it one more test?

@arsaboo Thanks for that. I did just download the services.yaml file and place it there as you suggested.

@Bram_Kragten I re-downloaded teh two lyric.py files (is that what you meant?)

I tried it with the service.yaml and new lyric.py files and not I am not able to configure through the Honeywell site. at the last step I get ā€œ500 Internal Server Error Server got itself in troubleā€

and in my logs file I get;

2017-09-01 12:59:09 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 422, in start
    resp = yield from self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web.py", line 306, in _handle
    resp = yield from handler(request)
  File "/usr/lib/python3.6/asyncio/coroutines.py", line 213, in coro
    res = yield from res
  File "/usr/lib/python3.6/asyncio/coroutines.py", line 213, in coro
    res = yield from res
  File "/usr/lib/python3.6/site-packages/homeassistant/components/http/ban.py", line 58, in ban_middleware_handler
    return (yield from handler(request))
  File "/usr/lib/python3.6/site-packages/homeassistant/components/http/__init__.py", line 424, in handle
    result = yield from result
  File "/usr/lib/python3.6/asyncio/coroutines.py", line 210, in coro
    res = func(*args, **kw)
  File "/config/custom_components/lyric.py", line 208, in get
    self.lyric.authorization_code(code=data['code'], state=data['state'])
  File "/config/deps/lib/python3.6/site-packages/lyric/__init__.py", line 699, in authorization_code
    auth = requests.auth.HTTPBasicAuth(self._client_id, self._client_secret)
NameError: name 'requests' is not defined

Either you you have any ideas what I can try next?
Thanks so much.

You already authenticated right? Did you remove the lyric.conf file?

Anyway, not sure what that error is, have you tried it more than once?

Yes, I did remove the lyric.conf :frowning: oops
Yes, I did try more than once.
Thank

Never mind, I do know what that error isā€¦ Not in a position to fix it right now.

Go to you config/deps folder, go through a couple of subfolders till you find python-lyric or lyric or something and click till you find init.py. Add the following at the top by the other imports:

import requests

like here

Ok, cool.
\HASSIO\config\deps\lib\python3.6\site-packages\lyric/_init_py
line 3 through 11 now reads

import os
import time
import logging
import requests
from requests import HTTPError
from requests.exceptions import RequestException
from requests.compat import json
from requests_oauthlib import OAuth2Session
import urllib.parse

I rebooted and now I can configureā€¦ awesome

Worked great for the first 3 changes (I have two thermostats and I changed the first then the second then the first and then the second wouldnā€™t changeā€¦ I did this over about 1 min. now multiple tires to change donā€™t work. I now see this in my logs.

2017-09-01 13:37:48 ERROR (SyncWorker_19) [homeassistant.core] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/lyric.py", line 65, in lyric_configuration_callback
    setup_lyric(hass, lyric, config)  # url=url
  File "/config/custom_components/lyric.py", line 104, in setup_lyric
    conf.pop(CONF_CLIENT_ID)
KeyError: 'client_id'

and

2017-09-01 13:37:53 ERROR (SyncWorker_5) [lyric] HTTP Error Lyric API: 400 Client Error: User Input Error for url: https://api.honeywell.com/v2/devices/thermostats/LCC-00D02DC6C89B?locationId=355799&apikey=4J9PfB1lsUTKUATBvoSX9QYCBLLiktGd

I was SOOOO excited for a sec. thanks for the help, I have to go (lunch is over) I will try again soon. thanks.

Other info which is probably irrelevant. I had to press the continue button on the configure popup twice for it to workā€¦ not sure why. I tried waiting like 20 seconds and then I pressed it again and then the climate adds. This seems to be the case over my multiple configure attempts over the last few days. Like I said probably irrelevant.

The first error may have been me hitting the continue button again in the configuration popupā€¦ if so, sorry.

Bram,

Noob question,
when i try to login to authorize it, after setting up using your steps, it wont accept my email and password for some reason which is crazy?
Is it the password i setup on the Developer site or the HA ? That is the one I used.

On the Honeywell website, you need to login with your Honeywell account not the HA password.

You have to login with the account you also use with the app from Lyric

Ok. Will try again

No joy

des': ['Cool', 'Heat', 'Off'], 'thermostatVersion': '02.02.20.00', 'minCoolSetpoint': 40, 'macID': '00D02D51277A', 'indoorTemperature': 80, 'maxHeatSetpoint': 99, 'outdoorTemperature': 79, 'userDefinedDeviceName': 'Lyric', 'name': 'Lyric', 'indoorHumidityStatus': 'Measured', 'maxCoolSetpoint': 99}], 'city': 'Wesley Chapel', 'zipcode': '33543', 'geoFenceEnabled': True, 'name': 'Home'}]
2017-09-03 21:41:59 DEBUG (Thread-2) [custom_components.lyric] proceeding with discovery of platforms
2017-09-03 21:41:59 DEBUG (Thread-2) [custom_components.lyric] setup done of component
2017-09-03 21:42:03 DEBUG (Thread-7) [custom_components.climate.lyric] climate discovery_info: OrderedDict([('scan_interval', 270), ('fan', False)])
2017-09-03 21:42:03 DEBUG (Thread-7) [custom_components.climate.lyric] climate config: {}
2017-09-03 21:42:03 DEBUG (Thread-7) [custom_components.climate.lyric] Set up Lyric climate platform
2017-09-03 21:42:03 DEBUG (Thread-7) [custom_components.climate.lyric] away periods: []
2017-09-03 21:42:03 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/lib/python3.5/asyncio/tasks.py", line 241, in _step
    result = coro.throw(exc)
  File "/home/hass/hassvenv/lib/python3.5/site-packages/homeassistant/helpers/entity_component.py", line 381, in async_process_entity
    new_entity, self, update_before_add=update_before_add
  File "/home/hass/hassvenv/lib/python3.5/site-packages/homeassistant/helpers/entity_component.py", line 212, in async_add_entity
    yield from self.hass.async_add_job(entity.update)
  File "/usr/lib/python3.5/asyncio/futures.py", line 361, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup
    future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/hass/.homeassistant/custom_components/climate/lyric.py", line 322, in update
    self._scheduleSubType = self.device.scheduleSubType
  File "/home/hass/hassvenv/lib/python3.5/site-packages/lyric/__init__.py", line 568, in scheduleSubType
    return self.device.get('scheduleType').get('scheduleSubType')
AttributeError: 'NoneType' object has no attribute 'get'