We did all the wiring for telephones as part of the low-voltage wiring we did while the house was being built. We pulled CAT5e to every location we thought we might put a phone in the house. We also pulled a CAT5e cable from the media room to the demarcation point of the telephone company on the side of the house. That cable connects to a series of RJ-11 parallel connecting blocks. To connect a phone, we simply install a jumper from the appropriate punch block to one of the RJ-11 connections. At the phone end of the drop is a wall plate with another RJ-11 socket for the phone to plug into.
Many of our phones are cordless which means they have their own power cubes that have be plugged in. In the places where there was not a convenient outlet, like at the Kitchen wall phone, we cut the power cord off the phone and connected the power wires from the phone to another pair on the same CAT5e as the phone signal. Down in the media room we punch the ends of the power cube cord onto the corresponding punch downs and plug the cube into a power strip. The power strip plugs into a UPS. This has the added benefit of keeping these phones working even if the power fails.
We use an answering machine program on the home automation PC called CallStation. It is setup to answer the phone in five rings.
We have the HomeVision Caller ID add-on module. This allows the home controller to detect caller ID and other phone events. When HomeVision detects a phone ring, it mutes all audio--whole-house and TVs--and puts the whole-house audio into announce mode. (See Audio section.) When the caller ID information comes in, the controller sends it to Girder via the serial line. Girder passes it on to a program I wrote that looks up the number and announces the name. If the number is not found in our "phone book," the program announces whatever name came in with the caller ID information. The program also logs the call to a file and puts it in an in-memory log.
When the phone rings for the third time, the home controller tells the Girder/Phone book program to repeat the last announcement. This is in case we missed it the first time. When we are done with the call--or decide not to answer it--we hit a button on a remote and the home automation controller restores the audio to what it was before the call.
Of course all of the above only happens if someone is home. If no one is home, then the call is logged and the home controller sets a flag. When someone comes home and checks in, the house announces that there were calls while we were away and reads the in-memory call log. The in-memory call log is cleared every time we leave the house so we only hear about calls while we were gone. There are also remote buttons that will repeat just the last call announcement or read the in-memory log.
A similar thing happens if we go to watch a movie in the theater. If the home controller knows we are watching a movie--which is does because it sets up the theater for us--it does not announce calls. When the movie is over, it will tell us there were calls and reads the log.