Can I make a Home Assistant native Intercom?

So I’m about to build a new front section for our house. Doorbell (simple), Camera (simple) etc. and I am thinking about adding a speaker and microphone to the Setup to have a home assistant native Intercom setup.

I could find remarkably little about any kinds of intercom. I know there’s the announce feature, but I don’t really see how that would help with an intercom. I’d really need a two-way audio solution like is offered in frigate, but I’d really like to have a dedicated intercom only system that I can use from home assistant and that is fully open source, regardless the camera stream (that’s going to be handled by frigate), kind of also in the hopes of speeding up connection times.

I’m completely free to choose the type of connection, I will have LAN+PoE + KNX available, but I can really pull any kind of wire necessary, just in case.

Any ideas?

HA is basically a command and control service.
It does not as such provide the services. It only controls them.

You need to find a program that can do the intercom and then look into what options you have for HA to interact with it, like connect subscribers of the intercom and disconnect them again and so on.

Asterisk might be able to do it.

3 Likes

Oh that sounds interesting!

Sure, I’m well aware that ha only controls the services, I agree that I did not choose the best words to describe what I am looking for :sweat_smile:

Is there anybody out there using Asterisk for a doorbell intercom?

This is the AddOn that several users use for an intercom solution.

If your doorbell supports SIP then it can probably be used as an intercom.

1 Like

I am essentially starting with an empty box. There is only a dumb doorbell so far, but enough space for anything really.

I see asterisk can provide the software foundation, that’s nice. Is there any open source SIP hardware around? Seems ESP32, even with Ethernet is not well suited for this …

I just built a similar solution for myself. I am able to add one or more “talk” buttons to my dashboards, each configured to talk to a different media_player entity, or several entities at once. For devices that can play an mp3 music stream, I can broadcast my voice live (slight delay). For devices that do not support sending an mp3 music stream (ie: Alexa), I can transcribe messages and send them through TTS on the fly.

This can talk one way to any media_player (as recognized by home assistant). I use it to announce things, not really have a conversation… but in some instances i integrate it with my cameras which provide audio back, so i dont really need two way since my cameras already provide the audio back. A typical scenario is ill have a camera sending video and one way audio from a room that also has a media_player (ie: Alexa, esp32 speaker, etc), and i can broadcast a one way message to that room, so a poor mans two way audio.

I run this app in a docker container and use a custom web component configured via YAML in home assistant. Dor the microphone to work, you must use HTTPS, just like the Assist requirement in HA. For TTS to work, you must have faster-whisper installed. I run that in a docker container outside of home assistant too, but I don’t see why you couldn’t use the one bundled with HA.

All the app really does is use web sockets to stream your microphone on demand, then uses FFMPEG to convert webm into either an mp3 stream, or perform STT with whisper. I then jave tye app call home assistants api to either play the stream or play the TTS on the requested devices.

If there is any interest in this project, I can post it.

Well, if anyone wants it, i posted my code and some basic instructions here:

I haven’t turned this into an add-on, so you will need to understand:

How to run a docker container
How to set up https
How to configure Nginx or other proxy

5 Likes

This is exactly what I have been looking for. Going to have to test this out over the weekend. Thanks so much for sharing.

This is something I’m really interested in. Have you thought about making this an addon? Any thouhgts of offering a build of the docker container already built? I’m going to fork and run a auto build for now to make it simpler in my setup. Would love to see this expanded. Great work, probably should also start your own thread for feedback if you wanna go that route.

Ive only just started exploring home assistant development, so i may turn this into an add-on if that would be of any value. Its been useful for me and unexpectedly filled the void of telling whoever is home to pick up their phone because ive been trying to call them. I acknowledge that, as of now, it’s a fairly complex setup that requires building and running a docker container with the appropriate services in your env file, and also managing your proxy config rules.

My first home assistant project, however, will be providing a Home Assistant component for MediaMTX, which i prefer over go2rtc… ive built out a wife-friendly webrtc video component for use with MediaMTX which also supports events; for example, when some binary sensor detects someone is at your door, the live video and audio can automatically go full screen (great for wallpanels). Simple interface, like touch to go full screen, touch again to minimize. Anyway, thats my first priority.

Ok, so not an add-on (yet), but I did build my solution into a Home Assistant Integration (via HACS) with a pre-built Docker image that must be run in your environment. I don’t use Supervisor, so add-ons are not my priority, but if there is enough interest, i can port to that.

Here is the latest: