Instructables

Home 9000 - The ULTIMATE Doorbell

Featured
Picture of Home 9000 - The ULTIMATE Doorbell
I just purchased a house in Las Vegas, and, being a long time tinkerer (and instructable maker / sharer), I decided that before I move in, and as long as I have the opportunity to break open walls and run any wire I wanted, I would geek out this house in a big way.

Of course that meant running network connections to all my rooms, as well as to the pool and the garage. I also wired my house for home automation and security.  But being that I live in two houses for the present (one in NYC and one in Las Vegas) until I make the move to Vegas officially towards the end of the year, I needed a way to "live" in the house, or better "occupy" the house virtually, while still working and living in NYC.

This is the result of that idea.

Check out the video on the next page!
 
Remove these adsRemove these ads by Signing Up

Step 1:


Step 2: Home 9000 - The Video

Picture of Home 9000 - The Video
This is a demonstration video of the unit working. I took some artistic license in its production.




Here is a link to a video that inspired my basic concept, however, this is vaporware.

http://www.youtube.com/watch?feature=player_embedded&v=ZJQeecOJUFs

Step 3: Creating the 'Monster'

Picture of Creating the 'Monster'

Why I needed this:

Largely for security purposes, I needed a way to be able to answer my doorbell, no matter where I am (no, I am not that lazy. Well, yes I am ...) from anywhere in the world, but give the illusion that I am actually present in the house.

http://www.bandster.us/ferris.mov
[Sound clip from Ferris Buller's day off]

I decided that Ferris Bueller had the right idea, but I wanted to take that ingenuity a step farther. I needed a way to talk to the person ringing the doorbell, as well as supplying a canned message that I was not there right now and leave a message (In burglar talk that means "Go ahead break in!").  I considered that as long as I am conversing, I would like to see the person as well. This brought me to the idea of using my iPhone and Apple's Facetime.

Step 4: The Conception

Picture of The Conception
Since I would be using FaceTime to do video chat (technically a one-way video chat; I am not providing video to the person at my front door), I first needed to get some hardware and set it up on my front door.

I needed a USB Camera that was USB CLASS (driverless) compatible with the Macintosh O/S (Snow Leopard) and FaceTime.

I needed a microphone and speaker that was waterproof and vandal proof, something that was also unobtrusive and did not stick out like a sore thumb advertising itself. I did not want the person at the door to realize that I am in a remote location which would defeat the whole purpose of my endeavor. I want them to think I am otherwise occupied inside the house and just unavailable ... and lazy. :)

I also wanted a camera that would mount in the peephole of the door and not look out of place. You hardware hackers out there can just take apart a regular peephole and mount a camera inside. I would have done this myself but my skillset is just not up to par, so I cheated and just bought a camera.



Step 5: The Camera, Microphone and speaker

Picture of The Camera, Microphone and speaker
Presenting The  Agent V5. It is a full HD camera with dimensions of 79mm long x 30mm in diameter.
The circumference of the lens is 2cm. For you non geeks (all three of you) that's 3 1/2" long by just a little bit less than 1 3/16 in. wide.

I used a car mic for the microphone and a waterproof speaker mounted above the door. Note: the camera has its own microphone, but it is set back a few inches, and I did not want to tear the mic out to extend it.

I also used a Telex Audio to USB converter (GriffenTech makes one as well). This way I can take all my video and audio via USB back to the Mac Mini computer in my server room, funneling it away from the front door.

Oh another great product USB Extender over CAT5E or CAT6 Connection up to 150ft:
http://www.monoprice.com/products/product.asp?c_id=103&cp_id=10303&cs_id=1030313&p_id=6042&seq=1&format=2

I may upgrade to this, if the video is choppy:
http://www.monoprice.com/products/product.asp?c_id=103&cp_id=10303&cs_id=1030312&p_id=7644&seq=1&format=2



Step 6: Installing it in the door

To make this work, I needed to hide the fact that there is a camera and a microphone built into the door, so I drilled a 1" hole in the door, and stopped 1/4" from the front, knocking out the piece. Then, using a sander dremel tool, I flattened the wood so there was still just the peephole size opening on the outside. Using the old peephole with the lens removed, I added a glass protective lens and then embedded the camera behind it, leaving just this appearance (see photo) in front.



