Skip to main content

RPi Intercom

A mumble client written in python that makes a raspberry pi run as an 'intercom'. It can be used as a standalone service or imported as a library to integrate into other more complex projects.

What does this do?

This lets you set up a raspberry pi as an intercom. An intercom is a device that connects two points between to hear and be heard. This projects sets up a Raspberry Pi to do that. A Raspberry Pi intercom. It offers the following benefits:

  • Easy to set up
  • Configure GPIO inputs to mute/deafen/transmit/show connected status
  • Uses Mumble, so you can also connect to it from your phone/computer/whatever.
  • Requires no knowledge of Linux's truly arcane audio subystems

What does this NOT do?

  • Solve problems that aren't related to intercoms.
  • Handle bad networks well. There is no "anti-jitter" built into the audio processing like most audio clients so both sides of the intercom need to have a stable connection to the mumble server.
  • Handle echo cancellation. This means that the audio played on a speaker "echos" back to the recipient unless the hardware you're using removes it. The project could eliminiate this in software but the algorithms for doing so are very hard.

Why does this exist?

I wanted to have an intercom between my living room and a basement office. After researching products available on Amazon and projects that do something similar I couldn't find anything that was both secure and easy, so I made it instead.

You will need

  • A Mumble server. I host mine on a home server to keep everything local, but here isn't any reason it couldn't connect to the internet.
  • A raspberry pi.
    • Worked well for me on the Rapsberry Pi 2, 3, and 4.
    • Worked like crap on a Raspberry pi Zero (but what doesn't?).
    • Should theoretically work well on any Debian based environment. No windows because of an ALSA dependency.
  • A speaker/microphone that does echo cancellation. I bought this one on Amazon and it works great, but many ~$50 alternatives exist. The echo cancellation is mandatory to avoid feedback that makes the intercom literally useless. Don't try to skip on this.
  • Presumably you need a Raspberry Pi and speaker/microphone x2, so they can talk to eachother.

Quick Start

  1. Install or acquire a mumble server. you coudl even install it on one fo your raspberry pi's.

  2. Install the library:

    sudo python -m pip install rpi_intercom
    

    Note the sudo. This makes sure the library is installed for all users, which is important if you want to run it as a service later.

  3. Start the service on one or more devices:

    python -m rpi_intercom --server my-mumble-server.local
    

    --server is the only mandatory configuration, you will probably to specify more stuff. With no further configuration it will use the default input and output sound device, connetct to the mumble server root, transmit constantly, and listen constantly.

Install it as a service

I've written a convenience script to set up the device as a systemd service that starts at boot as a dedicated user and restarts automatically. Once you have your configuration file, you can install the service a as by running:

sudo python -m rpi_intercom --install-service /path/to/your/config.yaml

Of course there is no reason you couldn't write the systemd unit file, create the user, etc yourself.

Configuration

While everything can be passed in on the command line, this is very cumbersome. Its better to create a configuration file, which you passin on the command line, eg:

python -m rpi_intercom --config /path/to/your/config.yaml

I even made a configuration script you can run to generate a config file easily by answering questions, which I recommend doing. Try it out with:

python -m rpi_intercom --generate-config /path/to/put/the/config.yaml 

More on configuration TBD

Release files for rpi-intercom 0.0.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rpi-intercom 0.0.19
File Size Uploaded
rpi_intercom-0.0.19.tar.gz 25.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rpi-intercom 0.0.19
File Interpreter ABI Platform
rpi_intercom-0.0.19-py3-none-any.whl Python 3 none any Details

Total release size: 54.5 kB

Release files / rpi_intercom-0.0.19.tar.gz

Download URL rpi_intercom-0.0.19.tar.gz
Size 25.8 kB
Tags Source
SHA-256 checksum
How to use checksums
41963b1f5bf7b29a330ba3da9591f6f58b003b68b3aaff54434e0fc4ebc80524
BLAKE2b-256 checksum
How to use checksums
2abb3d595f3b4b67769dd4f3bd107c4c67a2d209d3514f94490d0f0f19fe6ac7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / rpi_intercom-0.0.19-py3-none-any.whl

Download URL rpi_intercom-0.0.19-py3-none-any.whl
Size 28.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4cf03c084ce0c69de9ced5046ee1234dc0a96b043492e015f4f310885c305484
BLAKE2b-256 checksum
How to use checksums
eadab137f88ac519907386ff2b39351f101730635697331f52f48e0843aeb932
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.0.19 This release

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page