08 Architecture Schémas - GaetanCrabeels/SmartShade GitHub Wiki
L'application se compose de 5 pages différentes. Elles sont reliées par un bar de navigation inférieure avec les 5 boutons redirigeant vers la bonne page.
Home page

Shutter list

User Page

Parameters

Graphics

En plus de cela, si l'utilisateur n'est pas connecté, il est redirigé vers une page de connexion ou de création de compte.


Nous utilisons firebase comme base de données, une db NoSQL créée par Google. C'est une structure de données JSON. Elles sont organisées avec des nœuds qui chacun représente une collection de données. Pour avoir des relations entre nos différentes données nous utilisons des références d'autres données.
Voici l'architecture avec les 5 collections :
-
houses
- house_id
- house_name : string
- house_temperature : int
- shutter_temperature_delta : int
- ...
- house_id
-
profiles
- profile_id_1
- profile_selection : bool
- profile_name : string
- ...
- profile_id_1
-
rooms
- roomd_id_1
- room_name : string
- shutters_open : bool
- ...
- roomd_id_1
-
shutters
- shutter_id_1
- house_id : string
- room_id : string
- shutter_mov : bool
- shutter_name : string
- shutter_open : bool
- shutter_room_validation : bool
- ...
- shutter_id_1
-
users
- user_id
- email : string
- fullName : string
- houseId : string
- Password : string
- salt : string accountCreated : date
- ...
- user_id
Nous utilisons une API externe pour notre application, l'API d'Agromet qui nous permet de récupérer gratuitement les données météo de la station météorologique la plus proche des utilisateurs.
Nous faisons des requêtes ressemblant à cela : https://agromet.be/fr/agromet/api/v3/get_pameseb_hourly/tsa/18/2023-11-26/2023-11-26/
De plus, nous avons une API pour la communication entre notre application flutter et la base de données Firebase.
Nous réalisons des requêtes Get, Delete, Post et Put. Voici un exemple de requête dans l'application :
DocumentReference houseRef = await db.collection("houses").add({ 'house_name': 'My House', 'house_temperature': 20, 'shutter_temperature_delta_bool': false, 'shutter_temperature_delta': 2, });
Les requêtes sont aussi réalisées depuis l'arduino sous cette forme :
Firebase.Firestore.createDocument(&fbdo, FIREBASE_PROJECT_ID, "", documentPath.c_str(), content.raw())
Où le Path ressemble à ça : sensor_data/sensord_id_1/date_actuelle/heure_actuelle
L'application SmartShade fonctionne en orchestrant des échanges entre différents composants, notamment l'API Agromet pour les données météorologiques et Firestore pour la gestion des données utilisateur. Voici un aperçu du fonctionnement de ces échanges :
- Les capteurs d'humidité et de température installés dans la maison collectent des données environnementales.
- Ces données locales sont utilisées pour prendre des décisions automatisées, telles que le contrôle des volets en fonction des conditions climatiques internes.
- L'application SmartShade utilise l'API Agromet pour récupérer des données météorologiques externes.
- Des requêtes sont envoyées à l'API Agromet pour obtenir des informations telles que la température extérieure, les prévisions météorologiques, etc.
- Les données des capteurs locaux et celles de l'API Agromet sont intégrées pour obtenir une vision complète de l'environnement.
- Par exemple, la décision de fermer les volets peut dépendre de la température intérieure ainsi que des prévisions météorologiques.
- Les données collectées, y compris les préférences utilisateur, les scénarios d'automatisation, et les événements détectés, sont stockées dans Firestore, la base de données de Firebase.
- L'application communique régulièrement avec Firestore pour mettre à jour les informations et récupérer des paramètres personnalisés.
- En fonction des données intégrées, des scénarios prédéfinis et des préférences utilisateur, l'application prend des décisions automatisées sur le contrôle des volets.
- L'utilisateur peut également contrôler manuellement les volets à distance via l'application.
- Les retours utilisateur, comme les changements manuels, sont également enregistrés dans Firestore pour une amélioration continue.
- Les échanges de données avec Firestore sont sécurisés grâce aux mécanismes d'authentification de Firebase.
- Les informations sensibles, telles que les identifiants d'utilisateur et les données météorologiques, sont traitées de manière sécurisée.
En résumé, SmartShade tire parti des données locales, des informations météorologiques externes via l'API Agromet, et des capacités de stockage sécurisées de Firestore pour offrir une automatisation intelligente et une expérience utilisateur optimale.