I routed the cable thru the door and will post pictures of the finished product some time in the future.

Step 7: The Sequence

If I don't answer the phone, an email with a snapshot of who rang my doorbell is sent to me as well, and a 5 minute video is made of the front doorbell and stored on the hard drive of the local computer. The file name is time-stamped as well.

Note: I can log in to the computer and watch remotely if needed.

Below is the sequence of events (also shown in the video)

Step 8: The Software (Applescript) & More

Picture of The Software (Applescript) & More
I set up a separate Apple account with a unique name (account) for the doorbell to be used exclusively for FaceTime calls. I also added in the following command in Apple's Terminal application so my FaceTime would answer a specific caller ID phone number.

To allow a single mobile, open terminal and type:
defaults write com.apple.FaceTime AutoAcceptInvitesFrom -array-add +15205551212
(where the number on the end is your iPhone) It will activate facetime, even if its not open.


APPLESCRIPT CODE:

-- Starts Facetime Session
open location "facetime://15205551212"
delay 5
-- simulate pressing the Enter key
tell application "System Events"
keystroke return
-- Check to see if Facetime is active
tell application "System Events" to set theCount to the count of (processes whose name is "Facetime")
if theCount = 0 then
do shell script "sleep 1"
else
tell application "FaceTime" to activate
-- starts automator script to take picture and email it
tell application "Take Picture and E-mail" to launch
tell application "Take Picture and E-mail" to activate

delay 5
-- Starts Video capture
tell application "QuickTime Player 7"
try
activate
new movie recording
start first recording
do shell script "sleep 10"

set status to true

repeat until status = false
-- sets how long facetime will ring your phone (30 secs)
delay 45 -- if call is active wait 60 seconds before rechecking
--3600 is 1 hour, 1800 =1/2 hour, 60 =1 min, 300 =5 mins
--add 300 (5 mins) ahead/behind starting

-- Check to see if call is still active

tell application "FaceTime" to activate
tell application "System Events" to tell process "FaceTime"
if name of front window contains "not available" then
do shell script "sleep 1"
set status to false

else

-- Check to see if call is still active

tell application "FaceTime" to activate
tell application "System Events" to tell process "FaceTime"
if name of front window contains "with" then
set status to true
do shell script "sleep 5"

-- Check to see if call is still active

else
-- Quit Facetime / video recording if call is not active
tell application "System Events" to tell process "FaceTime"
if name of front window contains "facetime" then
set status to false
tell application "FaceTime" to quit
do shell script "sleep 1"
tell application "QuickTime Player 7"
stop first recording
tell application "QuickTime Player 7"
quit
end tell
end tell
end if
end tell
end if
end tell
end if
end tell
end repeat
end try
end tell
end if
end tell
end
end
end



-------------------------------------------------------------------
Please note This code:

-- starts automator script to take picture and email it
tell application "Take Picture and E-mail" to launch
tell application "Take Picture and E-mail" to activate


This activates a Apple AUTOMATOR script to take a photocapture of the video feed, and email it to me
and start a video capture or the doorbell camera / audio and save it as a .mov file (poor man's DVR)

Here is a great Tutorial how to do this by TUAW's Cory Bohon


Step 9: Snow Leopard and Lion Users Take Heed

I created this instructable initially using Mac’s Leopard O/S. Apple’s successive O/S’s, Snow Leopard and Lion, have made some changes that disabled some functionality. To reactivate these you need to go into your Preferences/Universal Access and click the checkbox at the bottom of the window for ‘Enable access for assistive devices’.

Step 10: The (Hard) Hardware

Picture of The (Hard) Hardware
Now I am a hardware kinda guy, really that is where talent lies. If you look at any of my past 'structables you see I love to tinker. However, this was my first time using a Arduino, and, like a newbie, I ordered one, plugged it in, loaded the software and fainted. Well, not exactly fainted, but felt like I’d been thrown back in time to my first foray with a soldering iron when I worried I was about to burn myself, the project I was working on, followed by incinerating my house!

THIS helped me get started.

The basic logic of the program was this:

Someone pushes the doorbell, It activates a relay that rings the doorbell and activates the Arduino.

The Arduino then:

1) Ignores all activation commands for 4 mins (in case someone rings the doorbell again)
2) Starts a Applescript command on the host Mac computer
3) Activates a second relay (for future ideas)
4) Resets after 4 mins, and goes back to stand-by

