Domoticz et Parrot flower power

flowerpower-brown

Non, non , il ne s’agit pas de ce à quoi vous pensez  😳

Un autre indice :

fertil_ico water_ico temp_ico sun_ico

Vous voyez ce n’était vraiment pas ce à quoi vous avez pensé.

fl2Encore que !

 

Bon, vous l’avez compris, une fois n’est pas coutume, nous allons parler de jardinage grâce au Parrot Flower Power, cet objet connecté qui permet de surveiller nos plantations.

Voici le pitch d’Apple :

Le capteur Parrot Flower Power s’enfonce près d’une plante en pot ou en pleine terre et fournit des données en temps réel sur les facteurs essentiels à la santé et à la croissance végétale. Il envoie ensuite les données les plus récentes vers une app gratuite sur votre iPhone, iPad ou iPod touch. En gardant un œil sur l’humidité de la terre, le niveau de fertilisation, la température ambiante et l’intensité lumineuse, vous pourrez prendre parfaitement soin de vos plantes et les aider à mieux pousser.

Un article de Cnet ici http://www.clubic.com/mag/article-732593-1-flower-power-parrot.html

 

Sur le forum rodriguezyohann posait récemment la question de la récupération de données issues du Flower Power et leur envoi vers Domoticz.

Il s’agissait de récupérer les données nommées « Mon Jardin » dans l’interface web Parrot https://myflowerpower.parrot.com

parrot_web

Nous avons le plaisir de vous annoncer que, après avoir commis quelques ligne de python, les mesures ci-dessous sont récupérées dans Domoticz ainsi que les conseils Parrot pour votre plante nommés « Instructions » et « Status ».

Parrot met à notre disposition, par plante, 3 mesures pour les 4 paramètres suivants : Lumière, Air, Engrais, Humidité.

Ces mesures se nomment chez Parrot ;

  • « Instruction », « Status », les conseils Parrot, qui seront des virtual sensor texte pour Domoticz et
  • « Value », une valeur numérique (un widget compteur semble (?) adapté).

Source :http://www.parrot.com/fr/support/parrot-flower-power/

Ainsi, pour chaque plante,  nous avons 12 virtual sensors à créer dans Domoticz (4 paramètres x 3 mesures).

Le script ne récupère les données que pour UNE seule plante, il faudra copier ce script autant de fois que vous avez de plantes à gérer.

Prérequis

  • Installer python puis python requests

  • installation de python
sudo apt-get install python
sudo apt-get install python-dev
sudo apt-get install python-setuptools
sudo apt-get install python-pip
  • Installation de requests
sudo pip install requests
  •  Obtenir un accès aux données Parrot

Rendez vous à https://apiflowerpower.parrot.com/api_access/signup

Remplissez le formulaire, un courrier électronique vous est renvoyé avec un identifiant unique nommé client_secret lié à votre adresse e-mail (client_id)

client_secret est de la forme  « Fg45fxGHJszUFcvVgOT8DFYYSqe643358hvdd »

D’autre part lors de votre première installation du Flower Power vous avez crée un couple d’identifiant user et password qu’il faudra aussi (c’est celui qui sert à la connexion sur l’interface web Parrot).

  • Parametrage Domoticz

Ainsi, pour chaque plante,  nous avons 12 virtual sensors à créer dans Domoticz.

  • Lumiere_Instruction, Lumiere_Status, Lumiere_Valeur
  • Air_Instruction, Air_Status, Air_Valeur
  • Humidite_Instruction, Humidite_Status, Humidite_Valeur
  • Engrais_Instruction, Engrais_Status, Engrais_Valeur

Vous pouvez nommer ces capteurs comme bon vous semble, nous ne ferons référence qu’a leur ID Domoticz par la suite.

Toutefois je vous conseille, si vous avez plusieurs plantes à gérer de créer vos sensors en leur donnant le nom de la plante.

Exemple : Géranium_Lumiere_Instruction, Géranium_Lumiere_valeur, Clem_Lumiere_Instruction, Clem_Lumiere_valeur font référence aux Instructions et valeurs de lumière pour mon géranium et mon clémentinier.

La quantité de virtual sensors à créer étant importante, il faut être rigoureux dans cette phase.

La création se passe comme d’habitude dans “Matériel” et “Create virtual sensor” créons 2 capteurs “Texte” et 1 capteur « Compteur ». Puis dans le menu « Dispositifs » utilisez la flèche verte pour les nommer correctement.

N’oubliez pas : 2 virtual sensor pour Instructions et Status et un virtual sensor de type compteur pour la valeur numérique.

Je vous conseille de placer ce compteur en type « Counter ». cela permet d’avoir des logs, des courbes et des notifications. Bien que les cumul soient plutot inadaptés et inutiles.

idx_parrot

Si vous ne voulez pas afficher certains paramètres,  créez un capteur virtuel « poubelle », que vous n’afficherez pas et sur l’idx duquel vous ferez pointer dans le paramétrage tous les trucs inutiles.

