Traçabilité du cahier des charges
Cette page relie les exigences fonctionnelles aux composants de la solution. Elle formalise la couverture actuelle, les choix techniques retenus et les points à finaliser avant une exploitation complète.
Sources contractuelles analysées
La traçabilité ci-dessous s’appuie sur les documents de cadrage fournis au début du projet :
Fiche présentation Station de recharge intelligente.pdf;Station de recharge intelligente_BAYOU_Said.pdf;Station de recharge intelligente_ROTA Celian.pdf;Station de recharge intelligente_CANDIDAT03.pdf;UML_Diagrammes_Cas_Utilisation.pdf.
Ces documents fixent une station de recharge intelligente pour vélos électriques, automatisée, connectée et sécurisée. Le système cible associe un site web de réservation, une borne tactile Raspberry Pi, des emplacements pilotés par ESP32 et une supervision locale.
Le diagramme de cas d’utilisation est utilisé comme support de validation des parcours principaux. Il n’est pas repris en détail ici afin de garder cette page centrée sur la conformité fonctionnelle.
Contexte fonctionnel
La solution doit permettre :
la réservation en ligne d’un emplacement de recharge ;
l’identification sécurisée par QR code, badge RFID ou code SMS temporaire ;
la gestion en temps réel des ports de charge et des disponibilités ;
le suivi énergétique et la remontée d’alertes ;
l’archivage des usages et statistiques ;
la supervision distante ;
la sécurisation physique par serrure électromagnétique pilotée.
Répartition initiale par partie
Partie |
Responsabilités demandées |
Critères de réussite attendus |
|---|---|---|
Partie 1 : web, base de données et supervision |
Site web responsive, gestion des utilisateurs, réservations, base de données sécurisée, statistiques, historique et supervision locale. |
Base cohérente, accès aux données fonctionnel, historique visible, destinataires d’alertes présents et sécurité web/base de données assurée. |
Partie 2 : Raspberry et interface de borne |
IHM tactile locale, identification sur site, vérification par code SMS, QR code et badge RFID, puis validation de l’ordre d’ouverture. |
IHM opérationnelle, communication avec la base, concordance code/réservation et QR/réservation, ordre serrure validé après contrôle. |
Partie 3 : ESP32 et emplacements |
Pilotage serrure et port de charge, mesure température/courant/tension, détection intrusion, câble branché et état du boîtier. |
Boîtier opérationnel, mesures remontées au superviseur et alarmes correctement transmises. |
Couverture par partie
Exigence |
Couverture actuelle |
Éléments à finaliser |
|---|---|---|
Site web responsive |
Frontend Vite multi-pages, pages inscription, connexion, réservation, dashboard utilisateur et vues administrateur. |
Améliorer progressivement l’ergonomie et tester les parcours sur mobile. |
Gestion utilisateurs et RGPD |
Modèle utilisateur Django, profil, JWT, refresh token |
Compléter la suppression définitive/anonymisation selon le scénario RGPD retenu. |
Réservation en ligne |
API de réservation, sélection station/créneau, attribution automatique d’un emplacement disponible. |
Ajouter rapports statistiques plus complets. |
QR/code SMS/RFID |
QR et codes SMS temporaires liés à une réservation, badge RFID persistant lié au compte, association via code court et borne. |
Brancher les vrais lecteurs QR/RFID sur le Raspberry. |
Interface locale Raspberry |
Kiosque web local, parcours QR/code SMS/RFID, écran tactile cible
|
Test physique sur l’écran 7 pouces, intégration lecteur réel et cache local des autorisations en mode dégradé. |
Validation station/emplacement |
Le terminal vérifie réservation active, moyen d’accès et station attendue. |
Ajouter retours utilisateur détaillés pour mauvais emplacement. |
Serrure et charge |
Commande |
Remplacer les sorties LED/simulation par relais et câblage physique. |
Télémétrie |
ESP32 publie température, humidité, courant, tension, énergie, porte, câble et état de l’emplacement. Le test matériel actuel couvre uniquement température/humidité DHT22 et identité ESP32 (firmware, adresse IP, adresse MAC). |
Brancher INA219, porte, câble, serrure et relais réels, puis décider si un journal local ESP32 est nécessaire en complément du cache Raspberry. |
Alertes |
Détection intrusion, câble retiré, surconsommation et surchauffe.
Stockage dans |
Ajouter éventuellement un canal SMS technicien réel si le projet dépasse le périmètre académique gratuit. |
Supervision |
Grafana provisionné, datasource TimescaleDB/PostgreSQL, dashboard technique initial, interface admin de supervision et simulateur de télémétrie local pour valider le flux sans ESP32 physique. |
Ajouter des vues métier plus détaillées pour techniciens. |
Archivage |
Sessions de charge, télémétrie de session, données capteurs et alertes stockées en base. |
Ajouter politique de conservation et exports CSV métier. |
Cas d’utilisation principaux
Réserver et démarrer une charge
Utilisateur
-> réserve sur le site
-> reçoit ou consulte QR/code SMS/badge
-> s'identifie au kiosque Raspberry
-> API valide réservation + moyen d'accès + station
-> Raspberry publie START vers l'emplacement
-> ESP32 ouvre/verrouille le boîtier et démarre la charge
-> télémétrie envoyée au backend puis à Grafana
Supervision et alertes
ESP32
-> publie température/humidité et identité du contrôleur
-> le bridge d'ingestion traite le message
-> Celery stocke les capteurs et crée/met à jour/résout les alertes
-> Grafana affiche les mesures
-> interface métier expose les alertes administrateur/technicien
Choix et écarts assumés
Sujet |
Demande initiale |
Choix actuel |
|---|---|---|
QR code |
QR code envoyé par mail et lu par un lecteur USB à la borne. |
QR de réservation généré dès la réservation, visible dans l’espace utilisateur et envoyé par email via Mailpit en environnement académique. Ajout d’un QR de session mobile affiché par la borne pour permettre à la PWA de confirmer une réservation sans clavier physique. |
Code alphanumérique |
Code envoyé par SMS et saisi au clavier. |
Code SMS temporaire généré côté backend, stocké sans clair et saisi sur
clavier tactile. La politique retient 8 caractères |
RFID |
Badge RFID avec lecteur MFRC522 ou équivalent. |
Lecteur ACR122U retenu. Le badge identifie l’utilisateur, puis le backend vérifie la réservation active et l’emplacement attendu. |
Topologie matérielle |
Le contrat parle surtout de borne et d’emplacements. |
Le modèle distingue |
Supervision |
Interface web de supervision locale. |
Deux niveaux : supervision métier dans l’application et supervision technique dans Grafana. |
Notifications |
Email/SMS au technicien en cas d’alerte. |
Politique d’alertes documentée ; Mailpit capture les emails QR et technicien, tandis que le mode SMS console/log permet une démonstration gratuite et open source. |
Contraintes projet
Budget limité : composants open source et matériel déjà disponible.
Modularité : séparation frontend, backend, Raspberry, ESP32, messagerie IoT et supervision.
Sécurité : mots de passe hashés, JWT, cookies
HttpOnly, journalisation des actions sensibles, source de vérité backend, préparation TLS/reverse proxy.Continuité de service : cache local limité côté Raspberry pour résister aux coupures temporaires sans déplacer l’autorité métier.
Qualité : tests backend/frontend, documentation Sphinx, CI GitHub Actions, CodeQL et rapports supply chain.
Matériel imposé : Raspberry Pi 4, écran 7 pouces
1024x600, ESP32, serrures électromagnétiques, capteurs DHT/Hall/contact/INA219.
État de maturité
La version logicielle couvre le parcours complet de réservation, validation d’accès, commande MQTT, télémétrie et supervision. Les éléments actuellement simulés sont clairement identifiés : charge, serrure, porte, câble, tension et courant, ainsi que certains lecteurs physiques. Le test matériel actuel couvre déjà la remontée DHT22 et l’identité ESP32 vers MQTT, backend et Grafana.