Linux service to collect and transfer Xiaomi Mi BLE sensor data via MQTT, with mass-cluster support. Mirrored from GitHub https://github.com/outlyer-net/misensor-mqtt-daemon
Go to file
Thomas Dietrich ff47c27a57 Fix no termination on broker connection error 2017-07-25 18:26:08 +02:00
AUTHORS Add functionality, improve error handling 2017-07-25 18:26:08 +02:00
LICENSE Added README and LICENSE 2017-02-09 21:18:45 +01:00
README.md Add scanning for sensors instructions to README 2017-07-25 18:26:08 +02:00
config.ini Add functionality, improve error handling 2017-07-25 18:26:08 +02:00
demo.gif Add demo.gif 2017-07-25 18:26:08 +02:00
mqtt-flora.py Fix no termination on broker connection error 2017-07-25 18:26:08 +02:00
requirements.txt Initial commit of miflora mqtt daemon 2017-02-09 21:15:25 +01:00

README.md

Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon

A simple Linux python script to query arbitrary Mi Flora plant sensor devices and send the data to an MQTT broker, e.g., the famous Eclipse Mosquitto or the embedded MQTT broker in Home Assistant. After data made the hop to the MQTT broker it can be used by home automation software like Home Assistant or openHAB.

Demo gif for command line execution

The program can be executed for a single run or in daemon mode to run continuously in the background.

Features

  • Support for Xiaomi Mi Flora sensors (tested with firmware v2.6.2, v2.6.4, v2.6.6, others anticipated)
  • Build on top of open-homeautomation/miflora
  • Highly configurable
  • Data publication via MQTT
  • JSON encoded
  • MQTT authentication support
  • Daemon mode (default)
  • Reliable and inituitive

Installation

Shown for a modern Debian system:

git clone https://github.com/janwh/miflora-mqtt-daemon.git /opt/miflora-mqtt-daemon
cd /opt/miflora-mqtt-daemon

apt install python3 python3-pip bluetooth libbluetooth-dev libboost-python-dev libglib2.0-dev
pip3 install -r requirements.txt

Configuration

To match personal needs all operation details can be configured using the file config.ini.

You need to add at least one sensor to the configuration. Scan for available Miflora sensors in your proximity with the command:

hcitool lescan

Execution

A first test run is as easy as:

python3 mqtt-flora.py

With a correct configuration the result should look similar to the the screencap above. The extensive output can be reduced to error messages:

python3 mqtt-flora.py > /dev/null

You probably want to execute the program continuously in the background. This can either be done by using the internal daemon or cron.

Attention: Daemon mode can be enabled (default) and disabled in the config file.

  1. Send the program into the background with some simple command line foo:

    python3 /path/to/mqtt-flora.py &
    

    Hint: Bring back to foreground with fg.

  2. Screen Shell - Run the program inside a screen shell:

    screen -S mqtt-flora -d -m python3 /path/to/mqtt-flora.py
    
  3. Cron job - Add a new con job, e.g., /etc/cron.d/miflora, execute every 5 minutes

    */5 * * * * root python3 /path/to/mqtt-flora.py > /dev/null
    

Integration

Data will be published to the MQTT broker topic "miflora/sensorname" (names configurable). An example:

{"light": 24, "moisture": 30, "temperature": 21.4, "conductivity": 1020, "battery": 100}

This data can be subscribed to and processed by other applications, like Home Assistant or openHAB.

Enjoy!


Xiaomi and Mi Flora are registered trademarks of BEIJING XIAOMI TECHNOLOGY CO., LTD.

This project is a community project not for commercial use.

This project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Xiaomi or any of its affiliates or subsidiaries.