Introduction


Dans ce premier épisode, je vais essayer de décrire au mieux le périmètre de ce projet/outil/boiboite. La conception n'étant pas totalement arrêtée, il y aura peut être des zones floues.

L'idée initiale est de proposer un outil web de suivi des cultures. Il s'agit d'une forme d'inventaire des plantes dans différents espaces de culture ainsi qu'un suivi par plante des soins, arrosages et fertilisations. Un pense-bête tout simple pour résumer mais avec les avantages du web.

Puis vient l'idée de remonter des indicateurs climatiques dans l'interface, il faut donc des sondes et un équipement pour les gérer. A partir de là, l'outil se devait d'être sur un ordinateur dédié, au plus proche de la culture. On pourrait partir sur une base type "PC de recup" mais c'est clairement sur-dimensionné en particulier la conso électrique et l'encombrement. Justement, c'est la mode des Raspberry PI, des machines ARM à peine plus grosse qu'une carte bleue et j'avais bien envi de voir ça de plus prêt :)

Mais un PC n'est pas idéal pour y brancher de l'électronique, alors qu'il existe des cartes dédiées au pilotage de composants électronique comme l'Arduino par exemple. Il est possible de lui ajouter un port Ethernet et le stockage nécessaire pour faire fonctionner un micro serveur web. Mais les performances de la carte ne vont pas permettre d'héberger les démons httpd et mysqld. De plus, en terme de cout, l'interface ethernet est aussi cher qu'un Raspberry Pi :-)

Là, je me dis : yaka relier les deux en USB ! Une recherche google plus tard, je suis pas le premier à y penser, loin de là :D Le combo des deux offre énormément de possibilité et open hardware s'il vous plait. Avec cette base et en ajoutant quelques composants, un httpd, deux trois scripts, on aura ce qu'il nous faut pour commencer.

Donc voila le point de départ du projet :
  • Une interface web écrite en PHP/HTML/CSS/JS tournant sur une solution LAMP standard.
  • Un Raspberry Pi pour héberger l'outil web de suivi des cultures et donc les accès clients.
  • Un Arduino pour piloter les composants électroniques et remonter les infos vers l'interface web.
  • Quelques capteurs de température/humidité/luminosité, des relais, variateurs.

Pti schéma de principe :)
schema_global_projet-diy.png

Fonctionnalités de l'outil


On va distinguer trois grandes parties pour les fonctionnalités :
  •  Le suivi des cultures.
  •  Supervision du climat et du suivi.
  •  Gestion du climat.

Le suivi des cultures consiste en un journal répertoriant les actions du jardinier. C'est entre un pense bête et une base de connaissance. Le but est de fournir le max d'infos utiles avec le moins de saisies possible pour l'utilisateur. On doit pouvoir organiser ces plantes par espaces de cultures, par variétés, par groupes. Pour sur chacun de ces ensembles, on pourra faire des actions comme des arrosages, des soins, etc. L'outil nous permettra de voir rapidement quelles plantes ont besoin du jardinier, de savoir l'age des plantes, d'avoir un historique après la récolte de la plante qui nous servira de base de connaissances pour les prochaines.

La supervision doit alerter le jardinier quand l'état d'une plante ou d'un espace est mauvais, voir critique. Elle se basera soit sur des valeurs moyennes calculées à partir de la base de connaissance (intervalle entre deux arrosages par exemple) ou sur des données climatiques remontées par les sondes. Il sera possible de déterminer des seuils d'alerte, warning et critical à la manière d'une supervision informatique classique. Il y aura aussi de la métrologie, c'est à dire l'historisation des valeurs collectées et leur rendu sous forme de graphiques par exemple.

La gestion du climat va permettre au jardinier un contrôle automatique de ses espaces de culture. Les plantes ont besoin d'un climat stable, en terme de température, d'humidité relative, mais aussi de luminosité et de concentration en CO2. Comme l'outil surveille ces valeurs, il pourra interagir avec la ventilation, un chauffage, un humidificateur pour ajuster au mieux le climat suivant plusieurs consignes. Le jardinier pourra même ajuster ces consignes à distance, à travers l'interface web.

La philosophie


Cela ce doit d'être un projet entièrement libre et polyvalent. Enfin pas entièrement libre, je ne veux pas de récupération commerciale. Polyvalent car chaque cultivateur a son savoir faire, son environnement.

Au niveau matériel, tout est libre sauf restriction sur le nom Arduino. Ce dernier est très flexible, les entrées/sorties sont programmables par le code chargé dans sa mémoire. On peut donc brancher capteurs ou relais suivant la configuration. Pour limiter les couts, le DIY sera de la partie.

Pour les scripts, ils seront libres, je ne sais pas encore quelle licence exactement. J'essaye de faire l'interface la plus polyvalente possible et j'aimerai bien ajouter un système de plugins. Pour la conf de l'Arduino, j'espère réussir à tout faire rentrer dans l'interface web, ça serait vraiment un gros plus.

Je "capitalise" du code perso qui a quelques années en plus, pas super pour du dev en mode collaboratif. Comme je commence à avoir une idée précise de la cible, je suis peut être moins ouvert aux propositions du coup :) Dur de savoir si cet outil peut être utile à du monde, si c'est le cas, je serais ok pour refondre l'outil. Pour le moment, je continue dans cette direction, ça à l'air pas mal :)

Les prochains épisodes


A l'heure (enfin le mois ;) où j'écris ce billet, j'ai bien avancé sur l'interface web. Elle est fonctionnelle pour la partie suivi de culture. Donc je pense faire le second article sur la partie web. Je suis sur l'installation de la partie LAMP sur le Raspberry, je le verrai bien en troisième épisode. La connexion entre le Raspberry et l'Arduino méritera un épisode car il y a plusieurs méthodes, dont l'I2C et ça promet intéressant. Puis, je l'espère, pleins d'autres : ajout des capteurs, gestion de la ventilation, chauffage, irrigation, webcam, etc).

Tour d'horizon


En me documentant, je suis tombé sur beaucoup de projets similaires, plus ou moins complet mais tous fonctionnels. Une majorité est basée sur l'Arduino et couvre la gestion climatique principalement. Il y a aussi des logiciels libres mais soit ils demandent pas mal d'électronique ou sont peu avancé (openPlaco, openGH). La startup Growatch fabrique une solution très proche du projet, vraiment intéressante mais pas assez geek à mon avis :)

Dans un jardin botanique, j'ai pu voir un système appelé HortiMax. Ca ressemble, de loin, mais quand même au projet. En l'occurrence, le public est clairement professionnel, pour des serres de très grande superficie. Ils ont un logiciel, appelé Synopta, qui permet de surveiller et de configurer quasiment tous les paramètres de culture, c'est le cran du dessus clairement :D
  • OpenGreenHouse : Arduino + appli en C++ gestion climatique et historisation.
  • OpenPlacOS : WebUI en ajax + ?
  • GardenBot : Arduino + pas mal d'électronique, le projet semble stoppé.

Le prototype


Pour le fun, voila mon début de prototype dans un format qui rentre dans un boitier étanche. L'alim est un truc de chargeur de téléphone, je l'ai mis sur la planche mais jamais j'oserai mettre du 220V dedans :D
hortibuddy_v0.jpg

La suite très vite, enfin tôt ou tard !! xD