- satellite.py: разделён _runtime_volume на _runtime_mic_volume и _runtime_snd_volume - satellite.py: добавлены команды start_recording/stop_recording (WAV через base64) - satellite.py: метод _create_wav_from_buffer() для создания WAV из буфера - web-client: добавлен слайдер громкости микрофона (MIC+/MIC-) - web-client: добавлены кнопки записи и воспроизведения аудио - web-client: улучшенный лог событий и отладочные console.log - docs: websocket-server-plan.md сокращён с 1205 до ~80 строк Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
3.2 KiB
3.2 KiB
План: WebSocket сервер для Wyoming Satellite
Дата: 2026-05-20
Статус: 🔄 Тестирование
Ветка: satellite-dev
Что сделано
| Этап | Что | Статус |
|---|---|---|
| WS-1 | settings.py — поля WebSocket в EventSettings |
✅ |
| WS-2 | satellite.py — сервер, broadcast, команды |
✅ |
| WS-2A | Протокол команд (7 команд) | ✅ |
| WS-3 | __main__.py — CLI аргументы |
✅ |
| WS-4 | Audio level (RMS) мониторинг | ✅ |
| WS-4 | Audio recording | ✅ |
Что осталось
| Этап | Что | Статус |
|---|---|---|
| WS-5 | Обновить docs/integration/mqtt-led.md |
⏳ |
| — | Merge в master | ⏳ |
Чеклист тестирования (WS-4)
- Satellite запускается с
--websocket-enabled - Браузер подключается к порту 8675
- События приходят (
synthesize,audio-start/stop,played) audio-levelприходит ~10 раз/сек- Команды работают:
set_volume,set_mic_volume,mute/unmute - Команды работают:
play_sound,set_led_brightness start_recording/stop_recording— возвращают WAV- Home Assistant работает (порт 10700) — не сломалось
- wyoming-led.py работает (порт 10500) — не сломалось
- При отключении клиента satellite не падает
Архитектура (справка)
Home Assistant ──10700──► Satellite
├── Event CLIENT :10500 → LED, MQTT
└── WebSocket SERVER :8675 ← Browser
Протокол команд (справка)
| Команда | Данные | Описание |
|---|---|---|
set_volume |
{"level": 0.0-1.0} |
Громкость TTS |
set_mic_volume |
{"level": 0.0-2.0} |
Чувствительность микрофона |
mute / unmute |
{} |
Заглушить/включить микрофон |
play_sound |
{"path": "/path.wav"} |
Воспроизвести WAV |
set_led_brightness |
{"brightness": 0-255} |
Яркость LED |
start_recording |
{} |
Начать запись с микрофона |
stop_recording |
{} |
Остановить, вернуть WAV (base64) |
trigger_event |
{"event_type": "...", "data": {...}} |
Отправить событие в HA |
Запуск
python3 -m wyoming_satellite \
--uri tcp://0.0.0.0:10700 \
--event-uri tcp://127.0.0.1:10500 \
--websocket-enabled \
--websocket-port 8675 \
--audio-level-enabled
Известные проблемы
- ALSA card hardcoded —
-c 2вWakeStreamingSatellite(см.satellite.py~1700) _kill_aplay_processes()— может убить сторонние aplay процессы- Recording buffer не ограничен — длительная запись ест память
trigger_event— создаёт сыройEvent, без валидации Wyoming