Bon vous avez bien travaillé, une pause s’impause (sic).

Le script

Il est téléchargeable ici https://easydomoticz.com/scripts/parrot_fl_power.py

il est volontairement pas/peu pythonesque pour que la lecture/modification soit plus aisée par tous.

Le paramétrage du script

La config Domoticz

Les paramètres de votre Domoticz doivent être dans config_Domoticz.py, ce fichier pourra ainsi être réutilisé si vous avez plusieurs plantes.

Créer ce fichier puis y introduire vos IP, ports,user, mdp.

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

domoticz_ip='192.168.1.82'
domoticz_port='8080'
domoticz_user='patrice'
domoticz_password='123456'

Si votre Domoticz n’à pas d’authentification domoticz_user et domoticz_password seront laissés vides.

 

Les parametrages liés au FLower Power

  • Les Identifiants

Cette section du paramétrage contient les divers identifiants Parrot, tout d’abord username et password puis l’id et la clé secrète obtenue à  https://apiflowerpower.parrot.com/api_access/signup

#~~~~~~~~~~~ Parametres Parrot ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

# First we set our credentials
username = 'mon_identifiant_chez_parrot@xxx.fr'
password = 'lemot_de_passe_associé'

# Get your client credentials here: https://apiflowerpower.parrot.com/api_access/signup
client_id = 'xyz.xyz@gmail.com'
client_secret = 'Gffggjkfre4TGdQqfgg5uXCbRFDSSSazszr566fd'
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  •  La plante

introduisez dans cette partie le nom TEL QUE vous l’avez donné à votre plante chez Parrot. (les accents sont acceptés).

 #~~~~~~~~~~~ Parametres de la plante ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# c'est le nom que vous avez donne chez Parrot
Nom_Plante='géranium'
  • Liens avec les virtual sensors Domoticz

Dans les prérequis vous devriez avoir crée des virtual sensor correspondants à nos 12 paramètres.

Faisons ici le lien entre les IDX des widget Domoticz.

Remarquez ici que vous ne devez mettre que les bons IDX en face de Lumiere_Instruction, Lumiere_Status, Lumiere_valeur, etc, etc.

idx_parrot

Regardez ici :

  • Geranium_Air_Inst à  l’IDX 36 que je mets en face de Plante_Air_Instruction puisque il s’agit de Air_Instruction
  • GEranium_Air_Valeur à  l’IDX 45 que je mets en face de Plante_Air_Valeur puisque il s’agit de la valeur de l’air pour ma plante, etc, etc.

Au final :

### Parametrage des idx des widget text de Domoticz ##########################

periph_idx= {        'Plante_Lumiere_Instruction' : 33,
                     'Plante_Lumiere_Status' : 34,
                     'Plante_Lumiere_Valeur' : 44,
                     'Plante_Air_Instruction' : 36,
                     'Plante_Air_Status' : 37,
                     'Plante_Air_Valeur' : 45,
                     'Plante_Humidite_Instruction' : 39,
                     'Plante_Humidite_Status' : 40,
                     'Plante_Humidite_Valeur' : 46,
                     'Plante_Engrais_Instruction' : 42,
                     'Plante_Engrais_Status' : 43,
                     'Plante_Engrais_Valeur' : 47,
                  }
##################################################################################

 Mode debug

Le script python contient

### Mode debug ##################################################################
# si debug = autre chose que 0 on affiche les données recues
debug=1
##################################################################################

Si debug ne vaut pas zéro , plein de lignes sont affichées pour montrer les données reçues, envoyées vers Domoticz.

Pour tester passez donc debug à 1 , repassez le à 0 ensuite.

Lancement du script

Puisque ce script gère mon géranium, enregistrons le sous le nom de geranium.py

un chmod +x geranium.py

puis un ./geranium.py

parrot

Voila, on récupère bien nos conseils horticoles et les valeurs numériques associées.

N’oubliez pas un petit crontab -e pour appeler le script régulièrement.

J’espère que vous trouverez votre bonheur grâce à ce script.

Toutes les améliorations, corrections, optimisations m’intéressent et j’essaierai de prendre en compte vos remarques pour faire évoluer les outils.

Et si IRL le jardinage c’est pas votre truc, il y à http://silence-ca-pousse.france5.fr/

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz, materiel, python, scripts.

