Carrier Infinity / Bryant Evolution compatibility?

Thank you for the update. I think I am beginning to better understand. As I said I have not purchased and Smart Things Devices yet but based on what you are saying I might only need the Smart Things App to build routines. Similar to what I have done in Alexa and Wemo to turn on/off groups of lights we have added devices to.

I guess my next step is just to download the Smart Things App and look at the routines. I also took a quick look at webcore, hoping I won’t need to use it. So is webcore another piece of SW that you can use to customize pieces of the smart apps? It is a tool completely separate from Smart Things or My Infinity correct???

I really appreciate your help. Given my background I am not a developer who codes but can configure apps with rules which is what it looks like Webcore might help to do. Just never had an opportunity to learn the syntex to code programs.

Beth

Hi Beth, yes, correct, Webcore is a much more advanced rules engine. It completely integrates with SmartThings, but it requires some comfort with developing high level code/logic. There are many samples available and lots of help online. The Infinity integration to date is the github smart app: https://github.com/copy-ninja/SmartThings_BryantEvolution/tree/alpha, make sure you comment out the line indicated a few comments up by @jylertones. This smart app today is read only, we’re working to try and find someone to fully implement it so it can also update the settings on the thermostats. The Alexa integration is what I’m using to control the thermostat, Webcore is the rules engine I’m using to sync up the home/away/sleep/etc modes. I use the normal smartthings routines (goodway/i’m back/goodnight/etc) to set a virtual device on/off that I use alexa integration to monitor and set the thermostat.

It’s a hack as I mentioned, but works, and hopeful we’ll have the smartapp working soon.

Does anyone have plans on making an ST App that actually communicates and controls the Carrier Infinity system? Seems like for the past few months people have been focusing on all these workarounds.

I’m working on it, but it’s proving a little difficult. I’ve taken time in the last week to deep dive into the code that’s already there.

As I see it, here’s the state of the ST App (feel free to correct me, if anyone sees a mistake):

WORKING

  1. You can login with your Carrier/Bryant account
  2. It pulls your system information (home/away status, temp, heating temp, cooling temp, if it’s running)
  3. It has a lot of the underpinnings of the modify actions (set temp, set home/away)
  4. The status is displayed in the app

NOT WORKING

  1. Does not properly work with zones
  2. The app does not do anything when you hit the buttons in the app. The code points to functions that do not exist yet, so you could get errors in your log
  3. It cannot push any new data to Carrier/Bryant. Per the documentation at https://openapi.ing.carrier.com/docs, this should be possible via a PUT request to /systems/<SYSTEM>/config

On my side, I’ve been able to wire up some of the buttons to functions, and I have tried to post the new configuration data to the config endpoint, but I have not been able to do so in a way that works. If I do a PUT request, the server tells me that I should do a POST request. If I try a POST request, it tells me that the authorization header is off for the request. I do not yet know what is causing this, but one possibility is that we’re using the older OAuth v1 authentication, and the documentation specifies to use OAuth v2. I’m not sure if we can use the OAuth v2 - it may require a key that we do not have. However, as I can access some of the endpoints in the documentation with the older authentication, it may just be that something else needs tweaking before this can work.

1 Like

Glad to hear you haven’t given up.
Would be Happy to help compensate you for some of your time.
When this becomes more than read only I hope there will be a option to turn the system off

John

Hi Tyler,
Pleased to hear you’re looking into this further. I think you’re on the right path but wanted to note a few issues:
1 - I have a 5 zone system and the existing SmartApp seems to discover and configure them fine, each with the name I have setup in the Evolution app so your comment on NOT WORKING #1 I don’t think is correct.
2 - The refresh interval doesn’t seem to work, the zones just die until I manually hit refresh so I wrote a Webcore script to refresh them every 15m, here:

@swerb73 my zone comment was a little bit of an assumption based on reading the code, so I’m glad to hear that your multizone works (obviously within the scope of the other limitations).

You’re also right about the refresh - it appears to die after a fairly short amount of time. That’s something else that needs to be fixed.

