nebulous / infinitude

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

Can't make it work with Bryant #129

Closed kdjordjev closed 2 years ago

kdjordjev commented 2 years ago

Hi i have a Bryant Evolution system (Furnace / heat pump / SYSTXBBWEC01-B thermostat with SW version 131626 - 04.05)

My issue is that the infinitude does not get any data and does not display it on the page. It just shows an empty page

Logs: - in Production mode: MODE is set to Production [2022-02-15 18:44:54.48955] [7] [info] Websocket opened, but no streaming source found

- In Debug Mode: MODE is set to development [2022-02-15 18:44:39.43195] [7] [info] Listening at "http://*:3000" [2022-02-15 18:44:54.33806] [7] [debug] GET "/" (802d1e20) [2022-02-15 18:44:54.33865] [7] [debug] Routing to a callback [2022-02-15 18:44:54.33921] [7] [debug] 304 Not Modified (0.001133s, 882.613/s) [2022-02-15 18:44:54.48653] [7] [debug] GET "/systems.json" (3c55cea4) [2022-02-15 18:44:54.48719] [7] [debug] Routing to a callback [2022-02-15 18:44:54.48763] [7] [debug] 200 OK (0.001082s, 924.214/s) [2022-02-15 18:44:54.48904] [7] [debug] GET "/serial" (1db99e27) [2022-02-15 18:44:54.48950] [7] [debug] Routing to a callback [2022-02-15 18:44:54.48955] [7] [info] Websocket opened, but no streaming source found [2022-02-15 18:44:54.48993] [7] [debug] Template "serial.html.ep" not found [2022-02-15 18:44:54.48998] [7] [debug] Nothing has been rendered, expecting delayed response [2022-02-15 18:44:54.50455] [7] [debug] GET "/status.json" (c1b6a6f5) [2022-02-15 18:44:54.50489] [7] [debug] Routing to a callback [2022-02-15 18:44:54.50542] [7] [debug] 200 OK (0.000846s, 1182.033/s) [2022-02-15 18:44:54.53184] [7] [debug] GET "/notifications.json" (7620bc05) [2022-02-15 18:44:54.53233] [7] [debug] Routing to a callback [2022-02-15 18:44:54.53275] [7] [debug] 200 OK (0.000893s, 1119.821/s) [2022-02-15 18:44:54.53372] [7] [debug] GET "/energy.json" (6f5c12a1) [2022-02-15 18:44:54.53398] [7] [debug] Routing to a callback .....................

If i call: http://IP:3333/status.json, i get empty response '{}'

Any way to debug, make this work? K

secabeen commented 2 years ago

I believe this may indicate that the container cannot reach the bryant/carrier servers. Is your docker set to allow containers to reach the Internet?

kdjordjev commented 2 years ago

It can .. i have other containers accessing the internet. I logged in into the infinitude container and can ping outside - google / cnn, etc Seems ok

root@infinitude:/infinitude# ping google.com PING google.com (216.58.194.174) 56(84) bytes of data. 64 bytes from sfo07s13-in-f14.1e100.net (216.58.194.174): icmp_seq=1 ttl=116 time=13.1 ms 64 bytes from sfo07s13-in-f14.1e100.net (216.58.194.174): icmp_seq=2 ttl=116 time=15.1 ms 64 bytes from sfo07s13-in-f14.1e100.net (216.58.194.174): icmp_seq=3 ttl=116 time=15.3 ms 64 bytes from sfo07s13-in-f14.1e100.net (216.58.194.174): icmp_seq=4 ttl=116 time=14.6 ms ^C --- google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 7ms rtt min/avg/max/mdev = 13.132/14.528/15.277/0.851 ms

kdjordjev commented 2 years ago

Anybody have an idea what the problems is? How to debug it?

nebulous commented 2 years ago

What do the contents of your state folder look like?

strings * | grep Host: | sort | uniq in your state folder should show the unique hosts your thermostat is trying to contact. We can start there. There should also be a request to the Alive endpoint (state filename should start with req-Alive)

The thermostat started to show exclamation point on the WiFi saying no connection to Bryant servers connection to internet. I assume this is ok since proxy is pointing to infinitude not Bryant servers directly

This shouldn't happen, but there are a lot of ways for something to go wrong.

I do not plan to use the Cloud and just did it to check if the communication is ok

Understood(I don't use Carrier's service either. Heck, I use the Home Assistant integration more often than my own web interface 😄 ) and you're right to check - because this does indicate something might be subtly wrong. Perhaps the stat is trying to connect to a domain which hasn't been whitelisted.

If i call: http://ip:3333/status.json, i get empty response '{}'

If the thermostat is talking to infinitude, then status and systems (.xml and .json) should be populated. Sometimes you can kick that off by changing the temperature on the thermostat - forcing a save.

kdjordjev commented 2 years ago

Thank you very much.. It was my dumb mistake.. dhaaa I had the thermostat and the container in a separate networks and the firewall was blocking the route between them. I added a firewall rule to allow the thermostat to access the container ip/port and it worked. I can get the reading now. Sorry for the false alarm.

I have few questions, if you do not mind:

thanks a lot

nebulous commented 2 years ago

what's the update speed of the data? Is it polling the thermostat configuration or thermostat pushes data once in a while?

The thermostat polls the webservice and the webservice responds with a suggestion for when to poll it next. The OEM service cycle runs every few minutes, but Infinitude does every 12 seconds. By default Infinitude only talks to Carrier every 17 minutes though.

is the temperature set points and schedule the only items you can control? It would be great if we can control the HeatSource .. I have a dual heat source - gas and heatpump. The HeatSource selection from the thermostat is (System / Gas Heat Only / Heat Pump only) . I would like to be able to control this since my time of use electricity cost is 3x so i may want to slelcet Gas during some time window

Check out http://ip:3333/systems.xml (or systems.json for the same thing in a different shape) - that's the bulk of your stat's configuration. Anything inside can technically be changed via the api, but a more limited subset is available in the web interface.

Happy to hear things are working out.

kdjordjev commented 2 years ago

Thank you... Awesome job with the sw !!

To close on my question on the heat source:

/api/config

{"heatsource": "system"} {"heatsource": "idu only"} {"heatsource": "odu only"}