nebulous / infinitude

Open control of Carrier/Bryant thermostats
MIT License
225 stars 50 forks source link

Is infinitude compatible with INFINITY® SYSTEM CONTROL SYSTXCCITC01-B Thermostat #49

Closed rgm60527 closed 5 years ago

rgm60527 commented 6 years ago

I have a Rasberry pi up and running. The thermostat has had it wireless proxy updated to the IP of the Raspberry port 3000. In a browser, if I use the loopback IP I get this display:

Status Comfort Profiles Schedules Serial About ∞ Infinitude Infinitude on github

The results of the console session when I was installing the bits are attached.

Also, I wonder if the model thermostat is compatible?

Any help will be appreciated very much.

-rick

log.txt

rgm60527 commented 6 years ago

Ignoring the compatible question for the moment, I have found this in the infinitude web page under Developer Tools and that tells me I have missed something. But I'm afraid I don't understand what it is telling me aside from missing some files. In the debug windows they are shown as red.

192.168.1.96/:14 GET http://192.168.1.96:3000/bower_components/bootstrap/dist/css/bootstrap.css 192.168.1.96/:15 GET http://192.168.1.96:3000/bower_components/c3/c3.css 192.168.1.96/:58 GET http://192.168.1.96:3000/bower_components/jquery/dist/jquery.js 192.168.1.96/:17 GET http://192.168.1.96:3000/bower_components/fontawesome/css/font-awesome.css 192.168.1.96/:16 GET http://192.168.1.96:3000/bower_components/angular-chart.js/dist/angular-chart.css 192.168.1.96/:59 GET http://192.168.1.96:3000/bower_components/angular/angular.js 192.168.1.96/:60 GET http://192.168.1.96:3000/bower_components/bootstrap/dist/js/bootstrap.js 192.168.1.96/:65 GET http://192.168.1.96:3000/bower_components/d3/d3.js 192.168.1.96/:64 GET http://192.168.1.96:3000/bower_components/angular-route/angular-route.js 192.168.1.96/:63 GET http://192.168.1.96:3000/bower_components/angular-sanitize/angular-sanitize.js 192.168.1.96/:62 GET http://192.168.1.96:3000/bower_components/angular-cookies/angular-cookies.js 192.168.1.96/:61 GET http://192.168.1.96:3000/bower_components/angular-resource/angular-resource.js 192.168.1.96/:66 GET http://192.168.1.96:3000/bower_components/c3/c3.js 192.168.1.96/:71 GET http://192.168.1.96:3000/bower_components/Chart.js/Chart.js 192.168.1.96/:70 GET http://192.168.1.96:3000/bower_components/ng-knob/dist/ng-knob.js 192.168.1.96/:69 GET http://192.168.1.96:3000/bower_components/angular-dialgauge/src/angular-dialgauge.js 192.168.1.96/:68 GET http://192.168.1.96:3000/bower_components/angular-timeago/src/timeAgo.js 192.168.1.96/:67 GET http://192.168.1.96:3000/bower_components/jdataview/dist/browser/jdataview.js 192.168.1.96/:72 GET http://192.168.1.96:3000/bower_components/angular-chart.js/dist/angular-chart.js 192.168.1.96/:73 GET http://192.168.1.96:3000/bower_components/ngTimepicker/src/js/ngTimepicker.js 192.168.1.96/:15 GET http://192.168.1.96:3000/bower_components/c3/c3.css 192.168.1.96/:58 GET http://192.168.1.96:3000/bower_components/jquery/dist/jquery.js 192.168.1.96/:17 GET http://192.168.1.96:3000/bower_components/fontawesome/css/font-awesome.css 192.168.1.96/:16 GET http://192.168.1.96:3000/bower_components/angular-chart.js/dist/angular-chart.css 192.168.1.96/:59 GET http://192.168.1.96:3000/bower_components/angular/angular.js 192.168.1.96/:60 GET http://192.168.1.96:3000/bower_components/bootstrap/dist/js/bootstrap.js 192.168.1.96/:61 GET http://192.168.1.96:3000/bower_components/angular-resource/angular-resource.js 192.168.1.96/:62 GET http://192.168.1.96:3000/bower_components/angular-cookies/angular-cookies.js 192.168.1.96/:63 GET http://192.168.1.96:3000/bower_components/angular-sanitize/angular-sanitize.js 192.168.1.96/:64 GET http://192.168.1.96:3000/bower_components/angular-route/angular-route.js 192.168.1.96/:65 GET http://192.168.1.96:3000/bower_components/d3/d3.js 192.168.1.96/:66 GET http://192.168.1.96:3000/bower_components/c3/c3.js 192.168.1.96/:67 GET http://192.168.1.96:3000/bower_components/jdataview/dist/browser/jdataview.js 192.168.1.96/:68 GET http://192.168.1.96:3000/bower_components/angular-timeago/src/timeAgo.js 192.168.1.96/:69 GET http://192.168.1.96:3000/bower_components/angular-dialgauge/src/angular-dialgauge.js 192.168.1.96/:70 GET http://192.168.1.96:3000/bower_components/ng-knob/dist/ng-knob.js 192.168.1.96/:71 GET http://192.168.1.96:3000/bower_components/Chart.js/Chart.js 192.168.1.96/:72 GET http://192.168.1.96:3000/bower_components/angular-chart.js/dist/angular-chart.js 192.168.1.96/:73 GET http://192.168.1.96:3000/bower_components/ngTimepicker/src/js/ngTimepicker.js app.js:3 Uncaught ReferenceError: angular is not defined at app.js:3 (anonymous) @ app.js:3 main.js:2 Uncaught ReferenceError: angular is not defined at main.js:2 (anonymous) @ main.js:2 serial.js:17