Here is a crazy idea that I had but have not had time to try and implement anything yet. What if you were able to get in between your thermostat and Carrier’s server. If you changed the URL that your thermostat connects to from (https://www.app-api.ing.carrier.com) to an IP on a local server or possibly even a Smartthings APP that communicates in the same fashion. We could take complete control of the system and wouldn’t need access to Carrier’s API Servers. The only thing I believe we would loose is the ability to get software updates.

1 Like

Hey Johnny, that’s actually not too crazy. Earlier in this thread, there was mention of a project/package called Infinitude, which is a package you install and point the proxy server to. It doesn’t play the role of the Carrier server, but it intercepts packages and changes the data before eventually sending it to Carrier.

Currently, I’m using that code for a couple of purposes:

  1. To understand how the thermostat communicates with Carrier so we can maybe make the same communications from SmartThings.
  2. If we are unable to do #1, maybe we can leverage Infinitude and scale it so that multiple thermostats can use it (i.e. I set up a server that the community can use).

Obviously #2 would take more work (not to mention, I have serious concerns about the setup and security of the setup required to make it be reliable), so I’m trying first to get #1 to work.

1 Like

Hey Tyler, I too had played around with infinitude but without too much luck. Since then I have discovered that you can change the API address your Carrier thermostat connects to by accessing the service menu in your thermostat. We wouldn’t need Carrier’s server but I believe we would need to set up a service on a local system, NAS, server etc… that would translate commands to/from smartthings and your thermostat. Something like ph4r had used to translate commands for the Magic Home Wifi LED Controllers (Magic Home WiFi LED Control) … I might find some time in the future to work something out. But I currently don’t have any time to spare.

1 Like

I actually did this a while back - I created (in python) a proxy server that invisibly captures the data the unit is sending to the mothership and publishes it to a InfluxDB server.

1 Like

Case, that is cool. I will have to load that into Docker sometime and check it out.

I’m wondering what your intentions are for this code however. Are you logging information to display somewhere else, or do you have intentions on integrating into ST?

No intent at all.

I use Grafana for several dashboards and alerts for the Thermostat data in conjunction with other data I pull from the smartthings API.

Beyond that, I have no need to further integrate the thermostat with Smartthings. As energy efficient as my 21 SEER heat pump is, I don’t find it necessary to make it deviate from it’s set schedules based on my presence. It’s arguable, but shutting down and hours later ramping itself back to “comfortable” temps is probably more work than just maintaining an average temp for a system like this. When necessary, Vacation mode is easy enough to initiate locally or with the Bryant mobile app . .

I just thought I would throw the MITM code out there if someone wanted to work the concept into a smart app that didn’t require the OAuth hassle. Hope it helps someone.

1 Like

If anyone would like to know more about the tunnel I am using, let me know. It does add capabilities to the system, but also limitations. The major points are that you can use ASCII to send raw TCP Packets to your device; however, SmartThings cannot receive anything back from it.

I also have been building a grafana / actiontiles hub. It’s very convenient that I already am using docker on my NAS to run the influx/grafana system. I finally got around to loading your container and configure it to my system. I am not seeing however that any data is being written to influx and my thermostat is warning me that it is not connected to the internet. Inside of your container the proxy.py process is eating up 200MB of ram and using an unusual amount of CPU. Any ideas where I might have gone wrong?

I am going to see if I can make this work to our advantage. I am not sure if anyone is aware, if you open the carrier infinity app on your phone and hold your finger on the service button. You are given the option to change the API server that the stat reaches out to. Same goes for the button on the wall control, however some of these settings can get you into trouble if you don’t know what you are doing.

1 Like

hard to tell what’s going on without seeing the logs.

Any updates on getting this to smarthings

Hi @zraken,
Any chance to get the Carrier COR Thermostat supported by your SA and DH?

I’m looking forward to get this integrated into my ecosystem.

That’s a completely different kind of a thermostat and will not work with this DH.