๐Ÿ”” Ring Intercom Video Camera โ€” WebRTC live stream + snapshots (no subscription needed)

:bell: Ring Intercom Video Camera

Got a Ring Intercom Handset Video (2024/2025 model with camera)? The official Ring integration gives you lock + ding but no camera entity. This custom component adds it.

:sparkles: Features

  • :video_camera: WebRTC live stream in Lovelace โ€” 720ร—576 @ 25fps + audio
  • :camera_with_flash: Server-side snapshots โ€” camera.snapshot works from automations
  • :unlocked: No Ring Protect subscription needed
  • :key: No extra login โ€” reuses your existing Ring integration auth
  • :package: HACS compatible

:high_voltage: Quick install

:one: HACS โ†’ Integrations โ†’ โ‹ฎ โ†’ Custom repositories
:two: Add: https://github.com/cmos486/ring-intercom-video
:three: Download & add to configuration.yaml:
ring_intercom_camera:
:four: Restart HA โ€” camera entity appears automatically

:thinking: How it works
The Ring Intercom Video uses the same WebRTC protocol as Ring doorbell cameras, but the official integration doesnโ€™t expose it for intercoms. This component monkey-patches the intercom class to add the missing WebRTC methods and creates a native camera entity.

For live view: your browser connects directly to Ring via WebRTC โ€” no server-side processing.
For snapshots: the server opens a temporary WebRTC session with aiortc to grab a frame.

:clipboard: Example automation
Capture a snapshot when someone rings and send it via Telegram:

actions:

  • variables:
    snap_file: โ€œ/config/www/tmp/intercom_{{ now().strftime(โ€˜%Y%m%d_%H%M%Sโ€™) }}.jpgโ€
  • delay: 3
  • action: camera.snapshot
    data:
    entity_id: camera.your_intercom_camera
    filename: โ€œ{{ snap_file }}โ€
  • action: notify.your_telegram
    data:
    message: โ€œ:bell: Someone is at the doorโ€
    data:
    photo:
    - file: โ€œ{{ snap_file }}โ€

:warning: Note for analog intercoms
If your Ring Intercom replaces a Fermax/Tegui/Comelit, the analog camera only outputs video during a ding or manual activation. Black screen the rest of the time is normal.

:link: Links
:package: GitHub: GitHub - cmos486/ring-intercom-video: Home Assistant custom component โ€” WebRTC live-stream camera for Ring Intercom Handset Video ยท GitHub

Built on python-ring-doorbell and inspired by the official Ring camera integration.

4 Likes

Happy to have found this, thanks for your work. I have an Elvox 7558 and so far only Ring seems to have a way to integrate with this intercom system. I just upgraded from the Intercom Audio to the Intercom Video and was hoping there was a way to integrate the video.

After fiddling a bit, my first test the video seemed to work during a call downstairs, so thatโ€™s great already.
It doesnโ€™t seem to work when I manually activate the video on the intercom itself though, I keep opening the video on the Elvox and checking the camera entity in HA and the picture stays black (aside from some pixels top left flickering). Every time the video (de)activates on Elvox, I can hear static through the HA stream, so something seems to be happening.

Any idea why the manually triggered video stays black? Was hoping to use a relay like you suggested for manual remote viewing

This is how Ringโ€™s communication protocol works with that device/brand. In my case, I had to investigate how the data bus of my (Fermax) worked to know when I could make a request to Ring, since if I did it when the intercom itself had the channel open, I got a black screen.

:new_button: UPDATE: Companion frontend card released

Quick announcement: I've published a companion Lovelace card that provides
the missing UI for two-way audio with the intercom. Live video, push-to-talk,
open door button โ€” all in one HACS-installable card.

:backhand_index_pointing_right: Dedicated thread: [link al nuevo post]
:backhand_index_pointing_right: Repo: GitHub - cmos486/ring-intercom-video-card: ๐Ÿ›Ž๏ธ Two-way audio & video card for Ring Intercom Video in Home Assistant. Native WebRTC, push-to-talk, open door, multi-language. HACS compatible. ยท GitHub

1 Like

Hi! I dont know what I am missing but the camera entity is not created after restart.
I couldnt find any logs and for sure I have a intercom video (not audio).
The official ring integration is showing me 10 entities of the intercom.

Hi! The most likely cause is that the integration isn't actually loaded. HACS only copies the files into custom_components/ โ€” it doesn't enable the integration. Since this component has no config flow, it only starts
if you add it to configuration.yaml. That also explains why you see no logs at all: the setup code never runs.

1. Add this to your configuration.yaml:

ring_intercom_camera:

logger:
  default: info
  logs:
    custom_components.ring_intercom_camera: debug

2. Restart Home Assistant.

3. Go to Settings โ†’ System โ†’ Logs and filter for ring_intercom_camera.

After the restart you should now see at least one log line. Let me know which one you get:

- "Found Ring Intercom Videoโ€ฆ" โ†’ the entity camera.<name>_camera was created. Look for it under the Ring device, or in Developer Tools โ†’ States.
- "No Ring Intercom Video devices found" โ†’ your device's kind isn't intercom_handset_video. Please download the diagnostics of the official Ring integration (Settings โ†’ Devices & Services โ†’ Ring โ†’ โ‹ฎ โ†’ Download diagnostics)
and send me the kind field of your intercom.
- Still no logs at all โ†’ the folder isn't in the right place. It must be exactly config/custom_components/ring_intercom_camera/, containing __init__.py, camera.py and manifest.json.

Quick checklist while you're at it:
- โœ… The official Ring integration is set up and shows your intercom's entities (you mentioned 10 โ€” good).
- โœ… The folder name is exactly ring_intercom_camera.

Once you paste the log line here I'll know exactly what's going on. ๐Ÿ™‚

There was some mistake in my configuration.yaml. Now the entity is created and I have been able to set up the lovelace card.
I am currently facing issues to answer from the card. It shows as disconnected always (even when someone calls) or sometimes as inactive.

Regards