From 53f3dcc6882521bf382d2ddb93491787e1e49f3d Mon Sep 17 00:00:00 2001 From: jacobwtyler Date: Sun, 15 Mar 2026 17:53:41 -0500 Subject: [PATCH] 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 --- docs/docs/configuration/restream.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/configuration/restream.md b/docs/docs/configuration/restream.md index fd5662b50..dfac3db54 100644 --- a/docs/docs/configuration/restream.md +++ b/docs/docs/configuration/restream.md @@ -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: