[RELEASE] Beta 1 - version of Honeywell Home Thermostats (Lyric etc...)

@kanewolf I'm not sure what is going on here. I have a T9 with 3 remote sensors that is working fine with a token refresh of 30 min. Did you create your own Consumer Key and Consumer Secret? If not, the problem is probably that a number of people are trying to use the same key and the servers are having a fit. Instructions on creating your own key/secret are in the App under "Login Options"

Also, the log entry saying the next scheduled refresh in 1699 sec. indicates that your refresh is set to 30 min.

But the refresh, as you can see in the picture above is set to 55 min. You can also see that there is about a 1 hour delta between "thermostat API" calls. I don't understand what the 1699 second log is from.

I will investigate the keys.

I created a new app and new keys. I set the refresh interval at 55 min. Let's see what happens. The remote sensors are still excluded.

I'll try to reproduce the refresh time issue tomorrow. If generating your own keys fixes your other issue (I think it will), then I'd dial down the refresh time to 30 min. and add the sensors back.

Yeah, I am going to let it run for several days without errors. Then add the sensors back. If that runs clean, then move up the refresh interval.

Keep in mind that it is fairly normal for an occasional error. Networks can be temperamental. I usually get 3 or 4 errors a day with token refresh issues. The app/driver handles these transient errors pretty well, so don't worry about them.

Can the code for this be revisited? I still get these errors pretty regularly. Some better way of handling them?


I have been using your driver ever since I installed HA system and it has been working great. I now moved to C8 and Hubitat dashboard tile is unresponsive. I have communicated with tech support and they said that there is an issue with some syntax that breaks the tile. It works fine from device screen but not tile.
They have proposed a fix but I can not find similar stuff in your driver:

Please help!


Alex Vaynberg

These attributes are used by the dashboard to determine which modes to display when you try to change it - thus the name being supportedXXXModes - so they are intended to be a JSON-formatted list.

Hubitat used to tolerate a plain array, but changed a few releases back to enforce consistency:

From the GitHub link, the actual event sending is abstracted, but the fix looks like it should be at Line 634:

value = groovy.json.JsonOutput(lowerCaseValues)
1 Like

ya just looked at the code for both the driver and app.. there is for instance no line that actually sets the attribute supportedThermostatModes in the code, and even though that attribute shows up in the device it is never declared..

the only reference to it all is this in the parent app and i dont see how that sets anything in the child

refreshHelper(reJson, "allowedModes", "supportedThermostatModes", device, null, true, false)

The refreshHelper method invokes the sendEvent call to the device, but currently sends the raw array/list - which gets "stringified". Instead, it needs to output as JSON, which is what my updated line 634 does.

If you change this line in the App as suggested, then invoke a refresh on the Device, it should update the attribute and the dashboard tile should start working.

1 Like

no that line does not send that as if you look there is nothing sent there as the parameters are in quotes.. so you cannot change it there.. i had to change it deaper in the function and look for that specific terms.. That function only queries that info from the device, ie gets the values and sets it.. So I had to change it deeper in where it got the values it was setting.

here is my version to try out..


this is only the app code.. the driver code has no change.

I am working on installing a T10+ thermostat and remote sensor (C7189R3002). This app seems to be working except for a motion attribute coming from the remote sensor. The remote sensor has an Occupancy attribute that does change state from time to time, not sure it is accurate though.

Is it possible to add the Motion attribute? What info is needed to facilitate this change?

The Honeywell driver/app has to poll the server to get all of the relevant thermostat information. The polling interval to refresh the data is configurable in the app, anywhere from every minute to every hour. It's not like a motion sensor that reports instantly when motion happens. What do you want to do with a motion attribute, given that it will never report motion instantly?

I have several T10s and a T9. I would would LOVE to add this 'remove hold' functionality to my app/driver. Can you elaborate or share the coding you figured out and perhaps I can modify it to work with my models?

Hi @ryanfoster34,

To be honest this was so long ago I can't remember if I made further changes or not or where I even left off... i.e. there may be incomplete ideas in the changes I made, including debugging code.

I kind of gave up on improvements once I got it to the point where it became useful to me, but it might not be equally as useful to you. I think I'm also trying to say I won't be able to answer any questions you might have because it's been so long and I don't really want to dig back into it.

It's probably easiest if I just share the code as-is and you can do a diff with the original code to see what I changed. Let me find a way to share this code and I'll get back to you.


App Code: App Code - wj72 — Codefile
Thermostat Driver Code: Thermostat Driver Code - wj72 — Codefile

@wj72 much thanks - and I totally respect your position. I'll take a look with the 'as-is' approach and see what I can do with it. Thanks for sharing!