Little video showing the Blue breathing light inside turning green for a couple of seconds when pressed
Start by printing the plastic parts.. the cover and base are easy prints. I printed face down to get a smooth finish, cleaned up with a razor blade and then smoothed them off in an Acetone vapor bath. the button is a dual color print and there is a ring around the outside you will need to cut off, I added it in to make a bridge. All up it took about 2.5 hours to print. The face of the button is all white, but only 0.2mm thick in places with clear behind so the light shows through and shows the Spark logo
With the Spark core, I started by removing the header pins from the spark to make it thinner. Its easy to remove the black plastic with a jewelers screwdriver then desolder each pin. Copy the code to the Web IDE and change the info to suit.. its all at the top and should be self explanitory. Flash the code and test by connecting a piezo speaker from D6 to GND and touch D0 to Gnd to trigger the code. If its not working try changing the 'boolean DEBUG = false;' to true. You will need to open up a terminal (9600 baud) when the blue led comes on and press enter to start the code running. It will give you the Wifi info first, then when you connect D0 to Gnd, it will show connecting and then if it connects, the Get request and headers. After a second or three you should see the response, and then it will go onto the next section and do the same again.
For the main part of the build, I made 2 strips of Vero board, 3 lines wide, with 2 surface mount tactile switches on each. the switches are 6mm square and about 4.5mm high. I drilled out holes to mount these inside the cover and screwed them in using #4 x 6mm screws. the spark core should fit between the 2 strips nicely. i then soldered links from D0 to the nearest hole in the vero board. and A0 to its nearest hole too (only needed for support). I soldered the Gnd to the outside stipe of the vero board on each side. I also made a link from D0 to A0 (well where they connect on the Vero board anyway)
It now has a RTTTL (polyphonic ringtone) output on D6. You can hook up a piezo speaker directly if you dont need it too loud, or hook up a set of amplified computer speakers. I used a set (TDK XA-10) with a very small amplifier in the USB connection, I stripped it down and put it inside the doorbell. I took the usb connector off and took power from the same supply i use for the Spark. Then hook up D6 to both left and right inputs, and connect 2 wires to each of the outputs, left and right. One output is near the front of the house and the other out the back.. at each speaker i have put a 100k pot with outside terminals connected to the output from the amp and the center tap to the speaker, and the other side of the speaker to one of the wires (whichever one makes it work the right way, clockwise for volume up)
Thats pretty much the doorbell complete, just needs power to Vin and Gnd.
To setup the XBMC side of things you will need this plugin: http://forum.xbmc.org/showthread.php?tid=182540 and a compatible camera
Pushingbox is the main part of the doorbell so you will need to set up an account with at least 1 scenario to make it work http://www.pushingbox.com/
I plan on adding a little piezo buzzer in the button to give some feedback - Done, Actually i added RTTTL ringtones to it. and run a amplified PC speaker off D6. It now plays the ringtone before connecting to Pushingbox and XBMC. Its super loud and there are heaps of tunes to choose from, just un-comment the line you want to play
I also need to update the code to retry connections a couple of times if it fails to connect. - Done, if it fails to connect it will retry each connection 5 times with a second of delay between each attempt
I will eventually add a fingerprint reader and a RFID reader to the Spark too for key-less entry.. - Progressing nicely, Library for fingerprint reader is ported to work with the Spark core, tested and working. Still waiting for the RFID reader to be able to test it, library is also ported and ready. Currently working on a database for users names and welcome messages and to keep a log of entry's, these will be stored on a SD card.