nebulous commented 6 years ago

It looks like you need to run Infinitude in production mode. See this answer to issue #48

https://github.com/nebulous/infinitude/issues/48#issuecomment-387054617

And yes, Infinitude should be compatible with the SYSTXCCITC01-B. I'm fairly sure that's the model I have.

nebulous commented 6 years ago

Hopefully if you pull the latest version, production mode will now work without fiddling as it did for @watkipet

rgm60527 commented 6 years ago

We're making progress. Thanks.

Now I get a partially formed status web page with just the icon for humidity and few menu controls as you will see in the jpg attached. Chrome developer tools - console I see a bunch of errors that all look sort of like this:

6e040751.vendor.js:5 SyntaxError: Unexpected token I in JSON at position 0 at JSON.parse () at W (6e040751.vendor.js:4) at vc (6e040751.vendor.js:5) at 6e040751.vendor.js:5 at f (6e040751.vendor.js:4) at zc (6e040751.vendor.js:5) at g (6e040751.vendor.js:5) at i (6e040751.vendor.js:5) at 6e040751.vendor.js:5 at o.$eval (6e040751.vendor.js:6)

This is how I am starting Inifintude:

cd ~/infinitude pi@raspberrypi:~/infinitude $ ./infinitude daemon -m production Can't find serial device: /dev/ttyUSB0. Serial monitoring disabled. [Sat May 12 14:54:13 2018] [info] Listening at "http://*:3000" Server available at http://127.0.0.1:3000

I don't have the serial bus attached so I assume the error message is meaningless form that perspective.

Screenshots of web page, few of the error seen in the console for the displayed web page and the full text from the console window.

Again thanks for your assistance especially since I am way clueless to the ways of Rasberry PI. It did let me remember a little bit from the days of SCO UNIX which is for me a really really distant memory.

-r

1 192.168.1.96-1526156399181.txt 2

rgm60527 commented 6 years ago

Never mind this entry its wrong...

Thought I would try specifying the IP of the thermostat.

