Skip to content

Add device mappings for newer Ring cameras and doorbells#503

Open
mmunchinski wants to merge 1 commit intopython-ring-doorbell:masterfrom
mmunchinski:master
Open

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

Conversation

@mmunchinski
Copy link

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>
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

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
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"

Copy link

@2nolife 2nolife Dec 30, 2025

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
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.

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

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
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"

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.

2 participants