Mi Flora Plant sensor
Python Shell
Clone or download
ChristianKuehnel Upgrade to btlewrap version 0.0.3 (#116)
* added *.swp to gitignore

* fixed pylint version

* upgraded btlewrap to version 0.0.3

* upgraded to pylint 1.9.3
Latest commit 84f3943 Aug 9, 2018


miflora - Library for Xiaomi Mi plant sensor

PyPI PyPI PyPI Travis Coveralls github Plants healty and growing GitHub license

This library lets you read sensor data from a Xiaomi Mi Flora plant sensor.


It supports reading the different measurements from the sensor

  • temperature
  • moisture
  • conductivity
  • brightness

To use this library you will need a Bluetooth Low Energy dongle attached to your computer. You will also need a Xiaomi Mi Flora plant sensor.


As there is unfortunately no universally working Bluetooth Low Energy library for Python, the project currently offers support for two Bluetooth implementations:

  • bluepy library
  • bluez tools (via a wrapper around gatttool)
  • pygatt library


To use the bluepy library you have to install it on your machine, in most cases this can be done via: pip3 install bluepy

Example to use the bluepy backend:

from miflora.miflora_poller import MiFloraPoller
from btlewrap.bluepy import BluepyBackend

poller = MiFloraPoller('some mac address', BluepyBackend)

This is the backend library to be used.

bluez/gatttool wrapper

To use the bluez wrapper, you need to install the bluez tools on your machine. No additional python libraries are required. Some distrubutions moved the gatttool binary to a separate package. Make sure you have this binaray available on your machine.

Example to use the bluez/gatttool wrapper:

from miflora.miflora_poller import MiFloraPoller
from btlewrap.gatttool import GatttoolBackend

poller = MiFloraPoller('some mac address', GatttoolBackend)

This backend should only be used, if your platform is not supported by bluepy. Note: gatttool is depracated in many Linux distributions.


If you have a Blue Giga based device that is supported by pygatt, you have to install the bluepy library on your machine. In most cases this can be done via: pip3 install pygatt

Example to use the pygatt backend:

from miflora.miflora_poller import MiFloraPoller
from btlewrap.pygatt import PygattBackend

poller = MiFloraPoller('some mac address', PygattBackend)


miflora depends on the btlewrap library. If you install miflora via PIP btlewrap will automatically be installed. If not, you will have to install btlewrap manually:

pip3 install btlewrap


please have a look at CONTRIBUTING.md

Projects Depending on miflora

The following shows a selected list of projects using this library: