# Smart Parking Systeme de gestion et de surveillance de parking automatise avec detection en temps reel par capteurs infrarouges, reservation en ligne et administration complete. Projet BTS CIEL IR — APON BARUA — Groupe scolaire La Salle Saint-Denis — 2025/2026 ## Fonctionnalites ### Authentification - Inscription et connexion securisees - Mots de passe haches avec BCrypt - Authentification par token JWT (expire apres 24h) - Deux roles : Client et Administrateur ### Carte du Parking - Affichage en temps reel de l'etat des places - 3 etats : Libre, Occupee, Reservee - Mise a jour automatique toutes les 3 secondes - Details de chaque place au clic ### Detection automatique - Capteurs infrarouges IR LM393 sur chaque place - ESP32 connecte en WiFi au Raspberry Pi - Communication MQTT vers le serveur - Changement d'etat instantane sur le site ### Systeme de Reservation - Selection de la place, date, heure et duree - Verification des conflits d'horaire - Saisie de la plaque d'immatriculation - Expiration automatique des reservations ### Panel Administrateur - Statistiques globales du parking - Gestion de l'etat de chaque place (1 a 20 places) - Liste des utilisateurs avec suppression - Gestion des reservations (terminer, annuler) - Historique complet des actions ## Tarifs | Duree | Prix | |-------|------| | 30 minutes | 2€ | | 1 heure | 3€ | | 2 heures | 5€ | | 4 heures | 8€ | | Journee (8h) | 15€ | ## Architecture technique ``` [Voiture] → [Capteur IR LM393] → [ESP32 WiFi] → [MQTT] → [Mosquitto] → [Node.js] → [MariaDB] → [API REST] → [Site web] ``` ### Materiel | Composant | Reference | Quantite | |-----------|-----------|----------| | Microcontroleur WiFi | ESP32 Freenove WROVER | 1 | | Capteur infrarouge | Module IR LM393 | 3 | | Serveur central | Raspberry Pi 4 | 1 | | Cables | Dupont F-F et F-M | Plusieurs | ### Configuration reseau | Interface | Adresse IP | Utilisation | |-----------|-----------|-------------| | Ethernet | 172.16.60.40 | Reseau ecole | | WiFi (hotspot) | 172.20.10.2 | Communication ESP32 | | Docker bridge | 172.18.0.1 | Reseau interne Docker | ### Ports | Service | Port | |---------|------| | Node.js (HTTP) | 3000 | | MariaDB | 3306 | | Mosquitto (MQTT) | 1883 | ## Technologies utilisees ### Hardware - ESP32 Freenove WROVER (WiFi + GPIO) - Capteurs IR LM393 (GPIO 15, 4, 12) - Raspberry Pi 4 (serveur central) ### Backend - Node.js + Express.js - MariaDB (base de donnees relationnelle) - Mosquitto (broker MQTT) - Docker + Docker Compose (conteneurisation) - JWT (authentification) - BCrypt (hachage mots de passe) ### Frontend - HTML5 / CSS3 / JavaScript (sans framework) - Design responsive (PC et mobile) ### Outils - Arduino IDE (programmation ESP32) - Gitea + GitHub (versioning) - Draw.io (schemas) ## Structure du projet ``` Parking/ ├── index.html ├── css/ │ ├── style.css │ ├── auth.css │ └── dashboard.css ├── js/ │ ├── auth.js │ ├── dashboard.js │ ├── map.js │ ├── reservation.js │ └── admin.js ├── pages/ │ └── dashboard.html ├── server/ │ ├── server.js │ ├── package.json │ ├── db/ │ │ └── database.js │ ├── middleware/ │ │ └── auth.js │ └── routes/ │ └── api.js ├── init.sql ├── Dockerfile ├── docker-compose.yml ├── mosquitto.conf └── README.md ``` ## API REST ### Authentification | Methode | Endpoint | Description | |---------|----------|-------------| | POST | /api/register | Creer un compte | | POST | /api/login | Se connecter | ### Utilisateurs | Methode | Endpoint | Description | |---------|----------|-------------| | GET | /api/users | Liste des utilisateurs (admin) | | PUT | /api/users/profile | Modifier mon profil | | DELETE | /api/users/:id | Supprimer un utilisateur (admin) | ### Places | Methode | Endpoint | Description | |---------|----------|-------------| | GET | /api/spots | Liste des places | | PUT | /api/spots/:id/status | Modifier le statut | | POST | /api/spots/init | Reinitialiser les places (admin) | ### Reservations | Methode | Endpoint | Description | |---------|----------|-------------| | GET | /api/reservations | Mes reservations | | GET | /api/reservations/all | Toutes les reservations (admin) | | POST | /api/reservations | Creer une reservation | | PUT | /api/reservations/:id/cancel | Annuler une reservation | | PUT | /api/reservations/:id/complete | Terminer une reservation (admin) | ### Statistiques | Methode | Endpoint | Description | |---------|----------|-------------| | GET | /api/stats | Statistiques du parking | | GET | /api/history | Historique (admin) | ## Base de donnees (6 tables) | Table | Description | |-------|-------------| | users | Comptes utilisateurs (id, name, email, password, role) | | spots | Places de parking (id, number, status, sensor_id) | | reservations | Reservations (user_id, spot_id, date, start_time, end_time, vehicle, price) | | history | Historique des actions (action, details, user_id, timestamp) | | stats | Statistiques periodiques (occupation, taux) | | mqtt_events | Messages MQTT recus (topic, message, received_at) | ## Installation et demarrage ### 1. Demarrer le hotspot WiFi sur le telephone ### 2. Sur le Raspberry Pi ```bash sudo systemctl start mosquitto sudo iptables -I INPUT -s 172.18.0.0/16 -p tcp --dport 1883 -j ACCEPT sudo iptables -I INPUT -s 172.17.0.0/16 -p tcp --dport 1883 -j ACCEPT cd /home/aponlucas/Parking docker compose up -d ``` ### 3. Televerser le code ESP32 Ouvrir Arduino IDE, selectionner ESP32 Wrover Module, televerser le code. ### 4. Acceder au site ``` http://172.20.10.2:3000 ``` ## Compte administrateur par defaut - Email : admin@smartparking.fr - Mot de passe : admin123 ## Securite - Mots de passe haches avec BCrypt (10 rounds) - Authentification JWT avec expiration 24h - Middleware de verification sur toutes les routes protegees - Fichier .env non versionne (secrets exclus de GitHub) - Regles iptables pour le pare-feu Linux ## Chiffres cles | Metrique | Valeur | |----------|--------| | Lignes de code | ~3 900 | | Fichiers | 17 | | Langages | JavaScript, HTML, CSS, C++, SQL | | Endpoints API | 12 | | Tables MariaDB | 6 | | Delai de mise a jour | Moins de 3 secondes | ## Equipe | Membre | Role | |--------|------| | APON BARUA | IoT, Web, Backend, BDD, Docker, Securite | | Lucas | Electronique, Arduino, Barrieres, Schemas | | Mahmoud | Camera de surveillance | --- Smart Parking — BTS CIEL IR — APON BARUA — 2025/2026