Aujourd’hui, la quasi-totalité des salles de l’IUT de Blagnac sont équipées de capteurs Milesight AM107-868M. Ces capteurs fournissent des données précieuses sur plusieurs paramètres environnementaux : température, humidité, luminosité, taux de CO2, présence de particules fines dans l’air, pression atmosphérique, et détection de présence humaine dans la salle. Ils sont connectés à un réseau LoRaWAN, qui transmet ensuite les données à un broker MQTT. Cependant, ces informations ne sont actuellement pas exploitées à leur plein potentiel et demeurent difficilement accessibles.
Le client, M. Boulle, nous a donc missionné pour développer une application permettant de visualiser les données des capteurs, de les stocker, et de les exploiter. L’application devra être capable de fournir des graphiques et des statistiques sur les données.
Des fonctionnalitées supplémentaires sont envisagées par l’équipe, comme par exemple la possibilté d’avoir une carte interactive des salles, des prédictions sur les données…
-
Thomas Silvestre - Développeur
-
Émilien Fieu - SCRUM Master / Développeur
-
Enzo Fournet - Product Owner / Développeur
-
Raphaël Bar - Développeur / Illustrateur
-
(Melissa Dequesne) - Pas là (╥﹏╥)
-
Rémi Boulle - Client
-
Esther Pendaries - Enseignante référente
-
Timescaledb
TimeScaleDB est un système de gestion de base de données (SGBD) particulièrement performant pour la gestion et l’analyse de séries temporelles, ce qui s’avère très utile dans notre contexte. Cette capacité nous permet de suivre avec précision et efficacité les données issues de nos capteurs. De plus, nous avons déjà une expérience avec TimeScaleDB, l’ayant utilisé lors des travaux pratiques d’IoT à l’IUT de Blagnac, comme décrit ici : TPs d’IOT. Ce SGBD est donc idéal pour notre projet, et nous permettra de stocker et d’analyser efficacement les données de nos capteurs.
-
Django
Django est un framework Python idéal pour la construction d’APIs, grâce à sa capacité à accélérer le développement tout en assurant une haute qualité et une sécurité robuste. Son architecture « batteries incluses » propose une multitude d’outils intégrés et privilégie une approche DRY (Don’t Repeat Yourself) pour minimiser le code répétitif. De plus, Django facilite les interactions avec la base de données grâce à son ORM (Object-Relational Mapping), rendant les tâches complexes plus gérables et plus efficaces. En outre, Django est hautement personnalisable et extensible, ce qui le rend approprié pour des projets de toute envergure. Sa communauté active contribue également à l’utilisation d’outils innovants et performants, tels que le DeepSerializer de Horou, qui permet de créer facilement et rapidement des objets imbriqués. Enfin, le fait qu’Enzo utilise déjà ce framework représente un avantage significatif pour notre efficacité.
-
VueJS
Vue.js est un framework JavaScript progressif conçu pour créer des interfaces utilisateur interactives et dynamiques. Il se distingue particulièrement dans le développement d’applications web monopages (SPA) grâce à sa simplicité et sa flexibilité. Vue.js est reconnu pour sa performance, offrant des applications rapides et réactives. Il bénéficie également d’une documentation exhaustive et d’une communauté active, ce qui en fait un choix idéal pour notre projet afin de développer une interface utilisateur intuitive et efficace. L’intégration de Chart.js grace à vue-chartjs apporte un avantage significatif, permettant l’ajout de graphiques interactifs et esthétiques à notre application Vue.js. Chart.js est une bibliothèque JavaScript reconnue pour la création de graphiques, proposant une diversité de types de graphiques tels que des diagrammes en barres, en lignes, à secteurs, et plus encore. Ces graphiques sont conçus pour être réactifs et s’adapter aux différentes tailles d’écran, un atout indispensable pour les applications web modernes.
-
Docker
Docker, utilisé conjointement avec Dockerfile et Docker Compose, est un outil essentiel pour le déploiement de conteneurs. Il facilite le déploiement d’applications dans des conteneurs, qui sont des environnements isolés et indépendants. Cette méthode permet de déployer des applications de manière simple, rapide et efficace, tout en assurant leur accessibilité. L’un des principaux atouts de Docker est sa capacité à déployer des applications sur divers systèmes d’exploitation, incluant Windows, Linux et MacOS. Cette polyvalence est particulièrement bénéfique pour notre projet, qui nécessite une compatibilité multiplateforme. De plus, Docker assure un déploiement sécurisé des applications, un aspect crucial pour la fiabilité de notre projet. L’expérience préalable d’Enzo avec Docker représente un avantage notable, augmentant ainsi notre efficacité dans l’utilisation de cet outil. En somme, Docker apparaît comme une solution idéale pour répondre aux besoins spécifiques de notre projet. En outre, l’avantage supplémentaire réside dans le fait qu’Emilien a déjà une certaine expérience avec Vue.js, ce qui facilite grandement l’intégration et le développement rapide de notre projet. Sa familiarité préalable avec le framework assure une courbe d’apprentissage plus douce pour l’équipe et contribue à une mise en œuvre plus efficace de l’application.
L’architecture que nous avons conçue est un modèle de déploiement moderne qui tire parti de la puissance et de la flexibilité des conteneurs Docker, avec Dockerfile et Docker Compose, pour orchestrer notre application complète. Notre infrastructure se décompose en 3 composants principaux, tous gérés par Docker Compose, qui permettent une mise en œuvre cohérente et une intégration transparente entre les différents services. L’architecture s’appuie aussi sur des variables d’environnement partagées via un fichier .env pour garantir la synchronisation entre les services ainsi que des volumes pour le dévellopement ou pour garantire la peristence des données.
Au cœur de notre système, nous avons un conteneur dédié à TimescaleDB, notre base de données spécialisée dans le traitement des séries temporelles. Isolée au sein de notre réseau, cette base de données est la fondation sur laquelle reposent la collecte et l’analyse de nos données de capteurs.
Le conteneur Django représente le back-end de notre application. Grâce à un Dockerfile spécifiquement conçu, ce conteneur est chargé de construire l’environnement nécessaire pour exécuter notre API.
Pour l’interface utilisateur, nous avons un conteneur Nginx/VueJS. Nginx agit en tant que serveur web et proxy inverse, dirigeant les requêtes utilisateur vers notre application front-end développée avec VueJS. Le Dockerfile associé à ce conteneur se charge de compiler et de servir notre interface utilisateur, assurant une expérience utilisateur fluide et réactive.
Le conteneur Adminer fournit une interface web intuitive pour la gestion de notre base de données, spécialement pendant les phases de développement et de débogage. Cet outil facilite considérablement la tâche de nos développeurs qui peuvent ainsi gérer et maintenir la base de données avec efficacité et simplicité.
Tous ces éléments interagissent au sein d’un réseau privé Docker, sécurisé et isolé, assurant une communication fluide et protégée entre les conteneurs. Le fichier docker-compose.yml est la clé de voûte de notre architecture : il définit la configuration de chaque service, orchestre la construction des images Docker et gère le démarrage des conteneurs ainsi que la mise en oeuvre des volumes persistants. Cela simplifie considérablement le processus de déploiement, qu’il s’agisse de développement, de tests ou de mise en production, tout en permettant une évolutivité et une maintenance aisées.
En résumé, cette architecture n’est pas seulement une infrastructure technique ; elle reflète notre engagement envers des pratiques de développement modernes, offrant à notre équipe la possibilité de travailler de manière efficace et harmonieuse, et à nos utilisateurs l’assurance d’une application performante et fiable.
La documentation du projet se trouve dans l’onglet wiki de GitHub https://github.com/Tructruc/SAE-ALT-S3-Dev-23-24-Occupation-salles-3A-Groupe-2/wiki
Note
|
Les notes ci-dessous sont mises à jour directement par les enseignants responsables de la compétence 5. |
Sprint 1 :Release ok pour un sprint 1. DOC : pensez à préciser le projet, version, date , équipe. Doc user non initialisée. Il me manque le backlog produit global contenant les US, priorité, complexité (issues du projet). Esprit Scrum on compris : US/ISSUES eclatée en tâches, je n’ai que les tâches sur votre dépôt. A chaque sprint on traite des US et donc les tâches liées. Bilan OK. readme ok bien qu’un peu confus.
Sprint 2 : Release ok. Doc tech : Ok beaucoup d’éléments techniques mais plan à revoir. Par exemple les UC arrivent assez tard alors qu’ils sont censés orienter les fonctionnalités puis les aspects techniques nécéssaires à la réalisation des fonctionnalités. Le contenu est TB, je repenserai le plan pour plus de clareté car le back et le front ne sont pas clairement identifiés. La doc USER est à développer : attention les destinataires des doc tech et utilisateurs sont différents ! Ne renvoyez pas vos utilisateurs vers la doc technique. Rappelez dans la doc user le contexte, l’intérêt de l’appli , les grandes fonctionnalités (il y a t’il un accès admin ou non ?). A retravailler. Tests ok pour le back end, reste plus que le front. US TB . Il manque le backlog sprint 3 qui devrait être prêt !