Carrier Infinity integration

That’s awesome!

What’s required for the proxy to function? Outside of the pi zero I have, there’s no way I know of to talk to the hvac unit. I’ve only got an old “non smart” thermostat. I can’t recall the model at the moment but I can get that this evening when I’m home.

Everything is setup and working. Thank you! I’m going to add it to my other two units, are you able to confirm that it works for multiple units as long as each has its own Pi with its own IP?

Also - I would love to help with the dev on this if needed. I have a relatively successful development company so I know development but I have a lot to learn with Python and HA development.

Just wanted to confirm that I added a second unit and HA supports it so that’s great. I’m adding my third unit tomorrow - just waited because I have a friend that wants to see the process but just confirming that multiple units do work.

Thanks again for your work on this, this is WAY better than what I thought I was going to have to do in order to get these working.

@Tj_Davis, You mention that you have two of them in HA, so what exactly did you do to get this working? What thermostat model do you have right now on your system? Did you actually have to use additional hardware to tie into the HVAC unit, or another solution?

If you can share the details of your journey to getting this to work in HA I would definitely appreciate it!

That’s fantastic! I honestly wasn’t sure about how multiple devices would be handled as I’ve only got one to test with. I don’t see a reason why it wouldn’t work but couldn’t test. Thanks for the update! I never got a notice that this thread was updated. Not sure why.

Also, sorry about the wait but I just pushed the commit for the 0.88 changes to my ha_customcomponents repo. It’s working just fine for me but I definitely would like others to try it out and let me know how it goes.

I’ll take all the help I can get on the dev side. I’m a network admin by day(and whatever other time duty calls) but I dabble in a little python in my spare time. If you see anything that looks like it could be done better I’m open to suggestions.

I’m more than happy to share - this solution was perfect, I thought I was going to have to spend a lot of money on the Carrier Infinity Touch thermostats to get it to work and it still wasn’t going to be optimal.

@mww012 does have a lot of info here, so I would recommend giving that a read as well.

I have the non-smart version of the Carrier Infinity thermostats (image attached). With the help of two pieces of open source software (Infinitive and mww012’s HA component) and a Raspberry Pi, I was able to connect my HVAC to Home Assistant and can now access it from my touch panels (image attached)

Here are the steps that I took to get it going:

  1. Bought a Raspberry Pi (Don’t forget to get a micro SD card for it)
  2. Bought a RS-485 USB adapter for the Raspberry Pi
  3. Bought some Thermostat Wire
  4. Once everything came in, I flashed the latest version of Raspbian Stretch Lite and wrote it to the SD card with Etcher
  5. Setup Raspbian install to have a fixed IP on my network
  6. Ran “apt-get install git”
  7. Ran “apt-get install golang-go”
  8. Ran “export GOPATH = /root/go”
  9. Ran “go get github.com/Will1604/infinitive
  10. Ran “go build github.com/Will1604/infinitive
  11. Placed this file at /etc/systemd/system/infinitive.service
    [Unit]
    Description=Infinitive Service
    After=network.target
    StartLimitIntervalSec=0
    [Service]
    Type=simple
    Restart=always
    RestartSec=1
    User=root
    ExecStart=/root/go/bin/infinitive -httpport=8080 -serial=/dev/ttyUSB0
    [Install]
    WantedBy=multi-user.target
  12. Ran “systemctl enable infinitive”
  13. Ran “systemctl start infinitive”
  14. Using the thermostat wire, I connected one end to the RS-485 adapter as in mww012’s pictures above.
  15. I connected the other end of the thermostat wire to the logic board in my attic unit. You will need to remove the cover from the unit and match up the green and yellow, killing power to the unit while you do it. mww012 explains this in more detail above.
  16. Download mww012’s custom climate component
  17. Copy the climate directory to [root HA directory]/config/custom components
  18. Add this to your configuration.yaml and restart:
climate:
  - platform: infinitive
    host: [Raspberry Pi IP]
    port: 8080
  1. Your HVAC unit should show up with entity_id climate.infinitive_thermostat

