#!/usr/bin/env bash # Deploy SLAM stéréo sur Raspberry Pi via SSH/rsync # Usage: bash deploy_pi.sh set -e # --- Variables --- PI_USER="pi" PI_PASS="raspberry" PI_DEST="/home/pi/slam_stereo" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" # --- Argument --- if [ -z "$1" ]; then echo "[ERREUR] Usage: $0 " echo "Exemple: $0 192.168.2.2" exit 1 fi PI_HOST="$1" echo "[INFO] Déploiement vers $PI_USER@$PI_HOST:$PI_DEST" # --- Test connectivité --- echo "[INFO] Test SSH..." if ! sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no \ -o ConnectTimeout=5 "$PI_USER@$PI_HOST" "echo 'SSH OK'" 2>/dev/null; then echo "[ERREUR] Impossible de se connecter à $PI_HOST" echo "[INFO] Vérifier: IP correcte, Pi allumé, sshpass installé" exit 1 fi # --- Créer dossiers sur Pi --- echo "[INFO] Création des dossiers..." sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" \ "mkdir -p $PI_DEST/{src/calibration,src/slam,src/interface,config}" # --- Rsync src/ --- echo "[INFO] Transfert src/..." sshpass -p "$PI_PASS" rsync -avz --progress \ -e "ssh -o StrictHostKeyChecking=no" \ "$PROJECT_DIR/src/" \ "$PI_USER@$PI_HOST:$PI_DEST/src/" # --- Rsync config/ --- echo "[INFO] Transfert config/..." sshpass -p "$PI_PASS" rsync -avz --progress \ -e "ssh -o StrictHostKeyChecking=no" \ "$PROJECT_DIR/config/" \ "$PI_USER@$PI_HOST:$PI_DEST/config/" 2>/dev/null || echo "[WARN] config/ vide, skip" # --- Install dépendances Python --- echo "[INFO] Installation dépendances Python..." sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" bash << 'REMOTE' set -e pip3 install --upgrade pip --quiet pip3 install opencv-python flask numpy pyyaml --quiet echo "[OK] Dépendances installées" REMOTE # --- Test Flask --- echo "[INFO] Test Flask..." sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" \ "cd $PI_DEST && python3 -c 'import flask, cv2, numpy, yaml; print(\"[OK] Imports OK\")'" echo "" echo "=== DEPLOY TERMINÉ ===" echo "Interface web: http://$PI_HOST:5000" echo "Démarrage manuel:" echo " ssh $PI_USER@$PI_HOST" echo " cd $PI_DEST && python3 src/interface/app.py" echo "" echo "Note BlueOS: utiliser aussi le Dockerfile pour extension native"