Skip to content

Camera stream#800

Open
zackcornelius wants to merge 68 commits intoSecKatie:masterfrom
zackcornelius:camera_stream
Open

Camera stream#800
zackcornelius wants to merge 68 commits intoSecKatie:masterfrom
zackcornelius:camera_stream

Conversation

@zackcornelius
Copy link
Copy Markdown

@zackcornelius zackcornelius commented Mar 7, 2026

This adds webRTC stream implementation based off the my.wyze.com/live web implementation

Tested with Wyze v2, v3, and Floodlight pro, but the mechanism appears to be the same (using Kinesis video streams with webRTC) for all wyze web view supported cameras (which is maybe all of them?)

This does use the cloud implementation of streaming, rather than the local tutk interface, but does not require a local streaming server (no go2rtc, etc), as it uses HA's native webRTC implementation.

@zackcornelius zackcornelius requested a review from SecKatie as a code owner March 7, 2026 15:38
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Mar 7, 2026

CLA assistant check
All committers have signed the CLA.

Co-authored-by: Brian Rogers <brg468@hotmail.com>
Signed-off-by: Diogo Mendes <diogo@ymail.com>
@diogormendes
Copy link
Copy Markdown

@zackcornelius , is this PR still alive ?

@zackcornelius
Copy link
Copy Markdown
Author

zackcornelius commented Mar 21, 2026 via email

Copy link
Copy Markdown
Collaborator

@brg468 brg468 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small addition to hopefully avoid the blocking call.

@brg468
Copy link
Copy Markdown
Collaborator

brg468 commented Mar 21, 2026

@zackcornelius while you're cleaning things up can you address some of the formatting issues, like unsorted imports and missing docstrings. That's been on my list of things to do for the other platforms and this will help out with one less to tackle. Thanks!

Implement buffering for ICE candidates in WebRTC
@zackcornelius
Copy link
Copy Markdown
Author

@diogormendes - Since I've merged your PR to my branch, can you sign the CLA? There's a comment at the top of the issue with instructions

zackcornelius and others added 2 commits March 22, 2026 12:37
Co-authored-by: Brian Rogers <brg468@hotmail.com>
Signed-off-by: Zack Cornelius <38732107+zackcornelius@users.noreply.github.com>
@brg468 brg468 self-requested a review March 22, 2026 18:02
@zackcornelius zackcornelius requested a review from SecKatie March 22, 2026 21:24
@zackcornelius
Copy link
Copy Markdown
Author

@SecKatie , @brg468 - I think this is probably good for re-review now, did some cleanup, incorporated fixes, tested. Seems good from my end.

@zackcornelius
Copy link
Copy Markdown
Author

@SecKatie - Can you release wyzeapy 0.5.33? Seems the changes are working well for several people here

brg468
brg468 previously approved these changes Mar 23, 2026
Copy link
Copy Markdown
Collaborator

@brg468 brg468 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple things I think would help with getting current camera status info, otherwise looks good to me!

@brg468
Copy link
Copy Markdown
Collaborator

brg468 commented Mar 23, 2026

       if data["property"]["iot-device::iot-state"] != 1:
            raise UnknownApiError(
                "Camera is offline according to get_stream_info response: " + str(data)
            )
        if data["property"]["iot-device::iot-power"] != 1:
            raise UnknownApiError(
                "Camera is off according to get_stream_info response: " + str(data)
            )

Over in the other lib, I played around with not raising an error for the cam being off or unavailable and instead still fetching the config on startup. This way if a cam comes online or is turned on after startup it would still be able to stream. It seemed to work fine when I tried it, but I'll defer to you if think there's a reason that wouldn't always be the case.

@brg468
Copy link
Copy Markdown
Collaborator

brg468 commented Mar 23, 2026

I think the hassfest check is failing because of the added line in manifest.json

[Error: R] [MANIFEST] Manifest keys are not sorted correctly: domain, name, then alphabetical order

@diogormendes
Copy link
Copy Markdown

Just FYI, ive just updated to thr latest firmware released today for the v3 and everything still working

@zackcornelius
Copy link
Copy Markdown
Author

@brg468 - Applied your suggestions, and (hopefully) fixed up the hassfest check

Copy link
Copy Markdown
Collaborator

@brg468 brg468 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Tested with multiple cameras and browsers and works great.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants