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
25 changes: 16 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,26 @@ See what happened, check what is happening, save the moment, and answer the door

## Get started

You need Home Assistant **2026.7 or newer**, the official [Ring integration](https://www.home-assistant.io/integrations/ring/), and its **last recording** and **live view** camera entities. Recording access requires a suitable Ring subscription. The last-recording entity is disabled by default. If the two camera entries look identical or their IDs do not use the example `_last_recording` and `_live_view` suffixes, follow [Choosing camera entities](docs/configuration.md#choosing-camera-entities).

The core Recording and Live viewer can also work with other Home Assistant
camera integrations when one camera exposes recorded media and the other
supports streaming. Ring remains the tested setup. Two-way audio, Ring Ding
events, the notification blueprint, and the optional backend patch are
Ring-specific.
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.

The core viewer can also use another Home Assistant recording camera when it
exposes recorded media, and any Live camera that advertises stream support.
Two-way audio and the optional backend patch remain specific to the official
Ring Live view camera. [The provider parity guide](docs/compatibility.md#official-ring-and-ring-mqtt-sources)
shows the exact source for every feature.

[![Open Ring View in HACS.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=thomasgregg&repository=ring-view&category=plugin)

1. Open Ring View in HACS using the button above and download the latest release.
2. Refresh Home Assistant.
3. Edit your dashboard, select **Add card → Ring View**, and choose your two camera entities.
3. Edit your dashboard, select **Add card → Ring View**, and choose a recording source and Live camera.

HACS registers the JavaScript module automatically. Prefer manual installation? See the [installation and configuration guide](docs/configuration.md#manual-installation).

Expand All @@ -71,7 +78,7 @@ live_entity: camera.front_door_live_view

### Configure visually

YAML is optional. The visual editor lets you select the cameras and configure
YAML is optional. The visual editor lets you select the media sources and configure
dashboard behavior, manual snapshots, Talk, doorbell features, door access and
appearance.

Expand Down
20 changes: 19 additions & 1 deletion demo/demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,14 @@ const activity: HassEntity = {
device_class: "timestamp",
},
};
const mqttActivity: HassEntity = {
entity_id: "binary_sensor.front_door_activity",
state: "off",
attributes: {
friendly_name: "Front Door Activity",
lastDingTime: activity.state,
},
};
const door: HassEntity = {
entity_id: "lock.front_door",
state: query.get("door_state") || "locked",
Expand Down Expand Up @@ -211,6 +219,11 @@ let hass: HomeAssistant = {
entity_id: activity.entity_id,
platform: "demo",
},
[mqttActivity.entity_id]: {
entity_id: mqttActivity.entity_id,
platform: "mqtt",
device_id: "demo-ring-device",
},
[door.entity_id]: {
entity_id: door.entity_id,
platform: "demo",
Expand All @@ -231,6 +244,7 @@ let hass: HomeAssistant = {
[snapshot.entity_id]: snapshot,
[snapshotRefresh.entity_id]: snapshotRefresh,
[activity.entity_id]: activity,
[mqttActivity.entity_id]: mqttActivity,
[door.entity_id]: door,
[doorContact.entity_id]: doorContact,
[doorbell.entity_id]: doorbell,
Expand Down Expand Up @@ -324,7 +338,11 @@ card.setConfig({
live_entity: live.entity_id,
snapshot_entity: snapshot.entity_id,
last_activity_entity:
query.get("activity") === "1" ? activity.entity_id : undefined,
query.get("activity") === "1"
? query.get("activity_source") === "mqtt"
? mqttActivity.entity_id
: activity.entity_id
: undefined,
name: query.get("camera_name") || "Entrance",
default_mode: query.get("mode") === "live" ? "live" : "last_recording",
remember_last_mode: query.get("remember") === "1",
Expand Down
Loading
Loading