Add documentation for two-way talk with UniFi Protect cameras

Step-by-step setup guide covering:
- Protect Integration API key generation (UNVR vs UDM)
- Camera ID lookup via API with hasSpeaker compatibility check
- Finding camera IPs for RTP talkback target
- RTSP stream key location in Protect settings
- go2rtc exec backchannel configuration
- talkback.sh wrapper script (API activation + keepalive + ffmpeg)
- Remote access: port 8555 forwarding, STUN candidates
- Cloudflare tunnel limitation (HTTP/WS only, not WebRTC media)
- CGNAT/double-NAT alternatives (Tailscale, TURN, WireGuard VPS)
- Echo suppression (half-duplex, handled automatically in WebRTCPlayer)
- Complete end-to-end configuration example
This commit is contained in:
jacobwtyler 2026-03-15 17:53:41 -05:00
parent a437d396ea
commit 53f3dcc688

View File

@ -282,7 +282,7 @@ for cam in json.load(sys.stdin):
"
```
Look for cameras where `speaker=True`. Save the `id` value — this is the camera ID needed for the talkback script. Camera IDs are hex strings like `65d8aa4001945203e70003ea`.
Look for cameras where `speaker=True`. Save the `id` value — this is the camera ID needed for the talkback script. Camera IDs are hex strings like `6abc12340056789003e700def`.
### Step 3: Find the Camera IP Address
@ -452,13 +452,13 @@ go2rtc:
front_door:
- "rtspx://192.168.1.50:7441/abc123streamkey#backchannel=0"
- "ffmpeg:front_door#audio=opus"
- "exec:bash /config/talkback.sh 65d8aa4001945203e70003ea 192.168.1.60#backchannel=1#audio=pcma/8000"
- "exec:bash /config/talkback.sh 6abc12340056789003e700def 192.168.1.60#backchannel=1#audio=pcma/8000"
```
Where:
- `192.168.1.50` — UNVR IP address
- `abc123streamkey` — RTSP stream key from Protect camera settings
- `65d8aa4001945203e70003ea` — camera ID from the Protect API (Step 2)
- `6abc12340056789003e700def` — camera ID from the Protect API (Step 2)
- `192.168.1.60` — camera's direct IP address (Step 3)
Docker-compose environment: