8x32 PI : interface web, matrice verticale, compatibilité Raspbian 11
- Interface web (serveur_web.py, Flask, gabarits dans web/) : dépôt de GIF, PNG animés et séquences de PNG, aperçus animés, ordre de lecture, activer / désactiver, corbeille, « jouer maintenant » et « suivante ». Service systemd vitrine-web, activé par installer.sh. - Lecteur : réagit aux demandes de la page web (post-it dans /run/vitrine-pixels), écrit l'animation en cours, éteint la matrice proprement sur SIGTERM. - Matrice posée debout : réglage ROTATION (90 = image 8 × 32) dans matrice.py ; images couchées tournées automatiquement ; exemples, animations codées, aperçus et page web adaptés au format vertical. - Compatibilité Raspbian 11 Bullseye : partition /boot, Pillow 8.1, Flask 1.1. - Doc : nouveau guide INTERFACE_WEB.md ; README, GUIDE_KRITA, MODE_VITRINE, CODER_EN_PYTHON mis à jour (format 8 × 32, adresses Wi-Fi / câble du Pi). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -35,10 +35,10 @@ echo "=== Partition de démarrage : $BOOT"
|
||||
|
||||
echo
|
||||
echo "=== 1/5 Installation des logiciels nécessaires (quelques minutes)"
|
||||
# python3-pil = Pillow (lire les images) ; python3-dev et gcc = pour compiler
|
||||
# la bibliothèque rpi_ws281x, qui parle aux LED.
|
||||
# python3-pil = Pillow (lire les images) ; python3-flask = le serveur web ;
|
||||
# python3-dev et gcc = pour compiler la bibliothèque rpi_ws281x, qui parle aux LED.
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-venv python3-pil python3-dev gcc
|
||||
sudo apt-get install -y python3-venv python3-pil python3-flask python3-dev gcc
|
||||
|
||||
echo
|
||||
echo "=== 2/5 Environnement Python dans $ENV"
|
||||
@@ -73,14 +73,22 @@ else
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "=== 5/5 Service de démarrage automatique « vitrine-pixels »"
|
||||
# On recopie le modèle de service en remplaçant @PROJET@ et @PYTHON@
|
||||
echo "=== 5/5 Services de démarrage automatique : lecteur et interface web"
|
||||
# On recopie chaque modèle de service en remplaçant @PROJET@ et @PYTHON@
|
||||
# par les vrais chemins.
|
||||
sed -e "s|@PROJET@|$PROJET|g" -e "s|@PYTHON@|$ENV/bin/python|g" \
|
||||
"$PROJET/installation/vitrine-pixels.service" \
|
||||
| sudo tee /etc/systemd/system/vitrine-pixels.service > /dev/null
|
||||
for SERVICE in vitrine-pixels vitrine-web; do
|
||||
sed -e "s|@PROJET@|$PROJET|g" -e "s|@PYTHON@|$ENV/bin/python|g" \
|
||||
"$PROJET/installation/$SERVICE.service" \
|
||||
| sudo tee "/etc/systemd/system/$SERVICE.service" > /dev/null
|
||||
done
|
||||
sudo systemctl daemon-reload
|
||||
echo " service installé (pas encore activé)"
|
||||
# L'interface web ne touche pas à la matrice : on peut l'activer tout de suite.
|
||||
sudo systemctl enable --now vitrine-web
|
||||
sudo systemctl restart vitrine-web
|
||||
for ADRESSE in $(hostname -I); do
|
||||
case "$ADRESSE" in *.*) echo " interface web : http://$ADRESSE" ;; esac
|
||||
done
|
||||
echo " lecteur installé (pas encore activé : testez d'abord la matrice)"
|
||||
|
||||
echo
|
||||
echo "================================================================"
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# =============================================================================
|
||||
# Service « vitrine-web » : l'interface web (serveur_web.py)
|
||||
# =============================================================================
|
||||
#
|
||||
# Comme vitrine-pixels.service, c'est un MODÈLE : installation/installer.sh
|
||||
# remplace @PROJET@ et @PYTHON@ par les vrais chemins.
|
||||
#
|
||||
# Il tourne À CÔTÉ du lecteur (service vitrine-pixels) : le serveur range les
|
||||
# fichiers et laisse des « post-it », le lecteur joue les animations.
|
||||
#
|
||||
# Commandes utiles :
|
||||
# sudo systemctl enable --now vitrine-web activer + démarrer
|
||||
# sudo systemctl restart vitrine-web relancer (après une modification)
|
||||
# journalctl -u vitrine-web -f voir les visites et les erreurs
|
||||
|
||||
[Unit]
|
||||
Description=Vitrine pixels : interface web de gestion des animations
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart="@PYTHON@" "@PROJET@/serveur_web.py"
|
||||
WorkingDirectory=@PROJET@
|
||||
# Administrateur : pour écrire dans /boot et utiliser le port 80.
|
||||
User=root
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user