Add robust mumble bridge connect and channel-id handling

This commit is contained in:
Kai
2026-02-14 15:22:21 +01:00
parent e4170d9f42
commit 179440858b
4 changed files with 425 additions and 0 deletions

54
mumble-bridge/README.md Normal file
View File

@@ -0,0 +1,54 @@
# EVS Mumble Bridge
Single-device UDP-to-Mumble bridge.
## Purpose
This service receives PCM16LE mono audio over UDP from one EVS client and forwards it as a dedicated Mumble user.
Deploy one container per EVS client so every device appears as its own Mumble user.
## Required ENV
- `MUMBLE_HOST`: Mumble server host/IP
- `MUMBLE_PORT`: default `64738`
- `MUMBLE_USERNAME`: username for this EVS client (example: `EVS-esp32-evs-1`)
- `MUMBLE_PASSWORD`: optional
- `UDP_LISTEN_PORT`: UDP port this client will stream to
## Optional ENV
- `DEVICE_ID`: label for logs (default `esp32-evs-1`)
- `MUMBLE_CHANNEL`: move bot to channel name after connect
- nested path is supported: `KHNM/EVS`
- `MUMBLE_CHANNEL_ID`: move bot by numeric channel ID (takes precedence over `MUMBLE_CHANNEL`)
- `MUMBLE_CONNECT_TIMEOUT_SEC`: wait time for ready state (default `30`)
- `MUMBLE_CONNECT_STRICT`: `true|false` (default `false`)
- `false`: continue even if `is_ready()` does not become true in time
- `true`: fail and reconnect on timeout
- `INPUT_SAMPLE_RATE`: default `16000`
- `MUMBLE_SAMPLE_RATE`: default `48000`
- `MUMBLE_FRAME_MS`: default `20`
- `MUMBLE_AUDIO_GAIN`: default `1.0`
## Example docker compose service
```yaml
services:
evs-mumble-esp32-1:
image: git.khnm-zimmerling.de/kai/evs-mumble-bridge:latest
container_name: evs-mumble-esp32-1
restart: unless-stopped
ports:
- "5004:5004/udp"
environment:
DEVICE_ID: "esp32-evs-1"
UDP_LISTEN_HOST: "0.0.0.0"
UDP_LISTEN_PORT: "5004"
INPUT_SAMPLE_RATE: "16000"
MUMBLE_HOST: "10.100.3.50"
MUMBLE_PORT: "64738"
MUMBLE_USERNAME: "EVS-esp32-evs-1"
MUMBLE_PASSWORD: ""
MUMBLE_CHANNEL: "Bots"
```