The sys admin's daily grind: Mi Flora sensors
Salad Grower
Columnist Charly Kühnast recently attached Mi Flora humidity sensors to his potted plants. At first, they only transmitted junk on Bluetooth, but armed with the right tools and a Rasp Pi, Charly now reaps a rich harvest of data.
A long time ago, I wrote about my little Pomodo Pi project [1] in this magazine. It involved me monitoring my tomato plant's soil humidity and watering the plants when there was a risk of them drying out by automatically opening a solenoid valve when the humidity dropped below a certain value. The Vegetronix sensors I still use for this are high quality and durable, but, unfortunately, they need an extra A/D converter and wiring them involved some tinkering.
Meanwhile, I have bought some humidity Mi Flora plant sensors (Figure 1). Their manufacturer, Xiaomi, envisages sending the data to a smartphone app, but I never bothered installing it; instead I pick up the data directly via Bluetooth.

I run the whole thing on a Raspberry Pi, but of course any Linux PC equipped with Bluetooth hardware will do. Software-wise you need the bluez, python3, and python-pexpect packages, which are quickly installed.
Recording the Weather with Bluetooth
The next step is to scan the environment for Bluetooth transmitters. This can usually be done with the command
sudo hcitool scan
but since the sensor is capable of low-energy transmission, I did the scan by typing:
sudo hcitool lescan
The result was a list of MAC addresses and the short names of nearby devices that can speak Bluetooth Low Energy. Hey presto, one of them was my sensor:
[...] C4:7C:8D:6A:5E:17 Flower care
Now I have the MAC address and want to see if the sensor is sending any data:
sudo gatttool --device=C4:7C:8D:6A:5E:17--char-read -a 0x35
The feedback doesn't need to mean anything to me at first glance:
Characteristic value/descriptor: aa bb cc dd ee ff 99 88 77 66 00 00 0000 00 00 00
The important thing is that there is a response at all, because on GitHub there is a small tool that can interpret the data from the sensor. I cloned it to my current directory, as follows:
git clone https://github.com/open-homeautomation/miflora.git
The package contains a small Python script by the name of demo.py
, which reads and displays different measured values from the sensor. Now let's run it:
python3 /home/pi/miflora/demo.py--backend gatttool pollC4:7C:8D:6A:5E:17
Voila! The output looks good:
Getting data from Mi Flora FW: 3.2.1 Name: Flower care Temperature: 23.0°C Moisture: 40 Light: 193 Conductivity: 247 Battery: 100
The humidity is given as a percentage and the luminous intensity in lux. The Conductivity
is shown in microsiemens – it indirectly says something about the nutrient content of the soil.
That's the full extent of my electronic green thumb (at the moment, Figure 2), and I'm already looking forward to the grand opening of my salad bar.
Infos
- "Pomodo Pi" by Charly Kühnast, Linux Magazine, issue 177, August 2015, http://www.linux-magazine.com/Issues/2015/177/Charly-s-Column-PomodoPi/(language)/eng-US
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.
News
-
Fedora 39 Beta is Now Available for Testing
For fans and users of Fedora Linux, the first beta of release 39 is now available, which is a minor upgrade but does include GNOME 45.
-
Fedora Linux 40 to Drop X11 for KDE Plasma
When Fedora 40 arrives in 2024, there will be a few big changes coming, especially for the KDE Plasma option.
-
Real-Time Ubuntu Available in AWS Marketplace
Anyone looking for a Linux distribution for real-time processing could do a whole lot worse than Real-Time Ubuntu.
-
KSMBD Finally Reaches a Stable State
For those who've been looking forward to the first release of KSMBD, after two years it's no longer considered experimental.
-
Nitrux 3.0.0 Has Been Released
The latest version of Nitrux brings plenty of innovation and fresh apps to the table.
-
Linux From Scratch 12.0 Now Available
If you're looking to roll your own Linux distribution, the latest version of Linux From Scratch is now available with plenty of updates.
-
Linux Kernel 6.5 Has Been Released
The newest Linux kernel, version 6.5, now includes initial support for two very exciting features.
-
UbuntuDDE 23.04 Now Available
A new version of the UbuntuDDE remix has finally arrived with all the updates from the Deepin desktop and everything that comes with the Ubuntu 23.04 base.
-
Star Labs Reveals a New Surface-Like Linux Tablet
If you've ever wanted a tablet that rivals the MS Surface, you're in luck as Star Labs has created such a device.
-
SUSE Going Private (Again)
The company behind SUSE Linux Enterprise, Rancher, and NeuVector recently announced that Marcel LUX III SARL (Marcel), its majority shareholder, intends to delist it from the Frankfurt Stock Exchange by way of a merger.