#!/bin/bash # # Установка TEST systemd сервисов для Wyoming Satellite (dev branch) # Автоматически определяет пути и подставляет их в service файлы # set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SERVICE_DIR="${SCRIPT_DIR}/services/test" SYSTEMD_DIR="/etc/systemd/system" echo "🔧 Установка TEST systemd сервисов для Wyoming Satellite (dev)" echo "==============================================================" # Определяем текущего пользователя CURRENT_USER="${SUDO_USER:-$(whoami)}" HOME_DIR=$(getent passwd "$CURRENT_USER" | cut -d: -f6) echo "👤 Пользователь: $CURRENT_USER" echo "🏠 Домашняя директория: $HOME_DIR" # Ищем виртуальное окружение VENV_PATH="" for candidate in \ "${HOME_DIR}/projects/.venv_satellite" \ "${HOME_DIR}/.venv_satellite" \ "${SCRIPT_DIR}/.venv" \ "${SCRIPT_DIR}/.venv_satellite" do if [ -f "${candidate}/bin/python3" ]; then VENV_PATH="${candidate}" break fi done if [ -z "$VENV_PATH" ]; then echo "❌ Виртуальное окружение не найдено!" echo " Создайте его: cd ${SCRIPT_DIR} && ./setup_dev.sh" exit 1 fi echo "✅ VENV: $VENV_PATH" # Создаём временную директорию для обработанных сервисов TEMP_DIR=$(mktemp -d) trap "rm -rf ${TEMP_DIR}" EXIT # Обрабатываем каждый test service файл for service_file in "${SERVICE_DIR}"/*.service; do [ -f "$service_file" ] || continue filename=$(basename "$service_file") echo "📄 Обработка: $filename" # Заменяем плейсхолдеры на актуальные пути sed -e "s|__SAT_BASE_DIR__|${SCRIPT_DIR}|g" \ -e "s|__SAT_VENV__|${VENV_PATH}|g" \ -e "s|__CURRENT_USER__|${CURRENT_USER}|g" \ -e "s|__HOME_DIR__|${HOME_DIR}|g" \ "$service_file" > "${TEMP_DIR}/${filename}" # Копируем в systemd sudo cp "${TEMP_DIR}/${filename}" "${SYSTEMD_DIR}/" echo " ✅ Установлен в ${SYSTEMD_DIR}/${filename}" done # Перезагружаем systemd echo "" echo "🔄 Перезагрузка systemd..." sudo systemctl daemon-reload echo "" echo "✅ TEST сервисы установлены!" echo "" echo "📋 TEST сервисы (не влияют на production):" echo " - wyoming-event-test.service (LED управление, порт 10501)" echo " - wyoming-satelite-vosk-test.service (спутник, порт 10701)" echo " - wyoming-wakeword-vosk-test.service (wake word, порт 10401)" echo "" echo "🚀 Команды управления:" echo " # Запуск всех test сервисов" echo " sudo systemctl start wyoming-event-test.service" echo " sudo systemctl start wyoming-satelite-vosk-test.service" echo " sudo systemctl start wyoming-wakeword-vosk-test.service" echo "" echo " # Проверка статуса" echo " sudo systemctl status wyoming-satelite-vosk-test.service" echo "" echo " # Остановка" echo " sudo systemctl stop wyoming-satelite-vosk-test.service" echo "" echo "📊 Просмотр логов:" echo " journalctl -u wyoming-event-test.service -f" echo " journalctl -u wyoming-satelite-vosk-test.service -f" echo " journalctl -u wyoming-wakeword-vosk-test.service -f" echo "" echo "🌐 WebSocket для тестирования:" echo " ws://127.0.0.1:8675" echo "" echo "💡 Пример подключения:" echo " python3 examples/websocket-service/test_client.py --uri ws://127.0.0.1:8675" echo ""