main commit

This commit is contained in:
2025-10-06 09:40:51 +09:00
parent b1de55d253
commit 79256cd9fc
2375 changed files with 370050 additions and 4033 deletions

227
start_godeye.sh Executable file
View File

@@ -0,0 +1,227 @@
#!/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