Skip to content

Add support for cocoa_doorbell_v3; KeyError in existing_doorbell_type on unmapped chime type 3 #543

Description

@pkoken

Summary

Two related problems with a Ring battery doorbell whose API kind is cocoa_doorbell_v3:

  1. Unmapped device kind. The device appears in Home Assistant (core 2026.8.1, ring-doorbell 0.9.14) as "Unknown Doorbell". Only basic entities are created (camera, battery, volume, last_activity, wifi). The ding and motion event entities are not created, even though presses and motion alerts work normally in the Ring app. Same class as Add support for Ring Wired Video Doorbell Plus (2nd Gen) #521 (cocoa_doorbell_v4w) and Add support for Doorbell Pro (3rd Gen) #517cocoa_doorbell_v3 is not yet reported.

  2. Crash on unmapped in-home chime type. With the Ring app's In-Home Chime Type set to "Digital Type 2", the API returned chime_settings: {"type": 3}. DOORBELL_EXISTING_TYPE maps only 0/1/2, so existing_doorbell_type (ring_doorbell/doorbot.py:193) raises KeyError: 3, which aborts Home Assistant's entire ring switch platform for all devices in the account. This is the same defect as KeyError for unknown existing_doorbell_type values (3, 5) on newer doorbells #506 (chime types 3 and 5, cocoa_doorbell_v2), which included a mapping table and a proposed graceful-degradation fix but was closed as stale without a fix — this is a second affected device confirming KeyError for unknown existing_doorbell_type values (3, 5) on newer doorbells #506's type-3 mapping.

File "homeassistant/components/ring/switch.py", line 71, in <lambda>
    and device.existing_doorbell_type in IN_HOME_CHIME_IS_PRESENT
File "ring_doorbell/doorbot.py", line 193, in existing_doorbell_type
    return DOORBELL_EXISTING_TYPE[dtype]
KeyError: 3

Workaround confirmed: setting In-Home Chime Type to "None" in the Ring app changes the API value to type: 2 and the switch platform loads again.

Suggest (a) adding cocoa_doorbell_v3 to the doorbell kind mappings, and (b) implementing #506's Option 2 — existing_doorbell_type returning a safe default/None for unknown chime type values instead of raising — so one unmapped device can't take down the platform.

Device

  • API kind: cocoa_doorbell_v3 (also health.device_type)
  • Battery present (QRBPv1, reports 100%), wired power also present (ac_power: 1, ext_power_state: 3)
  • Firmware: cam-1.32.12100
  • Added to account: 2026-05-24

Environment

  • Home Assistant OS, core 2026.8.1
  • ring-doorbell 0.9.14 (latest at time of report)

Full integration diagnostics available on request (redacted dump).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions