feat: добавить TEST сервисы для разработки

- services/test/*.service — 3 test сервиса (порты +1)
- install_test_services.sh — установка test сервисов
- services/test/start_test.sh — быстрый запуск в tmux
- docs/deployment/systemd-services.md — документация

TEST сервисы:
- wyoming-satelite-vosk-test.service :10701 + WebSocket :8675
- wyoming-wakeword-vosk-test.service :10401
- wyoming-event-test.service :10501

Использование:
1. sudo ./install_test_services.sh — установка
2. sudo systemctl start wyoming-*-test.service — запуск
3. ./services/test/start_test.sh — запуск в tmux

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-05-20 17:29:36 +03:00
co-authored by Qwen-Coder
parent 26932097a5
commit e5914b23b3
6 changed files with 386 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
#!/usr/bin/env bash
#
# Быстрый запуск TEST сервисов в tmux
# Не требует установки systemd сервисов
#
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_PATH="${SCRIPT_DIR}/.venv"
PYTHON="${VENV_PATH}/bin/python3"
# Проверка venv
if [ ! -f "$PYTHON" ]; then
echo "❌ Виртуальное окружение не найдено: $VENV_PATH"
echo "💡 Запустите: cd ${SCRIPT_DIR} && ./setup_dev.sh"
exit 1
fi
echo "🚀 Запуск TEST сервисов в tmux..."
echo "=================================="
echo ""
# Проверка tmux
if ! command -v tmux &> /dev/null; then
echo "❌ tmux не найден!"
echo "💡 Установите: sudo apt-get install tmux"
exit 1
fi
# Очистка старой сессии если существует
tmux kill-session -t satellite-test 2>/dev/null || true
# Создание новой сессии
echo "📡 Создание сессии 'satellite-test'..."
# Окно 1: Wake Word (порт 10401)
tmux new-session -d -s satellite-test -n "wakeword" \
"cd ${SCRIPT_DIR} && source ${VENV_PATH}/bin/activate && \
python3 local/vosk-wake-dev/script/run \
--uri tcp://0.0.0.0:10401 \
--model-path /home/${USER}/projects/models/vosk-model-small-ru-0.22 \
--rate 16000 \
--wake-word 'привет дройд'"
echo " ✅ Wake Word запущен (порт 10401)"
# Окно 2: Event Service (порт 10501)
tmux split-window -t satellite-test:0 -h \
"cd ${SCRIPT_DIR}/examples && source ${VENV_PATH}/bin/activate && \
python3 wyoming-led.py --host 127.0.0.1 --port 10501"
echo " ✅ Event Service запущен (порт 10501)"
# Окно 3: Satellite (порт 10701 + WebSocket)
tmux new-window -t satellite-test -n "satellite" \
"cd ${SCRIPT_DIR} && source ${VENV_PATH}/bin/activate && \
python3 -m wyoming_satellite \
--uri tcp://0.0.0.0:10701 \
--name 'Wyoming Satellite Test' \
--mic-command 'arecord -D plughw:CARD=Array,DEV=0 -q -r 16000 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -D plughw:CARD=Array,DEV=0 -q -r 22050 -c 1 -f S16_LE -t raw' \
--event-uri tcp://127.0.0.1:10501 \
--websocket-enabled \
--websocket-port 8675 \
--audio-level-enabled \
--audio-level-interval-ms 100 \
--debug"
echo " ✅ Satellite запущен (порт 10701 + WebSocket :8675)"
# Возврат к первому окну
tmux select-window -t satellite-test:0
echo ""
echo "✅ Запуск завершён!"
echo ""
echo "📋 Сессия tmux: 'satellite-test'"
echo ""
echo " Окна:"
echo " 0: Wake Word (порт 10401)"
echo " 1: Event (порт 10501)"
echo " 2: Satellite (порт 10701 + WebSocket :8675)"
echo ""
echo "🎮 Управление tmux:"
echo " tmux attach -t satellite-test # Подключиться"
echo " tmux kill-session -t satellite-test # Остановить"
echo ""
echo "🌐 WebSocket:"
echo " ws://127.0.0.1:8675"
echo ""
echo "💡 Пример подключения:"
echo " source ${VENV_PATH}/bin/activate"
echo " python3 examples/websocket-service/test_client.py --uri ws://127.0.0.1:8675"
echo ""
+37
View File
@@ -0,0 +1,37 @@
[Unit]
Description=Wyoming Event Service Test (LED control)
After=network.target
[Service]
Type=simple
# 🔹 Запуск от имени вашего пользователя
User=__CURRENT_USER__
Group=__CURRENT_USER__
# 🔹 Рабочая директория — где лежит wyoming-led.py
WorkingDirectory=__SAT_BASE_DIR__/examples
# 🔹 Test порт 10501 вместо 10500
ExecStart=satellite-python __SAT_BASE_DIR__/examples/wyoming-led.py --host 127.0.0.1 --port 10501
# 🔹 Критически важно: передаём окружение
Environment="HOME=__HOME_DIR__"
Environment="USER=__CURRENT_USER__"
Environment="PATH=__SAT_VENV__/bin:/usr/local/bin:/usr/bin:/bin"
Environment="VIRTUAL_ENV=__SAT_VENV__"
# 🔹 Разрешаем доступ к устройству (на всякий случай)
PrivateDevices=false
# 🔹 Перезапуск при ошибке
Restart=on-failure
RestartSec=3
# 🔹 Логирование в journal
StandardOutput=journal
StandardError=journal
SyslogIdentifier=wyoming-event-test
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,27 @@
[Unit]
Description=Wyoming Satellite Test (dev branch)
Requires=network.target
[Service]
Type=simple
User=__CURRENT_USER__
WorkingDirectory=__SAT_BASE_DIR__
# Запуск satellite с WebSocket и Audio Level
ExecStart=__SAT_VENV__/bin/python3 -m wyoming_satellite \
--uri tcp://0.0.0.0:10701 \
--name 'Wyoming Satellite Test' \
--mic-command 'arecord -D plughw:CARD=Array,DEV=0 -q -r 16000 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -D plughw:CARD=Array,DEV=0 -q -r 22050 -c 1 -f S16_LE -t raw' \
--event-uri tcp://127.0.0.1:10501 \
--websocket-enabled \
--websocket-port 8675 \
--audio-level-enabled \
--audio-level-interval-ms 100 \
--debug
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,20 @@
[Unit]
Description=voskWakeWord Test
[Service]
Type=simple
User=__CURRENT_USER__
# Test порт 10401 вместо 10400
ExecStart=satellite-python __SAT_BASE_DIR__/local/vosk-wake-dev/script/run \
--uri tcp://0.0.0.0:10401 \
--model-path /home/__CURRENT_USER__/projects/models/vosk-model-small-ru-0.22 \
--rate 16000 \
--wake-word "привет дройд"
WorkingDirectory=__SAT_BASE_DIR__/local/vosk-wake-dev
Restart=always
RestartSec=1
[Install]
WantedBy=default.target