{"id":15642298,"url":"https://github.com/nebulous/infinitude","last_synced_at":"2025-05-16T15:02:22.089Z","repository":{"id":6769567,"uuid":"8016355","full_name":"nebulous/infinitude","owner":"nebulous","description":"Open control of Carrier/Bryant thermostats","archived":false,"fork":false,"pushed_at":"2025-02-08T02:46:52.000Z","size":2951,"stargazers_count":232,"open_issues_count":2,"forks_count":51,"subscribers_count":50,"default_branch":"master","last_synced_at":"2025-04-03T11:11:41.694Z","etag":null,"topics":["api-rest","bryant","carrier","home-assistant","home-automation","infinity","ioncomfort","thermostat"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nebulous.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-02-04T21:14:26.000Z","updated_at":"2025-03-31T19:02:47.000Z","dependencies_parsed_at":"2024-10-23T00:30:22.307Z","dependency_job_id":null,"html_url":"https://github.com/nebulous/infinitude","commit_stats":{"total_commits":198,"total_committers":17,"mean_commits":"11.647058823529411","dds":"0.33838383838383834","last_synced_commit":"a000bad0808ac0ac32e90391be8659295ba746db"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulous%2Finfinitude","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulous%2Finfinitude/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulous%2Finfinitude/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulous%2Finfinitude/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nebulous","download_url":"https://codeload.github.com/nebulous/infinitude/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248564968,"owners_count":21125412,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","bryant","carrier","home-assistant","home-automation","infinity","ioncomfort","thermostat"],"created_at":"2024-10-03T11:55:41.319Z","updated_at":"2025-04-12T11:50:24.038Z","avatar_url":"https://github.com/nebulous.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Infinitude\n\n![Docker image Build Status](https://github.com/nebulous/infinitude/workflows/Multi-architecture%20Build%20Status/badge.svg?branch=master)\n![Docker Hub documentation](https://github.com/nebulous/infinitude/workflows/Push%20Description%20\u0026%20README%20to%20Docker%20Hub/badge.svg?branch=master)\n\n## Documentation and [information on protocol(s) available on the Wiki](https://github.com/nebulous/infinitude/wiki). Please contribute!\n\n### Infinitude is an alternative web service for [Carrier Infinity Touch](https://github.com/nebulous/infinitude/wiki/Infinity-touch) and compatible thermostats.\n\nInfinitude allows direct web-based control of\n  * Temperature setpoints\n  * Schedules\n  * Dealer information\n\nAs well as providing an open RESTish API \n\n\u003cimg src=\"http://i.imgur.com/1LhLKbp.png\" /\u003e\n\nInfinitude can also optionally monitor the Carrier/Bryant RS485(ABCD) bus to obtain higher resolution access to values within your thermostat, air handler, heat pump, and other devices.\nInfinitude provides a serial monitor which keeps track of the current state of registers on the serial bus, and highlights changing bytes to aid in protocol analysis.\nSerial data can be monitored via an attached serial port or via a networked serial bridge.\n\n\u003cimg src=\"http://i.imgur.com/5Ge1zEM.png\" /\u003e\n\nRS485 stream monitoring example video:\n\n[![Real time RS485 monitoring](http://img.youtube.com/vi/ybjCumDG_d8/0.jpg)](https://www.youtube.com/watch?v=ybjCumDG_d8)\n\n\nInfinitude does **not** control thermostats via the RS485 bus in the default build at this time. RS485 communication is optional, and _read only_.\n\nSerial-based control of touch thermostats is possible and has been demonstrated by writing to thermostat table 0x40 via Infinitude's CarBus library, but is experimental at this time. \n\nSerial-based control of some older _non-touch_ thermostats is provided by the [Infinitive project](https://github.com/acd/infinitive)\n\n## Installation\n\n### Please note: Infinitude is not compatible with certain newer thermostat firmware versions.\n\nFor Carrier/Bryant/ICP ION thermostats, it seems that the latest working firmware version is 4.05. Some users have held off\nupgrading to a newer version or have successfully downgraded to a previous version.\nSee [issues/148](https://github.com/nebulous/infinitude/issues/148) for a discussion and more information about this issue.\n\n#### Docker - Recommended\nPrebuilt Docker containers are available for multiple architectures on [DockerHub](https://hub.docker.com/r/nebulous/infinitude), or you can build a container manually with the included Dockerfile.\nSpecial thanks go to @scyto for instrumental contributions to the Infinitude containers in general, and multiarch builds in particular.\n\nInfinitude configuration parameters can be passed through environment variables into the container.  Support is included for:\n\n| Variable | Description |\n| --- | --- |\n| APP_SECRET | Cookie signature string. Matters to almost nobody | \n| PASS_REQS | Minimum amount of time to wait(in seconds) between requests to Carrier/Bryant servers. `0` means never. |\n| MODE | `production`(default) or `development`(more logging) |\n| SERIAL_TTY | optional rs485 device string eg `/dev/ttyUSB0` |\n| SERIAL_SOCKET | optional tcp/rs485 bridge string eg `192.168.1.42:23` |\n| LOGLEVEL | optional [minimum severity of log messages to print](https://docs.mojolicious.org/Mojo/Log#level) |\n| SCAN_THERMOSTAT | truthy values on systems with serial connectivity cause Infinitude to continuously scan each Thermostat table |\n\n\nthe published container can be run as\n\n`docker run --rm -v $PWD/state:/infinitude/state -p 3000:3000 nebulous/infinitude`\n\nwith additional config items as ENV vars\n\n```\ndocker run --rm -v $PWD/state:/infinitude/state \\\n-e APP_SECRET='YOUR_SECRET_HERE' \\\n-e PASS_REQS='1020' \\\n-e MODE='Production' \\\n-p 3000:3000 \\\nnebulous/infinitude\n```\n\nor via the included [docker-compose file](https://github.com/nebulous/infinitude/blob/master/docker-compose.yaml).\n`docker-compose up`\n\n\n#### Manual installation Requirements\n\nThe easiest way to run Infinitude is by running a published Docker image, but if you'd like to install manually, these are the basic requirements\n\n##### Software\n * Some flavor of UNIX. Both Linux and OSX are known to work and some have even used Strawberry Perl in Windows.\n * Perl with the following modules\n   * Mojolicious\n   * DateTime\n   * [IO::Termios](https://metacpan.org/module/IO::Termios) optional for RS485 serial monitoring\n   * Path::Tiny\n   * Try::Tiny\n   * JSON\n   \n##### Dependency Installation\n  * a cpanfile is provided which lists Infinitude's minimum dependencies.\n  * use your distribution's packaging system, your favorite cpan installer, or `sudo cpanm --installdeps .` to install\n\n###### Raspbian-specific\nMany users opt to run Infinitude on a Raspberry Pi. This is also most easily accomplished using a Docker image, but\n[More specific manual installation instructions are available on the wiki](https://github.com/nebulous/infinitude/wiki/Installing-Infinitude-on-Raspberry-PI-(raspbian))\n\n\n##### Hardware\n\nBasic hardware capable of running docker or a unix/posix system. This could be a desktop machine, many people use a [Raspberry Pi](https://amzn.to/2StGo8z), or any embedded device with sufficient memory and storage. The author runs Infinitude in a Docker container on an [Atomic PI](https://amzn.to/3bgufMV), but has also used a Pandaboard and first ran it on the very limited [Pogoplug v4](http://www.amazon.com/Pogoplug-Series-4-Backup-Device/dp/B006I5MKZY/ref=sr_1_1?ie=UTF8\u0026tag=sbhq-20\u0026qid=1415825203\u0026sr=8-1\u0026keywords=pogoplug) hardware, which at the time(2014) cost less than $10 USD and sat on top of the air handler and allowed for a USB RS485 dongle to interface with it.\n\nSee \u003ca target=\"_blank\" href=\"https://www.amazon.com/ideas/amzn1.account.AEFBGWAOB3IGADYQPGQRC566Z2FA/19DKMPAQCZX12?type=explore\u0026ref=idea_cp_vl_ov_d\u0026tag=sbec-20\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"\u003ea list of hardware others have used.\u003c/a\u003e\n\n\n#### Usage / Thermostat configuration\n * Set your proxy server/port in the advanced wireless settings on the thermostat to point to your infinitude host/port. \n * Edit the $conf section of the infinitude file to set your optional RS485 serial tty device.\n * Start Infinitude. This traffic is _not encrypted_, so only run on a trusted network.\n\nInfinitude is a Mojolicious application, so the simplest way to run it from source is via:\n\n    ./infinitude daemon\n\nwhich starts a server in development mode on port 3000.\n\nOr to listen on port 80:\n\n    ./infinitude daemon -l http://:80\n\nSee ./infinitude \u003ccommand\u003e --help for additional options\n\nWith any luck, Carrier will allow the owners of these devices and data direct access rather\nthan this ridiculous work around. If you have one of these thermostats, tell\nCarrier you'd like direct network access to your thermostat, or at the very\nleast, access to a public API!\n\n\n### See Also\n\n- [Infinitude Home Assistant Integration](https://github.com/MizterB/homeassistant-infinitude-beyond)\n- [Infinitive project for RS485 control of non-touch thermostats](https://github.com/acd/infinitive)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebulous%2Finfinitude","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnebulous%2Finfinitude","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebulous%2Finfinitude/lists"}