~/infinitude $ ./infinitude daemon -m production -l http://192.168.1.107:3000 Can't find serial device: /dev/ttyUSB0. Serial monitoring disabled. Can't create listen socket: Cannot assign requested address at /usr/share/perl5/Mojo/IOLoop.pm line 126.

Not smart to know if that's a clue or not.

-r

rgm60527 commented 6 years ago

The IP of my raspberry is 96 and Infinitude starts just fine using that IP. Got confused for a bit this morning as I was flailing about. The IP of the thermostat is ...107 but its proxy is set to ...96:3000. The web page display gives me a momentary blue globe then it flashes to red same as described in MOJO EMIT error. #33. I didn't see any solution in 33.

ps. I took some photos of my stat's settings in case I'm doing something really stupid.

20180513_111454 20180513_111421 ip of raspberry

rgm60527 commented 6 years ago

Well being left alone, in the dark, with a pack of matches, and eventually, I get a fire going. To put it out I decided to wipe everything out and I started over. The sad outcome is I'm exactly back to where I was. I do wonder, not having any experience using a proxy before is how could the thermostat continue to operate when the pi was offline. The thermostat's proxy setting points to raspberry so when it wasn't available the thermostat should not have been able to reach the Internet? Right?

Also, I never get state/systems.xml file for whats that worth.

rgm60527 commented 6 years ago

Progress has been made and I can’t rule out stupidity on my part. I know I am guilty of this in at least one aspect. At one point, I had prefixed the proxy IP with HTTP:\ and I’m not sure when in the flailing about mode I did that but in retrospect that was about as dumb as I could get. I also power cycled the thermostat and after that, with no other changes, it would not re-connect to the router. To clarify I mean no wi-fi (their Wi-Fi symbol with a red x) let alone connection to My Infinity at carrier via proxy. I I found a setting in the router that was set to N only as in 802.11N ( I think I remember reading somewhere that Carrier’s thermostat was B capable only – have no idea) but I set it auto. Now I never fiddled with that setting at all during the previous messing around so go figure but Infinitude can now connect to the progress has been made and I can’t rule out stupidity on my part. I know I am guilty of this in at least one aspect. At one point, I had prefixed the proxy IP with HTTP:\ and I’m not sure when in the flailing about mode I did that but in retrospect that was about as dumb as I could get. I also power cycled the thermostat and after that, with no other changes, it would not re-connect to the router. To clarify I mean no wi-fi (their Wi-Fi symbol with a red x) let alone connection to My Infinity at carrier via proxy. I I found a setting in the router that was set to N only as in 802.11N ( I think I remember reading somewhere that Carrier’s thermostat was B capable only – have no idea) but I set it auto. Now I never fiddled with that setting at all during the previous messing around so go figure but Infinitude can now connect to the thermostat… Yeah.

However, I don’t think I understand the whole program.

Infinitude is now displaying data that looks right on, however, the display is a bit strange and I don’t know if that expected or not. Also, I don’t seem to be able to make any changes via the web page that affects the thermostat’s values. For example the heat setpoint. The only place where I can see to set it is in comfort profiles and I can enter a number, but it doesn’t seem to ripple down to the thermostat. Any comments or use suggestions would be appreciated. Not too hung on the screen display issues as I don’t intend to use them as eventually this gets connected to Homeseer.

Appreciate the help via the closed and open issues as they were all helpful.

yeah

nebulous commented 6 years ago

That's looking a bit better. Hopefully now that presumably infinitude has been running for a couple of days you have a fairly complete dataset. For instance http://192.168.1.96:3000/systems.json should return data. I'll probably have to bite the bullet and install the latest firmware on my stat to see if there are any further gotchas.

rgm60527 commented 6 years ago

I have a few more questions:

The sample screen shot of Infinitude's data set shows values for coil temp, rpm outside temp and my example shows none of those elements. Do I have something wrong? Or do they come from the serial bus that I have yet to attempt?

I have no control over temp, fan, setting schedules or operating state.