I typed all of this from memory so it’s subject to some typos or minor missed steps, feel free to message back and tag me if you find anything.

Carrier Thermostat:

Added to my touch panel thanks to Infinitive and the custom component by mww012:

1 Like

@mww012 Awesome, it’s working great on all 3 units now but I’ll update the component for the latest version, do you remember what was corrected in the latest version? I couldn’t be happier with it - I thought I was going to have to jump through a lot more hoops to get my thermostats connected and that it still wasn’t going to work well. This is working perfectly - thanks so much for your efforts on this, you saved the day. :slight_smile:

I did study your custom component and the pyinfinitive files and it all makes sense to me, the main thing that I think I could offer is help with documentation and publishing to get this in the standard HA release if you need that help and if that’s an option. What I don’t want to do is be the one to do all of that then get the credit for the actual components because I will have just done the “last mile.” So just let me know what, if anything, you want my help with on that.

I do have a question on the custom component, it is mostly a pretty generic climate interface with the exception of importing pyinfinitive. Did you create that from scratch or copy it from somewhere? I’m assuming it’s SOP how you did it but also assuming there are some templates somewhere to keep from having to re-invent the will when creating a component since most of the work i.e. things that make it unique to Carrier Infinity] seem to be in pyinfinitive files.

@Tj_Davis I need to get some real info in the readme for that repo. Do you mind if a use your steps above as part of it?

@mww012 - I don’t mind at all. I don’t want to be too vain - but I don’t get to contribute to open source software too often so if you don’t mind to mention me for credit I would appreciate it - but I’m ecstatic to be able to contribute in any way that I can.

Thanks for the info. I just upgraded my older thermostat to the SYSTXCCITC01-B smart thermostat that I got used of eBay for a fraction of the price of a dealer. If I would have realized there is actually a solution out there that didn’t require the upgrade to this smart thermostat, I probably wouldn’t have upgraded from old and ugly SYSTXCCUID01-B (looks like you have the same unit by looking at the pictures) :slight_smile:. But at least now I can control it with Alexa with the new unit.

I’ll likely be trying this out. My thermostat wires actually have wire nuts on them outside the unit from where the original thermostat wires connect to the furnace, so it should be pretty easy to tap into data feed of the wires. My HA setup is about 10 feet away from my furnace, so I may even bypass the raspberry Pi idea, and instead connect it directly to my ESXi physical host and spin up a vm and give it a go.

Cool - the third unit that I had actually had wire nuts outside of the unit so I didn’t even power it down before connecting. If my unit was close to the host, I would have done the same thing so I agree with you on that.

I do have the SYSTXCCUID01-B thermostat. Maybe I will cover them with some wall art…LOL.

@mww012 - Don’t worry about giving credit. It’s just a readme file, LOL. :slight_smile:

@Tj_Davis Yeah, there’s a bit of work to be done before it’s ready for a PR so I don’t think you’ll be taking credit for handling the “last mile”. I haven’t created unit tests, I know HA uses tox for code testing, and they’ve got this quality scale that I’d like to at least hit silver on at some point. For tox and unit tests I don’t know much more about them besides the fact that they exist. Just haven’t had the time to dig into it.

No worries on credit for the readme. It’s your work, you deserve your name in it.

Cool - I have read a little on the HA code testing requirements. I will take some time and run the code through some of their recommended tests and see what kind of progress I can make on getting it to silver.

Thanks again - this is awesome and has saved me a ton of time and money.

Glad it’s helping somebody other than me. :grin:

One thing I’ve noticed and haven’t been able to address is that every so often infinitive seems to hand back something weird to HA’s poll. Whatever it’s handing back apparently isn’t json. The pyinfinitive module throws up because of it. I don’t know enough about development best practices to know if I should handle that error in the HA component or in the python package. I’m not sure if it’s just me or there’s a more systemic issue with infinitive that’s the root cause.

Hi, been a while since this post.

