Using a Raspberry Pi and ADS1015 I2C ADC to read temperatures from thermistors and report them on HomeKit
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

This is the code for a fun home electronics project I did with my son.

Two thermistors are embedded in a radiant floor heating system. The thermistors are meant to be used with the thermostat included in the system, but I decided to install a Nest thermostat instead, which can't use these.

We took a Raspberry Pi and an ADS1015 I2C 12-bit analog-to-digital converter and connected the two thermistors to it. We do a little math and report the detected temperatures as a temperature sensor accessory with two services in Apple HomeKit. The code is in Go, uses Gobot for interfacing with the ADS1015 over the I2C bus and implements the HomeKit Application Protocol with HomeControl.

The finished product

Values in the Home app

This code is specific to our implementation and probably not very useful, but can be a decent example of how to use Gobot, HomeControl, the ADS1015 ADC, and calculating temperatures from thermistors in general.


Cross-compile for the Raspberry Pi

$ GOARCH=arm GOOS=linux go build

Then scp it to /usr/local/bin on the Pi.

A systemd unit file (thermistor.service) is included. Copy the unit file to /etc/systemd/system and then run:

$ sudo systemctl daemon-reload
$ sudo systemctl enable thermistor
$ sudo systemctl start thermistor


The code is licensed under the MIT license. See the LICENSE file for details.