9a006f14573caf81c8bea52c495c917fb2507774
Photomaton — Interface de gestion
Interface web Python au-dessus de photobooth-app pour Raspberry Pi 4.
Architecture
photomaton/
│
├── backend/ # Serveur Python (FastAPI)
│ ├── api/ # Routes REST & WebSocket
│ │ ├── gallery.py # - Galerie publique & admin
│ │ ├── print.py # - Modes d'impression
│ │ ├── leds.py # - Contrôle anneau WS2812b
│ │ ├── button.py # - Gestion bouton GPIO
│ │ └── system.py # - Ressources système (CPU, RAM…)
│ ├── services/ # Logique métier
│ │ ├── photobooth.py # - Intégration photobooth-app
│ │ ├── printer.py # - Gestion impression
│ │ ├── led_service.py # - Effets LED (ring WS2812b)
│ │ └── button_service.py # - Détection clic / double-clic / long
│ ├── models/ # Schémas de données (Pydantic)
│ └── utils/ # Helpers divers
│
├── frontend/ # Interface web
│ ├── static/
│ │ ├── css/ # Styles
│ │ ├── js/ # Scripts (galerie, admin, live LED…)
│ │ └── img/ # Assets statiques
│ └── templates/
│ ├── public/ # Galerie visiteurs (QR code / URL simple)
│ ├── gallery/ # Galerie plein écran
│ └── admin/ # Dashboard admin (impression, ressources)
│
├── hardware/
│ ├── gpio/ # Gestion bouton physique (RPi.GPIO / gpiozero)
│ └── leds/ # Anneau WS2812b (rpi_ws281x)
│
├── config/
│ ├── settings.yaml # Config principale (GPIO pins, nb LEDs…)
│ └── profiles.yaml # Profils photomaton (normal, fun, N&B…)
│
├── data/
│ ├── photos/ # Photos produites (lien ou copie depuis photobooth-app)
│ ├── thumbnails/ # Miniatures générées automatiquement
│ ├── sessions/ # Métadonnées sessions
│ └── logs/ # Journaux applicatifs
│
├── scripts/
│ ├── install.sh # Installation dépendances
│ ├── start.sh # Démarrage du service
│ └── setup_service.sh # Création service systemd
│
└── docs/ # Documentation technique
Fonctionnalités
Gestion bouton GPIO
| Action | Effet |
|---|---|
| 1 clic | Photo profil par défaut |
| 2 clics | Photo profil alternatif |
| Long clic | Impression de la dernière photo |
LEDs WS2812b (anneau)
- Effets de veille, décompte, capture, succès, erreur
- Configurable : nombre de LEDs, PIN GPIO, luminosité
- Contrôle via API REST en temps réel
Galerie
- Publique : accès par QR code ou URL locale, visualisation et téléchargement
- Admin : sélection et impression, filtrage par session
Modes d'impression
- Direct : impression immédiate après capture
- Galerie admin : impression manuelle depuis le dashboard
- Validation : confirmation requise avant impression
Dashboard admin
- Ressources système en temps réel (CPU, RAM, température, disque)
- Contrôle LED live
- Historique des sessions
- Configuration des profils
Stack technique
- Backend : Python 3.11+, FastAPI, WebSocket
- Frontend : HTML/CSS/JS vanilla (léger, pas de framework lourd)
- LED :
rpi_ws281x - GPIO :
gpiozero - Intégration : API REST de photobooth-app
- Proxy : Zoraxy (SSL)
- Wifi : RaspAP
Description
Languages
HTML
36.9%
Python
33.8%
Shell
26.3%
CSS
3%