Here is the code:

int ledPin = 13; // LED connected to digital pin 13
int potPin = 0; // white doorbell wire to analog pin 0
int val = 0;

long time = 0;

long debounce = 1000;

void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin as output
Serial.begin(9600); // open serial port at 9600 baud
digitalWrite(14 + potPin, HIGH); // set pullup on the analog pin
// (analog 0 = digital 14, a1 = d15, etc)
}

void loop() {
val = analogRead(potPin);
if (val < 100) { // if the circuit is completed
// (for me, it generally drops from 1023 to ~ 15 when 'ringing')
if (millis()-time > debounce) {
Serial.println("A");
delay(500);
Serial.println("A");
delay(500);
Serial.println("A");
digitalWrite(ledPin, HIGH); // sets the LED on
delay(120000); // ... 240000 = 4 mins
digitalWrite(ledPin, LOW); // and turns the LED off
time = millis();
}
}
}


NOTE: The Appleshare Proxy program was only accepting every third "A" from my Arduino, so I send three and the board now responds instantly without error (I am sure it's sloppy code, but HEY it works!) The 'delay' is where the board ignores all key presses, so the program does not restart if someone keeps ringing the doorbell.



Step 11: What did it cost?

Picture of What did it cost?
I am sure I overspent, but, since this is a prototype, you wind up spending more.

$500   Intel Mac Mini
$100   FaceTime compatible camera
$69     Arduino Board
$50     80' USB Cable / USB to cat5e Adapter
$30     USB Hub
$30     USB Audio Converter
$10     Outdoor speaker
$  5    12V relay
  .99   FaceTime software
$  5    microphone

Aprox    $800.00

Being able to tell the UPS guy to leave the package in the garage, opening the garage door remotely, and watching him put the package in there, and then remotely closing the garage door when he leaves ....
From 2526 miles away ...

*** PRICELESS ***


Step 12: Testing from the cloud.. literally!!!

Picture of Testing from the cloud.. literally!!!


AFTERTHOUGHTS:

Remember that second relay trigger? - well I used it to activate a remote (wireless) doorbell in the back (by the hot tub)
so I can hear the doorbell from anywhere inside or outside the house, and speaking of hot tubs..
I updated the iPad (SpaPad) to a ipad 3 - so Now I can answer the door from the HOT TUB!!

This Instructable has been reliable about 75% of the time, The mac mini version of facetime seems to be a touch buggy
and crashes, and needs a re-boot every so often. The hardware has worked almost perfectly
A year later, I am still using this, and Await for someone to take this idea and make a REAL COMMERCIAL VERSION of this from Kickstarter.

Jonathan
 
k24tea2 years ago
Another of those 3 non-geeks here, at least as far as this smart-phone and Arduino stuff goes. My electronics skills are from the Dark Ages and I now live low-tech by current standards, but I still love this stuff and if I had the $$ and time it would be fun to do this whether I need it or not. Hiding it in the doorbell would be a good mod for the extra "stealthy viewing" factor, but your design is brilliant just as it is.
macgeek (author)  k24tea2 years ago
Thank you for the kind words!

Of my 23 instructables, I feel this is my best

I enjoy thinking outside that box, and coming up with fun things to do with the string!

Jonathan
Jcyekki7 months ago
This is my first time on this website! You are an absolute GENIUS!!! You should really try to market your ideas. Thank you for sharing.
what kind of relay did you use?
macgeek (author)  josiahblack10 months ago
Radio shack 12V DTDP relay.
jmcclumpha11 months ago
Firstly - thanks for sharing this inspirational piece!

For those wanting to adapt this for use with new versions of facetime (v2.0 for example) you'll need to modify the search for "not available" to target a different element...

simply change from:

if name of front window contains "not available" then

to:

if value of static text 2 of front window contains "not available" then

hope this helps some of you
now that doorbell is not just a doorbell its a boss doorbell thanks macgeek
sunshiine1 year ago
This is so neat! Thanks for sharing you hard work!
sunshiine
mammasboy1 year ago
good gracious, this is by far one of the awsomest things i have ever seen, what i wouldn't give to have the technological capabilities to do something like this, more to the point the money to supply the resources required xD
tdahsu1 year ago
How does this tie into the garage door opening? Did I miss something? Also, step 1 is blank?
Tachyon1 year ago
Very cool project. Though I'd say using what you know made it cost more than it needs to.
Eliminate the Mac and Facetime and replace it with something like a RasPi, webcam, and GTalk and you've trimmed $500+ dollars off the project.
That said you've given a great starting point for someone with a more modest budget.
Thanks for sharing.
jsiminoff1 year ago
Awesome hack. We put together something very similar but maybe a little more mainstream, https://secure.christiestreet.com/products/doorbot.
Geek love at first sight! I got so excited about this that my teeth started to sweat! My imagination is now off and running.
chakra1 year ago
mister, you are A-W-E-S-O-M-E..!!
U CAN'T GET GEEKIER THAN THIS! OR CAN YOU??!
This is pure geeky awesomeness! Ferris Bueller would be proud :)
miguipda1 year ago
Hi,

