Files
god_eye_android/start_godeye.sh
2025-10-06 09:40:51 +09:00

228 lines
8.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# GodEye Complete Setup & Launch Script
# Скрипт для запуска полной инфраструктуры GodEye
echo "🚀 GodEye Complete Infrastructure Setup"
echo "======================================="
# Функция для получения IP адреса
get_local_ip() {
local ip=$(ip route get 1.1.1.1 | awk '{print $7}' | head -1)
if [ -z "$ip" ]; then
ip=$(hostname -I | awk '{print $1}')
fi
echo "$ip"
}
# Получаем локальный IP
LOCAL_IP=$(get_local_ip)
echo "🌐 Локальный IP адрес: $LOCAL_IP"
# Проверяем зависимости
echo ""
echo "🔍 Проверка зависимостей..."
# Проверяем Python
if ! command -v python3 &> /dev/null; then
echo "❌ Python3 не найден! Установите Python3"
exit 1
fi
# Проверяем websockets
if ! python3 -c "import websockets" 2>/dev/null; then
echo "📦 Установка websockets..."
pip3 install websockets
fi
# Проверяем adb
if ! command -v adb &> /dev/null; then
echo "❌ ADB не найден! Установите Android SDK Platform Tools"
echo "sudo apt install android-tools-adb android-tools-fastboot"
exit 1
fi
echo "✅ Все зависимости установлены"
# Функция для остановки всех процессов
cleanup() {
echo ""
echo "🛑 Остановка всех сервисов..."
# Остановка сигналинг сервера
if [ ! -z "$SIGNALING_PID" ]; then
kill $SIGNALING_PID 2>/dev/null
echo "📡 Сигналинг сервер остановлен"
fi
# Остановка веб сервера
if [ ! -z "$WEB_PID" ]; then
kill $WEB_PID 2>/dev/null
echo "🌐 Веб сервер остановлен"
fi
echo "👋 Система остановлена"
exit 0
}
# Обработка сигнала прерывания
trap cleanup SIGINT SIGTERM
# Создаем директории для логов
mkdir -p logs
echo ""
echo "🔧 Запуск сервисов..."
# 1. Запуск сигналинг сервера
echo "📡 Запуск сигналинг сервера на порту 8765..."
python3 signaling_server.py > logs/signaling.log 2>&1 &
SIGNALING_PID=$!
# Ждем запуска сигналинг сервера
sleep 2
# Проверяем что сигналинг сервер запустился
if ps -p $SIGNALING_PID > /dev/null; then
echo "✅ Сигналинг сервер запущен (PID: $SIGNALING_PID)"
else
echo "❌ Ошибка запуска сигналинг сервера"
cat logs/signaling.log
exit 1
fi
# 2. Запуск простого веб сервера для интерфейса оператора
echo "🌐 Запуск веб сервера на порту 8080..."
python3 -m http.server 8080 > logs/webserver.log 2>&1 &
WEB_PID=$!
# Ждем запуска веб сервера
sleep 1
if ps -p $WEB_PID > /dev/null; then
echo "Веб сервер запущен (PID: $WEB_PID)"
else
echo "❌ Ошибка запуска веб сервера"
exit 1
fi
# 3. Обновляем IP адрес в веб интерфейсе
echo "🔧 Обновление IP адреса в интерфейсе оператора..."
sed -i "s/localhost:8765/${LOCAL_IP}:8765/g" operator-interface.html
# 4. Проверяем подключение Android устройства
echo ""
echo "📱 Проверка подключения Android устройства..."
DEVICES=($(adb devices | grep -w "device" | awk '{print $1}'))
if [ ${#DEVICES[@]} -eq 0 ]; then
echo "⚠️ Android устройства не найдены!"
echo "Подключите устройство и включите отладку по USB"
else
echo "✅ Найдено устройств: ${#DEVICES[@]}"
for device in "${DEVICES[@]}"; do
echo " 📲 $device"
done
fi
# 5. Сборка и установка APK (если устройство подключено)
if [ ${#DEVICES[@]} -gt 0 ]; then
echo ""
echo "🔨 Сборка и установка приложения..."
# Обновляем IP адрес в Android приложении
SIGNALING_CLIENT_FILE="app/src/main/java/com/example/godeye/network/SignalingClient.kt"
if [ -f "$SIGNALING_CLIENT_FILE" ]; then
sed -i "s/192.168.1.100/${LOCAL_IP}/g" "$SIGNALING_CLIENT_FILE"
echo "🔧 IP адрес обновлен в Android приложении: $LOCAL_IP"
fi
# Собираем проект
echo "⚙️ Сборка проекта..."
./gradlew assembleDebug > logs/build.log 2>&1
if [ $? -eq 0 ]; then
echo "✅ Проект собран успешно"
# Устанавливаем на все подключенные устройства
for device in "${DEVICES[@]}"; do
echo "📲 Установка на устройство: $device"
adb -s "$device" install -r app/build/outputs/apk/debug/app-debug.apk
if [ $? -eq 0 ]; then
echo "✅ Приложение установлено на $device"
# Запускаем приложение
echo "🚀 Запуск приложения на $device"
adb -s "$device" shell am start -n com.example.godeye/.MainActivity
else
echo "❌ Ошибка установки на $device"
fi
done
else
echo "❌ Ошибка сборки проекта"
echo "Проверьте logs/build.log для подробностей"
fi
fi
# 6. Выводим информацию для подключения
echo ""
echo "🎯 Система запущена и готова к работе!"
echo "======================================"
echo ""
echo "📡 Сигналинг сервер: ws://${LOCAL_IP}:8765"
echo "🌐 Интерфейс оператора: http://${LOCAL_IP}:8080/operator-interface.html"
echo "📱 Android приложение: установлено и запущено на устройствах"
echo ""
echo "🔗 Инструкции по подключению:"
echo "1. Откройте браузер и перейдите по адресу: http://${LOCAL_IP}:8080/operator-interface.html"
echo "2. В браузере нажмите 'Подключиться к серверу'"
echo "3. На Android устройстве запустите приложение GodEye"
echo "4. В приложении нажмите 'Начать трансляцию'"
echo "5. В браузере должно появиться устройство в списке доступных"
echo "6. Нажмите на устройство для подключения"
echo ""
echo "📊 Мониторинг:"
echo "• Логи сигналинга: tail -f logs/signaling.log"
echo "• Логи веб сервера: tail -f logs/webserver.log"
echo "• Логи сборки: tail -f logs/build.log"
echo ""
echo "🛑 Для остановки нажмите Ctrl+C"
echo ""
# Основной цикл мониторинга
echo "🔄 Мониторинг системы (каждые 10 сек)..."
while true; do
sleep 10
# Проверяем состояние сервисов
SIGNALING_STATUS="❌"
WEB_STATUS="❌"
if ps -p $SIGNALING_PID > /dev/null 2>&1; then
SIGNALING_STATUS="✅"
fi
if ps -p $WEB_PID > /dev/null 2>&1; then
WEB_STATUS="✅"
fi
# Проверяем подключенные устройства
DEVICE_COUNT=$(adb devices | grep -w "device" | wc -l)
echo "$(date '+%H:%M:%S') - Статус: Сигналинг $SIGNALING_STATUS | Веб $WEB_STATUS | Устройств: $DEVICE_COUNT"
# Если какой-то сервис упал, пытаемся перезапустить
if ! ps -p $SIGNALING_PID > /dev/null 2>&1; then
echo "⚠️ Сигналинг сервер упал, перезапуск..."
python3 signaling_server.py > logs/signaling.log 2>&1 &
SIGNALING_PID=$!
fi
if ! ps -p $WEB_PID > /dev/null 2>&1; then
echo "⚠️ Веб сервер упал, перезапуск..."
python3 -m http.server 8080 > logs/webserver.log 2>&1 &
WEB_PID=$!
fi
done