Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,75 @@ All notable changes to this project are documented here.

## [Unreleased]

## [0.10.0] - 2026-09-13

### Added

- Support Ring-MQTT Ding and motion binary sensors as last-activity sources,
including renamed same-device companions and ISO, Unix-second, and
Unix-millisecond timestamps.
- Refresh Ring-MQTT snapshots through the device's **Take Snapshot** button and
wait for an explicit new image timestamp before saving the JPEG.
- Play Ring-MQTT Event Select recordings directly in the existing **Last
recording** view, refreshing missing, expiring, failed, or transcoding URLs
through Home Assistant state updates.
- Support official Ring and Ring-MQTT entities in one phone-notification
blueprint, with the same visual inputs and notification flow.

### Changed

- Resolve recording, Live, snapshot, doorbell, and activity entities as
independent source roles so official Ring, Ring-MQTT, and mixed setups share
the same Ring View configuration and interface.
- Discover renamed same-device Ring-MQTT companion entities from Home
Assistant's registry while refusing disabled or ambiguous matches.
- Keep the visual editor's sections, controls, and preview geometry consistent
across official Ring and Ring-MQTT source profiles.
- Keep two-way audio limited to an official Ring Live camera because Ring-MQTT
exposes one-way RTSP without a microphone return path.
- Send the phone notification immediately, then update that same alert only
after a fresh official recording or Ring-MQTT Ding snapshot is available.

### Fixed

- Prevent Ring-MQTT snapshot saves from reporting success while persisting a
stale image.
- Reject non-playable Ring-MQTT recording sentinels and URLs that are too close
to expiry, with one bounded refresh attempt after a browser playback failure.
- Cancel pending snapshot and recording refreshes when the viewer closes,
changes mode, becomes hidden, or is suspended.
- Detect rapid and repeated Ring-MQTT doorbell presses from advancing
`lastDingTime`, `lastDing`, or entity-update timestamps while the configured
Ding sensor remains `on`, without relying on a fixed debounce window.
- Recover a genuinely fresh Ring alert after the dashboard loads or an entity
reconnects, while continuing to ignore stale retained MQTT state.
- Prefix the visible relative time with **Activity** so it cannot be mistaken
for the age of an older recording selected through Ring-MQTT Event Select.
- Ignore stale, backward, malformed, and implausibly future doorbell markers,
and avoid attaching an old notification preview after a timeout.

### Documentation

- Add a plain-language official Ring versus Ring-MQTT feature table and a
recommended mixed-entity setup to the README.
- Explain exactly where to choose **Ding 1**, **Motion 1**, or a transcoded
Ring-MQTT Event Select recording before opening **Last recording**.
- Align the doorbell guide with the current temporary bell and centered **Open
live view** behavior.
- Document how to update the blueprint and configure its official Ring or
Ring-MQTT Ding and preview sources.
- Publish the code- and test-backed analysis of the official Ring realtime
listener failure and its recommended upstream repair sequence.

### Tests

- Pass 194 unit and component tests and 116 browser scenarios across desktop
and phone projects.
- Cover provider parity, renamed entities, mixed sources, repeated Dings,
reconnect freshness, timestamp normalization, snapshot refresh, Event Select
playback, signed-URL expiry, cancellation, accessibility, and responsive
layout behavior.

## [0.10.0-beta.1] - 2026-09-13

### Added
Expand Down
85 changes: 73 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

## Your Ring camera. One card. Recording, Live, snapshots, talkback, and door access.

See what happened, check what is happening, save the moment, and answer the door without leaving the same viewer. Ring View brings Ring's separate recording and live camera entities together in one Home Assistant dashboard card.
See what happened, check what is happening, save the moment, and answer the door without leaving the same viewer. Ring View brings Ring media together in one Home Assistant dashboard card. It supports Home Assistant's official Ring integration, Ring-MQTT, or a mix of entities from both.

<p align="center">
<a href="https://github.com/thomasgregg/ring-view/blob/main/docs/images/ring-view-modes-rounded.png">
Expand All @@ -20,6 +20,7 @@ See what happened, check what is happening, save the moment, and answer the door
## Contents

