An Apple HomeKit accessory for the Pimoroni Enviro+ running on a Raspberry Pi.
- Go - this accessory is written in Go
- HomeControl - to expose climate readings from the Enviro+ as an Apple HomeKit accessory
- enviroplus-exporter - to read the sensors of the Enviro+ and export them for scraping by Prometheus
Install this on a Raspberry Pi, or test it on macOS.
- Install Go >= 1.14 (useful Gist for Raspberry Pi)
- Clone this project:
git clone https://github.com/sighmon/homekit-enviroplus
and thencd homekit-enviroplus
- Install the Go dependencies:
go get
- Install and run the Prometheus enviroplus-exporter
- Optionally if you'd prefer a Docker container of the exporter, see: balena-enviro-plus
- To build this accessory:
go build homekit-enviroplus.go
- To cross-compile for Raspberry Pi on macOS:
env GOOS=linux GOARCH=arm GOARM=7 go build homekit-enviroplus.go
- Execute the executable:
./homekit-enviroplus
- Or run with the command:
go run homekit-enviroplus.go
- sudo cp homekit-enviro.service /lib/systemd/system/homekit-enviro.service
- sudo systemctl daemon-reload
- sudo systemctl enable homekit-enviro.service
- sudo systemctl start homekit-enviro.service
The flag defaults can be overridden by handing them in at runtime:
-host=http://0.0.0.0
The host of your Enviro+ sensor-port=1006
The port of your Enviro+ sensor-sleep=5s
The time between updating the accessory with sensor readings (5s
equals five seconds)-dev
This turns on development mode to return a random temperature reading without needing to have an Enviro+
e.g. to override the port run: go run homekit-enviroplus.go -port=8000
or ./homekit-enviroplus -port=8000
If you uninstall this accessory from your Apple Home, you'll also need to delete the stored data for it to be able to be re-added.
- Delete the data in the folder created:
homekit-enviroplus/Enviro+/
- Restart the executable
- Remove the persistent data:
rm -rf /var/lib/homekit-enviroplus/data
- Restart the Raspberry Pi
This project uses the amazing work of Matthias. Please consider donating if you found this useful.