Carrier/Bryant Infinitive Integration

I have been working on a fork of infinitive in which I have fixed some old bugs and added multi-zone support as well as a number of extra sensors and debug/tracing features. Instead of messing with the existing home-assistant integration, which became an unwelcome challenge (for me) to extend for multiple zones, I added optional MQTT pub/sub support for infinitive’s sensors and controls in a form that’s compatible with the standard MQTT Climate integration. This way a fairly simple config blob (which soon should be created by MQTT discovery) creates fully working HA climate entities for each HVAC zone, without needing a custom integration. Plus, efficiency is improved and latencies are reduced since it benefits from MQTT’s “push” model rather than polling.

It is still a work in progress and in particular I have not bothered making releases/builds, not knowing if there is any broader interest, but I can do if there is. I have tried to maintain backward API compatibility so any existing clients of other infinitive forks should still work fine on a one-zone system (or just see Zone 1 on a multi-zone system as they would today). But there has been no testing to validate these things. This and a number of other caveats are mentioned in the README.

I was going to wait a little longer to publish this once it is a little more polished but was inspired by seeing some recent activity on this thread. I will be happy to try to address any feedback or push releases if others want to make use of it and report results.

https://github.com/lurgh/infinitive

Interesting, I’m in the process of re-writing infinitive as a driver in node.js/Typescript, with the intent to package it as a standalone driver, and as a separate package with a socket/api wrapper, and eventually a Home Assistant integration. (I’ve modeled it off node-zwave-js as I’m a minor part of that project.) I’m trying to avoid mqtt if I can. Like you I suspect, this is mostly a project to work on and I’m not sure how big of a demand there is. I was looking to explore a serial project in node.

I’m only a few days into it, up to the point of successfully reading the parsed frames from the serial port, so it’ll be a while before mine is finished.

Hi,

Have you figured out what’s going on with the vacation mode yet? I am trying to make an automation to set the thermostat to vacation mode when no one is home.

Thank you!

Yes, looks like this is one of the things I fixed, it was a simple math error trying to calculate the number of vacation days based on the number of hours remaining. A one-line fix in commit e0708bb at tabes.go line 86/88.

I also added API support to get/set vacation time in units of hours (rather than days) since that’s how it is actually tracked in the serial API and could be useful.

I noticed that Infinitive saw some merges tonight for the first time since 2021, which changes the api. I imagine it’ll break the integration for good. Just an FYI for everyone.

Hey all. Sorry I’ve been gone for a while. Life and work changes have taken all my free time. I’m trying to make myself set some time aside for my HA hobby.

For the integration, it may be best to transfer that repo to someone else in the community who can push it forward. I had to replace my HVAC a little while back and couldn’t get another Bryant/Carrier unit. As of now I don’t even have anything to test with.

If anybody’s interested let me know. There’s also the underlying pyinfinitive Python package hosted on pypi.

Until then I’ll do my best to pay attention to the repo so that any PRs that come through we can merge.

Hi @laur ! So I was about to start digging into ACD’s repo and noticed you did pretty much what I was trying to achieve, which was multi-zone support ! Thank you so much !!!

The only thing is that I’m a bit lost about where to put the MQTT additional options mentioned in the instructions. The service is running as a daemon per mww012 instructions, I added 1 config per zone in my configuration.yml but I’m not able to retrieve any data to my sensors.

This is the part I don’t have a clue what to do with it : GitHub - lurgh/infinitive: Infinitive impersonates a SAM on a Carrier Infinity system management bus. This fork supports multi-zone systems and MQTT.

Thanks for your hard work btw !

Hi. Very cool that you want to give this a try. I am assuming you’ve got an MQTT broker running and you have set up the HomeAssistant MQTT integration to poll it. You need to know the hostname or address, and username/password for your MQTT broker.

If you have followed @mww012’s excellent instructions to set up a daemon using systemd, you’ll need to change the ExecStart= line to two lines, something like:

Environment="MQTTPASS=myMQTTpass"
ExecStart=/path/to/infinitive -serial /dev/ttyUSB0 --mqtt=tcp://myMQTTusername@myMQTThost:1883

of course, you will need to provide the pathname of the infinitive executable built from my branch, and also substitute your serial device name and MQTT parameters in those lines. With that in place, reload the systemd unit file if needed and restart the service.

Once infinitive starts posting to MQTT, HomeAssistant should auto-discover several entities. If it isn’t obviously working, I recommend looking at the infinitive log using journalctl -u infinitive to see if it is connecting to MQTT or reporting failures.

That’s a lot and I don’t know where you are starting from, so have a look and let us know how far you get.

Thank for help @laur . I did update my ExecStart= and I can see something is happening when checking the status of the service with systemctl status infinitive :

I don’t see any error when running journalctl -u infinitive

I did configure the climate entities like you mentioned in your instructions :

But Home Assistant cannot read the values sent by Infinitive :

And I can confirm that Infinitive works properly because the value return to the web ui are correct (except that outdoor temp that is not right for some reason … ) :

I’m usually good a debugging stuff but MQTT as always been complicated for some reason …

So @laur I managed to make it work ! Turns out that using the MQTT Broker hostname (core-mosquitto in my case) in the mqtt option was the issue. But using the ip address of the broker did the trick.

So for anyone using this as a service, here’s the proper infinitive.service config you need :

[Unit]
Description=Infinitive Service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
Environment="MQTTPASS=myMQTTpassword"
ExecStart=/root/go/bin/infinitive -httpport=8080 -serial=/dev/ttyUSB0 -mqtt=tcp://myMQTTuser@myMQTTbrokerIP:1883

[Install]
WantedBy=multi-user.target

Also, small detail but when added in the infinitive.service file, all the options need to be used with single -[option] rather than --[option]

I opened a PR with an updated README.md :slight_smile:

If anyone is struggling with setting a temp to their thermostat from Home Assistant, instead of using Service: Climate - Set Target Temperature, you need to use the publish topics mentioned in @laur documentation and use Service: MQTT Publish instead.

Here’s an example (adjust the topic and value based on your need):

service: mqtt.publish
data:
  qos: 0
  retain: false
  topic: infinitive/mode/set
  payload: heat

I’m really glad to see you got it working. Regarding your experience that climate.set_temperature is not working for you, it appears to require specifying both the low and high temp settings, for example this works for me:

service: climate.set_temperature
target:
  entity_id: climate.upstairs
data:
  target_temp_low: 72
  target_temp_high: 84

If only one of the target_temp_xxx values are provided, I get an error when making the service call:

Failed to call service climate.set_temperature. some but not all values in the same group of inclusion 'temperature' @ data[<temperature>]. Got None

Must be something in the climate entity or the MQTT climate integration. Makes it a little inconvenient for some use cases so your workaround to post directly to MQTT could be helpful. But I’ll point out that it works fine with the common thermostat UI cards so they must take this into account already.

This infers deprecated elements in 2025.1 are going to negatively impact the Infinitive integration?
Changes with 2024.1.0 showing warnings · Issue #16 · mww012/hass-infinitive · GitHub

As a very grateful user, without any programming skills, I am hoping someone is able to tackle this.