Commit Graph
11 Commits
Author SHA1 Message Date
sirmrak 4a79874807 feat: Web Client — canvas визуализация от satellite RMS
Изменения:
- Удалён локальный микрофон (initMicVisualizer)
- Canvas рисует RMS историю от satellite
- 64 столбика с градиентом (зелёный → красный)
- Меньше логов (только если RMS > 0.05)

Преимущества:
- ✅ Показывает реальную громкость satellite
- ✅ Нет зависимости от микрофона браузера
- ✅ Меньше спама в логах
2026-05-21 19:26:53 +03:00
sirmrak 40382afac5 fix: _send_audio_level — правильное создание Event
Проблема: Event(...).event() не существует

Решение: Event(type=..., data=...) напрямую
2026-05-21 15:19:06 +03:00
sirmrak 3d9ebfbb0a fix: trigger_event — правильное создание Wyoming Event
Проблема: WyomingEvent(event_type, data).event() не работает

Решение: Использовать Event(type=..., data=...) напрямую
2026-05-21 14:55:27 +03:00
sirmrak c7bf061611 feat: Web Client разработка — план и документация
Исправления:
- fix: баг volume/level — поддерживаются оба названия параметра
- docs: добавлен раздел Web Client в websocket-server-plan.md
- docs: создан web-client/README.md с полной документацией

Функции Web клиента:
- ✅ set_volume (громкость) — работает
- ✅ mute/unmute — работает
- ⏳ audio-level RMS — требует тестирования
- ⏳ LED управление — требует тестирования
- ⏳ Transcript — требует тестирования

Этапы разработки:
- WC-1: Базовая интеграция ✅
- WC-2: Визуализация (в процессе)
- WC-3: Дополнительные функции
- WC-4: UI/UX
2026-05-21 13:02:35 +03:00
sirmrak 99fa55e15e fix: добавить задержку 500ms после подключения USB устройства
Проблема: устройство может быть не готово к командам сразу после
подключения, что вызывает USB reset.

Решение: time.sleep(0.5) после нахождения устройства.
2026-05-20 20:19:44 +03:00
sirmrak 5a5cac90b1 fix: НЕ делать detach_kernel_driver() — это отключает audio интерфейсы!
Проблема: detach_kernel_driver(0) отключает ядро от интерфейса 0,
который является частью audio function (интерфейсы 0-2).

Решение: Убрать detach_kernel_driver() вообще.
Control transfer с CTRL_TYPE_VENDOR работает без claim interface
и не требует отключения ядра.

Это как в xvf_host.py — там тоже нет detach_kernel_driver().
2026-05-20 20:16:41 +03:00
sirmrak d9868a0c5b fix: websockets 16.0 API — убрать аргумент 'path' из handle_websocket()
В websockets 16.0 изменилась сигнатура handler:
- Было: async def handler(websocket, path)
- Стало: async def handler(websocket)

Fix для satellite.py:
- handle_websocket(websocket) без path
- Добавлен комментарий про websockets 16.0+
2026-05-20 18:10:33 +03:00
sirmrak b28052e93e feat: добавить Audio Level monitoring — RMS громкости микрофона в WebSocket
- settings.py: audio_level_enabled, audio_level_interval_ms
- satellite.py: _calculate_rms() — вычисление RMS (0.0-1.0)
- satellite.py: _send_audio_level() — фоновая задача отправки
- satellite.py: _last_mic_level, _audio_level_task атрибуты
- satellite.py: интеграция в _start() / _stop()
- satellite.py: вычисление RMS в event_from_mic() для всех классов
- __main__.py: CLI --audio-level-enabled, --audio-level-interval-ms

Событие в WebSocket (10 раз в секунду):
{type: audio-level, data: {level: 0.42}}
2026-05-20 17:17:18 +03:00
sirmrakandQwen-Coder 6398dc6a41 feat: добавить WebSocket сервер для приёма событий и команд
- settings.py: websocket_enabled, websocket_host, websocket_port
- satellite.py: WebSocket сервер + runtime атрибуты (_runtime_volume, _runtime_led_brightness)
- satellite.py: handle_websocket_command() для обработки команд
- satellite.py: _broadcast_to_websocket() для рассылки событий
- satellite.py: интеграция в _start() / _stop()
- __main__.py: CLI аргументы --websocket-enabled/host/port

Поддерживаемые команды:
- set_volume: изменить громкость
- mute/unmute: микрофон
- play_sound: воспроизвести WAV
- set_led_brightness: яркость LED
- trigger_event: отправить событие в HA

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-05-20 16:51:27 +03:00
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
sirmrak 87502c55e0 Загрузка исходника 2026-05-09 11:49:44 +03:00