Skip to content

Using a Raspberry Pi and ADS1015 I2C ADC to read temperatures from thermistors and report them to HomeKit and Prometheus

License

Notifications You must be signed in to change notification settings

joeshaw/thermistor

Repository files navigation

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 to Apple HomeKit, and expose the values as a Prometheus exporter. The code is in Go, uses Gobot for interfacing with the ADS1015 over the I2C bus and implements the HomeKit Accessory 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, Prometheus, the ADS1015 ADC, and calculating temperatures from thermistors in general.

Build

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

License

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

About

Using a Raspberry Pi and ADS1015 I2C ADC to read temperatures from thermistors and report them to HomeKit and Prometheus

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages