Pour mon Noël de décembre 2013, j’ai reçu un Flower Power de Parrot.
Un peu par hasard, je suis tombé sur ce site où il est expliqué comment connecter un Raspberry Pi au Flower Power pour récupérer des données.
Voici mon expérience…
Achat
Tout d’abord, pour 5 € sur eBay, je me suis procuré un dongle Bluetooth CSR 4.0. Il est également en vente sur Adafruit pour ~ $10 et vous pourrez probablement le trouver sur Amazon pour un prix similaire.
Il est vraiment minuscule, voyez la photo ci-contre.
Le mien porte la référence : CSR8510 A10
Il a l’avantage d’être parfaitement reconnu par Raspbian et est compatible Bluetooth 4.0 LE (Low Energy) qui va permettre au Raspberry Pi de se connecter au Flower Power qui ne supporte que cette dernière norme Bluetooth.
A première vue, le dongle semble fonctionner lorsqu’il est branché au port USB du Pi. Sa LED clignote et tout paraît correct. Mais il n’en est rien ! Il faut absolument le connecter à un Hub USB alimenté. Sinon, il ne parviendra pas à émettre et à découvrir les périphériques à proximité.
Test
Une fois le dongle en votre possession, on va commencer par un petit test pour voir s’il est bien reconnu par le système. Pour ça, on va exécuter la commande :
$ tail -f /var/log/syslog
Une fois celle-ci exécutée, on va connecter la clef Bluetooth sur le Hub USB.
Dès la connexion, si elle est reconnue, les lignes du fichier /var/log/syslog
(qui contient les actions effectuées par le système) devraient afficher quelque chose comme ceci :
Jul 9 18:25:39 raspberrypi kernel: [206746.232231] usb 1-1.2.3: new full-speed USB device number 7 using dwc_otg Jul 9 18:25:39 raspberrypi kernel: [206746.346327] usb 1-1.2.3: New USB device found, idVendor=0a12, idProduct=0001 Jul 9 18:25:39 raspberrypi kernel: [206746.346363] usb 1-1.2.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0 Jul 9 18:25:39 raspberrypi kernel: [206746.346379] usb 1-1.2.3: Product: CSR8510 A10 Jul 9 18:25:39 raspberrypi kernel: [206746.529033] Bluetooth: Core ver 2.16 Jul 9 18:25:39 raspberrypi kernel: [206746.531024] NET: Registered protocol family 31 Jul 9 18:25:39 raspberrypi kernel: [206746.531053] Bluetooth: HCI device and connection manager initialized Jul 9 18:25:39 raspberrypi kernel: [206746.531123] Bluetooth: HCI socket layer initialized Jul 9 18:25:39 raspberrypi kernel: [206746.531148] Bluetooth: L2CAP socket layer initialized Jul 9 18:25:39 raspberrypi kernel: [206746.531208] Bluetooth: SCO socket layer initialized Jul 9 18:25:39 raspberrypi kernel: [206746.549251] usbcore: registered new interface driver btusb
Installation
Ensuite, on va installer le support Bluetooth sur le RPi. Actuellement, le dongle est reconnu, mais il n’y a aucun service pour le prendre en charge.
On commence par les mises à jour habituelles :
$ sudo apt-get update && sudo apt-get upgrade
Et l’installation des services Bluetooth :
$ sudo apt-get install bluetooth 0 mis à jour, 76 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 27,5 Mo dans les archives. Après cette opération, 72,2 Mo d'espace disque supplémentaires seront utilisés.
On va ensuite installer libbluetooth-dev
, qui permet d’utiliser la bibliothèque BlueZ (Bluetooth) sous Linux.
$ sudo apt-get install libbluetooth-dev
Puis, on va récupérer les bibliothèques en Node.js développées par Sandeep Mistry. Elles vont nous permettre de nous connecter au Flower Power.
Mais avant d’installer ces bibliothèques, il faut installer Node JS lui-même :
La version de Node.js incluse dans Rasbian Wheezy est la 0.6.19 alors que la version courante est la 0.10.29.
Il est possible de télécharger la dernière mouture depuis le site de Node.js : http://nodejs.org/dist/. Mais il existe une méthode plus simple.
Nous allons télécharger un paquet Debian qui sera automatiquement le plus récent :
$ cd ~/
$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb --2014-07-09 18:30:19-- http://node-arm.herokuapp.com/node_latest_armhf.deb Résolution de node-arm.herokuapp.com (node-arm.herokuapp.com)... 184.73.213.30 Connexion vers node-arm.herokuapp.com (node-arm.herokuapp.com)|184.73.213.30|:80...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 5486136 (5,2M) [application/x-debian-package] Sauvegarde en : «node_latest_armhf.deb» 100%[======================================>] 5 486 136 512K/s ds 8,8s 2014-07-09 18:30:29 (606 KB/s) - «node_latest_armhf.deb» sauvegardé [5486136/5486136]
Puis on installe le paquet téléchargé :
sudo dpkg -i node_latest_armhf.deb Sélection du paquet node précédemment désélectionné. (Lecture de la base de données... 76588 fichiers et répertoires déjà installés.) Dépaquetage de node (à partir de node_latest_armhf.deb) ... Paramétrage de node (0.10.29-1) ... Traitement des actions différées (« triggers ») pour « man-db »...
Et enfin, on installe les programmes :
$ npm install noble
$ npm install flower-power
$ npm install async
Il est temps maintenant d’exécuter le script de test qui est inclus dans le paquet flower-power
que l’on vient d’installer :
$ cd node_modules/flower-power
$ sudo node test.js
Et on devrait obtenir quelque chose comme ceci :
connect discoverServicesAndCharacteristics readSystemId system id = 90:03:b7:00:00:e7:dc:6c readSerialNumber serial number = PI040297AA3K014487 readFirmwareRevision firmware revision = 2013-11-27_hawaii-1.0.3_hardware-config-MP readHardwareRevision hardware revision = 2013-07-26_hawaiiProduction-1.2_protoDV-bootloader readBatteryLevel battery level = 66 readFriendlyName friendly name = Flower power DC6C writeFriendlyName readColor color = brown readSunlight sunlight = 1.50 readTemperature temperature = 19°C, 67°F readSoilMoisture soil moisture = 25% enableLiveMode live mode sunlight = 1.50 temperature = 19°C, 67°F soil moisture = 26% sunlight = 1.50 temperature = 19°C, 67°F soil moisture = 26% sunlight = 1.50 temperature = 19°C, 67°F soil moisture = 26% sunlight = 1.50 temperature = 19°C, 67°F soil moisture = 26% disableLiveMode sunlight = 1.50 temperature = 19°C, 67°F soil moisture = 26% disconnect disconnected!
Voilà ! La prochaine étape sera de récupérer les données et de les afficher sur une page web. 😉
7 ans ago ·
Hola!! Como le hiciste para recuperar los datos y mostrarlos en la pagina web?
7 ans ago ·
Bonjour,
Je n’ai pas poussé la manipulation jusqu’à importer les données sur une page web.
J’utilise maintenant un Flower Care de chez Xiaomi et j’importe ses données.
https://www.fanjoe.be/?p=2537
Didier.
6 ans ago ·
bonjour,
cela me semble très intéressant. J’ai aussi les 2 model de capteurs.
Ce posse pourvoi le moyen de récupérer les fichiers sous forme txt soit sur un tel (les applis proposer ne donne que des graphique, soit sur un ordinateur sous windows 10 ou MaC OS.
Auriez vous SVP des pistes pour ce type de connexions ?
d’avance merci
Jean-luc
6 ans ago ·
Bonjour,
Je rédigerai prochainement un article similaire à celui-ci (https://www.fanjoe.be/?p=2741) permettant de récupérer les données d’un Flower Power sans en passer par Node JS.
Il existe une documentation sur le site de Parrot (http://developer.parrot.com/docs/FlowerPower/FlowerPower-BLE.pdf) qui décrit les spécifications de l’interface.
Didier.
6 ans ago ·
Bonjour,
merci pour ces infos, pensez vous que sur la basse de la doc fournis par Parrot, il est possible de développer une application simple utilisant les infos de cette doc pour la récupération des données capteurs sous forme de tableau depuis un tel ?
jean-luc
6 ans ago ·
Bonjour,
Oui, c’est tout-à-fait possible à développer…
Didier.