Skip to content

Latest commit

 

History

History
111 lines (84 loc) · 3.46 KB

README.md

File metadata and controls

111 lines (84 loc) · 3.46 KB

Raspberry Pi Bluetooth Device Tracker and MQTT Client

This is a small script that turns a Raspberry Pi 3 into a MQTT device tracker for use with Home Assistant (or other IOT) equipment.

This is useful if you have a bunch of Pi's around the home anyway, and want to increase the accuracy of the presence detection.

How to install

Requirements

On the hardware side of things, make sure bluetooth is working.

On the software side, you need to install the following;

$ sudo apt install bluetooth libbluetooth-dev
$ pip3 install pybluez
$ pip3 install paho-mqtt

Update Settings

Update the settings install bt_tracker.py with your own configuration.

Add your devices as per below. Note that these will form part of the state topic of the MQTT signal.

devices = [
    {"name": "Device1", "mac": "aa:bb:cc:dd:ee:ff", "state": "not home"},
    {"name": "Device2", "mac": "aa:bb:cc:dd:ee:f2", "state": "not home"}
    ]

Also, provide a location for your device by changing the location variable:

LOCATION = "Bedroom"

Based on the above settings, the device topic for mqtt messages will be:

HomeAssistant/Presence/Bedroom/Device1

AND

HomeAssistant/Presence/Bedroom/Device2

Next, update the MQTT settings:

# Update the follow MQTT Settings for your system.
MQTT_USER = "mqtt"              # MQTT Username
MQTT_PASS = "mqtt_password"     # MQTT Password
MQTT_CLIENT_ID = "bttracker"    # MQTT Client Id
MQTT_HOST_IP = "127.0.0.1"      # MQTT HOST
MQTT_PORT = 1883                # MQTT PORT (DEFAULT 1883)

There are also settings you can mess around with, such as timeout of searching and scan intervals. Defaults work well for me, but feel free to change as required.

(OPTIONAL) Add a service

If you would like to have the Device Tracker to restart on startup, create the a file in the in the following location /etc/systemd/system/bttracker.service

[Unit]
Description=Raspberry Pi Device Tracker MQTT Service
After=network.target

[Service]
Type=idle
User=pi
ExecStart=/usr/bin/python3 /home/pi/bt-mqtt-tracker/bt_tracker.py
Restart=always

[Install]
WantedBy=multi-user.target

Update the file location and other settings as required and then load the service as follows:

$ sudo systemctl daemon-reload
$ sudo systemctl enable bttracker.service
$ sudo systemctl start bttracker.service

How to use new Sensor with Home Assistant

To add the sensor to Home Assistant use the MQTT Sensor Component a sample configuration is below (based on settings above):

---
sensor:
  - platform: mqtt
    state_topic: "HomeAssistant/Presence/Bedroom/Device1"
    name: "Device 1 Bedroom Presence"

  - platform: mqtt
    state_topic: "HomeAssistant/Presence/Bedroom/Device2"
    name: "Device 2 Bedroom Presence"

Using the above sensor in conjuction with other device trackers and a bayesian sensor, can make a pretty accurate device tracker.

Troubleshooting