An Apple-Home-style wall-tablet screen for the audio-only Ring Intercom: an animated phone that rings, Pick up / Hang up buttons with real 2-way audio, an unlock tile, and an automation that wakes your tablet and jumps to the screen when someone rings.
This works on the author's setup (details below) but it has only been tested on one setup. Expect rough edges. Testers and improvements are very welcome - please open an issue or PR with what worked and what didn't on yours.
| Standby | Ringing | On call |
|---|---|---|
![]() |
![]() |
![]() |
The three images above are preview renders of the animated card.
| Standby | On call (live 2-way audio) |
|---|---|
![]() |
![]() |
The ring/webrtc node is the Ring Intercom producer. Audio flows in from Ring (opus) and out to
the browser, so this is the proof that the call is live. (IP addresses blurred.)
- Animated phone window in three states: standby (static handset), ringing (shaking handset, pulsing arcs, orange), answered (lifted handset, calm green arcs).
- Pick up / Hang up round buttons. Pick up opens the Ring audio stream (speaker + mic); Hang up closes it again.
- Tiles: doorbell indicator, Door Unlock (tap the icon), doorbell / mic / voice volume, intercom battery.
- Automation: on a ring, wake the tablet, open the Intercom view, and return to the home view after 2 minutes if nobody picks up.
- Safety net automation: auto hang-up after 2 minutes so a forgotten call can't keep the intercom awake and drain its battery.
Ring Intercom ──(Ring cloud, WebRTC)──▶ go2rtc "ring" source ──▶ webrtc-camera card (in the dashboard)
▲
Pick up button ─▶ input_boolean.intercom_answered = on ───────────────┘
(the card only exists while the helper is on, so the stream only runs during a call)
ring (ding sensor) ─▶ automation ─▶ tablet wakes + opens the Intercom view
The key trick: the stream card sits inside a conditional card that depends on a
single helper toggle. No toggle = no card = no stream = the intercom stays asleep.
- Ring Intercom, audio-only (battery) model
- Home Assistant OS with the go2rtc add-on 1.9.14
- HACS frontend cards:
button-card,layout-card,WebRTC Camera(latest as of October 2026) - Ring events from ring-mqtt (
binary_sensor.<name>_ding); the official Ring integration is also installed - Wall tablet: Echo Show 8 running Kiosk Satellite (the tablet part of the automation is specific to this)
- Browser mic on the tablet works through Kiosk Satellite; on a PC the microphone needs HTTPS
If you try it on something else (other intercom model, Fully Kiosk, a phone, etc.) please report back.
- Home Assistant with the go2rtc add-on (or a standalone go2rtc) in a version that includes the Ring source (the author used add-on 1.9.14)
- HACS frontend cards: button-card, layout-card, WebRTC Camera
- Ring events in Home Assistant: ring-mqtt and/or the official Ring integration
- Node.js on any computer (only to create the Ring token once)
Ring does not offer a normal API key or developer portal for this. What go2rtc (and ring-mqtt,
and the official integration) use is an OAuth refresh token for your Ring account, created
by the unofficial ring-client-api tooling. You create it once
on any computer that has Node.js:
npx -y -p ring-client-api@latest ring-auth-cli- Enter your Ring e-mail and password.
- Enter the 2FA code Ring sends you (SMS / authenticator app).
- The tool prints a long string called the refresh token. Copy it somewhere safe.
Things to know:
- The token is as powerful as your Ring login. Never commit it, post it, or paste it into screenshots.
- Each integration should have its own token. The token shows up in Ring's Control Center →
Authorized Client Devices (go2rtc appears as
ring-client-go), where you can revoke it. - Tokens are effectively single use: Ring rotates them. If you paste a token into go2rtc's
web "Add → Ring" page, it is consumed and the same token will later fail with
401 invalid_grant. - go2rtc's own web login can fail with
406 Not Acceptable. Creating the token withring-auth-clias above avoids that.
The go2rtc Ring source needs three values. The two IDs are listed by go2rtc itself:
- Open go2rtc's web UI → Add → Ring, paste the refresh token from step 1 and log in.
- It lists your Ring devices. Note the camera id and device id of your Intercom
(the generated
ring:?camera_id=…&device_id=…link shows both). - Because that page used up the token, run
ring-auth-cliagain to create a fresh token for the real configuration.
Copy go2rtc/go2rtc.yaml.example into your go2rtc configuration and fill in the three
placeholders with the fresh token and the two IDs. All three values are required; no quotes;
write a trailing == in the token as %3D%3D. Restart go2rtc.
Do not add the stream to preload:.
Create a toggle helper whose entity id is input_boolean.intercom_answered
(see helpers/input_boolean.yaml).
- Create a new dashboard (or use an existing one).
- Three dots → Raw configuration editor.
- Paste
dashboard/intercom-dashboard.yaml. If you already have a dashboard, merge thebutton_card_templates:block and add the view under yourviews:. - Replace the entity ids (table below).
Create automations from automations/*.yaml (Settings → Automations → ⋮ → Edit in YAML).
Edit the lines marked # <-- CHANGE and adapt the tablet actions to your kiosk app.
| In the files | Replace with |
|---|---|
binary_sensor.front_entrance_ding |
your intercom's ding sensor |
lock.front_entrance_lock |
your intercom's lock |
number.front_entrance_doorbell_volume / _mic_volume / _voice_volume |
the volume number entities (delete the tile if your intercom doesn't have them) |
sensor.front_entrance_battery |
the intercom battery sensor |
input_boolean.intercom_answered |
keep as is (or rename everywhere) |
ring-intercom |
the stream name in your go2rtc config |
light.echo_show_screen, switch.echo_show_hold_mode, select.echo_show_dashboard_view |
your tablet's entities |
- Answered state: toggle
input_boolean.intercom_answeredin Developer Tools → States or press Pick up. - Ringing state: in Developer Tools → States set your ding sensor to
on(the real sensor flips back by itself). - Automation: Settings → Automations → your automation → ⋮ → Run actions.
- Ring tokens are fragile. Single use; one token per integration; manage devices in Ring Control Center → Authorized Client Devices.
- go2rtc's own web pages can wake the intercom. Opening
/api/streams?src=ring-intercomor a stream's info page creates a probe connection that opens a live session and keeps the intercom's LED on. Use plain/api/streamsfor diagnosis and close those tabs. - Never use
background: trueon the stream card, and don'tpreloadthe stream - both keep the live session open after hang-up. - An open live session drains the battery (and can make the intercom ignore a new ring).
- Ding sensors can miss rings (for example when the handset is off the hook). The automation example shows how to add a second trigger.
- Mic permissions: browsers only allow the microphone over HTTPS. Kiosk Satellite grants it on its own.
- Feedback squeal: tablet speaker + intercom mic can loop. Lower the volumes.
- The tablet automation is Kiosk Satellite specific; other kiosk apps need different actions.
call-auto-hangup.yamlis a simple safety automation that has not been tested separately by the author.
See docs/troubleshooting.md for the error messages you'll meet and what they mean.
- Never commit or paste your refresh token, passwords, camera/device IDs or public hostnames.
go2rtc/go2rtc.yaml.exampleonly contains placeholders. - The dashboard contains an unlock button. Put it only on dashboards that need it and protect your Home Assistant login (2FA). Don't expose go2rtc's port to the internet.
- This project talks to Ring through go2rtc's unofficial Ring source. It is not affiliated with or endorsed by Ring or Amazon, can break at any time, and you use it at your own risk.
- Package the animated phone as its own custom card (this would also make it installable via HACS).
- Other kiosk apps (Fully Kiosk, browser_mod, companion app) for the wake-and-navigate part.
- Optional chime / spoken announcement on a ring.
- SIP / VoIP bridge so you can answer from a desk phone.
- A push-to-talk mode instead of an always-open mic.
Issues and PRs welcome - especially: working configs for other tablets, other Ring Intercom models, entity-id differences you hit, and better ways to detect a ring.
- Handset icon path from Material Design Icons (Apache-2.0).
- Built on go2rtc, WebRTC Camera, button-card, layout-card, ring-client-api and ring-mqtt.
MIT - see LICENSE.






