Une solution d’arrosage automatisée et intelligente avec le Machine Learning AWS
Comment l’IOT et le Machine Learning peuvent-ils répondre à des cas d’usage du quotidien et nous faciliter la vie ? Afin d’expérimenter les services AWS dédiés à ces sujets, nous avons décidé de développer une solution d’arrosage automatisée et intelligente. Pour que la solution soit autonome, il fallait qu’elle puisse interagir avec différents éléments comme par exemple le taux d’hygrométrie de la plante, les données météo ou encore la commande d’arrosage. Cette solution qui fait appel aux services AWS Greengrass, IoT Core, API Gateway, Cloudwatch, Sagemaker et Quicksight, a été présentée au Summit AWS 2019 dans le cadre de l’Innovation Corner.
Présentation détaillée des modules
Greengrass/Slave System
Le premier élément est capable de remonter des données d’hygrométrie présentes au niveau de la plante. Pour cela Amazon propose un service du nom de Greengrass, qui est un module embarqué au niveau de la carte électronique (ici un raspberry pi 3) permettant d’étendre les capacités locales pour exploiter les ressources d’AWS aux appareils situés en périphéries. Le raspberry est relié à un capteur d’hygrométrie (lui même situé au niveau de la plante) ainsi qu’une commande d’arrosage.
Iot Core représente le relais de message Iot dans AWS.
Les données d’hygrométrie sont remontées via un topic MQTT référencé dans Iot Core.
User Dashboard
Une interface utilisateur, hébergée sur S3 permet de voir le taux d’hygrométrie actuel, l’historique des commandes d’arrosage, et de déclencher manuellement l’arrosage.
Les actions déclenchées par l’utilisateur appellent une lambda permettant l’exécution de la commande d’arrosage via une Api Gateway.
L’ensemble des métriques est également référencé dans CloudWatch.
Cependant les actions manuelles ne sont présentes qu’à but de démonstration.
Automatic monitoring
Pour permettre le déclenchement automatique, l’ensemble des données d’hygrométrie sont remontées dans CloudWatch. Une alarme ayant pour référence le seuil minimal d’hygrométrie a été créée, servant de déclencheur à l’exécution d’une lambda permettant l’arrosage de la plante.
Amélioration de l’existant : Monitoring & Prévision
Le premier prototype a été développé en 2018. En 2019, deux composantes ont été rajoutées: une sur le machine learning et une sur les prévisions météo.
Les données météo qui ont été ajoutées, comme la pluviométrie, influencent le taux d’hygrométrie de la plante. Une lambda collecte quotidiennement les prévisions météo sur l’API puis les publie sur le même Topic MQTT que celui utilisé par le raspberry.
Afin d’améliorer le monitoring des données Iot Analytics est utilisé. Ce service est principalement composé de trois éléments:
- DataStore (servant de stockage pour les données)
- Channel (permettant de récupérer les données via le topic MQTT)
- Pipeline (faisant la connexion entre les deux précédents éléments).
Il a servi d’intermédiaire pour utiliser QuickSight, l’outil de dashboard d’AWS prenant en entrée les données d’Iot Analytics, mais également Sagemaker qui est le service de Machine Learning d’AWS.
Afin que le système soit capable d’estimer la prochaine exécution d’arrosage, 40 jours de data ont servi de donnée d’entrée pour l’apprentissage du modèle. L’ensemble des données remontées sont retranscrites en temps réel via QuickSight.
Les données collectées sont présentées via le service IotAnalytics sous forme de 2 dashboards:
- Le premier représente les événements passés (hygrométrie/pluviométrie/commande d’arrosage). Ces données serviront de base d’entraînement pour notre modèle (sagemaker).
- Le second dashboard représente les prévision météo et les commandes prédites par notre modèle.