Resideo API Binding for Honeywell Thermostats and Sensors

resideo_logo_new

This binding connects to the Resideo (formerly Honeywell Home) API to poll thermostat and sensor information. It has a simple servlet based webpage (based on the spotify binding) to authorize openHAB with the Resideo API. It should work with the Lyric Round and T-Series (T5/T6/T9/T10) thermostats from Honeywell. They are the thermostats that are accessible through the Resideo API published on Honeywell Home Developer Site. The binding has been tested on a T9 thermostat connected to the “Resideo - Smart Home” app. Resideo has starting integrating there First Alert acquisition. This binding should be compatible with the T-Series thermostats registered on the “First Alert by Resideo”. Please, note that until I get a beta tester who is in this position the word “should” is doing some very heavy lifting.

After installing the binding go to servlet webpage for quick start:
http://<your openHAB address>:8080/connecthoneywell/

Look at the binding readme and the release page for more detailed information.

Changelog

Version beta-v1.5

  • compatible with First Alert by Resideo
  • updated README.md

Version beta-v1.4

  • first release candidate
  • Now uses GSON
  • Channels are in groups
  • Channels are created dynamically
  • System channel types are now used when appropriate
  • Reduced code size by removing unimplemented features

Version beta-v1.3

  • many changes and improvements (see release)

Version beta-v1.1

  • changed branch name to honeywell-beta
  • minor changes (see release page)

Version beta-1

  • initial release

Resources

Honeywell Home Thermostat and Sensor Binding beta-v1.5 Jar
Honeywell Home Thermostat and Sensor Binding beta-v1.5 Release Page
Honeywell Home Thermostat and Sensor Binding beta-v1.5 Source

2 Likes

Thanks for this. Looking to give it a try in a new house with a honeywell thermostat and resideo setup, but I’m on OH 4.3.0M4. Do you know if your version for 4.2.3 work with the current milestone?

Cheers

Can’t say for sure. Just a matter of plugging it in and giving it a try. I’d suggest waiting a few days. I’m just finishing off some changes that made revisions to the channels. They are now grouped and use some system channel types. After it runs for a few days I’ll release it and that will be the end of the beta phase.

At that point I might look at updating to 4.3 and seeing how it works.

Nice, thanks. I did try your beta but I couldn’t get the authentication to work. I have both the honeywell ID and dev api creds setup but no go yet. Error is

COMMUNICATION_ERROR

OAuth service failed getting access token response: Cannot refresh token because last access token is not available from handle: honeywell:oauth20:50e8e181b6

I’m happy to help test the new version once you put it out though.
Cheers

I’ve pulled some readme information and added it to the original post. If you went through the authorization and still get the same error let me know. I’ve tested mine and I was able to authorize a new bridge and start the discovery process.

Thanks.

Thanks. I can get to the point where I see the authorize link on the connecthoneywell servlet. When I click on authorize I go to the resideo login page.
I enter my credentials and get to the allow/deny screen.
When I click on allow I see a message ‘Please use an account with one or more devices installed.’ and another login prompt.

I think the issue is on the resideo side. Do I need to get my device registered on the resideo page? I am registered on the total connect home page but perhaps I’m not understanding how the two are related (or not).

I think

I’ve edited this after some research. When the thermostat is installed it needs to be registered to the “Resideo Smart Home” system. That depends on your thermostat. My T9s were registered when I installed them and setup the “Resideo App” on my smart phone. The thermostat has a Connect App menu item which shows a screen saying

The thermostat is registered to a user account.
To add additional users, use the Honeywell Home app.

It looks to me like the problem is that your thermostat is not registered on the “Resideo Smart Home” system. If the consumer key, consumer secret or call back url were wrong you would get an error when you pressed the “Authorize Bridge” button. So that seems okay. If the Allow/Deny account was wrong you would get a login error. So that seems okay.

Are you able to see the thermostats under the “Resideo App” on your smart phone? You said a “new house”. Maybe, just a guess, they are setup with the old owners’ information? When you get the thermostats registered on the “Resideo Smart Home” system they will show up in the Allow/Deny screen.

The website Resideo Systems Status shows the different systems and their current operational status.

Last note that in my research I see that in the last five months or so Resideo is adding a “First Alert App” system. The information I read make me think they are incompatible with each other. So make sure you are setting it up on the “Resideo Smart Home” system and not the “First Alert App” system. Please let me know how it resolves so I can put the information in the instructions.

