Serveur central du systĂšme Facilock, gĂ©rant la reconnaissance faciale, les interactions matĂ©rielles (bouton, relais, digicode, Ă©cran LCD) et la communication avec lâapplication mobile via API REST et notifications push.
face_recognition et OpenCV.| Domaine | Outils / Librairies |
|---|---|
| Langage | Python 3 |
| Serveur web | Flask + Flask-CORS |
| Vision | OpenCV, face_recognition |
| Matériel | gpiozero, pyserial |
| Notifications | Expo Push API |
| Asynchrone | threading |
| SystÚme | Raspberry Pi 5 (8 Go), caméra infrarouge, relais, Arduino |
tetes/ :
| Méthode | Endpoint | Description |
|---|---|---|
POST |
/unlock |
Ouvre manuellement le verrou |
GET |
/notifications |
Liste les vidéos capturées (visiteurs inconnus) |
DELETE |
/notifications/<id> |
Supprime une notification vidéo |
GET |
/authorized |
Liste des personnes autorisées |
POST |
/authorized |
Ajout dâune personne (via images base64) |
PUT |
/authorized/<old_name> |
Renommage dâun dossier de visage |
DELETE |
/authorized/<name> |
Suppression dâune personne |
GET |
/authorized/<name>/images |
Liste les images associées à un visage |
GET |
/authorized/<name>/image |
Télécharge une image précise |
DELETE |
/authorized/<name>/image |
Supprime une image |
POST |
/authorized_capture |
Capture directe depuis la caméra |
POST |
/api/register_push_token |
Enregistre un token Expo pour notifications |
GET |
/stream |
Stream dâĂ©vĂ©nements SSE (lock_status en temps rĂ©el) |
Toutes les routes nécessitent un token de sécurité :
?token=afsfr-356hytjdhiy-huy5429876njyu-y-gfdrsertgry
raspberrypi/
âââ app.py # Script principal
âââ icon/ # IcĂŽnes affichĂ©es Ă l'Ă©cran
â âââ locked.png
â âââ unlocked.png
â âââ camera.png
â âââ close.png
â âââ ...
âââ tetes/ # Dossiers des visages enregistrĂ©s
â âââ Constant/
â âââ Ami/
â âââ ...
âââ captured_videos/ # VidĂ©os enregistrĂ©es des visiteurs inconnus
âââ expo_tokens.json # Liste des tokens de notification Expo
âââ requirements.txt # DĂ©pendances Python
âââ README.md
git clone https://github.com/ConstantSegretain/Facilock.git
cd backend
Active ton environnement virtuel avant si tu en utilises un.
pip install -r requirements.txt
Contenu de requirements.txt :
flask
flask-cors
requests
opencv-python
face_recognition
gpiozero
pyserial
numpy
python app.py
đ Le serveur Ă©coute sur http://0.0.0.0:5000.
| ĂlĂ©ment | RĂŽle |
|---|---|
| Bouton poussoir | Déclenche la reconnaissance faciale |
| Relais | Commande le verrou (GPIO16) |
| Arduino | GĂšre le digicode et lâĂ©cran LCD (UART /dev/ttyACM0) |
| Caméra | Capture des visages et vidéos |
| Ăcran 3.5â | Interface utilisateur (affichage OpenCV) |
| Code | Action |
|---|---|
W |
Message dâaccueil |
R |
Reconnaissance en cours |
U |
Déverrouillage réussi |
A |
Verrouillage automatique |
N |
Visiteur non reconnu |
L |
Déverrouillage manuel |
M |
Verrouillage manuel |
C |
Code correct |
I |
Code incorrect |
B |
Sonnerie détectée |
Lâapplication mobile enregistre son token Expo via /api/register_push_token.
Lorsquâun visage inconnu est dĂ©tectĂ©, le backend envoie automatiquement une notification push :
send_notification_async("Facilock", "Visiteur inconnu")
Lorsquâaucun visage nâest reconnu :
unknown_TIMESTAMP.mp4) est enregistrée.visitor_fixed_...) via ffmpeg.Constant Segretain
đ Ătudiant BTS SIO SISR
đ
Année : 2025
đ« constantsegretain@gmail.com
đ github.com/ConstantSeg
« Un backend intelligent pour un verrou intelligent â la clĂ©, câest vous. »