- [What Ring View can do](#what-you-can-do)
- [Choose official Ring, Ring-MQTT, or both](#choose-official-ring-ring-mqtt-or-both)
- [Install and get started](#get-started)
- [Configure visually](#configure-visually)
- [Choose the dashboard card behavior](#choose-how-the-dashboard-card-works)
Expand All @@ -39,20 +40,53 @@ See what happened, check what is happening, save the moment, and answer the door
- **Save a moment from Live.** Optionally show one snapshot button that saves a timestamped image through Home Assistant, with no custom automation.
- **See when something last happened.** Optionally show a localized relative time from a timestamp sensor, event entity, or date-and-time helper.
- **Know when someone rings.** A temporary doorbell alert works with official Ring event entities and Ring-MQTT Ding binary sensors. Tap it to open Live.
- **Take the doorbell beyond the dashboard.** The included notification blueprint sends a phone alert, then adds a preview when the recording is ready.
- **Take the doorbell beyond the dashboard.** The included notification blueprint works with official Ring and Ring-MQTT, sends a phone alert, then adds a fresh camera preview when it is ready.
- **Make it yours without YAML.** Choose cameras, opening behavior, layout, and doorbell features in the visual editor.
- **Use it across your home.** Responsive phone, tablet, and desktop layouts; Home Assistant themes; English and German; keyboard and screen-reader support.

## Choose official Ring, Ring-MQTT, or both

Ring View supports both Home Assistant's built-in **Ring integration** and the
separate [**Ring-MQTT add-on**](https://github.com/tsightler/ring-mqtt). You do
not have to choose one provider for the whole card: each feature can use the
source that works best for it. The visual editor, viewer, controls, and layout
remain the same whichever entities you select.

| Ring View feature | Official Ring integration | Ring-MQTT | Our recommendation |
| --- | --- | --- | --- |
| **Last recording** | ✅ Select the **Last recording** camera. It is the simplest option, but [some cameras using 24/7 recording can remain on an old clip](https://github.com/home-assistant/core/issues/176299). | ✅ Select **Event Select**, then choose the event to play. **Ding 1** is the newest doorbell press; **Motion 1** is the newest motion event. | Use Event Select if the official camera is stale or missing. Otherwise, the official camera is simpler. |
| **Live video** | ✅ Select the **Live view** camera. It works directly and is the only source that supports Ring View talkback. A [known upstream cleanup problem](docs/backend-patch.md) can affect repeated Live sessions on some systems. | ✅ Works after a one-time Home Assistant camera setup using Ring-MQTT's Live stream. It provides video and audio from the doorbell, but not talkback. | Use the official Live view camera, especially when you want **Hold to talk**. |
| **Two-way audio** | ✅ **Hold to talk** is supported. | ❌ Ring-MQTT's Live stream has no microphone return path. This is a source limitation, not a Ring View setting or bug. | Use the official Live view camera. |
| **Doorbell alert inside the card** | ✅ Works through the Ring Ding event while its realtime listener is healthy. Upstream failures can leave that listener stopped ([#526](https://github.com/python-ring-doorbell/python-ring-doorbell/issues/526), [#537](https://github.com/python-ring-doorbell/python-ring-doorbell/issues/537)). | ✅ Works through the Ding binary sensor. | Prefer the Ring-MQTT Ding sensor for reliability today. |
| **Last activity time** | ✅ A Ring event or another Home Assistant timestamp can be used, but a Ring event depends on the same realtime listener. | ✅ Ring-MQTT Ding and motion sensors are supported directly; Ring View chooses the freshest activity time from the device. | Prefer a Ring-MQTT Ding or motion sensor. |
| **Dashboard image and saved snapshots** | ⚠️ A Ring camera may provide a still image, but the official Live camera does not always expose the current Live frame for saving. | ✅ The snapshot camera provides the dashboard image. For a manual save, Ring View asks **Take Snapshot** for a new image first. | Use the Ring-MQTT snapshot camera for the freshest and most dependable image. |
| **Phone-notification blueprint** | ✅ Select the Ding event and Last recording camera. The alert is immediate; a fresh recording preview follows when available. | ✅ Select the Ding binary sensor and Snapshot camera. Repeated presses are detected while Ding remains on, and only a fresh Ding snapshot is attached. | Prefer the Ring-MQTT Ding and Snapshot entities while the official realtime listener is unreliable. Set Snapshot Mode to an option that includes **Ding**. |
| **Door access** | ✅ Any Home Assistant lock and optional contact sensor. | ✅ The same—door access is independent of the camera provider. | Use whichever lock is already connected to Home Assistant. |

### Recommended mixed setup

For the most complete experience today, keep both integrations and choose:

- **Last recording:** Ring-MQTT **Event Select**.
- **Live and Hold to talk:** official Ring **Live view** camera.
- **Dashboard image and manual snapshots:** Ring-MQTT **Snapshot** camera.
- **Doorbell alert and last activity:** Ring-MQTT **Ding** and motion sensors.
- **Phone notification:** Ring-MQTT **Ding** sensor and **Snapshot** camera.
- **Door access:** any Home Assistant lock and optional contact sensor.

This combines Ring-MQTT's dependable events and snapshots with the official
integration's Live talkback path. You can still choose only official Ring or
only Ring-MQTT when that better matches your installation. See the
[provider guide](docs/compatibility.md#official-ring-and-ring-mqtt-sources) for
the detailed source mapping and limitations.

## Get started

You need Home Assistant **2026.7 or newer** and Ring media exposed through Home
Assistant. Use the official [Ring integration](https://www.home-assistant.io/integrations/ring/),
Ring-MQTT, or mix their entities by role. The official setup uses **Last
recording** and **Live view** cameras. A Ring-MQTT setup uses **Event Select**
for recordings, its snapshot camera, and a Home Assistant camera configured
from Ring-MQTT's live RTSP path. Recording access requires a suitable Ring
subscription. See [Choosing camera entities](docs/configuration.md#choosing-camera-entities)
for both setups.
Assistant. Install the official [Ring integration](https://www.home-assistant.io/integrations/ring/),
Ring-MQTT, or both. Recording access requires a suitable Ring subscription.
Ring View itself needs no Ring login; it uses the entities already available
in Home Assistant.

The core viewer can also use another Home Assistant recording camera when it
exposes recorded media, and any Live camera that advertises stream support.
Expand Down Expand Up @@ -82,6 +116,22 @@ YAML is optional. The visual editor lets you select the media sources and config
dashboard behavior, manual snapshots, Talk, doorbell features, door access and
appearance.

#### If you use Ring-MQTT Event Select for recordings

Event Select is a Home Assistant menu that decides which recording Ring View
plays. Choosing it in the card editor is only the first step:

1. Open **Settings → Devices & services → Entities** in Home Assistant.
2. Search for **Event Select**, then open the one belonging to your Ring camera.
3. Choose **Ding 1** for the newest doorbell press or **Motion 1** for the newest
motion event. Higher numbers are older events.
4. Open Ring View and select **Last recording**.

If the normal recording does not play in your browser, choose the matching
**(Transcoded)** option. Ring View refreshes the temporary playback link when
needed, but it deliberately keeps your selected Ding, Motion, or on-demand
event instead of changing that choice for you.

<p align="center">
<a href="https://github.com/thomasgregg/ring-view/blob/main/docs/images/configuration-editor.png">
<img src="https://raw.githubusercontent.com/thomasgregg/ring-view/main/docs/images/configuration-editor.png" alt="Ring View visual configuration editor showing camera selection, Dashboard card, Fullscreen viewer, Snapshots, Doorbell features, Door access, and Card appearance" width="760">
Expand Down Expand Up @@ -162,17 +212,27 @@ The patch is **temporary**, intended only until the upstream Ring library fix is

## Make your doorbell do more

The included **Ring View doorbell notification** blueprint connects your Ring Ding event, recording camera, and Companion app:
The included **Ring View doorbell notification** blueprint connects either an
official Ring Ding event or Ring-MQTT Ding sensor, a preview camera, and the
Companion app:

1. Someone rings → your phone gets an immediate notification.
2. Tap the notification → Home Assistant opens your chosen dashboard.
3. The new recording becomes available → the same notification gains a preview.
3. The official recording or Ring-MQTT snapshot becomes available → the same
notification gains a fresh preview.

It works even when the dashboard is closed, and the preview does not start another live session.

[![Import the Ring View doorbell notification blueprint.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https://github.com/thomasgregg/ring-view/blob/main/blueprints/automation/ring_view/doorbell_notification.yaml)

Use the same Ring event in your own Home Assistant automations for porch lights, announcements, or presence-aware alerts. Those are ideas for additional automations—not actions the included blueprint runs automatically.
Already using an older version? Import it again and choose **Overwrite**. Your
existing automation remains compatible because the blueprint keeps the same
input fields; you can then switch its Ding and preview entities between
official Ring and Ring-MQTT in the normal visual editor.

Use the same doorbell signal in your own Home Assistant automations for porch
lights, announcements, or presence-aware alerts. Those are ideas for
additional automations—not actions the included blueprint runs automatically.

[Set up notifications and explore automation ideas](docs/notifications.md)

Expand All @@ -183,6 +243,7 @@ Use the same Ring event in your own Home Assistant automations for porch lights,
- [Playback, talkback, iPhone rotation, and troubleshooting](docs/playback-and-troubleshooting.md)
- [Optional temporary backend patch](docs/backend-patch.md)
- [Doorbell notifications and automation blueprint](docs/notifications.md)
- [Official Ring realtime-listener reliability analysis](docs/ring-listener-reliability-analysis.md)
- [Security, privacy, and accessibility](docs/privacy-and-accessibility.md)
- [Compatibility](docs/compatibility.md) · [Testing and development](docs/testing.md) · [Rollback](docs/rollback.md) · [Changelog](CHANGELOG.md)

Expand Down
Loading
Loading