Mes passions, le boulots, mes coups de gueule...




RPi-Monitor : Importer les données depuis un capteur Xiaomi Flower Care / MiFlora en Bluetooth

Catégories : Domotique, Geek, Informatique, Raspberry Pi · par 6 Juin 2017

Introduction

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.

Importer les données dans RPi-Monitor

Rapatrier les données

Tout d’abord, nous allons appliquer tout ce qui est indiqué dans cet article :

https://www.fanjoe.be/?p=2454

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}

Fichier de configuration RPi-Monitor

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+"&deg;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

Automatiser le relevé du capteur

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.

Résultat

Vous devriez voir les valeurs importées et le graphique se dessiner au fur et à mesure du temps :

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.