GreenMine web application login

Présentation

GreenMine est une solution de gestion de cultures et de jardinage basée sur un serveur web Apache et un réseau de contrôleurs Arduino et nano-ordinateurs RaspberryPi.

La solution est prévue pour être auto-hébergée : pas de noeud central, l'utilisateur reste propriétaire de ses données.

Ce projet est la réponse à un besoin personnel dans la gestion de mon jardin. Le besoin était le suivant : disposer d'un base de données de variétés et plantes et d'un inventaire de mes cultures afin de suivre leurs évolutions, de pouvoir planifier les actions d'entretient, récolter les informations de climats aux travers de sondes et de disposer d'un réseau d'arrosage automatisé.

La création d'une base de données des cultures apporte une dimension pédagogique dans le jardinage en disposant des fiches de connaissances sur les différentes variétés de plantes et leurs modes de cultures. De pouvoir sélectionner les plantes par critères d'exposition dans le but d'aménager son jardin.

L'inventaires des cultures et de leurs lieux permet de dresser une cartographie de son jardin et d'en suivre les aménagements.

Dossier de présentation

Fonctionnalités

Les fonctionnalités sont les suivantes :

  • Support du multi-utilisateurs.
  • Inventorier les différentes variétés de plantes en culture et suivre leur évolution.
  • Planifier les travaux de jardinage.
  • Déclencher et planifier l'arrosage automatique [iOS - watchOS - Raccourci Siri]
  • Gestion des activités : comptabiliser les actions de jardinage [arrosage, engraissage, traitement, etc...].
  • Gestion des ressources : comptabiliser l'emploi de ressources nécessaires [eau, engrais, substrat, etc...].
  • Saisir les mesures des indicateurs de santé des plantes [Ph, EC et TDS drain].
  • Enregistrer les conditions climatiques : température, humidité, pluie...
  • Gestion de zone de cultures : affecter les plantations à de zones et sous-zone de culture.
  • Informer au travers de notifications des événements suivants : pluie en cours, absence d'arrosage, action à effectuer.
  • Prendre des photos à intervalles régulier via une caméra d'observation sur une zone culture donnée.
  • Obtenir les informations d'une plante via un tag NFC [iOS].
  • Prendre des photos de la plante depuis un appareil iOS.
  • Récupérer des informations sur la météo à venir.
  • Récupérer des informations sur l'activité lunaire.
  • Récupérer / publier des variétés de plantes depuis le noeud central.
  • Se connecter à d'autres instances, créer un réseau social privé, et partager les plantes d'un autre jardin.
  • Partager des articles vers le noeud central [GreenMine Central].
  • Géolocalisation des instances et représentation d'une cartographie des communautés.

Description technique

La solution met en oeuvre un serveur web et une bases de données communiquant avec des Arduino et RaspberryPi pour les collecteurs et actionneurs. Le frontal web comprend une partie publique faisait office de journal de bord et un espace d'administration pour les utilisateurs. Ce dernier permet la saisie de l'ensemble des informations en base de données.

Une instance centrale [GreenMine Central] assure la centralisation des variétés de plantes, chaque instance peut ainsi nourrir sa base de données de variétés de plantes depuis la base centrale et contribuer à cette dernière.

Chaque instance de GreenMine peuvent s'appairer entre elles pour former des communautés.

Un client iOS / watchOS permet de disposer d'un interface d'administration pour les opérations courantes et suivre les principaux indicateurs.

Les instances et clients natifs communiquent entre eux via des API REST avec une authentification JWT. Les échanges d'informations entre les instances sont chiffrés [HTTPS].

Les technologies employées sont :

Hébergement :

  • Nano-ordinateur RaspberryPi 4 / Linux Raspbian
  • Backend web Apache 2 / PHP 7.2 / Symfony 3.4 / PostgreSQL 9.6

Application native :

  • iOS / watchOS [Swift 5]
  • Notifications push APNS
  • Tags NFC [MiFare Classic / NDEF]

Sondes et actionneurs :

  • Scripts Python pour le déclenchement des actions (électrovannes)
  • Tâches cron pour les récoltes des données des collecteurs.
  • Nano-ordinateur RaspberryPi 3 + carte PiFace Digital 2.
  • Nano-ordinateur RaspberryPi 1 + PiCam [chronophotographie]
  • Micro-contrôleurs Arduino Uno R3 + Shield Ethernet [sondes climat]
  • Micro-contrôleur Arduino Uno R3 + Shield NFC [station tag NFC]
  • Sonde température / humidité air : DHT22
  • Sonde pluviomètre : LEXCA001
  • Électrovannes Rainbird 100 DV
  • Réseau d'arrosage Gardena
GreenMine schéma de principe