Carrier Infinity

@acd - awesome! One of the things on my increasingly long todo list was to write an infinity protocol implementation in Go and in Elixir. Hooray opensource, now I don't have to learn :) I'll be happy to work with you to replace some of the serial bits of Infinitude with Infinitive as it develops if you like.
 
@bwally - As I recall on my system auxiliary heat is observable on the serial bus, but I don't recall if the thermostat makes it available in its published data structures. At my latitude we're just switching over from heat to cool, so if I can manage to remember when I get home, I'll see if I can force my system into aux heat to check. Your Pi should be able to run all of Brybus, Infinitude, and Infinitive, and both Infinitude and Infinitive support basic webservice calls which may allow your Control4 system to interact with them.
 
I think what you want to look for is Emergency Heat mode rather than Auxiliary Heat mode. They both activate the backup heat, but for different reasons.   I don't know if this distinction is visible on the serial bus.
 
Aux Heat mode is used during normal operation to supplement the compressor if the outside air temp gets too cold, and also when it is necessary to defrost the coils.  Emergency Heat mode is used when there is a failure in the compressor system.   On my thermostat, I can force Emergency Heat mode by pressing and holding the Heat button for 3 seconds.  This will prevent the compressor from running.
 
If the two modes are not visible on the serial bus, then it becomes more complicated as to how to decide when something is wrong.  I think you'd need to look at how long the backup heat is active, whether the compressor is running, and perhaps take into account the outside temperature as well. 
 
[Edit]: After thinking about this a bit, maybe just looking for the backup heat being active without the compressor running would be sufficient. I think that in normal circumstances, when Aux Heat is active, the compressor is always running, too.
 
Great info.
 
Currently we are just using the myinfinity service and hope there is an email alert.
 
Control4 already has a Carrier/Bryant driver for the SAM ... I wonder if anyone would know or could suggest which of the available options installed on a Pi would best emulate the SAM?
 
Control4 integrates with the SAM via RS232.
 
Ah neat.  I assume that's captured by impersonating the Carrier web services rather than snooping the ABCD bus, yeah?  I'd like to identify more of the proprietary data available on the ABCD bus but it's slow going...
 
nebulous said:
It's also worth noting that Infinitude exposes the power usage structure as xml and json at
 
http://yourinfinitude/energy.json
http://yourinfinitude/energy.xml
 
*which I just checked does enumerate emergency heat separately
 
I have been investigating alternatives to Carrier's very expensive SAM unit but there does not appear to be anything out there.  I am (slowly) building an interface between my home automation system and my Infinity thermostat using the Brybus routines.  The idea is to use the modify the Readraw module to send specific data requests to the thermostat, extract the data from the response and send it to my automation system through a TCP socket.  I guess you could do something similar but format the data according to the SAM protocol and push it out of a serial port.
 
