Custom Component: Carrier Infinity Touch control via Infinitude

UPDATE!
Check out the latest project, homeassistant-infinitude-beyond, released in March 2024.


I have created custom component for controlling Carrier Infinity Touch thermostats through an Infinitude proxy server.

It has been tested against all the standard HA thermostat capabilities, and supports multiple zones. I’d appreciate feedback from others who are willing to try it out!

3 Likes

This is great, thanks for the work here @MizterB! It works out of the box as desired which is great, but I do see a couple of smaller issues here. My system doesn’t have any zones (I’m thinking you wrote this to handle multiple zones in your setup) so as a result, it doesn’t fully translate into a non-zoned system. I will put these issues in Github instead.

It would be super neat if there was the ability to set home/away/sleep/wake from HA as well. Perhaps you can, but not in the default lovelace UI for thermostat.

Also what version did you use test this against? Seems like this works fine on HA .88.1, but then I upgraded tonight to .89.1, and it fails, I get a generic “Platform not found: climate.infinitude” message. Really odd.

I developed it against .88 and ran into the same issue as you on upgrade. I needed to update some references to constants to be compatible with .89. Changes have been uploaded to GitHub.

I saw the issues you submitted as well - I appreciate the feedback. Will look into those as time allows. However, for the sensor request, I recommend you look at creating Template Sensors for now - these will allow you to build sensors off of the thermostat attributes. That at least covers your request for Activity. If you need additional attributes that I have not added yet, you could also look at RESTful sensors. If you need references on how to structure the REST calls, you can enable debug logging for this component, and it will show the URLs:

logger:
  default: info
  logs:
    custom_components.infinitude.climate: debug

Ok, glad it wasn’t just me then with .89 issues. Yea for now I’ll use JSON sensors but as you develop it further would be nice to pull in some of those additional attributes. Really appreciate the work you’ve done here and will continue to test.

Cool. Seems to work with my instance at least when it comes to displaying current setting and pushing a manual timed adjustment :+1:

1 Like

I’ve been using this for a few days and works pretty good. @MizterB, I have submitted a PR to pull in additional attributes for the component to easily create sensors from the info.

I did run into a couple of other random issues, but it was issues with infinitude rather than the HA component here. Filed a couple of bugs in the infinitude project, @nebulous.

I think it would be nice if this component could change the activity mode on the thermostat. It looks like you may have started something with this, since I do see that you defined activities in lines 42-48 (though you do reference away twice and are missing awake). Doesn’t look like anything with activities has been implemented - other than manual.

By building that functionality, you can then track when people are home with HA during the day, and if the person goes from not_home to home, simply set the program to home, without having to depend on the rather spotty occupancy sensor that these units contain. There would have to be more thought of how to code it, but that’s what I would envision for a start.

@nebulous - Thank you - this wouldn’t be possible without your great project!

Question for you…if is possible for the API to depose the serial # / system ID of there thermostat? I know it is embedded in the URLs that it uses to communicate with the proxy, but can it be accessed via the API? This would help address https://github.com/MizterB/homeassistant-infinitude/issues/2

@bdf0506 - Thanks. The PR has been merged.

Regarding activity changes, I would need to provide a custom service to make the calls. Haven’t done that before, but shouldn’t be hard. The reason certain ones are referenced today is to support the hold mode and away mode settings that are part of ‘standard’ HA thermostat functionality.

Hello,

I wonder if anyone has tried to work entire software approach using openAPI from Carrier or Bryant.

https://openapi.ing.carrier.com/docs

Carrier is an evil evil organization that thinks their product is the best in the world and thinks everyone wants to use their POS thermostats.

That being said, the API isn’t available on end user units, it’s only available to Carrier’s cloud. If you search online, you need to request from Carrier and API key and it appears nobody has been successful to get an individual api key.

Im having issues getting this component to load on 0.90.1, getting zone errors which i think if from only having one zone:
Error while setting up platform infinitude Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 128, in _async_setup_platform SLOW_SETUP_MAX_WAIT, loop=hass.loop) File "/usr/local/lib/python3.7/asyncio/tasks.py", line 416, 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/infinitude/climate.py", line 69, in setup_platform devices.append(InfinitudeZone(infinitude, zone["id"])) File "/config/custom_components/infinitude/climate.py", line 111, in __init__ self.update() File "/config/custom_components/infinitude/climate.py", line 134, in update self._occupancy = self._zoneStatus["occupancy"][0] # occupied, unoccupied, motion KeyError: 'occupancy'

Any ideas?

My guess is your thermostat doesn’t have an occupancy sensor in it. Comment out line 134 from climate.py and try again.

This was a pull request that I did into the code that probably needs to be reversed. I guess not every thermostat has an occupancy sensor so this code fails if you don’t have the sensor.

I just released an updated version to address recent requests…

Changelog

0.3

  • Safely handle updates of values that might not exist on all thermostats
  • Provide ability to override zone names

Just installed. This is perfect. Thanks so much.

Just a heads up. I got an error stating that “zone_names” isn’t a supported key. Running 0.90.2

Has anyone used this component to surface the thermostat controls in Homekit through the HA / Homekit component? I’m interested in doing that and just curious if others have had success (and which version of Home Assistant you’re on). I’m extremely new to HomeAssistant, but this would be my impotice for starting if it works!

Ok I got this up and running and showing up successfully in Homekit! One thing I’m noticing - when adjusting the temperature in “Auto” mode, the values aren’t successfully saving in Infinitude (and therefore don’t actually adjust the thermostat’s temperature). Value changes work in Heat or Cool mode, but in Auto I can see the changes I’ve made in HomeAssistant being updated in the Infinitude interface, but they’re not actually saving - after a while they just get overwritten with the previous value.

If I manually change and save the values directly in Infinitude they save correctly. Anyone else experiencing this? I’m on HA v93.1

Got this solved and everything working correctly! There’s another branch (https://github.com/ccalica/homeassistant-infinitude) that has a fix to the “Auto” issue - the heat and cool values were being reversed and causing problems.

I am aware of the pull request, and will get it integrated soon. I also need to update this to comply with the new directory structure requirements for components. Hopefully before this week is out.

Heads up to anyone using this component that 0.96.x introduces a rewrite of the climate integration, which in turn breaks this component. @mizterb is aware of this and it is filed as an issue on the repo, so best to monitor it there. For now best to stick to 0.95 if you rely on this component.