Honeywell Lyric Thermostat

It should update the setpoint, but I have not tested a round and it is quite different from the T5. Please also submit the outcome of:

https://developer.honeywell.com/lyric/apis/get/locations

I don’t have time to work on it this week, but will try to have a version I can submit by the end of next week.

1 Like
HTTP/1.1 200 OK
Cache-Control:
no-cache
Connection:
keep-alive
Content-Length:
3492
Content-Type:
application/json
Date:
Mon, 06 Feb 2017 23:45:13 GMT
Expires:
-1
Pragma:
no-cache
Server:
Microsoft-IIS/8.5
X-AspNet-Version:
4.0.30319
X-Powered-By:
ASP.NET
[
  {
    "locationID": REDACTED,
    "name": "REDACTED",
    "streetAddress": "REDACTED",
    "city": "REDACTED",
    "state": "REDACTED",
    "country": "Usa",
    "zipcode": "REDACTED",
    "devices": [
      {
        "settings": {
          "homeSetPoints": {
            "homeHeatSP": 69,
            "homeCoolSP": 72,
            "units": "Fahrenheit"
          },
          "awaySetPoints": {
            "awayHeatSP": 62,
            "awayCoolSP": 85,
            "smartCoolSP": 80,
            "smartHeatSP": 55,
            "useAutoSmart": true,
            "units": "Fahrenheit"
          },
          "hardwareSettings": {
            "volume": 10,
            "maxVolume": 10
          },
          "fan": {
            "allowedModes": [
              "Auto",
              "On",
              "Circulate"
            ],
            "changeableValues": {
              "mode": "Auto"
            },
            "fanRunning": false
          },
          "temperatureMode": {
            "feelsLike": true,
            "air": true
          },
          "specialMode": {
            "autoChangeoverActive": false
          }
        },
        "isAlive": true,
        "isUpgrading": false,
        "macID": "REDACTED",
        "thermostatVersion": "02.02.20.00",
        "scheduleStatus": "Resume",
        "allowedTimeIncrements": 15,
        "deviceClass": "Thermostat",
        "deviceType": "Thermostat",
        "deviceID": "REDACTED",
        "userDefinedDeviceName": "Thermostat",
        "name": "Thermostat",
        "schedule": {
          "scheduleType": "Geofence"
        },
        "isProvisioned": false,
        "deviceSettings": {},
        "units": "Fahrenheit",
        "indoorTemperature": 64,
        "outdoorTemperature": 51,
        "allowedModes": [
          "Cool",
          "Heat",
          "Off"
        ],
        "deadband": 0,
        "hasDualSetpointStatus": false,
        "minHeatSetpoint": 40,
        "maxHeatSetpoint": 99,
        "minCoolSetpoint": 40,
        "maxCoolSetpoint": 99,
        "changeableValues": {
          "mode": "Heat",
          "autoChangeoverActive": false,
          "heatSetpoint": 60,
          "coolSetpoint": 77,
          "heatCoolMode": "Heat"
        },
        "operationStatus": {
          "mode": "EquipmentOff"
        },
        "smartAway": {
          "active": false,
          "timeOfDay": "00:00:00",
          "durationInHours": 0,
          "durationInDays": 0,
          "lastUsedFormat": "TimeOfDay",
          "endsIn": "2000-01-01T00:00:00-07:00"
        },
        "indoorHumidity": 23,
        "indoorHumidityStatus": "Measured"
      }
    ],
    "users": [
      {
        "userID": REDACTED,
        "username": "REDACTED",
        "firstname": "REDACTED",
        "lastname": "REDACTED",
        "created": 1485714973,
        "deleted": -62135596800,
        "activated": true,
        "connectedHomeAccountExists": true,
        "locationRoleMapping": [
          {
            "locationID": REDACTED,
            "role": "Adult",
            "locationName": "Home",
            "status": 1
          }
        ]
      }
    ],
    "timeZone": "Mountain",
    "daylightSavingTimeEnabled": true,
    "geoFences": [
      {
        "geoFenceID": REDACTED,
        "latitude": REDACTED,
        "longitude": REDACTED,
        "radius": 2799,
        "geoOccupancy": {
          "withinFence": 0,
          "outsideFence": 1
        }
      }
    ],
    "geoFenceEnabled": true
  }
]

Thank you for all you are doing here, it really is much appreciated.

I had the same issue on my setup but the location I had to use was “/usr/local/lib/python3.5/dist-packages/homeassistant/components/”

I am using a T6R thermostat in the UK. Displays the temperature and setpoint correctly but changes made to the set point have no effect.

Great work so far though. Thanks.

Hi all,

Sorry, have little time these days, some paid jobs came between and unfortunately they always come before my “hobby”. I will try to find some time soon to finish this. Shouldn’t be much work…

so admittedly, I am VERY new to Home-Assistant…I thought that getting my thermostat up and working would be a good way to start…I have the Honeywell Lyric T5. I am trying to figure out how to get this working…copied your lyric.py into /srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages/homeassistant/components and i added your recommendation to configuration.yaml and it still doesn’t show up. I have also created a developer app on honeywell…but the link doesn’t work…i tried to access it locally and it says Not Found. Any guidance would be appreciated.

