Il y a quelques jours, j’ai publié un article qui expliquait comment importer les données d’un capteur Xiaomi Flower Care / MiFlora en Bluetooth sur un Raspberry Pi. Ce capteur est disponible pour un peu plus de 20€ sur Amazon.
Nous allons voir comment utiliser ces données dans RPi-Monitor.
Tout d’abord, nous allons appliquer tout ce qui est indiqué dans cet article :
Nous devrions avoir une App exécutable nommée « miflora » dans le dossier /home/pi/scripts/miflora/
Nous allons nous placer dans ce dossier :
$ cd /home/pi/scripts/miflora/
Et exécuter la commande (C4:7C:8D:XX:XX:XX
étant la Mac Address du Flower Care) :
$ ./miflora C4:7C:8D:XX:XX:XX hci0 > data.txt
Nous obtiendrons un fichier data.txt
contenant quelque chose comme ça :
Reading miflora... Firmware: {Version:2.7.0 Battery:100} Sensors: {Temperature:20.3 Moisture:35 Light:14 Conductivity:411}
On va créer un fichier miflora.conf
dans le dossier /etc/rpimonitor/template
$ sudo nano /etc/rpimonitor/template/miflora.conf
Et on va y copier ceci :
######################################################################## # Extract temperature and humidity from Xiaomi miflora # Page: 2 # Information Status Statistics # - tempetature - yes - yes # - moisture - yes - yes # - light - yes - yes # - conductivity - yes - yes # - battery - yes - yes ####################################################################### # Add new pages (number 2) web.status.2.name=Plantes web.statistics.2.name=Plantes # Get dynamic data dynamic.1.name=miflora_temp dynamic.1.source=/home/pi/scripts/miflora/data.txt dynamic.1.regexp=Temperature:(\S+) dynamic.1.rrd=GAUGE dynamic.2.name=miflora_moisture dynamic.2.source=/home/pi/scripts/miflora/data.txt dynamic.2.regexp=Moisture:(\S+) dynamic.2.rrd=GAUGE dynamic.3.name=miflora_light dynamic.3.source=/home/pi/scripts/miflora/data.txt dynamic.3.regexp=Light:(\S+) dynamic.3.rrd=GAUGE dynamic.4.name=miflora_conduct dynamic.4.source=/home/pi/scripts/miflora/data.txt dynamic.4.regexp=Conductivity:(\d+) dynamic.4.rrd=GAUGE dynamic.5.name=miflora_battery dynamic.5.source=/home/pi/scripts/miflora/data.txt dynamic.5.regexp=Battery:(\d+) dynamic.5.rrd=GAUGE # Add a line of status in page number 3 web.status.2.content.1.name=Flower Care web.status.2.content.1.icon=miflora.png web.status.2.content.1.line.1="Température Ambiante : <b>"+data.miflora_temp+"°C</b>" web.status.2.content.1.line.2="Ensoleillement : <b>"+data.miflora_light+" lux</b>" web.status.2.content.1.line.3="Humidité du sol : <b>"+data.miflora_moisture+" %</b>" web.status.2.content.1.line.4=ProgressBar(data.miflora_moisture,100) web.status.2.content.1.line.5="Engrais : <b>"+data.miflora_conduct+" uS/cm</b>" web.status.2.content.1.line.6=ProgressBar(data.miflora_conduct,1500) web.status.2.content.1.line.7="Batterie : <b>"+data.miflora_battery+" %</b>" web.status.2.content.1.line.8=ProgressBar(data.miflora_battery,100) # Add a statistic graph in page number 3 web.statistics.2.content.1.name=Température web.statistics.2.content.1.graph.1=miflora_temp web.statistics.2.content.1.ds_graph_options.miflora_temp.label=Température ambiante (deg C) web.statistics.2.content.1.graph_options.y2axis={ position: "right", min: 0, max: 40 } web.statistics.2.content.2.name=Humidité web.statistics.2.content.2.graph.1=miflora_moisture web.statistics.2.content.2.ds_graph_options.miflora_moisture.label=Humidité du sol (%) web.statistics.2.content.2.graph_options.y2axis={ position: "right", min: 0, max: 100 } web.statistics.2.content.3.name=Ensoleillement web.statistics.2.content.3.graph.1=miflora_light web.statistics.2.content.3.ds_graph_options.miflora_light.label=Ensoleillement (lux) web.statistics.2.content.3.graph_options.y2axis={ position: "right", min: 0, max: 3000 } web.statistics.2.content.4.name=Engrais web.statistics.2.content.4.graph.1=miflora_conduct web.statistics.2.content.4.ds_graph_options.miflora_conduct.label=Engrais (uS/cm) web.statistics.2.content.4.graph_options.y2axis={ position: "right", min: 0, max: 2000 } web.statistics.2.content.5.name=Batterie web.statistics.2.content.5.graph.1=miflora_battery web.statistics.2.content.5.ds_graph_options.miflora_battery.label=Batterie (%) web.statistics.2.content.5.graph_options.y2axis={ position: "right", min: 0, max: 100 }
On quitte nano en enregistrant.
Vous pouvez également télécharger directement le fichier miflora.conf
On attribue les droits du fichier qui vont bien :
$ sudo chmod 664 /etc/rpimonitor/template/miflora.conf
On utilise une icône miflora.png
qui n’est pas présente par défaut dans RPi-Monitor.
On va la copier dans le dossier /usr/share/rpimonitor/web/img
avec un utilitaire comme CyberDuck et y appliquer les droits corrects :
$ sudo chmod 664 /usr/share/rpimonitor/web/img/miflora.png
Pour terminer, on va éditer le fichier data.conf (c’est un raccourci) :
$ sudo nano /etc/rpimonitor/data.conf
Et y ajouter cette ligne tout à la fin :
include=/etc/rpimonitor/template/miflora.conf
Et pour terminer, on redémarre RPi-Monitor :
$ sudo service rpimonitor restart
Si on s’arrête ici, les données affichées dans RPi-Monitor seraient celle qui ont été relevées une seule fois manuellement avec la commande $ ./miflora C4:7C:8D:XX:XX:XX hci0 > data.txt
vue au début de cet article.
On va automatiser ce relevé avec un Cron
toutes les minutes :
$ sudo crontab -e
Et on ajoute cette ligne à la fin du fichier (attention à bien remplacer les XX
de la Mac Address) :
# Boucle pour actualiser les données RPi-Monitor avec le Xiaomi Flower Care (miflora)
*/1 * * * * sudo /home/pi/scripts/miflora/miflora C4:7C:8D:XX:XX:XX hci0 > /home/pi/scripts/miflora/data.txt 2>&1
Et on quitte en vauvegardant.
Dorénavant, les données seront lues toutes les minutes et vous pourrez voir le Flower Care s’allumer durant l’opération.
Vous devriez voir les valeurs importées et le graphique se dessiner au fur et à mesure du temps :