Skip to content

Handle modern events without ding IDs - #556

Open
MasterDevwi wants to merge 1 commit into
python-ring-doorbell:masterfrom
MasterDevwi:fix/cocoa-doorbell-v5-support
Open

MasterDevwi wants to merge 1 commit into
python-ring-doorbell:masterfrom
MasterDevwi:fix/cocoa-doorbell-v5-support

Conversation

@MasterDevwi

@MasterDevwi MasterDevwi commented Sep 15, 2026 •

Copy link
Copy Markdown

Summary

Modern FCM events can omit event["ding"]["id"]. The current parser raises KeyError, and repeated notification errors can stop delivery.

Fix

  • Use event["eventito"]["timestamp"] as a stable fallback only when ding.id is absent.
  • Ignore an event when neither stable identifier exists.
  • Preserve existing duplicate/update semantics.

Tests

  • Missing ding.id fallback.
  • Duplicate/update behavior.
  • Malformed events without either ID.

Scope and coordination

PR #553 owns cocoa_doorbell_v5 and the other new device model/capability mappings. This PR deliberately contains no device-kind, model, or capability changes and complements #553.

Closed PR #518 identified the payload and confirmed that riid is not unique. The Home Assistant discussion at https://github.com/orgs/home-assistant/discussions/2520 provides downstream context; this parser-only PR alone does not create entities.

Validation

python -m compileall -q ring_doorbell tests and git diff --check pass. Full local pytest/Ruff validation was unavailable because package-index TLS prevented dependency installation.

@MasterDevwi
MasterDevwi force-pushed the fix/cocoa-doorbell-v5-support branch from 6dabfeb to 79d4003 Compare September 15, 2026 17:25
@MasterDevwi MasterDevwi changed the title Support Wired Doorbell Pro (3rd Gen) Handle modern events without ding IDs Sep 15, 2026

This branch has not been deployed

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

1 participant