WebRTC/RTSP/RTMP/LL-HLS bridge for Wyze cams in a docker container
Create a local WebRTC, RTSP, RTMP, or HLS/Low-Latency HLS stream for most of your Wyze cameras including the outdoor, doorbell, and 2K cams.
No modifications, third-party, or special firmware required.
It just works!
Streams direct from camera without additional bandwidth or subscriptions.
Based on @noelhibbard's script with kroo/wyzecam and bluenviron/mediamtx.
Please consider ⭐️ starring or ☕️ sponsoring this project if you found it useful, or use the affiliate link when shopping on amazon!
[!IMPORTANT] As of May 2024, you will need an API Key and API ID from: https://support.wyze.com/hc/en-us/articles/16129834216731.
[!WARNING] Please double check your router/firewall and do NOT forward ports or enable DMZ access to the bridge unless you know what you are doing!
See the supported cameras section for additional information.
Install docker and run:
docker run -p 8554:8554 -p 8888:8888 -p 5000:5000 mrlt8/wyze-bridge
You can then use the web interface at http://localhost:5000
where localhost is the hostname or ip of the machine running the bridge.
See basic usage for additional information or visit the wiki page for additional information on using the bridge as a Home Assistant Add-on.
-20021
error when sending multiple ioctl commands to the camera.hashed:
WYZE_PASSWORD=hashed:<your-tripple-hashed-password>
notifications
GET/SET wyze app push notifications on/off (CLOUD).motion_detection
GET/SET motion detection on/off (LOCAL).KNOWN BUG: stream path may become unresponsive after stopping when ON_DEMAND is enabled until the onDemand timeout clears (60s).
blank
option when setting cruise_points
as it would be ignored anyways.false
(#1232)WYZE_EMAIL
, WYZE_PASSWORD
, API_ID
,API_KEY
, WB_USERNAME
, WB_PASSWORD
, and WB_API
AUDIO_CODEC
environment variable.aac_eld
(Wyze Cam v4) even when WebRTC is not enabled (#1236) Thanks @Dot50Cal!MQTT_DTOPIC
to something other than homeassistant
(#1232)FORCE_FPS
option for all cameras #1161FORCE_FPS
option #1161WB_AUTH
is enabled.(#1189) Thanks @kiwi-cam!api
header authentication option for the RES API when WB_AUTH
is enabled:
-H "api: MyWbApiKey"
[!IMPORTANT] WebUI and stream authentication will be enabled by default to prevent unintentional access.
Default Authentication
WB_AUTH=False
explicitly.WB_AUTH
is enabled.WebUI Authentication
WB_USERNAME
and WB_PASSWORD
are not set, the system will try to use WYZE_EMAIL
and WYZE_PASSWORD
.wbadmin
with a randomly generated WB_PASSWORD
, which will be logged and stored in a wb_password
file within the tokens directory.Stream and REST API Authentication
wb_api
file in your tokens directory.
WB_API
environment variable or volume mount the /tokens
directory.api
query parameter.
http://localhost:5000/api/<camera-name>/state?api=<your-wb-api-key>
wb
FIXES
MOTION_API
when substreams were enabled. (#1125) Thanks @kiwi-cam!FORCE_FPS
were broken (#1161) Thanks @jarrah31!NEW
QUALITY
. Can now go as high as your network can handle. e.g. - QUALITY=HD8000
MOTION_API
and push to mqtt (#709) (#970)MOTION_WEBHOOKS
.OFFLINE_WEBHOOKS
will send a POST request when the bridge cannot connect to a camera because it is offline. Replaces ifttt_webhook
.POTENTIALLY BREAKING
MOTION_WEBHOOKS
now makes a POST request instead of a GET request.MOTION_WEBHOOKS
includes the event timestamp in the message body which may require you to adjust the timezone for your container with the TZ
environment.ifttt_webhook
as webhooks are no longer free with IFTTT.WEB_AUTH
-> WB_AUTH
WEB_USERNAME
-> WB_USERNAME
WEB_PASSWORD
-> WB_PASSWORD
HOME ASSISTANT
[!TIP] Home Assistant: you may need to re-add the repo if you cannot see the latest updates.
Should work on most x64 systems as well as on most modern arm-based systems like the Raspberry Pi 3/4/5 or Apple Silicon M1/M2/M3.
The container can be run on its own, in Portainer, Unraid, as a Home Assistant Add-on, locally or remotely in the cloud.
[!NOTE]
Some network adjustments may be needed - see this discussion for more information.
[!IMPORTANT] Some newer camera firmware versions may cause issues with remote access via P2P. Local "LAN" access seems unaffected at this time. A temporary solution is to use a VPN. See the OpenVPN example.
Camera | Model | Tutk Support | Latest FW |
---|---|---|---|
Wyze Cam v1 [HD only] | WYZEC1 | ✅ | 3.9.4.x |
Wyze Cam V2 | WYZEC1-JZ | ✅ | 4.9.9.x |
Wyze Cam V3 | WYZE_CAKP2JFUS | ✅ | 4.36.11.x |
Wyze Cam V4 [2K] | HL_CAM4 | ✅ | 4.52.3.x |
Wyze Cam Floodlight | WYZE_CAKP2JFUS | ✅ | 4.36.11.x |
Wyze Cam Floodlight V2 [2k] | HL_CFL2 | ✅ | 4.53.2.x |
Wyze Cam V3 Pro [2K] | HL_CAM3P | ✅ | 4.58.11.x |
Wyze Cam Pan | WYZECP1_JEF | ✅ | 4.10.9.x |
Wyze Cam Pan v2 | HL_PAN2 | ✅ | 4.49.11.x |
Wyze Cam Pan v3 | HL_PAN3 | ✅ | 4.50.4.x |
Wyze Cam Pan Pro [2K] | HL_PANP | ✅ | - |
Wyze Cam Outdoor | WVOD1 | ✅ | 4.17.4.x |
Wyze Cam Outdoor v2 | HL_WCO2 | ✅ | 4.48.4.x |
Wyze Cam Doorbell | WYZEDB3 | ✅ | 4.25.1.x |
Wyze Cam Doorbell v2 [2K] | HL_DB2 | ✅ | 4.51.1.x |
Wyze Cam Doorbell Pro 2 | AN_RDB1 | ❓ | - |
Wyze Battery Cam Pro | AN_RSCW | ⚠️ | - |
Wyze Cam Flood Light Pro [2K] | LD_CFP | ⚠️ | - |
Wyze Cam Doorbell Pro | GW_BE1 | ⚠️ | - |
Wyze Cam OG | GW_GC1 | ⚠️ | - |
Wyze Cam OG Telephoto 3x | GW_GC2 | ⚠️ | - |
This is similar to the docker run command, but will save all your options in a yaml file.
docker-compose.yml
file with your wyze credentials.docker-compose up
.Once you're happy with your config you can use docker-compose up -d
to run it in detached mode.
[!CAUTION] If your credentials contain a
$
character, you need to escape it with another$
sign (e.g.,pa$$word
>pa$$$$word
) or leave your credentials blank and use the webUI to login.
[!NOTE] You may need to update the WebUI links if you're changing the ports or using a reverse proxy.
To update your container, cd
into the directory where your docker-compose.yml
is located and run:
docker-compose pull # Pull new image
docker-compose up -d # Restart container in detached mode
docker image prune # Remove old images
Visit the wiki page for additional information on Home Assistant.
The bridge features a basic Web-UI which can display a preview of all your cameras as well as direct links to all the video streams.
The web-ui can be accessed on the default port 5000
:
http://localhost:5000/
See also:
WebRTC should work automatically in Home Assistant mode, however, some additional configuration is required to get WebRTC working in the standard docker mode.
WebRTC requires two additional ports to be configured in docker:
ports:
...
- 8889:8889 #WebRTC
- 8189:8189/udp # WebRTC/ICE
In addition, the WB_IP
env needs to be set with the IP address of the server running the bridge.
environment:
- WB_IP=192.168.1.116
See documentation for additional information/options.
All environment variables are optional.
Video Streaming:
General Wyze: