2 Way audio Intercom for Reolink doorbell made easy

Hi there, I’ve set up a 2-way audio intercom for my Reolink Doorbell (although it should work for a any doorbell with RTSP with some configuration) without using Frigate. Only automations, browser-mod, go2rtc and SSL access.

How it works

Grabaciondepantalla2025-01-19alas17.33.08-ezgif.com-optimize

This is a 2 popup process. When the doorbell binary_sensor “visitor” changes to on, It first shows a popup stream with one way audio (doorbell to device) and video so you can hear what’s outside but the microphone is not enabled. Then if the pick up button is pressed, it opens a second popup with 2 way audio. In both popups there is the option to hang up or to open the door.

How it’s made

I have to say that for now, poorly. It consists of different parts that are not straighforward to setup which are required.

Requirements

  1. The most important thing for having 2 way audio, is having an SSL connection to homeassistant from the browser/tablet you are going to use. WIthout this it will not work..
    This guide will not cover how to do this but there a different methods to achieve:

    • HomeAssistant Cloud
    • Cloudflare/Tailscale
    • NGINX + DuckDNS (port forwarding)
  2. browser-mod: GitHub - thomasloven/hass-browser_mod: 🔹 A Home Assistant integration to turn your browser into a controllable entity and media player

    Open your Home Assistant instance and start setting up a new integration.

  3. go2rtc: GitHub - AlexxIT/go2rtc: Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc.

  4. webrtc-camera: GitHub - AlexxIT/WebRTC: Home Assistant custom component for real-time viewing of almost any camera stream using WebRTC and other technologies.
    This will only be used for the webrtc-camera card, but it’s necessary

    Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

  5. more-info-card: GitHub - thomasloven/lovelace-more-info-card: 🔹 Display the more-info dialog of any entity as a lovelace card
    This will be used to ensure we get the more-info view of the doorbell’s video stream

    Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

  6. card-mod: GitHub - thomasloven/lovelace-card-mod: 🔹 Add CSS styles to (almost) any lovelace card
    This will allow to apply styles to the frames and the overlay buttons

    Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

Setup

1. go2rtc configuration

Start the add-on and access the UI.
Then go to the Config tab and paste the following data replacing with your doorbell values:

streams:
  camera.2way_audio_doorbell:
    - rtsp://<USER>:<PASSWORD>@<DOORBELL_IP>:554/h264Preview_01_sub
    - ffmpeg:camera.2way_audio_doorbell#audio=opus#audio=copy

2. Popup cards

I have created a blueprint to automatically create and configure the pop-ups:

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

This is how it looks:

Limitations

The Open Gate option is a script because that’s what I use to emulate the inching with a Zigbee relay switch.
So if you have a switch entity, you will need to create a script that calls switch.toggle on your entity

Improvements

There are some improvements (besides CSS and Jinja obviously):

  • Make the Open Gate input to accept different type of entities
  • Make the Open Gate button to only show if the input is provided
5 Likes

Thanks for this explanation and your blueprint! I tried it and it works all good, except for one thing:
When I activate the 2 way audio, the sound is terrible. The audio from my PC’s microphone go outside the reolink’s speaker but it also goes back to my PC’s speakers. Is there any way to improve this?

There is no way to solve this besides lowering the volume on the computer/tablet. This is known as feedback loop. Tablets and phones have ways of mitigating this that might improve the issue.
Another solution might be lowering the microphone sensitivity.
I’m using a cheap Redmi tablet and the feedback loop exists but it’s not disturbing.

I’ve been testing the setup using my tablet to see if it works better, but I still don’t understand why the original Reolink app doesn’t have this issue. Does anyone have more information about this?

Also, I noticed that on my tablet the live stream starts for about 1 second and then it stops and I have to press the Play/Pause button to restore it. What am I missing?

Also, I noticed that if I access my setup using my external address (https://mydomain), everything works perfectly. However, if I access it locally via http://myipaddress:port/, the microphone doesn’t work, which I know is expected behavior.

Right now, in my home, if there’s an internet outage, Home Assistant continues to work fine locally. But for the video doorbell, it would stop working even though it’s connected via cable. Is there a solution to keep the video doorbell functional in such scenarios?

Probably the Reolink app has some software echo cancelling buiilt-in. If the tablet is newish, the hardware should work decently to avoid the loop. Also I have the doorbell’s volume set to 50% to improve it.

About the pause, the blueprint contains a picture-element card that has “Live” enabled, this should guarantee that it autoplays.

To get this working with this method you need HTTPS. If you are woried of someone ringing the door during an internet outage (probability seems pretty low to me) you would need to generate a self-signed certificate for your hostname and install it in the tablet’s certificate store.
Also if this happens to me I would simply check my phone where I have the app installed.