I have pretty much the same HW setup with my Carrier unit. I’m capturing the frames and I am able to collect some metrics (temperature reported by thermostats, RPM’s, outdoor temperature).

Would you mind sharing what you could actually do with your script ?

I’d love to able to interact with my unit to set different set-points accordingly to the house occupancy.

Thanks !

Johan

@Johan-Arens - I use Node-Red for automation as opposed to scripting and have attached a screenshot of my Node-Red automation for this. I will give a few details that I know would help but feel free to ask for clarification on anything.

The way that my Node-Red flow works is every hour it does the following for each unit:

  1. Checks the current temperature for the thermostat
  2. If the temperature in that area is more than 5 degrees below the preferred minimum (68F), it will force the preferred cold weather settings. If the temperature is more than 5 degrees above the preferred maximum (72F), it will force the preferred hot weather settings.
  3. If neither of the above conditions are true then it checks the outside temperature. If outside is 60F or above then it sets the hot weather settings, heater to 68 and A/C to 70. If outside is below 60F then it sets the cold weather settings, heater to 70 and A/C to 72.
  4. The goal for this is for the heater to keep the house at 70 when it’s cold outside and the A/C to keep it at 70 when it’s warm outside. I’m probably stating the obvious but it is required to have a differential between A/C and heater (usually 2-3 degrees minimum) so that is why I have to do this routine.

The service call to set the temps is the climate.set_temperature call and the JSON looks like this:

{
    "entity_id":"climate.infinitive_thermostat",
    "target_temp_high": "71",
    "operation_mode": "auto",
    "target_temp_low": "69"
}

I hope that helps, let me know if you have any other questions.

Node-Red Flow Below. I could clean this up if I used functions for it in Node-Red but I have a goal to use as few functions as possible because, in my opinion, using functions to have less nodes defeats the purpose of Node-Red which, I think, is to give a nice visual representation of how the automations work.

Hey T-J,

Thanks ! Yes, it makes a lot of sense, the Carrier thermostat is enforcing deltas between cold and hot settings, which is annoying.

One question though, how do you deal with multi-zoning ? You look to have 3 zones, master-bedroom, upstairs and downstairs.

I have played a bit with Infinitive and it would only support one zone.

My master thermostat is a SYSTXCCUID01-B.

FYI, I’m planning to use Home Assistant as front end, just like you, Node-Red as automation backend.

Thanks,

Johan

Awesome, glad to help. You are correct, Infinitive only handles one zone but I was lucky in this regard because I don’t have 3 zones - I actually have 3 separate units (each one has the SYSTXCCUID01-B thermostat) and each one is using Zone 1. I think if you have multiple zones, that will be an issue with this solution.

I started out using Home Assistant Automations but switching to Node-Red is one of the best decisions I made with this system, it is amazing.

This project is a huge pain to get working :slight_smile:

So I bought the RS-485 USB adapter, installed everything on a VM, and can get the GUI to appear. However, the values are blank, there is no way to set the thermostat or anything. It does, however, show the blower RPM, but that’s about it. In the logs, I do see some errors decoding.

After playing with this for a bit, I’ve come to realize that Infinitive will only really work with non-touch thermostats. It appears that on the touch thermostats, it’s offloading information, like the indoor temperature and set temperature to the Infinity thermostat instead of having this information on the central unit.

So then I installed Infinitude. When doing this one, I had similar results to above, but then I realized I can change the settings on my thermostat to proxy it through Infinitude, and boom, once I did that I was able to see the data about my inside temperature, set temperature, etc. I had to then further configure a passthrough setting, since by default it will only communicate through to carrier’s servers every 17 minutes. When I control with Alexa I want quicker feedback than that.

What does this all mean? I think it means that I can’t use the HA component that @mww012 wrote, and instead need to look more at the component that @texnofobix wrote, but I am not sure if that component is fully up to date.

Another option is to revert from my new fancy touch screen thermostat to go to a dumb thermostat instead, but that’s not really what I want to do. If anyone else has any more tips/tricks here, please let me know.