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




Raspberry Pi : Se connecter à un Flower Power de Parrot

Catégories : Domotique, Geek, Raspberry Pi · par 10 Juil 2014

RPi-FP-01

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

RPi-FP-02

CSR8510 A10

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. 😉

(6) comments

Flor Areli
7 ans ago · Répondre

Hola!! Como le hiciste para recuperar los datos y mostrarlos en la pagina web?

    fanjoe
    7 ans ago · Répondre

    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.

maeght
6 ans ago · Répondre

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

maeght
6 ans ago · Répondre

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

    fanjoe
    6 ans ago · Répondre

    Bonjour,
    Oui, c’est tout-à-fait possible à développer…
    Didier.

Répondre à maeghtAnnuler la réponse.

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