Files
Parking/README.md
2026-06-03 15:43:06 +02:00

6.5 KiB

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 - LUCAS GOMES — 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

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

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