13 Comments

  1. Bonjour Patrice,
    J’ai essayé de faire la conf et lorsque j’execute le py, j’ai comme retour:

    File « ./Areca.py », line 168, in
    maj_widget_texte(domoticz_idx,inst_key)
    File « ./Areca.py », line 92, in maj_widget_texte
    r=requests.get(requete,auth=HTTPBasicAuth(user,password))
    File « /usr/local/lib/python2.7/dist-packages/requests-2.4.3-py2.7.egg/requests/api.py », line 60, in
    return request(‘get’, url, **kwargs)
    File « /usr/local/lib/python2.7/dist-packages/requests-2.4.3-py2.7.egg/requests/api.py », line 49, in
    return session.request(method=method, url=url, **kwargs)
    File « /usr/local/lib/python2.7/dist-packages/requests-2.4.3-py2.7.egg/requests/sessions.py », line 45
    resp = self.send(prep, **send_kwargs)
    File « /usr/local/lib/python2.7/dist-packages/requests-2.4.3-py2.7.egg/requests/sessions.py », line 56
    r = adapter.send(request, **kwargs)
    File « /usr/local/lib/python2.7/dist-packages/requests-2.4.3-py2.7.egg/requests/adapters.py », line 40
    raise ConnectionError(err, request=request)
    requests.exceptions.ConnectionError: (‘Connection aborted.’, error(110, ‘Connection timed out’))

    J’ai du mal à voir d’où vient le souci sachant que j’ai vérifié les ID/PWD :/ et que ma plante est bien trouvée.
    Merci pour ton aide.

  2. Bonjour
    les 2 lignes

    File “./Areca.py”, line 92, in maj_widget_texte
    r=requests.get(requete,auth=HTTPBasicAuth(user,password))

    npus disent qu’il s’agit d’un problme d’identification dans TON Domoticz, tu as mis des user/password Domoticz pas bon, il n(y a pas de user/pass dans Domoticz et tu en a mis un ….

    il s’agit de ces lignes dans le script

    les parametres de Domoticz
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    domoticz_user=’patrice’
    domoticz_password=’123456′

    jettes y un oeil et dis moi ce qu’il en est

  3. Hello, c’est good, effectivement j’avais un souci dans mon fichier config.
    Tks

  4. Bonjour, étant novice dans les langages de programmation et la domotique, je me demandais comment adapter votre tutoriel pour Domoticz version Windows. Quelqu’un pourrait-il m’éclairer ?

  5. Bonjour,

    Très bon tutoriel mais il serait encore plus intéressant d’obtenir les données en temps réel en les récupérant via le bluetooth du PowerFlower, si quelqu’un sait comment faire ça je suis preneur !

     

     

     

  6. Bonsoir
    Cela n’est pas prévu, sinon a part faire un peu de hacking des échanges entre PowerFlower et périphérique Bluetooth il n’y a pas de solution.

  7. Je pense avoir tout configuré comme le tuto mais j’ai ces erreurs

    File « ./caoutchouc.py », line 104, in
    ‘client_secret’: client_secret,
    File « /usr/lib/python2.7/dist-packages/requests/api.py », line 60, in get
    return request(‘get’, url, **kwargs)
    File « /usr/lib/python2.7/dist-packages/requests/api.py », line 49, in request
    return session.request(method=method, url=url, **kwargs)
    File « /usr/lib/python2.7/dist-packages/requests/sessions.py », line 457, in request
    resp = self.send(prep, **send_kwargs)
    File « /usr/lib/python2.7/dist-packages/requests/sessions.py », line 606, in send
    r.content
    File « /usr/lib/python2.7/dist-packages/requests/models.py », line 724, in content
    self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or bytes()
    File « /usr/lib/python2.7/dist-packages/requests/models.py », line 653, in generate
    for chunk in self.raw.stream(chunk_size, decode_content=True):
    File « /usr/lib/python2.7/dist-packages/urllib3/response.py », line 256, in stream
    data = self.read(amt=amt, decode_content=decode_content)
    File « /usr/lib/python2.7/dist-packages/urllib3/response.py », line 186, in read
    data = self._fp.read(amt)
    File « /usr/lib/python2.7/httplib.py », line 573, in read
    s = self.fp.read(amt)
    File « /usr/lib/python2.7/socket.py », line 380, in read
    data = self._sock.recv(left)
    File « /usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py », line 188, in recv
    data = self.connection.recv(*args, **kwargs)
    OpenSSL.SSL.ZeroReturnError

    Cela pourrait venir de où ?
    Merci

  8. Bonsoir
    Il ‘agit d’un truc avec open ssl donc un pb d’identification

    Mauvaise identification chez parrot ?, mauvaise recopie ds identifiantss/password parrot ?

    A moins que qq chose ai changé chez parrot depuis le temps , j’avais fait le script pour quelqu’un et je ne sais spas si cela continue a fonctionner

    Est ce quelqu’un sait ?

  9. Bonjour Patrice,

    Merci et bravo pour le tuto : sans compétence très poussées en informatique, j’ai réussi à récupérer les données du site https://myflowerpower.parrot.com !

    Question : pourquoi avoir utiliser le capteur virtuel « compteur », qui est un compteur électrique ? N’existe-t-il pas un capteur virtuel plus adapté ? (avec les %age d’humidité).

    Si non, est-il possible de modifier les unités sur le site ?

    merci !

    Jéré

  10. Bonjour
    C’est dans le but de pouvoir envoyer les notifications liées à ce widget, ce que ne possedent pas les %humidité

  11. Ha ok, merci Patrice. Est-il possible de déclencher des actions en fonction de l’évolution des taux d’humidité ? (du genre ouvrir un switch pour arroser les plantes)

Comments are closed.