-
Notifications
You must be signed in to change notification settings - Fork 49
Installing Infinitude on Raspberry PI (Raspbian)
This guide covers installation of Infinitude on a Raspberry Pi.
The easiest way to run Infinitude on a Raspberry Pi is using the pre-built Docker image, which supports ARM architectures out of the box.
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Log out and back in for group change to take effect# Create a directory for persistent state
mkdir -p ~/infinitude-state
# Run with serial port (if using USB RS485 adapter)
docker run -d \
--name infinitude \
--restart unless-stopped \
-v ~/infinitude-state:/infinitude/state \
-p 3000:3000 \
-e APP_SECRET='your-secret-here' \
-e PASS_REQS='1020' \
-e SERIAL_TTY='/dev/ttyUSB0' \
--device /dev/ttyUSB0:/dev/ttyUSB0 \
nebulous/infinitude
# Run with network serial bridge (e.g., USR-TCP232)
docker run -d \
--name infinitude \
--restart unless-stopped \
-v ~/infinitude-state:/infinitude/state \
-p 3000:3000 \
-e APP_SECRET='your-secret-here' \
-e PASS_REQS='1020' \
-e SERIAL_SOCKET='192.168.1.42:23' \
nebulous/infinitudeOr use docker-compose with the included docker-compose.yaml:
git clone https://github.com/nebulous/infinitude.git
cd infinitude
docker-compose up -dEnvironment variables:
| Variable | Description |
|---|---|
APP_SECRET |
Cookie signature string |
PASS_REQS |
Min seconds between Carrier server requests (0 = never) |
MODE |
production (default) or development
|
SERIAL_TTY |
RS485 device (e.g., /dev/ttyUSB0) |
SERIAL_SOCKET |
TCP/RS485 bridge (e.g., 192.168.1.42:23) |
LOGLEVEL |
Minimum log severity |
SCAN_THERMOSTAT |
Enable continuous thermostat table scanning |
If you prefer to install from source without Docker, these are the basic requirements.
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install cpanminus libchi-perl libmojolicious-perl libdatetime-perl \
libxml-simple-perl libmoo-perl libjson-maybexs-perl libjson-perl \
libhash-asobject-perl libdata-parsebinary-perl libdigest-crc-perl \
libcache-perl libtest-longstring-perl libio-pty-perl
cpanm IO::Termios # optional, for RS485 serial monitoringsudo apt-get install git
cd ~
git clone https://github.com/nebulous/infinitude.git
cd infinitude
chmod +x ./infinitude
cpanm --installdeps .cd ~/infinitude
./infinitude daemon -m productionBy default, Infinitude listens on port 3000. To change the port or interface:
./infinitude daemon -m production -l http://*:80Stop with ctrl-c.
Edit infinitude.json to set your serial device:
nano ~/infinitude/infinitude.jsonFor Pi UART: set "serial_tty": "/dev/ttyAMA0".
If not using serial: set "serial_tty": "".
Create /etc/systemd/system/infinitude.service:
[Unit]
Description=Infinitude HVAC control
After=network-online.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/infinitude
ExecStart=/home/pi/infinitude/infinitude daemon -l http://:80
Restart=always
RestartSec=17
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl enable infinitude
sudo systemctl start infinitudeOver time, Infinitude can write a large number of log entries. Consider limiting journalctl by size or setting it to volatile storage. Logs appear in /var/log/daemon.log.
To connect directly to the Carrier ABCD bus from a Raspberry Pi, you need a UART-to-RS485 adapter. The pi485 project provides hardware designs for this.
-
Disable serial console:
sudo raspi-config # Interface Options -> Serial Port -> No (login shell) -> Yes (hardware port enabled) -
Enable UART in
/boot/config.txt:enable_uart=1 -
Set baud rate (Carrier bus runs at 38400):
stty < /dev/ttyAMA0 38400 -echo -opost -isig -icanon min 1
See Infinity Protocol Hardware for recommended RS485 adapters and wiring.
On your wall control, open the Wi-Fi menu and scroll to proxy settings:
- Set "Use Proxy Server" to Yes
- Set proxy server address to your Pi's IP address
- Set proxy server port to 3000 (or whatever port Infinitude is listening on)
Your thermostat and Pi must be on the same network. If using an IoT/VLAN setup, client device isolation must be disabled.
Infinitude is not compatible with thermostat firmware versions newer than 4.05. See issue #148 for details.