A Python-library for reading cheap plant monitoring sensors manufactured by Xiaomi.
# There's a issue with bluepy-helper not being built in v1.0.5 in PyPi
# -> install bluepy from github
pip install git+https://github.com/IanHarvey/bluepy.git
pip install miplant
Scripts using the library need to be run as root
, as using BLE typically requires it.
from miplant import MiPlant
for plant in MiPlant.discover():
print(plant.temperature)
The sensors read 4 values:
- temperature in degrees Celsius (float, with 1 decimal precision)
- light level in lux (integer)
- moisture level in percent (integer)
- conductivity in µS/cm (integer)
- presented as "fertility" in many places, even the official app
The values are only read when the MiPlant.read()
-function is called, or
when one of the values is requested for the first time.
- The scripts using this library need to be (at least typically) run as
root
, asgattlib
requires setting up some options for Bluetooth Low Energy. - Currently only tested with Python 2.7, but should work if
gattlib
works... - The sensors seem to have some kind of internal cache, so don't even bother reading them too frequently.
Big thanks goes to Reverse engineering the Mi flora plant sensor! I wouldn't have bothered with reverese engineering the messages myself :P