Skip to content

Recognize cocoa_camera_v3, cocoa_floodlight_v2 and stickup_cam_mini_v3 kinds#529

Open
tesseractAZ wants to merge 2 commits into
python-ring-doorbell:masterfrom
tesseractAZ:recognize-cocoa-v3-floodlight-v2-mini-v3-kinds
Open

Recognize cocoa_camera_v3, cocoa_floodlight_v2 and stickup_cam_mini_v3 kinds#529
tesseractAZ wants to merge 2 commits into
python-ring-doorbell:masterfrom
tesseractAZ:recognize-cocoa-v3-floodlight-v2-mini-v3-kinds

Conversation

@tesseractAZ

Copy link
Copy Markdown

Summary

Three newer Ring camera kinds are currently unrecognized and logged as Unknown kind: …, so they fall through to the generic RingStickUpCam profile. The device is still created (snapshots and WebRTC live view work, since those are not kind-gated), but model resolves to "Unknown Stickup Cam" and has_capability() returns False for video/motion/battery/siren/light — so battery level reads unknown and the motion-detection / siren / light entities are missing.

This adds each kind to its existing device-kind family:

kind added to resulting model capabilities gained
cocoa_camera_v3 STICKUP_CAM_GEN3_KINDS Stick Up Cam (3rd Gen) battery, siren, motion, video
cocoa_floodlight_v2 FLOODLIGHT_CAM_PLUS_KINDS Floodlight Cam Plus light, siren, motion, video
stickup_cam_mini_v3 INDOOR_CAM_GEN2_KINDS Indoor Cam (2nd Gen) siren, motion, video

The change is purely additive (no behavior change for existing kinds), in the same spirit as #255.

Fixes #525.

How these were mapped

Observed on real hardware — a Home Assistant install with several of each of these models. The groupings follow the existing naming lineage (cocoa_camera/cocoa_floodlight and the stickup_cam_mini gen1/gen2 split) and match the observed capabilities: the cocoa_camera_v3 unit reports a battery level (consistent with the Stick Up Cam family in STICKUP_CAM_GEN3_KINDS), while the floodlight and indoor units are wired.

One open question

I grouped stickup_cam_mini_v3 with INDOOR_CAM_GEN2_KINDS, so its model reads "Indoor Cam (2nd Gen)". Given the existing stickup_cam_ministickup_cam_mini_v2 (gen1 → gen2) pattern, you may prefer a dedicated INDOOR_CAM_GEN3_KINDS with model "Indoor Cam (3rd Gen)" (wired into model and the siren/motion/video has_capability branches). The capability set is identical either way; happy to switch to that if you'd like — just say the word.

🤖 Generated with Claude Code

PHS and others added 2 commits June 14, 2026 11:00
These newer Ring camera kinds are logged as "Unknown kind" and fall through
to the generic profile, so battery/siren/light/motion-detection capabilities
and the model name are not reported. Add each to its existing device-kind
family so it is classified correctly:

- cocoa_camera_v3     -> STICKUP_CAM_GEN3_KINDS    (Stick Up Cam (3rd Gen))
- cocoa_floodlight_v2 -> FLOODLIGHT_CAM_PLUS_KINDS  (Floodlight Cam Plus)
- stickup_cam_mini_v3 -> INDOOR_CAM_GEN2_KINDS      (Indoor Cam (2nd Gen))

Observed on real hardware. Fixes python-ring-doorbell#525.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pins the classification added in the previous commit: each new kind maps to its
device-kind family's model name and capabilities, and model() never returns the
"Unknown Stickup Cam" fallback. Patches the `kind` property so it needs no
network fixtures.

- cocoa_floodlight_v2  -> Floodlight Cam Plus   (light + siren + motion)
- cocoa_camera_v3      -> Stick Up Cam (3rd Gen)(battery + siren + motion)
- stickup_cam_mini_v3  -> Indoor Cam (2nd Gen)  (siren + motion)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aaronwolen

Copy link
Copy Markdown

Hey there, I started working on stickup_cam_mini_v3 support last weekend and only noticed this PR after pushing. Happy to defer to this one, but wanted to share a few observations from testing 3 of these in a Home Assistant install.

My approach (#531) adds a dedicated INDOOR_CAM_PLUS_KINDS constant and maps stickup_cam_mini_v3 to "Indoor Cam Plus" rather than grouping it into INDOOR_CAM_GEN2_KINDS. My rationale was "Indoor Cam Plus" is the actual product name shown in the Ring app, and the stickup_cam_mini → stickup_cam_mini_v2 lineage already maps neatly to gen1 → gen2. Dropping v3 into INDOOR_CAM_GEN2_KINDS kinda conflates two distinct products under the same label. A dedicated constant also keeps the pattern consistent with how FLOODLIGHT_CAM_PLUS_KINDS is separated from FLOODLIGHT_CAM_KINDS, for example.

But I did verify that all capabilities (motion detection, video, siren) worked as expected with this mapping.

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.

Unknown kind: cocoa_camera_v3 — newer Ring cameras unsupported

2 participants