thx for that especially since I asume you’re not the Honeywell support team :). Resideo app login was the missing piece. I had setup previously…

  • Total Connect Home ID. You are correct in that there was a previous owner registered. I discovered that fact and fixed with Honeywell support before I posted here, so great catch. My device was registered here and appeared on the app.
  • Honeywell api account/key and application configured.
  • Resideo account created (which is separate and distinct from Total Connect Home ID.

I was curious how the resideo account was supposed to know about the device registered on total connect home as I found no method on the website to add a device. However using the resideo app as you recommended, there is both a bluetooth discovery process and a facility to import devices from total connect home. So my resideo account has my device registered now.

I’ll report back when I’ve re-tried the add-on, but I think you’ve put me on the right track.
Cheers

Well, the authorize bridge button on the servlet kicks me over to the resideo/api auth page to allow device access. However the openhab log reports

2024-11-28 07:45:51.899 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing ‘honeywell:oauth20:53548670b3’ changed from ONLINE (CONFIGURATION_PENDING): Waiting for authorization from Honeywell to OFFLINE (COMMUNICATION_ERROR): OAuth service failed getting access token response: Cannot refresh token because last access token is not available from handle: honeywell:oauth20:53548670b

And I get message saying on the webpage

’ We found 0 devices. Select the devices you wish to connect.

[Why are some devices not supported?](javascript:void(0);)’

I’d guess that my particular thermostat is not supported and the oauth fails if there is no device to allow.

Thoughts? This may be the end of the road :frowning:

I’ve seen that before in my searches on the net. I have seen where it got resolved after some period of time. I’m not sure if it would be applicable to you or not. Try doing a search for

We found 0 devices. Select the devices you wish to connect.

The last access token error is normal until it gets information back from Resideo after the device selection process. So if there are no devices to select then that is the problem.

You mention “Total Connect” that is a separate system from the “Resideo Smart Home”. I see there are three apps “Resideo - Smart Home”, “Total Connect 2.0” and “First Alert by Resideo”. What thermostat model are you using? Is is compatible with the “Resideo - Smart Home” app? From what you said it seems like it is.

What did that tell you when you click on it?

Thx, in answer to your questions…

“What did that tell you when you click on it?”
Nothing informative, just a pop up-for ‘At this time, certain devices are not controllable by third parties.’ and an OK button that only closes the pop-up.

Thermostat is THX9421R5021WW Basic Prestige® 2-Wire Thermostat with RedLINK

I have the thermostat connected and working with both the ‘Total Connect Comfort’ iOS app and the ‘Resideo - Smart Home’ iOS app, current versions on the apple store. IMO with it connected to the Resideo - Smart Home app I think I should be able to connect via the API (correct me if I’m wrong) since the two are now linked.

You mention the "Total Connect 2.0’ app and ‘First Alert by Resideo’, neither of which I’ve tried yet although both look more security oriented. Neither of these works with the credentials I’ve setup for the first 2 apps above.

I’ve got to tell you, I used the ecobee thermostats prior to this and they were a breeze to setup compared to the Honeywell mess of apps and credentials :). I may switch back to them if this effort fails, but I’d love to get the honeywell setup working if possible.

At this point I think it is a problem on the Resideo side. From the login to the thermostat selection process that is all Resideo. I can’t think of anything my binding has control over that effects that. Though I will dig a little deeper. Does it work with other third party apps? I’m not familiar with iOS so I don’t know the apps for me the Resideo app has a connected services menu which shows SmartThings, Google, and my OpenHAB 2.0 which is the name I used.

Try this. Delete the bridge thing, remove the jar file from the addons. Stop the openHAB server. Use the debug version that I sent you a github link to and put that in the addons directory.

Create a honeywell.things file in the conf/things folder with:

Bridge honeywell:oauth20:pleedell "Honeywell API Bridge for pleedell" [ consumerKey="supersecretkeynoteventellingmom!", consumerSecret="extrasecretsecre", optimized="false", refresh="90" ]
Bridge honeywell:oauth20:pleedell "Honeywell API Bridge for pleedell" [ consumerKey="supersecretkeynoteventellingmom!", consumerSecret="extrasecretsecre", optimized="false", refresh="90" ]

Replace your key and secret of course :slight_smile: in ONE of the lines. Make sure they are correct. The fillers I’ve put in should be the same size as the ones from Resideo. Delete the second line after verifying that they are the same length.

After saving the file there will be a bridge in the UI “Honeywell API Bridge for pleedell” if you look at the error message in the UI it should have changed to:

COMMUNICATION_ERROR

OAuth service failed visit: http://<your openHAB address>:8080/connecthoneywell/

Go to the servlet page. I’ve added some screen shots to show examples of what you should see. Go through the authorization process. I’ve added debugs prefaced with ‘pleedell’ so in the terminal you can set log to TRACE for org.openhab.binding.honeywell and grep on pleedell. Let me know what jumps out at you. There maybe secrets in there so make sure you don’t publish them.

There is a manual process that if you can see the thermostats using it might help me figure out what is going on. Or might just make the Resideo system work.
https://forum.domoticz.com/viewtopic.php?t=39088

Goodluck.

thx again for the assistance. With the iOS version of the resideo app there is indeed a link to connect to amazon alexa. When I try to link however, after accepting the tou I get a screen showing ‘We found 0 devices’. I can also control my thermostat via the resideo app and this is the exact same message as see via the api page

The only thing I can think of is how I added it. In the add devices section the only one that applied to my device was ‘import from total connect home.’ This process needs my total connect home cred and works to add the device. But I’m wondering if a device added this way really isn’t an added device resideo. ie. you can’t authenticate unless there is a device to control, and an imported device is not a ‘device’ as far as the api is concerned. Or my thermostat simply isn’t compatible at this time.

I haven’t tried your test add-on yet but I’ll make some time to try it and get back to you here.
Cheers

I think it’s a lost cause. I’ve looked farther on the developer website and other forums. The Resideo developer mentions that the API for the “other” thermostats is closed and not available to the public. I’ve updated my docs to say that it is only the Lyric Round and T-Series thermostats that are compatible which is what the Resideo developer website says. I’m sorry it’s not compatible, I looked around to see if there is a Total Comfort solution but there isn’t and I’m guessing there won’t ever be one.

Good luck.

That’s a shame. Thx for all the effort in trying to make it work.
Cheers