48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
# Bluetooth LE to MQTT bridge for the Xiaomi Mijia Temperature & Humidity sensor
|
|
|
|
[![Build Status](https://ci.cuzo.dev/api/badges/parra/mijia-sensors/status.svg)](https://ci.cuzo.dev/parra/mijia-sensors)
|
|
|
|
## Create environment file
|
|
|
|
Copy the `env_file` to `.env` and open it. Complete all environment variables:
|
|
|
|
- `MQTT_[SERVER/PORT/USER/PASSWORD/CLIENT_ID]` are used to connect with the broker.
|
|
- `MQTT_TOPIC_PREFIX` define the prefix for all topics with sensor info.
|
|
- `MQTT_TELE_PREFIX` is used to publish the sensor data, like battery or status.
|
|
- `MQTT_SENSOR_NAME` contains the sensor name, useful to split the telemetry data if you have more than one sensors.
|
|
- `MQTT_PUBLISH_DELAY` specify, in seconds, how many time should wait since the script take the measurements to publish in the broker
|
|
- `MIJIA_BTLE_ADDRESS` constant with the BLE address of your Mijia device.. This can be retrieved activating the pairing mode in the sensor and scanning the BT devices
|
|
- `PING_URL` used to ping a monitoring service if everything was OK (Useful, for example, for monitor the script with Uptime Kuma)
|
|
|
|
## Install dependencies
|
|
|
|
You'll need to install bluez and python3. Then you'll need pip3 to install bluepy.
|
|
|
|
Example on a Raspberry Pi 3:
|
|
```sh
|
|
$ sudo apt-get install python-pip libglib2.0-dev
|
|
$ sudo pip3 install -r requirements.txt
|
|
```
|
|
|
|
## Run
|
|
|
|
You can execute the script directly using the command:
|
|
```sh
|
|
$ ./main.py
|
|
```
|
|
|
|
Or you can add a new entry in the `crontab`, like:
|
|
```sh
|
|
*/20 * * * * /usr/bin/python3 ~/scripts/mijia-temperature/main.py >~/scripts/mijia-temperature/last.log 2>&1
|
|
```
|
|
|
|
The published message will have this structure:
|
|
```json
|
|
{
|
|
"id": "mijia-sensor-1",
|
|
"battery": 74,
|
|
"temperature": 21.4,
|
|
"humidity": 47.3
|
|
}
|
|
```
|