heatpump

module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2021 License: Apache-2.0

README

Chiltrix CX34 dashboard software

This project is used to communicate with a hydronic heating system that uses the Chiltrix CX34 air-to-water heat pump. The components of the system are as follows:

  1. A Raspberry Pi.

  2. The Chiltrix CX34 heat pump chiller. The Pi communicates with the chiller using using serial communication, which is used natively by the CX34 to talk with its controller per the wiring diagram and ProtoAir FPA-W44 manual.

  3. A USB-to-RS484 dongle that connects the Raspberry Pi to the Chiltrix. This device should show up as /dev/ttyUSB0.

  4. Optional DS18B20 temperature sensors, which can now be bought for about $2 each. Several temperature sensors can be connected to single GPIO port on the Pi. I followed this guide to get up and running and then wrote the github.com/gonzojive/heatpump/tempsensor Go package to read the sensor values.

screenshot of dashboard as of 2020/12/24

Implementation notes

This project is written in Go.

Setup

Software installation

Install go on the Raspberry Pi according to the official instructions.

Install the collector binary:

go get github.com/gonzojive/heatpump/cmd/cx34collector github.com/gonzojive/heatpump/cmd/cx34install

Install the systemd service so the service runs at boot.

sudo `which cx34install`

Inspect the logs with

journalctl -u cx34collector.service

CX34 control

General development tips

Wiring

The Chiltrix uses RS485 to communicate with its controller. I have a USB-to-RS484 with a ch340T chip and pins labelbed "A / D+" and "B / D-".

TODO: more info

ssh access with password login disabled

My ~/.ssh/config has a section like

Host waterpi
    HostName 192.168.86.22
    User pi

and the Pi's ~/.ssh/authorized_hosts and /etc/ssh/sshd_config has a section with

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

sshfs

Mounting the Raspberry Pi's OS can be helpful for developing on a workstation. I followed this guide and ran these commands:

sudo mkdir /mnt/waterpi
sudo chown <YOUR_USERNAME> /mnt/waterpi
sudo sshfs -o "allow_other,default_permissions,IdentityFile=/home/<YOUR_USERNAME>/.ssh/id_rsa" pi@192.168.86.22:/ /mnt/waterpi

Directories

Path Synopsis
cmd
cx34collector
Program cx34collector collects information from the Chiltrix CX34 heat pump and logs it to a database.
Program cx34collector collects information from the Chiltrix CX34 heat pump and logs it to a database.
cx34dash
Program cx34runs a dashboard that displays information about a CX34 heat pump.
Program cx34runs a dashboard that displays information about a CX34 heat pump.
cx34install
Program cx34install installs a systemd service for cx34collector according to https://www.raspberrypi.org/documentation/linux/usage/systemd.md.
Program cx34install installs a systemd service for cx34collector according to https://www.raspberrypi.org/documentation/linux/usage/systemd.md.
protocol-analyzer
Program waterpi reads temperature sensors.
Program waterpi reads temperature sensors.
Package cx34 provides a client for working with the Chiltrix CX34 heat pump.
Package cx34 provides a client for working with the Chiltrix CX34 heat pump.
Package dashboard runs a web dashboard that displays information about a CX34 heat pump.
Package dashboard runs a web dashboard that displays information about a CX34 heat pump.
Package db implements a database for storing the history of the state of the CX34
Package db implements a database for storing the history of the state of the CX34
Package linuxserial provides utilitis for working with serial devices in Linux.
Package linuxserial provides utilitis for working with serial devices in Linux.
Package mdtable helps construct markdown tables.
Package mdtable helps construct markdown tables.
Package omron assists in deciphering omron communication protocol message.
Package omron assists in deciphering omron communication protocol message.
proto
Package tempsensor provides an API for reading DS18B20-based temperature sensors.
Package tempsensor provides an API for reading DS18B20-based temperature sensors.
Package units contains float64 wrappers with unit semantics relevant to the CX34 heat pump (flow rate, temperature, etc).
Package units contains float64 wrappers with unit semantics relevant to the CX34 heat pump (flow rate, temperature, etc).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL