Carrier/Bryant Infinitive Integration

Greetings. First of all, I’d like to express my appreciation for all of the work shared by others so that numpties like me can benefit, thank you!

I have a problem getting things to work, I think I know why, I’m interested in whether I’m on the right track…?

I have Infinitive setup and working on a Pi, I can use the web interface no problem. When I try and setup @mww012 's custom component, no dice.

  • The first thing to tell you all is this is a Bryant Evolution system.
  • When I run the API calls, specifically GET bryant:8080/api/zone/1/config the returned parameter list is shorter than I see on https://github.com/acd/infinitive
  • When I try and install in HA I receive an initial error of:
Error while setting up platform infinitive
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 150, in _async_setup_platform
    await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
    return fut.result()
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/infinitive/climate.py", line 95, in setup_platform
    add_entities([InfinitiveDevice(inf_device, name, temp_min_spread)])
  File "/config/custom_components/infinitive/climate.py", line 130, in __init__
    self.update()
  File "/config/custom_components/infinitive/climate.py", line 265, in update
    self._target_humidity = self._status['targetHumidity']
KeyError: 'targetHumidity'

Since I don’t see that parameter returned by the API call, I commented it out. I then did for all other parameters I don’t see to have / see. Eventually I’m left this error:

Error while setting up platform infinitive
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 150, in _async_setup_platform
    await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
    return fut.result()
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/infinitive/climate.py", line 95, in setup_platform
    add_entities([InfinitiveDevice(inf_device, name, temp_min_spread)])
  File "/config/custom_components/infinitive/climate.py", line 130, in __init__
    self.update()
  File "/config/custom_components/infinitive/climate.py", line 282, in update
    elif self._hvac_mode == 'heat' and self._stage > 0:
TypeError: '>' not supported between instances of 'NoneType' and 'int'

and here I’m stuck.

My hypothesis is the custom component, and indeed infinitive itself was all done for Infinity. And yes, the bus is the same, and the messages are the same too (at least to a large extent as Infinitive’s web interface works just fine) but perhaps I can’t get this into HA as there is not a 1:1 match between Infinity and Bryant. Comments? Do I need a new / different component for HA to work in my instance?

One thing that doesn’t make sense to me… if I make an API request for
GET /api/zone/1/airhandler or GET /api/zone/1/heatpump I get a 404 error. The request for vacation attributes works fine.

Hey! Thanks for trying out the integration. It should work with Bryant systems as that’s what I’ve got and what I’ve been testing against.

Quick question, when you deployed Infinitive itself, did you use the original Infinitive from ACD or the one from Will1604? The reason I ask is that the integration was written against Will1604’s repo. He made a lot of additions to the API and restructured it bit. That’s the one you want.

@Tj_Davis did a write up over his process to get it going. I’ve copied it below and plan on getting that up in my repo. I’ve copied it below. Let me know if you hit any discrepancies.

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
2 Likes

mww012, thank you so much for being actively involved in this. I’ve spent the last several hours trying to catch on this thread, a Reddit thread, and the both instruction pages for Infinitude/Infinitive. I am not a strong Linux person, so those instructions seem overwhelming to me initially. But I seem to have gotten Infinitude to successfully run on a Pi last night. However, just to clarify, if the end-result needed is integration for control on a Bryant system on Home Assistant, then I need to be pursuing the deployment of Infinit-IVE?

Correct. My integration is for the Infinitive software. Infinitive acts kind of like another thermostat on the A/C bus. You’d use it if you have the normal “dumb” thermostat.

@MizterB has the Infinitude integration that you’ll need to use if you have the Infinity Touch thermostat.

Infinitude

Either of the integrations should be able to control at least the basic functionality of the A/C unit.

@mww012 thank you, thank you! I had indeed used the ACD repo. I have redone things with Will1604’s and everything is working great. Both the HA piece and now also the API is working as documented. :grinning:

Maybe I should clarify, I have the Bryant Evolution circa 2005 unit. It does not have a touchscreen, but it is a “smart” thermostat in the sense that it has schedules programmed in as well as a vacation mode. It seemed to match the pictures of what others were posting on here. I should note that it seems to be the only one on the market that is not Nest compatible (something about communicating over a serial bus with the systemboard), which is why this project is something I’ve been hoping for for well over a decade.

Infinitive should work for you. Based on your description we’ve got the same thermostat. 2005 is when my house was built so I’m assuming my unit is from about that time frame as well. If you follow the steps I sent @dampsquid you should be good to go.

I’m still waiting on the 485 dongle, the 232 I had didn’t work; surprise!

But per your instructions (other than having to run every command using sudo), I have a web interface that is accessible from a browser once the Pi boots up. So I’m calling that a big win for me.

I can confirm that if you don’t have a RS232 or RS485 USB dongle plugged into the Pi when the Infinitive service tries to launch, the web interface won’t come up at all. But it will start fine even if you don’t have the serial leads hooked up yet and have that dongle plugged in.

