Il y a quelques temps, je vous avais parlé de mon Flower Power de Parrot et de la manière de le connecter à un Raspberry Pi.
Malheureusement, après une mise à jour de l’App sur iPhone, j’ai perdu la possibilité d’y récupérer les données.
Je me suis alors tourné vers les produits chinois et plus spécialement vers le Xiaomi Flower Care aussi appelé MiFlora disponible sur Amazon pour un peu plus de 20€.
Cette sonde permet de mesurer :
Pour la connexion, j’ai utilisé un Raspberry Pi 3 qui intègre d’origine le Wifi et le Bluetooth 4.1 LE.
L’OS utilisé est Raspbian Jessie with Pixel avec toutes les mises à jours au 01 juin 2017.
Le Flower Care de Xiaomi est une version chinoise (pas internationale) identifiée comme telle par l’App iOS et désactivée par défaut hors de la Chine continentale. Allez savoir pourquoi, mais c’est comme ça. Je vous ferai un billet plus complet sur le couple Flower Care / App Flower Care dans les semaines qui viennent.
Pour comprendre le fonctionnement de l’engin, je vous suggère de lire (en anglais) l’excellent article sur le wiki d’Hackerspace. Il y détaille tous les composants que renferme la sonde.
Pour pouvoir lire les données avec l’app que l’on va voir plus bas, le firmware doit être récent. Genre 2.6 ou plus récent. Faites une mise à jour à l’aide de l’App iOS si nécessaire et/ou possible.
De mon côté, je n’ai eu à installer ni pilote, ni outils de gestion du Bluetooth. Ceux intégrés à l’ISO de base de Raspbian ont semblé suffire. Je n’ai pas eu non plus à activer quoi que ce soit sur le RPi.
On va commencer par vérifier si le RPi « voit » le Flower Care :
$ sudo hcitool lescan
Cette commande devrait vous retourner un truc du genre :
LE Scan ... C4:7C:8D:63:85:B1 (unknown) C4:7C:8D:63:85:B1 Flower care
L’outil « miflora » est publié par BarnyBug sur GitHub :
https://github.com/barnybug/miflora/
Deux possibilités s’offrent à vous :
Il est recommandé de compiler les sources sur un PC.
J’ai installé GO sur une machine virtuelle Debian Jessie 386 dans Parallels Desktop.
Cette page peut vous aider à installer GO :
https://www.digitalocean.com/community/tutorials/how-to-install-go-1-7-on-debian-8
On va d’abord déterminer la version de GO à installer en consultant cette page :
https://storage.googleapis.com/golang/
Dans mon cas, j’ai choisi cette version : go1.8.linux-386.tar.gz
Dans le terminal :
$ sudo apt-get update && sudo apt-get upgrade
$ cd ~/
$ curl -O https://storage.googleapis.com/golang/go1.8.linux-386.tar.gz
$ tar xvf go1.8.linux-386.tar.gz
Vous devriez maintenant avoir un dossier appelé go
dans votre dossier home
.
On va ensuite changer les droits de propriétaire et de groupe vers root
et tout déplacer vers /usr/local
:
$ sudo chown -R root:root ./go
$ sudo mv go /usr/local
Puis, on va modifier le PATH de l’environnement :
First, set Go’s root value, which tells Go where to look for its files.
On va d’abord définir la valeur de racine de Go, qui indique à Go où chercher ses fichiers.
$ sudo nano ~/.profile
À la fin du fichier, on ajoute ces lignes :
export GOPATH=$HOME/work export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
Puis, on lance la commande indiquée sur le GitHub de BarnyBug :
$ go get github.com/barnybug/miflora/cmd/miflora
Dans mon cas, j’ai rencontré l’erreur suivante :
go: missing Git command. See https://golang.org/s/gogetcmd package github.com/barnybug/miflora/cmd/miflora: exec: "git": executable file not found in $PATH
Git manque à l’appel. On va l’installer :
$ sudo apt-get install git
Une fois que c’est fait, on relance la commande :
$ go get github.com/barnybug/miflora/cmd/miflora
On va ensuite compiler l’app avec les paramètres d’environnement du RPi :
$ env GOOS=linux GOARCH=arm go build github.com/barnybug/miflora/cmd/miflora
L’app obtenue devrait se trouver dans votre dossier home
de Debian Jessie du PC :
Rapatriez-la sur votre RPi comme on va le voir plus loin.
Si vous n’avez pas envie de vous coltiner l’installation de GO et toutes les étapes préalables à la compilation de l’app miflora, téléchargez-la directement depuis ce lien :
Sur le RPi, on va créer un dossier /home/pi/scripts/miflora/
dans lequel on va placer l’app :
$ mkdir /home/pi/scripts/ $ mkdir /home/pi/scripts/miflora/
Avec un utilitaire comme CyberDuck, on va déposer l’app miflora dans le dossier créé.
On va se placer dans le dossier et rendre l’app executable :
$ cd /home/pi/scripts/miflora/ $ chmod +x miflora
Puis, on execute l’app miflora :
$ ./miflora
On devrait avoir ce retour :
Usage: miflora MAC HCI_DEVICE eg: miflora C4:7C:8D:XX:XX:XX hci0
Pour trouver la MAC address du Flower Care, on entre la commande vue en début d’article :
$ sudo hcitool lescan
Et on la trouve (ici, en rouge) :
LE Scan ...
C4:7C:8D:63:85:B1 (unknown)
C4:7C:8D:63:85:B1 Flower care
Et on termine comme ceci (n’oubliez pas de terminer par hci0
) :
$ ./miflora C4:7C:8D:XX:XX:XX hci0
Si tout s’est bien passé, elle devrait vous retourner quelque chose comme ça :
Reading miflora... Firmware: {Version:2.7.0 Battery:100} Sensors: {Temperature:20.3 Moisture:35 Light:14 Conductivity:411}
Autre méthode :
Flower Care / MiFlora de Xiaomi : Récupérer les données avec Gatttool sur un RPi 3
Références :
https://loads.pickle.me.uk/2017/03/19/raspberry-pi-zero-w-and-mi-flora-plant-monitor/
https://wiki.hackerspace.pl/projects:xiaomi-flora
https://github.com/barnybug/miflora/
https://www.digitalocean.com/community/tutorials/how-to-install-go-1-7-on-debian-8
https://git-scm.com/download/linux