Turn your Raspberry PI and BME680 climate sensor into an Apple Homekit compatible accessory.
Find a file
2023-12-02 12:08:49 +02:00
docs Add grafana dashboard example. 2022-06-13 15:14:40 +03:00
grafana Add grafana dashboard example. 2022-06-13 15:14:40 +03:00
prometheus Add prometheus support 2022-06-13 14:00:45 +03:00
sensors Update main.py 2023-06-06 23:33:44 +03:00
.gitignore initial commit 2022-02-21 22:24:05 +02:00
Makefile Add tools for formatting the code 2023-04-25 21:30:51 +03:00
Readme.md Update Readme.md 2023-12-02 12:08:49 +02:00
requirements-dev.txt Add tools for formatting the code 2023-04-25 21:30:51 +03:00
requirements.txt Expose bme680 measurements as prometheus metrics. 2022-06-13 13:37:49 +03:00

Introduction

Simple script utilities to add BME680 sensor readings to Apple Homekit using a Raspberry PI with minimal configuration.

After running the program you'll be given the QR code used to add the sensor as an accessory in Homekit.

Installing

Ensure you are the pi user. Clone the repo in home and then install requirements.

Cloning the project

cd /home/pi && git clone git@github.com:dnutiu/bme680-homekit.git && cd bme680-homekit
sudo apt-get install libavahi-compat-libdnssd-dev
pip3 install -r requirements.txt

Sensors

The sensors directory contains code for operating the bme680 sensor.

The sensor values are collected and exposed in HomeKit and as prometheus metrics. The prometheus metrics can be accessed on port 8000.

Run the program once to pair it with your ios. ex:

cd sensors
python3 main.py 
Setup payload: X-HM://0023K50QET2YB
Scan this code with your HomeKit app on your iOS device:

Or enter this code in your HomeKit app on your iOS device: 053-86-998

Copy the systemd service.

sudo cp bme680-homekit.service /etc/systemd/system
sudo systemctl status bme680-homekit
● bme680-homekit.service - Bme680 Homekit service
     Loaded: loaded (/etc/systemd/system/bme680-homekit.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

Start the service

sudo systemctl start bme680-homekit
sudo systemctl status bme680-homekit
● bme680-homekit.service - Bme680 Homekit service
     Loaded: loaded (/etc/systemd/system/bme680-homekit.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-02-21 20:10:30 GMT; 935ms ago
   Main PID: 1722 (python3)
      Tasks: 1 (limit: 780)
        CPU: 895ms
     CGroup: /system.slice/bme680-homekit.service
             └─1722 /usr/bin/python3 /home/pi/bme680-homekit/main.py

Feb 21 20:10:30 raspberrypi systemd[1]: Started Bme680 Homekit service.

Troubleshooting

If you get an error for FileNotFound:

Traceback (most recent call last):
  File "/home/denis/bme680-homekit/sensors/main.py", line 112, in <module>
    driver.add_accessory(accessory=get_bridge(driver))
  File "/home/denis/bme680-homekit/sensors/main.py", line 101, in get_bridge
    bridge.add_accessory(Bme680Sensor(accessory_driver, "Sensor"))
  File "/home/denis/bme680-homekit/sensors/main.py", line 33, in __init__
    self.sensor = bme680.BME680(bme680.I2C_ADDR_PRIMARY)
  File "/home/denis/.local/lib/python3.9/site-packages/bme680/__init__.py", line 43, in __init__
    self._i2c = smbus.SMBus(1)
FileNotFoundError: [Errno 2] No such file or director

You will need to active I2C interface with sudo raspi-config -> Interfacing -> I2C

Prometheus

Prometheus is a system for monitoring and alerting. To install it run prometheus./install.sh.

Prometheus server will listen on port :9090

Grafana

Grafana can be used to create dashboard and visualise prometheus metrics. To install it run grafana/install.sh

Grafana is accessible on port :80. Premade dashboards can be found in the grafana/dashboards folder.