The Carrier app and Echo no longer provide any control over the system. This will be of no concern to me once I get (I hope) that control with Infinitude via Heomseer. Anyway is that normal?

Could these last two issues be a result of firmware or model of my Thermostat? My model is SYSTXCCITC01-B and the firmware is 131626-01.32. I believe model this is an upgrade to what was first encountered with Infinitude.

As an aside, it seems that my struggles stem from thermostat's configuration with the proxy and not Infinitude and Raspberry setups. And notwithstanding my rather moronic prefix of HTTP to my proxy IP on early tests, I do believe there is something weird with the Carriers Wi-Fi setup. The thermostat is rather recalcitrant when making changes to the proxy setting. Just enabling the proxy, changing the proxy setting with an IP and port was not enough to really have those settings take effect. Disabling and enabling Wi-Fi didn't help either, disconnecting and reconnecting to my AP didn't help, rebooting my router didn't help. Ultimately, I think the magic was power-cycling the thermostat by powering down the air handler/furnace. I'm not 100% sure that was the magic sauce as I'm disabled (wheelchair) so doing this trivial task isn't quite as trivial as it may seem to some but I will get it done soon and will leave an update. Meanwhile, if anyone else is struggling with Carrier's latest and greatest the issue I think I had from the get-go was getting the proxy setup right and active.

And in case it's not obvious Raspberry PI and Github is all new to me and if I'm misusing GitHub please correct me.

nebulous commented 6 years ago

The sample screen shot of Infinitude's data set shows values for coil temp, rpm outside temp and my example shows none of those elements. Do I have something wrong? Or do they come from the serial bus that I have yet to attempt?

Those values come from the serial bus, yep.

I have no control over temp, fan, setting schedules or operating state.

Here's a fun little catch-22... in production mode it is more difficult to determine why Infinitude isn't controlling your stat because fewer debug messages will print to the console. If there is any console output, specifically anything which looks like "There are changes"

The Carrier app and Echo no longer provide any control over the system. This will be of no concern to me once I get (I hope) that control with Infinitude via Heomseer. Anyway is that normal?

That's normal-ish. Infinitude is designed to allow requests in and out to Carrier's service, though possibly in a latent way, and that's not at all my priority since I want to control the stat directly rather than thru those channels.

Could these last two issues be a result of firmware or model of my Thermostat? My model is SYSTXCCITC01-B and the firmware is 131626-01.32. I believe model this is an upgrade to what was first encountered with Infinitude.

potentially. I'm running firmware 131493-12 so who knows what they changed since. children and other life keep me from hacking on the thermostat as much as I'd like :)

rgm60527 commented 6 years ago

I can retrieve XML by using http://192.168.1.96:3000/systems.xml and http://192.168.1.96:3000/status.xml

Some of the thermostats displayed data elements when the thermostat is in hold mode and manual are cool set point=74, heat set point=72, room temperature=73, continuous fan=high, mode=auto, humid filter=19%, furnace filter=73%, humidity=51% and I can't find these in the raw XML.

cool 74 not found heat 72 found but under home room 73 not found fan high not found - found under activity sleep mode auto found humidity 51 not found - 45 found filter life 73 not found - 71 found filter life 19 not found - 18 found

I wonder what I'm doing wrong or is this something else? combined_system_and_status.txt

rgm60527 commented 6 years ago

I'm making a wild guess and the B variant of SYSTXCCITC01 line has different firmware than the A variant. So I decided to go find an A and I will have one a week. Assuming Infinitude starts coughing useful valid data by just swapping thermostats would be useful information. I wonder if anyone has 131493-12 .hex file for the A variant?

sbrown4 commented 5 years ago

My Bryant SYSTXBBECC01-B is working as expected on an rpi3 with the current head. The t-stat claims to be running firmware CESR131626-02.00. It's the new black one. I suspect it's identical to the Carrier model save the Bryant logo.