@Joshua_Adkisson There are 2 lyric.py files…one goes in components folder and the other in climate.

Thanks so much for this! It’s working great and this plus IFTTT should help bridge the gap with Google Home!

Edit - after successfully configuring the Lyric, the lyric component occasionally fails to load after restarting hass (invalid config message in the frontend and “json.decoder.JSONDecodeError: Extra data: line 1 column 156 (char 155)” in the home-assistant.log).

It looks like there is an extra “}” being appended to the auth string in lyric.conf during some hass restarts. Removing the trailing “}” resolves the issue and allows HA to recognize the Lyric again. I’m running hass on MacOS.

Everything loaded like it should into HA, The issue I am now having is adjusting the temp in HA. When I change the temp lower I change the mode to cool which I do not want, I just want to lower the temp so the furnace does no turn on. Thanks for all the help in advance!!

Well, after burning a good bit of time trying to get the darn Honeywell component to work, it’s nice to see that I wasn’t the only one. I’ll be testing this out later!

Thanks for any help you can give. HA does a good job of reporting the status but can’t seem to control the Lyric correctly. I am not a coder just a hardware person so need lots of help on the software side!!

If you want to make it work under custom_components, that I think it’s more reasonable before adding this to trunk, you only need to do that:

  • add the components/lyric.py to the ~/.homeassistant//custom_components directory
  • create ~/.homeassistant/custom_components/climate directory and add components/climate/lyric.py there
  • change line 11 on ~/.homeassistant/custom_components/climate/lyric.py to:
    from custom_components.lyric import DATA_LYRIC

this should make the trick, and it’s working for me on my homeassistant docker container with latest trunk.

i tried this with a lyric t6 pro and all i get is componet not found any help ?

@Bram_Kragten When I get to the Request Authorization page do I use the developer login credentials. I get a “no user with these credentials” response.

Answering myself. You need to use the login that you created for the Android or iOS app and then select the Thermostat that you set up.

That seemed to work for me. Good catch. Also running macOS.
Here was my full error.

2017-06-04 12:40:35 INFO (MainThread) [homeassistant.setup] Setting up lyric
2017-06-04 12:40:35 INFO (<concurrent.futures.thread.ThreadPoolExecutor object at 0x1036fbc18>_7) [homeassistant.util.package] Attempting install of mutagen==1.37.0
2017-06-04 12:40:35 ERROR (MainThread) [homeassistant.setup] Error during setup of component lyric
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/homeassistant/setup.py", line 190, in _async_setup_component
    component.setup, hass, processed_config)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/ob1/.homeassistant/custom_components/lyric.py", line 126, in setup
    app_name='Home Assistant', redirect_uri=redirect_uri)
  File "/Users/ob1/.homeassistant/deps/lyric/__init__.py", line 855, in __init__
    self._lyricAuth()
  File "/Users/ob1/.homeassistant/deps/lyric/__init__.py", line 916, in _lyricAuth
    self._token = json.load(f)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 342, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 156 (char 155)
2017-06-04 12:40:35 INFO (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=persistent_notification, service=create, service_data=title=Invalid config, message=The following components an$
* [lyric](https://home-assistant.io/components/lyric/)

So. Close!

Can’t quite get it to configure through the HASS web ui.

Mucking about with the API, I can run:

https://api.honeywell.com/oauth2/authorize?response_type=code&client_id=Consumer Key/client_id f&redirect_uri=https:// myHASSwebAddress /api/lyric/authenticate

But I get back, after entering my Lyric App credentials: {"message": "Authentication failed, not the right variables, try again."}

Am I doing something silly?

I’ve been trying to get this working with my T6.
I’ve added the .py files to their respective folders.
Got the configurator ‘card’. Connected it and afther that it was ‘done’. However I can’t find the T6 in my homeassistant.

I do get this error when starting HA:
2017-06-06 15:19:52 ERROR (MainThread) [homeassistant.components.climate] Error while setting up platform lyric
Traceback (most recent call last):
File “/srv/homeassistant/lib/python3.4/site-packages/homeassistant/helpers/entity_component.py”, line 155, in _async_setup_platform
entity_platform.schedule_add_entities, discovery_info
File “/usr/lib/python3.4/asyncio/futures.py”, line 388, in iter
yield self # This tells Task to wait for completion.
File “/usr/lib/python3.4/asyncio/tasks.py”, line 286, in _wakeup
value = future.result()
File “/usr/lib/python3.4/asyncio/futures.py”, line 277, in result
raise self._exception
File “/usr/lib/python3.4/concurrent/futures/thread.py”, line 54, in run
result = self.fn(*self.args, **self.kwargs)
File “/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/climate/lyric.py”, line 48, in setup_platform
for location, device in hass.data[DATA_LYRIC].thermostats()],
File “/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/climate/lyric.py”, line 48, in
for location, device in hass.data[DATA_LYRIC].thermostats()],
File “/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/climate/lyric.py”, line 77, in init
self._fan_list = self.device.settings[“fan”][“allowedModes”]
KeyError: ‘fan’

where did you put the flies at i couldnt get ha to find my T6 i

/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components and /srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/climate

Wonder if the issue is that I’m not use virtual just running it straight up. I put one in /homeassistant/component and the other in /homeassistant/component/climate. All I get is can’t find component. Lyric