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

204 lines
6.8 KiB
Markdown
Raw 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.
# Руководство по развёртыванию
Быстрый старт для развёртывания Wyoming Satellite.
## Быстрый старт
### 1. Клонирование и установка
```bash
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 сервисов
```bash
sudo ./install_systemd_services.sh
```
**Важно:** После установки пакета в режиме editable (`pip install -e .`), новый модуль `wyoming_satellite.xvf_usb` будет автоматически доступен. Если вы добавляете новые модули в `wyoming_satellite/`, убедитесь, что они видны:
```bash
# Проверка доступности модуля
source ~/.venv_satellite/bin/activate
python3 -c "from wyoming_satellite.xvf_usb import XVF3800Controller; print('OK')"
```
### 3. Запуск сервисов
```bash
# 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. Проверка
```bash
sudo systemctl status wyoming-satelite-vosk.service
journalctl -u wyoming-satelite-vosk.service -f
```
В Home Assistant: **Настройки → Устройства и сервисы → Найдено → Wyoming Satellite → Настроить**
---
## Полная документация
| Руководство | Описание |
|-------------|----------|
| [**systemd сервисы**](docs/deployment/systemd-services.md) | Детальная настройка сервисов |
| [**Tutorials**](docs/tutorials/) | Пошаговые руководства для разного оборудования |
| [**Архитектура**](docs/architecture/overview.md) | Как работает Wyoming Satellite |
| [**MQTT LED**](docs/integration/mqtt-led.md) | LED управление с Home Assistant |
| [**Настройки**](docs/settings-cheatsheet.md) | Шпаргалка по всем CLI флагам |
### Tutorials
- [**2-MIC HAT**](docs/tutorials/2mic-hat.md) — Raspberry Pi + ReSpeaker 2-MIC HAT
- [**Установщик**](docs/tutorials/installer.md) — Руководство по интерактивному установщику
---
## Требования
- **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:
```bash
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
```
### Проверка подключения
```bash
# Проверка 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`:
```json
{
"idle": 80,
"listening": 120,
"wake": 200,
"thinking": 150,
"speaking": 140,
"paused": 40,
"error": 255,
"global_multiplier": 1.0
}
```
Файл создаётся автоматически при первом запуске. Исключите его из git tracking:
```bash
git update-index --assume-unchanged examples/led_brightness_config.json
```
### Диагностика LED сервиса
```bash
# Статус сервиса
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](docs/integration/mqtt-led.md).
---
## Конфигурация
Файлы сервисов используют плейсхолдеры, которые автоматически заменяются при установке:
| Плейсхолдер | Описание |
|-------------|----------|
| `__SAT_BASE_DIR__` | Путь к репозиторию Satellite |
| `__SAT_VENV__` | Путь к виртуальному окружению |
| `__CURRENT_USER__` | Имя текущего пользователя |
| `__HOME_DIR__` | Домашняя директория пользователя |
---
## Wake words (русские)
Отредактируйте `start_satellite.sh`:
```bash
--wake-word-name "привет дроид"
--wake-word-name "привет придурок"
--wake-word-name "привет жопа с ушами"
```
---
## Внешние ресурсы
- [Wyoming Protocol](https://github.com/rhasspy/wyoming)
- [Home Assistant Integration](https://www.home-assistant.io/integrations/wyoming)
- [Vosk](https://alphacephei.com/vosk/)
- [ReSpeaker 4-MIC Array](https://github.com/respeaker/usb_4mic_array)