Update: Nearly a complete success. I have the system board of the HVAC going to the RS485 adapter. The web server reports exactly what is on the wall panel (sometimes takes a few second to refresh on the web interface, be patient). I dragged the infinitive repo into the custom_components folder (which I had to create). And now I do have a climate_infinitive entity in my list.

For a temp solution, I’ve added a HVAC card to lovelace and brought in the infinitive web page in on an iframe. It seems to work very well, if a bit of a hack because I dont know any better.

Question 1: Should there be a virtual control pad in Home Assistant that I could control the HVAC with?
Question 2: Is there an official Infinitive lovelace card that already exists?
Question 3: I heard mention of using the same Pi for the webserver and the HA installation. Is this preferred/easy-to-do?

Thanks.

Awesome! Glad to hear you’re making progress.

For your questions, here’s what I’ve got…

  1. Yes, there’s a thermostat card built into Lovelace.

  2. See question 1, lol. It’s actually just Lovelace’s generic thermostat card that is used for most climate platforms.

  3. You theoretically could do this. I’ve not attempted it but I don’t see why it wouldn’t work. So long as you can reach your A/C unit from the RPi that you’re running HA on. I wouldn’t say it’s preferred but if you want to give it a shot I’ll help where I can.

1 Like

Edit: Ok, so went ahead and checked all my syntax… I was calling the infinitive entity without prefixing the climate part. (entity: infinitive instead of entity: climate.infinitive).

All that to say, wow. I’m super impressed with everyone on here that has made this possible. I’m serious when I repeat what I said above, that we’ve been looking for ‘smart’ control over the Bryant Evolution system for 13 years. The system is efficient because of the 3-stage blower, so it’s been a nice system for us. But never having that last piece of the puzzle in general, and now especially for the smarthome part was just grating on me. When any average-Joe can go out and buy a Nest to install, I was suffering from major FOMO.

Thank you again.

What is the syntax of the section that needs to go into configuration.yaml to allow the thermostat card to work in lovelace?

'climate:
’ - platform: infinitive
’ host: IP port: Port

Does anyone know if this will work with a Bryant Housewise thermostat?

I looked at the infinitude integration, but the Housewise thermostat does not have an advanced wifi settings option to configure a proxy.

Thanks in advance!

@mww012 have you considered making your Gihub repo available via HACS? Looking at the HACS developer docs, it seems like your repo is already almost set up per the requirements. It certainly would make it easy to use direct from HA, without going through git, and if there were ever changes pushed to the repo, it would be very easy to update, too.

I think it’s a great idea! I actually started looking at the a few weeks ago. Things have been a little crazy lately. I’m currently in Disney World with the family. I’ll get back into it hopefully in the next couple of weeks and knocks something out.

1 Like

Just stopped by to say Thank You to all who worked/are working on this. I had it up and running in 30 minutes!

I just started playing with the HA card and need to figure out how to run in Heat only mode or AC only as mine is now showing Heat/Cool settings. I guess it really doesn’t matter. I would like to see how I can simply turn it off. Not sure if this is even possible.

Anyway, thank you again!

That’s awesome! Glad you got it going!

Ha - okay. I didn’t really understand the Thermostat card (I feel dumb), but now that I’ve played with it, I understand. Is there a way to turn the unit entirely off? I envision an automation where I turn on the ceiling fans and turn off the A/C if nobody’s home and the outside temp is within a range.

I’m still missing most things. Though it is happening on the infinitive “app” as well.

This is a Bryant Evolution unit, so maybe that’s it?

Below is what my states look like. Note all the 0s and bogus data. I’m able to get what I was particularly wanting, which was CFM and RPM. Though the CFM doesn’t match my own pitot tube measurements. In this case, it is showing 843CFM while the pitot tube is measuring about 1200. The pitot tube is reporting a peak of 1400CFM which is what the unit is rated for, but my math could just be wrong.

Anyways, here’s that list.

hvac_modes: heat,cool,heat_cool
current_temperature: 0
min_temp: 45
max_temp: 95
temperature: 0
fan_mode: auto
fan_modes: auto,low,medium,high
hvac_action: idle
preset_mode: home
preset_modes: null
current_humidity: 0
target_humidity: 0
blower_rpm: 1001
stage: 0
override_duration: 0
airflow_cfm: 843
outdoor_temp: 0
aux_heat: false
heatpump_coil_temp: 36.125
heatpump_outside_temp: 44.75
heatpump_stage: 2
friendly_name: Infinitive
supported_features: 25

I’m using a Bryant Evolution unit as well and I’m pulling most of the metrics you’re showing 0’s for. The root of the issue looks like infinitive isn’t able to grab those metrics. If you look at your infinitive logs (not in HA but on the RPi that’s running infinitive) do you see anything of note?