esp32-claude-robbie/python_bridge/start_venv.sh

144 lines
5.0 KiB
Bash
Executable File

#!/bin/bash
# Claude's Eyes - venv Setup & Start Script
#
# Erstellt/repariert die virtuelle Umgebung und startet die Bridge
#
# Usage:
# ./start_venv.sh # Nur venv aktivieren (für manuellen Start)
# ./start_venv.sh --run # venv aktivieren + Bridge starten
# ./start_venv.sh --reset # venv neu erstellen + Dependencies installieren
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
VENV_DIR="$SCRIPT_DIR/venv"
# Farben
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
echo -e "${CYAN}"
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ Claude's Eyes - Python Bridge Setup ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
# Funktion: venv erstellen/reparieren
setup_venv() {
echo -e "${YELLOW}→ Erstelle virtuelle Umgebung...${NC}"
# Alte venv löschen falls kaputt
if [ -d "$VENV_DIR" ]; then
echo -e "${YELLOW} Lösche alte venv...${NC}"
rm -rf "$VENV_DIR"
fi
# Neue venv erstellen
python3 -m venv "$VENV_DIR"
if [ $? -ne 0 ]; then
echo -e "${RED}FEHLER: Konnte venv nicht erstellen!${NC}"
echo "Installiere python3-venv: sudo apt install python3-venv"
exit 1
fi
echo -e "${GREEN}✓ venv erstellt${NC}"
# Aktivieren
source "$VENV_DIR/bin/activate"
# pip upgraden
echo -e "${YELLOW}→ Upgrade pip...${NC}"
pip install --upgrade pip
# Dependencies installieren
echo -e "${YELLOW}→ Installiere Abhängigkeiten...${NC}"
pip install -r requirements.txt
if [ $? -ne 0 ]; then
echo -e "${RED}FEHLER: Konnte Dependencies nicht installieren!${NC}"
exit 1
fi
# PyAudio separat (optional, kann fehlschlagen)
echo -e "${YELLOW}→ Versuche PyAudio zu installieren...${NC}"
pip install pyaudio 2>/dev/null
if [ $? -ne 0 ]; then
echo -e "${YELLOW} PyAudio Installation fehlgeschlagen (optional)${NC}"
echo -e "${YELLOW} Für STT: sudo apt install python3-pyaudio${NC}"
else
echo -e "${GREEN}✓ PyAudio installiert${NC}"
fi
echo ""
echo -e "${GREEN}════════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}✓ Setup abgeschlossen!${NC}"
echo -e "${GREEN}════════════════════════════════════════════════════════════════${NC}"
}
# Funktion: venv aktivieren
activate_venv() {
if [ ! -d "$VENV_DIR" ] || [ ! -f "$VENV_DIR/bin/activate" ]; then
echo -e "${YELLOW}venv nicht gefunden, erstelle neu...${NC}"
setup_venv
else
source "$VENV_DIR/bin/activate"
echo -e "${GREEN}✓ venv aktiviert ($(python --version))${NC}"
fi
}
# Funktion: Bridge starten
run_bridge() {
echo ""
echo -e "${CYAN}→ Starte Audio Bridge...${NC}"
echo ""
python chat_audio_bridge.py "$@"
}
# Argumente verarbeiten
case "$1" in
--reset)
setup_venv
echo ""
echo "Starte Bridge mit: ./start_venv.sh --run"
;;
--run)
activate_venv
shift # Entferne --run aus den Argumenten
run_bridge "$@"
;;
--help|-h)
echo "Usage: ./start_venv.sh [OPTION] [BRIDGE-ARGS]"
echo ""
echo "Optionen:"
echo " (keine) Nur venv aktivieren (für source ./start_venv.sh)"
echo " --run venv aktivieren und Bridge starten"
echo " --reset venv komplett neu erstellen"
echo " --help Diese Hilfe anzeigen"
echo ""
echo "Bridge-Argumente (nach --run):"
echo " -d, --debug Debug-Logging aktivieren (zeigt Nachrichten-Erkennung)"
echo " -c FILE Eigene Config-Datei nutzen"
echo " --test Test-Modus (kein Heartbeat)"
echo ""
echo "Beispiele:"
echo " ./start_venv.sh --reset # Nach Python-Update"
echo " ./start_venv.sh --run # Normaler Start"
echo " ./start_venv.sh --run -d # Mit Debug-Logging"
echo " ./start_venv.sh --run --debug # Auch Debug"
echo " ./start_venv.sh --run -c my.yaml # Eigene Config"
;;
*)
activate_venv
echo ""
echo -e "${CYAN}venv ist aktiv. Du kannst jetzt:${NC}"
echo " python chat_audio_bridge.py # Bridge starten"
echo " python mock_esp32.py # Mock-Server starten"
echo ""
echo -e "${YELLOW}Oder nutze: ./start_venv.sh --run${NC}"
;;
esac