Push-to-talk intercom for Home Assistant on Sonos, AirPlay and Google Cast speakers
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗You need Home Assistant 2025.6 or newer and speakers that Home Assistant can already play to. Home Assistant 2026.11 and newer include the Marketplace; older versions use HACS.
Install. Click the button above, then Install in the Marketplace, or Download in HACS. The Marketplace continues to setup when it can; restart Home Assistant if it asks you to. HACS always needs a restart.
roomcall.zip from the
latest release into
/config/custom_components/roomcall/ and restart.Add the integration — and pick your speakers. RoomCall pre-selects the ones that support announcements; choose one entity per physical speaker so a call doesn't play twice.
Add the card. Edit a dashboard → Add card → RoomCall. Open it in the Home Assistant app (or over HTTPS, so the browser allows the microphone), pick a room and hold to talk.
Then check each room once: More → Settings (sliders icon) → Setup and sound tests plays a test sound in each room and asks whether you heard it. Full setup guide →
Pick Kitchen, Basement or Everywhere, hold the button and say it. Your voice streams while you talk, after a short chime. Rather type? Type reads your message aloud in your Home Assistant voice. Call a person and it plays in the room they're in (with room presence such as Bermuda).
When the doorbell is pressed, the rooms you pick hear "Someone is at the Front Door." Every RoomCall card, and the phones you've set up for notifications, show the camera snapshot with an Answer button that opens Home Assistant's live camera view. Talking to the visitor works there when your camera supports two-way audio (details).
Say "Hey Siri, run RoomCall Basement", dictate a message, and it's spoken on the basement speakers — no HomePod needed. The card builds the shortcut steps for you (Siri guide). Or add each room to the Apple Home app as a camera tile and tap its microphone to talk (Apple Home).
Hold to talk in the Home Assistant app, or send one-tap announcements from a home-screen widget, Quick Settings tile or Wear OS watch (Android guide).
"The laundry is done" keeps reminding until someone taps Took out the dry clothes on their phone or the card. Swiping the notification away doesn't count. Schedule announcements ("Bus in 10 minutes" on weekdays) or trigger them ("The garage has been open 10 minutes") (announcements).
Speaker microphones (Sonos, HomePod, Nest) belong to their own assistants, so replies come another way: a Reply button on the call notification aims the card back at the caller, or a small Assist satellite in the room listens for a spoken answer (hands-free talk-back). Two wall tablets can also call each other live as room stations.
roomcall.broadcast, a notify entity per room and ready-made blueprints.localhost or a .local name) and offers to switch to your network address after you confirm.| Home Assistant | 2025.6 or newer (tested on 2026.2 and 2026.10) |
| Speakers | Any media_player that can play an MP3 URL: Sonos, Google Cast / Nest, AirPlay, … — and Music Assistant players |
| Microphone | The Home Assistant app, or a browser on HTTPS (Nabu Casa, a reverse proxy, Tailscale). Browsers block the mic on plain http://. |
| Optional | Speech-to-text (transcripts), room presence such as Bermuda (call a person), an Assist satellite (spoken replies) |
The iPhone app's sign-in needs Home Assistant 2026.10 or later.
action: roomcall.broadcast
data:
areas: [kitchen, basement] # leave out for every RoomCall speaker
message: Dinner is ready!
priority: urgent # optional: louder, ignores Do Not Disturb and quiet hours
people: [person.alex] plays wherever Alex is; media_url: plays a sound file instead of
text. More in the Home Assistant guide.
llms.txt).sequenceDiagram
participant P as Phone (card)
participant H as Home Assistant
participant S as Speaker
P->>H: press: open a live call (WebSocket, signed in)
H->>S: media_player.play_media (announce) with a live MP3 URL
loop while you hold the button
P->>H: 40 ms of audio
H->>H: ffmpeg encodes it (chime first)
S->>H: speaker streams the growing MP3
end
P->>H: release: end of audio
H-->>P: delivered, then history, transcript and notifications
With live calls (the default), audio streams while you hold the button; each
speaker's startup, buffering and playback queue determine when you hear it.
With live: false, the card records the whole message before sending. No fixed
latency is guaranteed for either route, especially for Everywhere or repeated calls.
Not through Sonos, HomePod or Nest speakers — their microphones are reserved for their own voice assistants. Put a small Assist satellite (Atom Echo, ESP32-S3, Home Assistant Voice) in the room and turn on Hands-free talk-back: after a call, it listens for a reply and the caller's room hears it. Replies are transcribed and spoken back in your configured voice (how). People can also reply from their phone: the call notification has a Reply button aimed back at the caller.
Open Home Assistant over HTTPS (or use the companion app) and allow the microphone when asked. See Troubleshooting.
Accepted is not the same as heard. Check the room, volume and anything already playing. The
most common cause is a Home Assistant address the speakers can't reach: look in
Settings → System → Repairs, and make sure Settings → System → Network → Local network
is an address like http://192.168.1.10:8123. See troubleshooting.
RoomCall also runs on its own, discovering speakers over mDNS and serving a web app:
pipx install "roomcall[all] @ https://github.com/daredoole/RoomCall/releases/download/v0.23.0/roomcall-0.23.0-py3-none-any.whl"
roomcall serve # http://<this-machine>:8765
The standalone package is distributed in GitHub releases; it is not currently published on PyPI.
See Getting started.
RoomCall is free and MIT-licensed. If it's useful in your home, you can sponsor its development:
Sponsorship never buys feature priority, private support or early access to security fixes.
Bug reports, speaker compatibility notes and pull requests are welcome — see CONTRIBUTING.md and the Code of Conduct. Security issues: please follow SECURITY.md.