Ajout de la prise en charge du mode headless pour le système timelapse, y compris la configuration des variables d'environnement, l'amélioration de la connexion WiFi et la vérification de l'accessibilité de la caméra. Création d'un script d'installation pour les dépendances nécessaires en mode headless.

This commit is contained in:
2025-04-27 19:12:35 +02:00
parent 2013c2cf41
commit a756856e5c
4 changed files with 147 additions and 10 deletions

View File

@@ -39,7 +39,11 @@ cleanup() {
trap 'cleanup 1' INT TERM
log "==============================================================="
log "Démarrage du système timelapse"
log "Démarrage du système timelapse (mode headless)"
# Configuration des variables d'environnement pour mode headless
export LIBCAMERA_LOG_LEVELS=3
export DISPLAY=:0
# Fonction pour se connecter au WiFi avec plusieurs tentatives
connect_wifi() {
@@ -47,9 +51,38 @@ connect_wifi() {
local password="kingcard"
local retries=0
log "Vérification de l'interface WiFi..."
if ! ip link show | grep -q wlan0; then
log "Interface WiFi non trouvée ou désactivée"
# Essayer d'activer l'interface si elle existe
if ip link show wlan0 &>/dev/null; then
log "Tentative d'activation de wlan0"
ip link set wlan0 up
sleep 2
fi
fi
while [ $retries -lt $MAX_RETRIES ]; do
log "Tentative de connexion WiFi ($((retries+1))/$MAX_RETRIES)"
nmcli dev wifi connect "$ssid" password "$password"
# Essayer d'abord avec nmcli si disponible
if command -v nmcli >/dev/null 2>&1; then
nmcli dev wifi connect "$ssid" password "$password"
# Sinon essayer avec wpa_supplicant
elif command -v wpa_cli >/dev/null 2>&1; then
# Créer un fichier de configuration wpa_supplicant
wpa_conf="/tmp/wpa_supplicant.conf"
echo "network={" > $wpa_conf
echo " ssid=\"$ssid\"" >> $wpa_conf
echo " psk=\"$password\"" >> $wpa_conf
echo "}" >> $wpa_conf
# Utiliser wpa_supplicant pour se connecter
wpa_supplicant -i wlan0 -c $wpa_conf -B
sleep 2
dhclient wlan0
rm -f $wpa_conf
fi
if check_internet; then
log "Connexion WiFi établie"
@@ -70,6 +103,17 @@ check_internet() {
return $?
}
# Vérifier si la caméra est accessible
check_camera() {
if libcamera-still --list-cameras &>/dev/null; then
log "Caméra détectée et accessible"
return 0
else
log "ERREUR: Caméra non détectée ou non accessible"
return 1
fi
}
# S'assurer que le répertoire de configuration existe
mkdir -p "$CONFIG_DIR"
@@ -79,6 +123,9 @@ connect_wifi
# Vérifier si les chemins Python sont corrects
export PYTHONPATH="$BASE_DIR:$PYTHONPATH"
# Vérifier que la caméra est accessible
check_camera
if check_internet; then
log "Connecté à internet"