Skip to content

Add device mappings for newer Ring cameras and doorbells - #503

Closed
mmunchinski wants to merge 1 commit into
python-ring-doorbell:masterfrom
mmunchinski:master
Closed

Add device mappings for newer Ring cameras and doorbells#503
mmunchinski wants to merge 1 commit into
python-ring-doorbell:masterfrom
mmunchinski:master

Conversation

@mmunchinski

Copy link
Copy Markdown

Summary

  • Add support for 5 new Ring devices confirmed with real hardware:
    • Outdoor Cam Plus (cocoa_camera_v2)
    • Outdoor Cam Pro 4K (cocoa_camera_v3)
    • Stick Up Cam Pro (stickup_cam_medusa)
    • Floodlight Pro Gen 2 (cocoa_floodlight_v2)
    • Wired Doorbell Pro 4K (cocoa_doorbell_v5)
  • Add capability mappings (siren, light, battery, motion/video) based on hardware testing

Test plan

  • All existing tests pass (40/40)
  • Ruff linting passes
  • Manual testing with actual hardware (contributor has confirmed device kinds)

🤖 Generated with Claude Code

Add support for the following devices confirmed with real hardware:
- Outdoor Cam Plus (cocoa_camera_v2)
- Outdoor Cam Pro 4K (cocoa_camera_v3)
- Stick Up Cam Pro (stickup_cam_medusa)
- Floodlight Pro Gen 2 (cocoa_floodlight_v2)
- Wired Doorbell Pro 4K (cocoa_doorbell_v5)

Also adds capability mappings (siren, light, battery, motion, video)
based on hardware testing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Comment thread ring_doorbell/const.py
STICKUP_CAM_WIRED_KINDS = STICKUP_CAM_ELITE_KINDS # Deprecated
STICKUP_CAM_GEN3_KINDS = ["cocoa_camera"]
STICKUP_CAM_PRO_KINDS = ["stickup_cam_medusa"]
OUTDOOR_CAM_PLUS_KINDS = ["cocoa_camera_v2"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Ring cocoa_camera_v2 is the internal hardware identifier for the Ring Indoor Cam (2nd Generation)
This model, released as an iterative improvement over the original Indoor Cam, is designed for residential indoor security and pet monitoring.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Both of my Indoor Cam Gen 2s return "stickup_cam_mini_v2"

@2nolife 2nolife Dec 30, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Ring is such a mess with its KINDs as there is no official and this pyton library is reverse engineering.

cocoa_camera_v2: [Indoor Cam 2nd Gen] OR some early-batch [Outdoor Cam Plus (2K)] units using fallback IDs.
So it make sence to stick it into GEN3 to support motion and siren.
And this will be fixed by #499

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I can only speak to what I can validate directly with my devices and the ring api itself:

Indoor Cam - stickup_cam_mini (1 instance)
Outdoor Cam Plus (2K) - cocoa_camera_v2 (7 instances)
Stickup Cam Gen 3 - cocoa_camera (3 instances)
Video Doorbell 4 - doorbell_oyster (1 instance)
Stickup Cam Pro - stickup_cam_medusa (1 instance)
Floodlight Pro (2K) - floodlight_pro (1 instance)
Floodlight Pro Gen 2 (4K) - cocoa_floodlight_v2 (1 instance)
Indoor Cam Gen 2 - stickup_cam_mini_v2 (2 instances)
Wired Doorbell Pro (4K) - cocoa_doorbell_v5 (1 instance)
Video Doorbell Plus - cocoa_doorbell_v2 (1 instance)
Outdoor Cam Pro (4K) - cocoa_camera_v3

The above mentioned PR only addresses one of the camera types mentioned in this particular PR. In terms of implementation I do not have a strong opinion as to if new devices are added under existing mappings or new ones are established due to differences of device model (and technically capability) -- I will leave that for the maintainer to decide. I can recognize merits for either approach.

Comment thread ring_doorbell/const.py
DOORBELL_BATTERY_KINDS = ["df_doorbell_clownfish"]
PEEPHOLE_CAM_KINDS = ["doorbell_portal"]
DOORBELL_GEN2_KINDS = ["cocoa_doorbell", "cocoa_doorbell_v2"]
DOORBELL_PRO_4K_KINDS = ["cocoa_doorbell_v5"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

In the Ring ecosystem, cocoa_doorbell_v5 is the internal hardware identifier for the Ring Video Doorbell 4.
This model follows the "Cocoa" development lineage for battery-powered doorbells. While earlier versions like v2 referred to the 2nd Generation Video Doorbell, the v5 designation is specifically linked to the Video Doorbell 4, known for its "Color Pre-Roll" technology.
The internal hardware identifier cocoa_doorbell_v5 refers to the Ring Video Doorbell 4, which features a resolution of 1080p HD.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

My video doorbell 4 returns "doorbell_oyster"

@github-actions

Copy link
Copy Markdown

There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days.
If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!

@github-actions github-actions Bot added the stale Stale PRs and Issues label Mar 31, 2026
@github-actions github-actions Bot closed this Apr 7, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

stale Stale PRs and Issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants