Files
slam-stereo-blueos/scripts/deploy_pi.sh
2026-04-19 18:07:28 +02:00

74 lines
2.3 KiB
Bash

#!/usr/bin/env bash
# Deploy SLAM stéréo sur Raspberry Pi via SSH/rsync
# Usage: bash deploy_pi.sh <IP_PI>
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 <IP_PI>"
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"