mijia-sensors/README.md

1.7 KiB

Bluetooth LE to MQTT bridge for the Xiaomi Mijia Temperature & Humidity sensor

Build Status

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:

$ 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:

$ ./main.py

Or you can add a new entry in the crontab, like:

*/20 * * * * /usr/bin/python3 ~/scripts/mijia-temperature/main.py >~/scripts/mijia-temperature/last.log 2>&1

The published message will have this structure:

{
  "id": "mijia-sensor-1", 
  "battery": 74, 
  "temperature": 21.4, 
  "humidity": 47.3
}