Pflanzensensoren „Mi Flora“

Netzwerk für „Mi Flora“ Pflanzensensoren

Die Pflanzensensoren unter dem Namen „Mi Flora“ werden von HuaHuaCaoCao (HHCC) hergestellt und auch als „Flower Care“ verkauft.
Die Sensoren können nur über Bluetooth ausgelesen werden, in der Regel wird dafür eine App auf dem Handy genutzt.

Sie messen folgende Daten:

  • Helligkeit (Lux)
  • Temperatur (°C)
  • Nährstoffgehalt (µS/cm)
  • Bodenfeuchtigkeit (%)
  • Batteriestand (%)

 

 

Die Sensoren kann man auch mit einem Linux, das Bluetooth LE unterstützt, auslesen. Die Daten werden immer stündlich bereitgestellt. Diese kann man dann in eine Influx-Datenbank schreiben lassen und mit Grafana visualisieren.

 

Die Schwierigkeit ist, dass Bluetooth nur etwa 10 Meter Reichweite hat. Es muss also eine Art „Relais-Server“ genutzt werden, der einerseits innerhalb der Bluetooth-Reichweite der Sensoren ist und andererseits auch mit dem LAN/WLAN verbunden ist, um die Datenbank erreichen zu können.

Ich habe mich für einen BananaPi M2 Zero entschieden, als Betriebssystem Armbian.

 

Damit habe ich folgendes Netzwerk umgesetzt:

 

Im Detail:

Der „Relais-Server“ wurde am Balkon platziert und erreicht beide Sensoren und und gleichzeitig das WLAN. Da Bluetooth und WLAN das 2,4 GHz-Band nutzen, reicht eine Antenne für Beides.

 

Verwendet wurde:

 

Verwendete Software:

 


Software-Installation unter Armbian

Bluetooth-Programme:

sudo apt-get install bluetooth bluez bluez-tools rfkill -y

 

Python-Programme:

sudo apt-get install python3-pip libglib2.0-dev -y
pip3 install setuptools
pip3 install btlewrap
pip3 install bluepy
pip3 install influxdb

Wenn sich die pip3-Programme nicht installieren lassen „error: externally-managed-environment“, folgende Datei löschen (für x die jeweils installierte Version nehmen):

/usr/lib/python3.x/EXTERNALLY-MANAGED

 

MAC-Adressen der Sensoren ermitteln und notieren (Sensoren nacheinander einschalten und die Sensoren beschriften!):

sudo hcitool lescan

Die Sensoren heißen immer „Flower Care“. Jedem Sensor nacheinander einschalten, notieren und einen eindeutigen Namen geben:

11:22:33:AA:BB:CC Flower care

 

Sensor auslesen:

git clone https://github.com/open-homeautomation/miflora.git
cd miflora
sudo nano demo.py

Zeile suchen:

mac, pat=re.compile(r"(80:EA:CA)|(C4:7C:8D):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}")

wie folgt ändern (neuere Sensoren haben andere MAC-OUIs!):

mac, pat=re.compile(r"[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}")

 

Sensoren auslesen und in Datenbank schreiben:

cd ..
git clone https://github.com/sergem155/miflora-influxdb.git
cd miflora-influxdb
sudo cp config-example.py config.py
sudo nano config.py

Hier die MAC-Adressen der Sensoren (Schritt: sudo hcitool lescan) und den Influx-Server eintragen (siehe Docker-Compose):

devices ={
"Blumensensor1":"11:22:33:AA:BB:CC",
"Blumensensor2":"11:22:33:AA:BB:DD",
"Blumensensor3":"11:22:33:AA:BB:EE"
}

to_scan = ["Blumensensor1","Blumensensor2","Blumensensor3"]

influx_args=('11.22.33.44', 8086, '', '', 'miflora')

 

Log-Datei anlegen:

sudo touch /var/log/miflora-influxdb.log
sudo chmod 777 /var/log/miflora-influxdb.log

 

Stündlichen Cronjob anlegen:

crontab -e
@reboot sleep 60 && /usr/bin/python3 /home/pi/miflora-influxdb/poll-insert.py 2>&1 >> /var/log/miflora-influxdb.log
0 * * * * /usr/bin/python3 /home/pi/miflora-influxdb/poll-insert.py 2>&1 >> /var/log/miflora-influxdb.log

 

Den Timeout für Bluetooth-Verbindungen auf mindestens 1 Sekunde anheben:

sudo crontab -e
50 * * * * /home/pi/miflora-influxdb/set-supervision-timeout

 

 

Die Influx-Datenbank als docker-compose.yml anlgen (wie man Docker / Docker-Compose installiert, wird hier nicht erklärt!):

version: '3'
services:
influxdb:
image: influxdb:1.8
container_name: influxdb
restart: always
ports:
- '11.22.33.44:8086:8086'
volumes:
- /opt/vlan1/miflora/influxdb-storage:/var/lib/influxdb
environment:
- INFLUXDB_DB=miflora
- INFLUXDB_ADMIN_USER=admin-user
- INFLUXDB_ADMIN_PASSWORD=admin-password

IP (unter „ports“) und ggf. Volume anpassen!

 

Die ersten Daten sind erst nach einer Stunde (nach der Inbetriebnahme des Sensors) in Grafana sichtbar, frühere Abfragen liefern keine Werte!

 

Unter „Webcams“ ist ein Diagramm aus Grafana, welches auf den Daten eines Pflanzensensors basiert:
https://www.hohenleitner.it/webcam/

 


Referenzen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert