Files
satellite/DEPLOY.md
T
sirmrak c62203b220 feat: Multi-event server support + USB LED controller
New features:
- wyoming_satellite/xvf_usb.py — прямой USB доступ к XVF3800 без subprocess
- docs/development/multi-event-server-plan.md — план разработки event server
- examples/respeaker_usb_mic_array.py — исходный файл с LED анимациями

Documentation updates:
- DEPLOY.md — добавлена секция про LED управление и event server план
- docs/integration/mqtt-led.md — обновлена документация по USB и event server
- docs/deployment/systemd-services.md — добавлен event server раздел

Refactoring:
- examples/wyoming-led.py — замена subprocess на XVF3800Controller
- install_service.sh — удалён (устарел, используется install_systemd_services.sh)

Bug fixes:
- wyoming-led.py — яркость DoA эффекта через масштабирование цвета
- systemd сервис — добавлена поддержка wyoming_satellite.xvf_usb модуля
2026-05-20 13:50:16 +03:00

6.8 KiB
Raw Blame History

Руководство по развёртыванию

Быстрый старт для развёртывания Wyoming Satellite.

Быстрый старт

1. Клонирование и установка

git clone <repository-url> ~/projects/Satellite
cd ~/projects/Satellite

# Создание виртуального окружения
python3 -m venv ~/.venv_satellite
source ~/.venv_satellite/bin/activate

# Установка зависимостей
pip install -r requirements.txt

# Установка пакета в режиме разработки (для доступа к wyoming_satellite.xvf_usb)
pip install -e .

2. Установка systemd сервисов

sudo ./install_systemd_services.sh

Важно: После установки пакета в режиме editable (pip install -e .), новый модуль wyoming_satellite.xvf_usb будет автоматически доступен. Если вы добавляете новые модули в wyoming_satellite/, убедитесь, что они видны:

# Проверка доступности модуля
source ~/.venv_satellite/bin/activate
python3 -c "from wyoming_satellite.xvf_usb import XVF3800Controller; print('OK')"

3. Запуск сервисов

# LED управление (опционально, требуется ReSpeaker)
sudo systemctl enable --now wyoming-event.service

# Wyoming Satellite
sudo systemctl enable --now wyoming-satelite-vosk.service

# Детекция wake word (Vosk)
sudo systemctl enable --now wyoming-wakeword-vosk.service

4. Проверка

sudo systemctl status wyoming-satelite-vosk.service
journalctl -u wyoming-satelite-vosk.service -f

В Home Assistant: Настройки → Устройства и сервисы → Найдено → Wyoming Satellite → Настроить


Полная документация

Руководство Описание
systemd сервисы Детальная настройка сервисов
Tutorials Пошаговые руководства для разного оборудования
Архитектура Как работает Wyoming Satellite
MQTT LED LED управление с Home Assistant
Настройки Шпаргалка по всем CLI флагам

Tutorials

  • 2-MIC HAT — Raspberry Pi + ReSpeaker 2-MIC HAT
  • Установщик — Руководство по интерактивному установщику

Требования

  • Python 3.9+
  • Linux (протестировано на Raspberry Pi OS)
  • Микрофон (USB или HAT)
  • Опционально: ReSpeaker XVF3800 USB 4-MIC Array (для LED управления)

Обзор сервисов

Сервис Порт Описание
wyoming-satelite-vosk.service 10700 Основной Wyoming спутник
wyoming-wakeword-vosk.service 10400 Детекция wake word (Vosk)
wyoming-event.service 10500 LED управление + MQTT события

LED управление (ReSpeaker XVF3800)

Сервис wyoming-event.service использует прямой USB доступ к XVF3800 через модуль wyoming_satellite.xvf_usb.

Требования

  • ReSpeaker XVF3800 USB 4-MIC Array (VID=0x2886, PID=0x0018 или 0x001A)
  • udev правила для доступа к USB:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2886", ATTR{idProduct}=="0018", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/99-respeaker.rules
sudo udevadm trigger

Проверка подключения

# Проверка USB устройства
lsusb | grep -i 2886

# Тест контроллера
source ~/.venv_satellite/bin/activate
python3 -c "from wyoming_satellite.xvf_usb import XVF3800Controller; c = XVF3800Controller(); print('OK' if c.is_connected() else 'Not found')"

Настройка яркости

Яркость для каждого состояния настраивается в examples/led_brightness_config.json:

{
  "idle": 80,
  "listening": 120,
  "wake": 200,
  "thinking": 150,
  "speaking": 140,
  "paused": 40,
  "error": 255,
  "global_multiplier": 1.0
}

Файл создаётся автоматически при первом запуске. Исключите его из git tracking:

git update-index --assume-unchanged examples/led_brightness_config.json

Диагностика LED сервиса

# Статус сервиса
sudo systemctl status wyoming-event.service

# Логи
journalctl -u wyoming-event.service -f

# Тест вручную
source ~/.venv_satellite/bin/activate
cd ~/projects/Satellite/examples
python3 wyoming-led.py --debug

Преимущества прямого USB доступа

Начиная с версии 2026.05, wyoming-led.py использует прямой USB доступ вместо subprocess вызовов:

  • ✅ Быстрее: ~1ms на команду (нет накладных расходов subprocess)
  • ✅ Надёжнее: контроль USB подключения с авто-переподключением
  • ✅ Чище: нет процессов subprocess и временных файлов

Подробности в документации MQTT LED.


Конфигурация

Файлы сервисов используют плейсхолдеры, которые автоматически заменяются при установке:

Плейсхолдер Описание
__SAT_BASE_DIR__ Путь к репозиторию Satellite
__SAT_VENV__ Путь к виртуальному окружению
__CURRENT_USER__ Имя текущего пользователя
__HOME_DIR__ Домашняя директория пользователя

Wake words (русские)

Отредактируйте start_satellite.sh:

--wake-word-name "привет дроид"
--wake-word-name "привет придурок"
--wake-word-name "привет жопа с ушами"

Внешние ресурсы