For the sake of bumping and old thread:
I was thinking about doing something very much like this except that I was also thinking of having the Arduino control a solenoid or servo to open the door lock. This way, say someone I know calls me and says they need to get something out of my office, I could tell them to knock 5 times (or whatever) and then send a message to the Arduino telling it to watch a piezo for a certain number of knocks. The beauty of this is that if someone else tried knocking 5 times, the screen would display something like "ACCESS DENIED!" since the number (or pattern) of the knocks would be a one-time-use combination that could be randomly generated by a script called by me any time someone calls asking to get into the office. A keypad could work just as well, but it wouldn't look as nice, and what would be the fun in that anyway?