Is your feature request related to a problem? Please describe.
A camera entity from this integration cannot produce a still-image snapshot. The live stream works, because it uses the WebRTC path (async_handle_async_webrtc_offer). A snapshot request uses a different path (async_camera_image), and that method returns None:
async def async_camera_image(
self, width: int | None = None, height: int | None = None
) -> bytes | None:
"""Return bytes of camera image.
Currently not implemented"""
return None
Home Assistant treats a None result as a failure. Any caller of the snapshot endpoint gets an HTTP 500 error, with no exception in the log. This affects the picture-glance card, the camera.snapshot service, and any automation or notification that needs a still image.
Describe the solution you'd like
Add snapshot support to WyzeCamera.async_camera_image. One option: take a single frame from the WebRTC session, since the integration already opens one for live view. Another option: if a Wyze cloud endpoint returns a still image for the affected camera models, call that endpoint instead.
Describe alternatives you've considered
No workaround exists yet. The supported_features value for this entity is CameraEntityFeature.STREAM only. Home Assistant's usual ffmpeg-based frame-grab fallback needs a stream_source, and this entity does not set one, so that fallback does not apply either.
Additional context
- Confirmed against v0.1.39 (latest release),
custom_components/wyzeapi/camera.py.
- Reproduced on four devices: three of model
WYZE_CAKP2JFUS (Cam v3 hardware) and one of model HL_PAN3 (Pan Cam v3).
- Debug logs (
custom_components.wyzeapi: debug, wyzeapy: debug) show the Wyze cloud session works during a snapshot request. Normal get_property_list and get_event_list calls succeed. No call for a still image appears, and no error is logged.
Is your feature request related to a problem? Please describe.
A camera entity from this integration cannot produce a still-image snapshot. The live stream works, because it uses the WebRTC path (
async_handle_async_webrtc_offer). A snapshot request uses a different path (async_camera_image), and that method returnsNone:Home Assistant treats a
Noneresult as a failure. Any caller of the snapshot endpoint gets an HTTP 500 error, with no exception in the log. This affects the picture-glance card, thecamera.snapshotservice, and any automation or notification that needs a still image.Describe the solution you'd like
Add snapshot support to
WyzeCamera.async_camera_image. One option: take a single frame from the WebRTC session, since the integration already opens one for live view. Another option: if a Wyze cloud endpoint returns a still image for the affected camera models, call that endpoint instead.Describe alternatives you've considered
No workaround exists yet. The
supported_featuresvalue for this entity isCameraEntityFeature.STREAMonly. Home Assistant's usual ffmpeg-based frame-grab fallback needs astream_source, and this entity does not set one, so that fallback does not apply either.Additional context
custom_components/wyzeapi/camera.py.WYZE_CAKP2JFUS(Cam v3 hardware) and one of modelHL_PAN3(Pan Cam v3).custom_components.wyzeapi: debug,wyzeapy: debug) show the Wyze cloud session works during a snapshot request. Normalget_property_listandget_event_listcalls succeed. No call for a still image appears, and no error is logged.