My apartment building has an old hard-wired Enterphone intercom to buzz visitors in. This poses a slight annoyance since the dependency of the phone line in conjunction with a conventional corded telephone means I have to walk to the phone in order to answer the intercom.
Given the low rate of visitors and the small size of my apartment, in retrospect, this isn’t really a big deal. Most normal people would just buy a cheap cordless phone and call it a day.
But that only helps if I’m in the apartment. What if I wanted to be able to buzz myself in if I somehow got locked out?
Phone line to VoIP
I purchased a Cisco SPA3102 Voice Gateway from eBay which cost about $60. Despite being a discontinued product, it still seems quite readily available online, however, any VoIP gateway device with an FXO port (a phone jack specifically to connect directly to a phone line, not a phone device) would probably do this job (The Obihai Obi110 was another option I read about). This would do the job of converting the incoming intercom phone line to VoIP. Now I needed something to route the incoming now-VoIP call to one or more phones.
Asterisk is a popular free and open source VoIP PBX software. A PBX is a system that manages and connects calls within an organization. For example, an office might have a PBX setup with extension lines to each employee’s phone (allowing internal calls among employees), answering incoming calls with an automated menu system, as well as routing outgoing calls from an extension through a standard phone line. Asterisk does this job over IP networks (computer networks).
I setup an Asterisk server in a Docker container on my Synology DiskStation, the only computer I have reliably on 24/7. I found a FreePBX + Asterisk Docker image jmar71n/freepbx which would give me both Asterisk and FreePBX, a web-based configuration interface. Setting up the container took quite a while due to various issues. Since Asterisk works better when using host networking, that created port conflicts with the default web/database services on the DiskStation. I ended up forking the image to my own dennistt/freepbx which allowed me to set custom port numbers. (I’ll write up some read-me for that Docker image soon)
I used FreePBX to create PJSIP extensions for the incoming Enterphone line and my real physical phone. Then, I configured the SPA3102 to “log in” to these extensions. I also created some test extensions so that I could also “log in” from my computer and phone. I used soft phone apps X-Lite and Zoiper for Mac and iPhone respectively. Next, I created a ring group to ring all of these extensions at once. Finally, the SPA3102’s dial plan was configured to automatically call this ring group upon receiving an incoming Enterphone call.
So finally with a lot of effort, I was able to get the Enterphone ringing the real phone in my apartment and also any other phone logged into the system.
There are some limitations of this setup: Power has to be on, my Synology DiskStation has to be online, Asterisk has to be running, and the SPA3102 has to be online and registered. However, it does give me the freedom of now being able to unlock the front door regardless of where I am.