
Abbildung 1: Der per Bluetooth funkende Mi-Flora-Sensor ist ein Abfallprodukt aus dem Smartphone-Gadget-Markt chinesischer Prägung.
Mi Flora heißen die Sensoren, die Kolumnist Charly Kühnast seit Neuestem in die heimische Scholle rammt. Die funken per Bluetooth erst mal nur Pferdemist, mit dem richtigen Werkzeug und einem Raspi fährt Charly aber im Nu eine reiche Ernte ein.
Vor geraumer Zeit habe ich hier über mein kleines Pomodo-Pi-Projekt [1] geschrieben. Dabei überwache ich die Bodenfeuchtigkeit in den Tomatentöpfen und lasse bei drohender Trockenheit nachgießen, indem sich automatisch ein Magnetventil öffnet, wenn die Feuchtigkeit einen bestimmten Wert unterschreitet. Die Vegetronix-Sensoren, die ich dazu benutze, sind zwar hochwertig und langlebig. Doch leider benötigen sie einen extra A/D-Wandler, und ihre Verkabelung bedeutet einigen Aufwand.
Inzwischen habe ich mir Feuchtigkeitssensoren des Modells “Mi Flora” zugelegt (Abbildung 1). Sein Hersteller, Xiaomi, sieht vor, dass es seine Daten in eine Smartphone-App sendet. Die habe ich aber nie installiert, ich hole mir die Daten direkt per Bluetooth ab.
Bei mir läuft das Ganze auf einem Raspberry Pi, aber natürlich tut’s jeder Linux-PC, der mit Bluetooth-Hardware ausgestattet ist. Software-seitig benötige ich die Pakete »bluez«, »python3« und »python-pexpect«, die schnell installiert sind.
Bluetooth-Witterung aufnehmen
Der nächste Schritt: Ich scanne die Umgebung nach Bluetooth-Sendern ab. Das geht normalerweise mit dem Kommando »sudo hcitool scan«, da aber der Sensor das Low-Energy-Übertragungsverfahren beherrscht, scanne ich mit »sudo hcitool lescan«. Als Ergebnis bekomme ich eine Liste der MAC-Adressen und Kurzbezeichnungen der Geräte in der Nähe, die Bluetooth Low Energy sprechen. Darunter finde ich auch meinen Sensor:
[...] C4:7C:8D:6A:5E:17 Flower care
Jetzt habe ich die MAC-Adresse und will sehen, ob der Sensor Daten liefert:
sudo gatttool --device=C4:7C:8D:6A:5E:17 --char-read -a 0x35
Die Rückmeldung muss mir nicht auf Anhieb etwas sagen:
Characteristic value/descriptor: aa bb cc dd ee ff 99 88 77 66 00 00 00 00 00 00
Wichtig ist, dass überhaupt eine Antwort kommt. Denn auf Github gibt es ein kleines Tool, das die Daten aus dem Sensor interpretieren kann. Ich klone es mit
git clone https://github.com/open-homeautomation/miflora.git
in mein aktuelles Verzeichnis. Es enthält ein kleines-Python-Skript namens »demo.py«, das verschiedene Messwerte aus dem Sensor ausliest und darstellt. Ich führe es mal aus:
python3 /home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:6A:5E:17
Voilà! Die Ausgabe schaut gut aus:
Getting data from Mi Flora FW: 3.2.1 Name: Flower care Temperature: 23.0 Moisture: 40 Light: 193 Conductivity: 247 Battery: 100
Die Feuchtigkeit ist in Prozent angegeben, die Lichtstärke in Lux. Hinter »Conductivity« erscheint die Leitfähigkeit in Mikrosiemens – sie sagt jedenfalls mittelbar etwas über den Nährstoffgehalt des Bodens aus.
Damit ist mein elektronischer Grün-Daumen (im Moment) ausgewachsen (Abbildung 2), und ich lege den Arm lässig auf die bald öffnende Salatbar.
Infos
- Charly Kühnast, “Nächste Station: Gießen”: Linux-Magazin 06/15, S. 51, https://www.linux-magazin.de/ausgaben/2015/06/einfuehrung2/