I suspect Infinitive (https://github.com/acd/infinitive) may provide some (most?) of what you're looking for.  I've implemented a JSON API for getting/setting basic thermostat parameters.  If folks are interested in a JSON API to manipulate the schedules and such I can probably put that together too.
 
 
Peter847 said:
I have been investigating alternatives to Carrier's very expensive SAM unit but there does not appear to be anything out there.  I am (slowly) building an interface between my home automation system and my Infinity thermostat using the Brybus routines.  The idea is to use the modify the Readraw module to send specific data requests to the thermostat, extract the data from the response and send it to my automation system through a TCP socket.  I guess you could do something similar but format the data according to the SAM protocol and push it out of a serial port.
 
Hi acd,
you may have noticed i have been seeking a solution to monitor a carrier infinity single zone system without a SAM. the purpose is to prevent a financial disaster i experienced last year when the compressor went down and the system ran on emergency/aux heat all winter.
 
i have successfully installed and running your infinitive software on a Pi 2 Model B V1.1 and it runs great. I don't have an RS485 adapter but i was able to at least test with a standard USB to Serial adaptor. (for now)
Currently i would require just 1 feature and that would be email notification the system has gone into Emergency/Aux mode.
 
Ultimately, i would like to get the full SAM emulation working and integrated into a Control4 system. The current Control4 driver is looking for the data on a serial port. It would be great to rework the Control4 driver (written in LUA) to look for your data via IP ... that would be awesome!
 
Do you think there is a way to get the notification of Emergency/Aux mode from infinitive? Perhaps we can use IFTTT?

FYI ... i'm running the latest Raspian Pixel ... soooo nice!

thanks!
steve
 
I am attempting to install Infinitude and got a couple errors and wondering if anyone can help:
 
pi@raspberrypi:~/infinitude $ sudo nano /home/pi/infinitude/infinitude
pi@raspberrypi:~/infinitude $ ./infinitude daemon
Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: usr/share/perl/5.14.2 /home/pi/infinitude/lib /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm -linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at /home/pi/infinitude/lib/XML/Simple/Minded.pm line 5, <DATA> line 1.
BEGIN failed--compilation aborted at /home/pi/infinitude/lib/XML/Simple/Minded.pm line 5, <DATA> line 1.
Compilation failed in require at ./infinitude line 15, <DATA> line 1.
BEGIN failed--compilation aborted at ./infinitude line 15, <DATA> line 1.
pi@raspberrypi:~/infinitude $ sudo nano /home/pi/infinitude/start_infinitude.sh
pi@raspberrypi:~/infinitude $ chmod +x /home/pi/infinitude/start_infinitude.sh
chmod: changing permissions of ‘/home/pi/infinitude/start_infinitude.sh’: Operation not permitted
 
OK, I did get it running but browing to Infinitude I see only the Humidity circle ... (maybe because i'm not actually connected to a an infinity system?)
 
But i do see the following errors in the Pi console:
 
Server available at http://127.0.0.1:3000
[Sun Oct 23 14:02:11 2016] [debug] GET "/"
[Sun Oct 23 14:02:11 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:11 2016] [debug] 304 Not Modified (0.013178s, 75.884/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/serial"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] WebSocket opened. Attempting to access /dev/ttyUSB0
[Sun Oct 23 14:02:12 2016] [debug] 101 Switching Protocols (0.018211s, 54.912/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/energy.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.033634s, 29.732/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/notifications.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.013068s, 76.523/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/status.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.013094s, 76.371/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/systems.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.013502s, 74.063/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/systems.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.011536s, 86.685/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/energy.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.011695s, 85.507/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/status.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.011622s, 86.044/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/notifications.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.011648s, 85.852/s)
[Sun Oct 23 14:02:27 2016] [debug] Closed stream
[Sun Oct 23 14:02:27 2016] [debug] Inactivity timeout
[Sun Oct 23 14:02:27 2016] [debug] Closed: 1006
Mojo::Reactor::poll: Timer failed: Can't use an undefined value as a symbol reference at /usr/local/share/perl/5.20.2/Mojo/Reactor/Poll.pm line 109.
[Sun Oct 23 14:02:12 2016] [debug] 404 Not Found (0.011622s, 86.044/s)
[Sun Oct 23 14:02:12 2016] [debug] GET "/notifications.json"
[Sun Oct 23 14:02:12 2016] [debug] Routing to a callback
[Sun Oct 23 14:02:12 2016] [debug] Template "key.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.json.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Template "not_found.development.html.ep" not found
[Sun Oct 23 14:02:12 2016] [debug] Rendering cached template "not_found.html.ep" from DATA section
^Croot@raspberrypi:/home/pi/infinitude#
 
The above adaptor is the one I use right now and is available from different suppliers on Amazon:
https://www.amazon.com/Interface-Ft232rl-Module-Protection-Function/dp/B01LKZ7JMK/ref=sr_1_9?ie=UTF8&tag=sbhq-20&qid=1477251723&sr=8-9&keywords=usb+rs485
 
There are a couple of options on the Infinitude wiki that have worked for me, but any FTDI or PL2303 or CH341 based adaptor (which is basically every USB adaptor that exists :) ) should be ok. 
https://github.com/nebulous/infinitude/wiki/Infinity-Protocol-Hardware
 
Like bwally I was able to get Infinitive running on a Pi 2 and connected to the Infinity using this adapter.
 
The UI worked straightaway. Thanks to ACD for releasing this.
 
I recently moved into a house with an Infinity system - heat pump, coil and aux heat plus the basic Infinity thermostat (SYSTXCCUID01). I have since been discovering the various expensive options Carrier offers  (Touch thermostat, SAM) if I want to upgrade and be able to interface with the system. So the RS485 adapter and Infinitive were a welcome relief.
 
First off I just want to log data and thought I'd use the API for that. So far though, I'm not getting anything back any JSON from the API. A get to http://myip:8080/api/zone/1/config just returns the response "true". Any ideas would be welcome.
 
I'll look into Infinitude also.
 
OK - looks like the build at the Download URL was the initial release. Built from source and I'm getting JSON back from the API. Very nice.
 
Back
Top