X10 is a pretty cool idea; semi-wireless control over devices that can be pretty complicated: turning lamps on/off, dimming lights, controlling security cameras, etc. I say semi-wireless because X10 actually uses your home’s electrical wiring as a communications network.
Your home’s electrical wiring uses Alternating Current electricity. This type of electricity travels in a waveform known as a sine wave. X10 sends data commands at the zero crossing points. These are the times when the voltage goes to zero. You can see how this looks in the waveform below. This allows the X10 system to communicate on wiring that’s already built into your home. This is a big advantage over other home automation possibilities because you don’t have to wire anything.

X10 has a device called the PSC05 or TW523. This interface allows any piece of hardware able to communicate with its language the ability to send and receive X10 commands. On an Instructable I recently published, a fellow user commented that the lock control would be even cooler and more functional if I were to add a wireless remote interface. I remebered I had a bunch of X10 gear sitting around and realized that I had a credit card style remote that I could use to probably get the job done. After a quick search, I found an Arduino library that allowed the sending of X10 commands, but not their receipt. link
While this was a good start, I figured there had to be someone who had figured out how to both send and receive X10 commands using their Arduino. I was right! This fellow created a sketch that someone else transformed into an Arduino library that allows both sending and recieving X10 commands. I’m currently waiting on my PXC05 in the mail and will make another blog post once it comes and I work on getting my interface working.