Importer les données du Flower Power de Parrot en Bluetooth

Standard

Je me suis offert un Flower Power de Parrot. Cet objet connecté d’une valeur de 49 € permet de recueillir des données provenant de votre pot de fleur.

Je souhaite pouvoir accéder aux données disponibles grâce à l’API Bluetooth depuis Domoticz. En fonction de l’humidité ou de la luminosité je pourrai ensuite déclencher des actions automatiques, par exemple l’arrosage automatique ou l’ouverture d’un store électrique pour protéger mes plantes du soleil.

J’utilise un Raspberry PI B+ sur lequel j’ai installé Raspbian et Domoticz. Il me faudra un connecteur bluetooth USB.

Acquérir un adaptateur bluetooth

Voici la liste des connecteurs compatibles avec mon Raspberry Pi. Pour ma part, je me suis offert celui-ci.

Activer le bluetooth sur le Raspberry PI

Après branchement de votre dongle bluetooth, il faut activer le bluetooth de votre OS Rasbian et vérifier son bon fonctionnement. Voici un petit tuto très bien fait.

Installer NodeJS

NodeJS dispose de librairie simplifiant l’accès au Flower Power en Bluetooth. Cet autre tuto de Pierre Dandumont vous expliquera comment installer node et les librairies nécessaires.

Et si vous êtes curieux n’hésitez pas à consulter la documentation officielle de l’API bluetooth du Flower Power de Parrot.

Le script de test.js permet de se connecter au Flower Power et de vérifier l’état de la luminosité, de la température de l’air et du sol, de l’humidité dans le sol et de l’engrais.

  • sunlight = 2.26 mol/m²/d
  • soil electrical conductivity = 1021.00
  • soil temperature = 17.50°C
  • air temperature = 17.09°C
  • soil moisture = 31.43%

Alimenter Domoticz

Pour importer les données dans Domoticz, il est nécessaire de créer deux dispositifs dummy device :

  • 1 dispositif de type Température et Humidité,
  • 1 dispositif de type Lux.

Pour rappel, il vous faudra un matériel Dummy que l’on peut ajouter dans  Domoticz depuis l’interface Configuration > Matériels.

Le matériel Dummy ajouté, vous pouvez créer de nouveaux capteurs Dummy. Chaque capteur sera mis à jour depuis l’API JSON de Domoticz.

Dispositifs dummy pour le Flower Power

Le dispositif de température dont l’ID est 252 sera alimenté au travers de l’API JSON avec l’URL suivante :

http://domoticz:8080/json.htm?type=command&param=udevice&idx=252&nvalue=0&svalue=20;45;1

  • IDx : 252
  • Température : 20°
  • Humidité : 45 %
  • Statut :
    • 0=Normal
    • 1=Comfortable
    • 2=Dry
    • 3=Wet

Dispositif de Température et Humidité

Plus d’info sur l’API JSON de Domoticz pour alimenter un dispositif Température et Humidité ici.

Nous faisons de même avec le dispositif de luminosité. Mais la valeur recueillie avec le script est en mol/m²/d (Photosynthetically Active Radiation ou PAR). Il faut simplement multiplier la valeur par 53.93 pour obtenir une valeur en Lux ou Lumen (Plus d’info sur la méthode de conversion ici).

L’URL de l’API JSON sera la suivante :

http://domoticz:8080/json.htm?type=command&param=udevice&idx=253&svalue=7.0109

  • IDx : 253
  • Valeur recueillie : 0,13
  • Valeur envoyée à Domoticz : 7.010

Dispositif de luminosité

Automatiser la synchronisation avec un script NodeJS

Les données récoltées par le script de test peuvent être envoyées à Domoticz grâce à l’API JSON. J’ai apporté quelques petites adaptations pour effectuer deux requêtes HTTP dans le script NodeJS.



/* [...] */
var http = require('http');

var options = {
 host: '192.168.1.111',
 port: '8080',
 path: ''
};

var path = '/json.htm?type=command&param=udevice&idx=';
var AirTemperature = 0;
var Humidity = 0;

FlowerPower.discover(function(flowerPower) {
 async.series([
 function(callback) {
 flowerPower.on('disconnect', function() {
 console.log('disconnected!');
 process.exit(0);
 });


flowerPower.on('sunlightChange', function(sunlight) {
 console.log('sunlight = ' + sunlight.toFixed(2) + ' mol/m²/d');
 options.path = path + '253&svalue=' + (sunlight.toFixed(2) * 53.93);
 var req = http.request(options).end();
 });

 flowerPower.on('soilElectricalConductivityChange', function(soilElectricalConductivity) {
 console.log('soil electrical conductivity = ' + soilElectricalConductivity.toFixed(2));
 });

 flowerPower.on('soilTemperatureChange', function(temperature) {
 console.log('soil temperature = ' + temperature.toFixed(2) + '°C');
 options.path = path + '252&svalue=' + AirTemperature + ';' + Humidity + ';2' ;
 var req = http.request(options).end()
 });
/* [...] */

 function(callback) {
 console.log('readAirTemperature');
 flowerPower.readAirTemperature(function(temperature) {
 console.log('air temperature = ' + temperature.toFixed(2) + '°C');
 AirTemperature = temperature.toFixed(2);
 callback();
 });
 },
 function(callback) {
 console.log('readSoilMoisture');
 flowerPower.readSoilMoisture(function(soilMoisture) {
 console.log('soil moisture = ' + soilMoisture.toFixed(2) + '%');
 Humidity = soilMoisture.toFixed(2);
 callback();
 });
 },

/*[...]*/

Le script complet est téléchargeable ici >>.

L’ajout dans la crontab du user root :

sudo crontab -e
5 * * * * /usr/local/bin/node /home/pi/node_modules/flower-power/domoticz.js > /dev/null 2>&1

Voici la première étape, la suivante consistera à déclencher une action automatique d’arrosage. Pour toute proposition ou adaptation n’hésitez pas à me contacter ou à commenter cet article.

Choisissez le design de Qleek

Standard

Qleek donne corps à votre vie digitale.

Créé par Johanna Hartzheim et Ismail Salhi, deux Français très créatifs, qui souhaitent simplifier l’accès aux technologies. Qleek est le fruit de leur travail.

Qleek, ce sont des tuiles hexagonales (les tapps) qui permettent d’accéder facilement à votre musique, vidéos, revue en ligne, compte Instagram, Tweeter, Facebook, de votre famille ou de vos amis. Très décoratives, les tapps peuvent vous représenter comme une oeuvre sur votre mur.

Copyright Qleek.me

Copyright Qleek.me

Les tapps se posent sur un socle, la box Qleek, et vous accédez facilement à ces contenus virtuels et à la fois si réels grâce à Qleek.

qleek box

Copyright Qleek.me

Vous pouvez dès aujourd’hui choisir le design de Qleek.