as explained before by using this SEEU CU60G it will already do a part of what we need :
http://www.seeuworld.com/Digital-Peephole-Viewer2F-Visual-Monitoring-Doorbell2FSynchronous-wileless-data-backup-136.html

But indeed the best tool could be this Doorbot used with the Lockitron and arduino sensor (to check if somebody knock on the door or try to enter by forcing the door :
https://secure.christiestreet.com/products/doorbot
https://lockitron.com/preorder
http://www.instructables.com/id/Secret-Knock-Detecting-Door-Lock/?ALLSTEPS

Last but not least by motion detection we could automatically take picture/video and also play a random mp3 file barking like a dog to simulate a presence of dangerous dog at home.
http://www.instructables.com/id/PIR-Motion-Sensor-Tutorial/?ALLSTEPS
miguipda1 year ago
Hi,

you made a part of what I also need.
For this reason I though to use this base model actions :
http://www.seeuworld.com/Digital-Peephole-Viewer2F-Visual-Monitoring-Doorbell2FSynchronous-wileless-data-backup-136.html

Three point must be important for me in this intelligent doorbell :
1) motion detection = register photo and/or video when somebody has been detected
2) take phot and/or video when somebody bell at door
3) simulate presence = answer from anywhere all around the world
4) synchronise the events on a central HDD

It could be interesting to have your solution for android, windows, linux and not only for Mac. Thanks for your understanding ;-)
Just an idea. if you had a decorative door knocker that had a peep hole it could be used to hide the mic.
MiKOTRON1 year ago
Wow! This is great. I'm going to try to build one of these. One thing though and I'll try to address it when I build mine is, what if the person knocks? Humph, I suppose if they stand there long enough they'll use the bell but if there was a knock trigger too, then the person at the door really wouldn't know that you're not home.
macgeek (author)  MiKOTRON1 year ago
I actually toyed with the idea of a knock sensor using a alarm "glass break" sensor, that would trip on a loud noise (which a knock would produce) - I was also thinking of adding a relay trigger of a dog barking if the sensor was tripped (by knocking or ringing the bell) but I never went any further then thinking about it

;)

Jonathan
can you email me all of the codes or are these the exact codes?
josiahsaircannons@gmail.com
hrd2rchme1 year ago
I like what you did here! I love how you tied everything together. I am couriuos however, how you tied into the doorbell and the type of relay you used. I know most doorbells use between 15-24v AC. How did you tie in the garage door? Is there another app you are using on your phone for it like MyDoorOpener or such? Do you have more pictures or perhaps hand drawn sketches of the layout? I think I may make something similar with a few added changes :-) Another task for my Mac Mini Server ;-) Really great idea you had here! Thanks so much for sharing!!
jsorce2 years ago
Any chance I can pay you to build me one of these babies? Wow...that's no joke, I'm not kidding!! If your up for it, E mail me back!

kyleslab2 years ago
That is totally awesome! Loved the movie too!
Your system is such a great idea, this is something I definitely want to do, and you're right being able to tell a delivery guy to leave it on the doorstep is priceless! I've rated you five stars for bringing this to our attention, by the way I'm one of the three non-geeks!