Magic Wand TV Remote




One night about a month or so ago, I was watching an episode of The Big Bang Theory. In this particular episode, Howard and Raj were controlling their TV using a MAGIC WAND TV REMOTE!!!!!! Upon witnessing this sheer awesomeness, the preteen Harry Potter Fangirl inside of me had a minor heart attack.

Of course after seeing the episode, I did a quick google search to see if this Magic Wand TV Remote actually existed, and I came across the Kymera Wand. I was tempted to purchase this product, but decided against it. I had been wanting to learn how to work with Arduino for quite some time, so I decided that making my own Magic Wand TV Remote would be a great way to force myself to do just that.

In case you are not familiar with the Kymera Wand or the episode of The Big Bang Theory that I mentioned, a Magic Wand TV Remote functions without pressing any buttons. By waving the wand in different ways, different commands are sent to your television. I have programmed my Magic Wand TV Remote to turn the TV and cable on and off, control HDMI functions, and to turn volume and channels up and down.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Accio Materials and Tools!!!!!

Quit being a muggle and gather the following materials and tools! You will need the following....


Arduino Micro (with pins)

MPU-6050 3 axis Gyroscope + Accelerometer (with pins)

6V Battery Holder (you will need one shaped exactly like the battery holder I have linked to)

Infrared LED (you can buy a new LED or take one from an old TV remote)

1x 100Ω resistor

Infrared LED

Slide Switch

Gauge Wire

4x AA batteries

1x 3M nut

1x 3M screw


Elmer's Model & Hobby Cement (or equivalent glue)

LED (optional but HIGHLY RECOMMENDED!!!!)

Additional resistor (if you use the optional LED, you will need to use an appropriate resistor)



Jumper Wires

Micro USB cable

3D printer

Soldering Iron


Hex Wrench or Screw Driver (for the M3 screw)

TV remote for the TV you are trying to control

Step 2: Set Up Your Arduino Micro and Infrared Reciever

Let's get started! The first thing that you need to do is set up your Arduino Micro so it is attached to your Infrared Receiver using a breadboard and jumper wires. The pins that you need to connect are as follows:

Infrared ReceiverArduino Micro
Left PinPin #11
Center PinGND
Right Pin5V

Please keep in mind that when I mention left, center and right pins, you should be looking at your Infrared Receiver from the rounded side, not the flat one.

Step 3: Download IRLib

The first piece of information you need to gather is a set of codes transmitted by your TV remote. TV remotes work by sending a series of pulses using Infrared LEDs. These pulses are then received by the TV, where they are decoded so that the TV can carry out the corresponding command.

One thing that is important to understand before embarking on this project is that pulses submitted by TV remotes usually differ between brands and models. Because of this, the code that I have developed to use with my Magic Wand TV Remote will most likely differ from yours if you choose to make one yourself.

To get the correct code from your TV remote, you will need to downloadIRLibby Chris Young. This library is a variation of Ken Shirriff's IRLibrary. From what I have read, IRLibrary is great, but it is not compatible with the ATmega32u4 microcontroller which is used by the Arduino Micro.

After downloading this library, you will want to save it in the following location:

Documents > Arduino > libraries (I have a Mac, so this location might be slightly different on a PC)

Step 4: Decode Your TV Remote

After you have added the IRLib to the libraries folder, you will need to find a file titled IRrecvDump.ino. You will find this file located in the following location:

Documents > Arduino > libraries > IRLib > examples > IRrecvDump

Open up IRrecvDump.ino using Arduino software and upload it to your Arduino Micro. Make sure that under Tools, you have selected Arduino Micro as your board along with the correct serial port.

Next you will need to grab your TV remote and open up the serial monitor in the Arduino program. Point your TV remote at the Infrared Receiver attached to your breadboard, and one at a time, press the buttons on your remote that you would like to decode. After pressing a button, your serial monitor should show a code similar to that in the image that I have included above. You will see numbers in your serial monitor decoding the bit stream, but the only information you will be needing is from the header. The information we need from this header includes the protocol name, function code and number of bits. For example when pressing the 'Channel Down' button, the information that I need from the header is as follows:

Decoded Panasonic Old(5): Value:36F121 (22 bits)

There are many protocol names, and this library supports the following:


If you are pressing down a button on your remote and read the protocol name 'Decoded Unknown', try holding the button down for several seconds to see if a different name appears. 'Decoded Unknown' is usually paired with function code 0 and 0 bits, so you will not be able to retransmit this information.

Now you will need to simplify the information from the header. Write your protocol name as it is written in the box that I have included above instead of how it is written in your serial monitor's header. An example of how I wrote my code is as follows:


The last thing you should do is add '0x' before your function code, for example, mine would read:

PANASONIC_OLD, 0x36F121, 22

Save this code in TextEdit or a similar text document and repeat for the rest of your TV remote buttons.

Step 5: Set Up Your MPU-6050 and Infrared LED

Now that you are done gathering codes from your TV remote, you can remove the Infrared Receiver from your breadboard. It is time to start working with your MPU-6050 and Infrared LED. To set up these items, the following connections have to be made:

Arduino MicroMPU-6050Infrared LED
Pin #3SCLx
Pin #2SDAx
Pin #9x100Ω resistor, anode(+)

As pictured above, make sure that you attach your Infrared LED close to the end of the breadboard and fold it over the edge so that the LED lays parallel to the breadboard pointing sideways instead of up. This needs to be done so you can later test motions for the Magic Wand TV remote with all of your components still on your breadboard.

Step 6: Reading Raw Values From Your MPU-6050

It is time to begin working with our MPU-6050! To begin, you will need to use the sketch that I have attached at the bottom of this step written by Arduino User JohnChi. This sketch reads raw Accelerometer and Gyroscope values as well as Temperature. For this Instructable, all we need to concern ourselves with are the raw Accelerometer values.

Once you have uploaded this sketch to your Arduino, open up the serial monitor and start waving your breadboard around. Take note of which values are changing when you move or tilt your breadboard.

Step 7: Coding for Final Arduino Sketch (Swinging/Tapping Motion)

Now that you understand how to read raw values from your MPU-6050, it is time to select values for the final Arduino Sketch. Through trial and error, I have come to the conclusion that the best way to think about coding for different TV commands is by dividing our motions two categories: Swinging/Tapping and Twisting. In this step, I will go over selecting values and coding for Swinging/Tapping motions. Twisting motions will be discussed in the next step.

The first thing you will need to do download the sketch included at the bottom of this step. The sketch includes elements from JohnChi's sketch (included in the previous step), Chris Young's IRsend Demo sketch, along with some of my own coding.

For an example, I am going to work with the 'Volume Down' command. For 'Volume Down', I have decided that I want to use small taps down to execute this command. With the MPU6050RawValues.ino sketch uploaded to the Arduino, I took note of which Accelerometer values were changing when I used a downward tapping motion with my breadboard, Arduino and MPU-6050. I noted that Accelerometer values were changing in the Y and Z axes. Using 'greater and less thanstatements', I then took note of which raw MPU-6050 values could be included in the motion. For Accelerometer values in the Y axis (or AcY), the raw values were usually greater than 7000 when angling the breadboard slightly down. The Accelerometer values in the Z axis (or AcZ) were generally less than 10000 when using the same motion. Using '>' and '<' symbols, I began to write my code like this:

AcY > 7000 and AcZ < 10000

In order to include these values within the MagicWandTVRemote.ino sketch, we will need to replace the word 'and' with '&&'. We will also need to include these values within an 'if statement' which requires the addition of parentheses and an end bracket. In my case, the code would look like this:

if (AcY > 7000 && AcZ < 10000) {

You can add as many or as few 'greater and less than statements' as you would like to as long as you include '&&' between each one. Don't feel that you need to include only two just because I did.

The next thing we need to do is define how many times our code needs to repeat. Because swinging/tapping motions requires our code to start sending while the Magic Wand TV remote is not pointing at the TV, we need to make sure the signal is still being sent by the time the remote is pointing at it. It is important to play around a bit to find the right value because if you don't repeat the signal enough times, the LED will not still be transmitting the signal by the time the remote is pointing at the TV. On the other hand, if you repeat the signal too many times, you run the risk of the code being sent out too many times causing the code to be sent to the TV multiple times. This is where your optional LED light and resistor can come in handy. If you swap out the Infrared LED and resistor for a visible LED and resistor, you will be able to practice moving your breadboard in the way you would like to move your Magic Wand TV Remote, and see If the LED is blinking the correct number of times. It is a lot easier to swap out LED's then have to hold a camera up to the Infrared LED to see what it is doing.

The code for using a repeat is as follows:

for (int i=0; i <= 5; i++){

The number that needs to change based on how many times you want to repeat your command comes after the '<='. In my case, I wanted to repeat the command 5 times. Since small taps down allowed me to return my breadboard to a point where it was pointing at the TV fairly quickly, I didn't need to repeat the command many times. In contrast for the command 'TV-Power', I decided to do a larger swing down. It took me a little longer to point the remote at the TV so I had to repeat the command 15 times.

Lastly, we need to include the correct code that we found in the Decode your TV Remote step. I determined this code to be:

NEC, 0x20DFC03F, 32

This code needs to be inserted between the parentheses in the statement 'My_Sender.send( );' so in my case, the code would look like this:

My_Sender.send(NEC, 0x20DFC03F, 32);

Lastly, I added a short delay which should read like this:


All together, you code should look like this:

if (AcY > 7000 && AcZ < 10000) {
for (int i=0; i <= 5; i++){

My_Sender.send(NEC, 0x20DFC03F, 32);


Whatever you do, do not forget the two brackets at the end! One bracket ends your 'if statement', and the other one ends your 'repeat statement'. Your code will not work if you forget these brackets.

To integrate the values that you have found into the MagicWandTVRemote.ino sketch, just scroll down to the second half of the sketch and replace the values that I have found with your own. Make sure that you test your code with all of your components attached to the breadboard to make sure that you can actually control the TV.

Step 8: Coding for Final Arduino Sketch (Twisting Motion)

Coding for twisting motions is different than coding for swinging/tapping motions mainly due to the fact that when using twisting motions, your Magic Wand TV remote will always be pointing at the TV. This is not the case with swinging/tapping motions because the code begins to send before you point your Magic Wand TV remote at the TV. Because of this, there is no need to use a 'repeat statement' when using twisting motions, but this makes the use of 'delay' extremely important!

I am going to continue working with the 'Channel Down' command that we earlier worked with in the Decode your TV Remote step. For 'Channel Down', I have decided that I want to twist my remote to the left. With the MPU6050RawValues.ino sketch uploaded to my Arduino, I was able to see which Accelerometer values were changing when twisting my breadboard to the left. I noticed that Accelerometer values in the Z axis (AcZ) were generally less than 5000 and greater than 0. In addition, Accelerometer values in the X axis (AcX) were generally less than -4000. Using what we learned in the last step, the first line of our code should read:

if (AcZ < 5000 && AcZ > 0 && AcX < -4000) {

Next, I included the code that I found while decoding my TV remote within the statement 'My_Sender.send( );'. The code would be written like this:

My_Sender.send(PANASONIC_OLD, 0x36F121, 22);

The next thing we need to do is add a delay. This is a very important thing to add because without a delay in your code, the command will repeat over and over again. A delay allows you to have time to twist your remote upright without accidentally sending out functions multiple times. I decided that I wanted to delay the command two seconds so I wrote my code as follows:


1000 = 1 second, so you can alter your code accordingly.

Using these elements, your final code should look like this:

if (AcZ < 5000 && AcZ > 0 && AcX < -4000) {

My_Sender.send(PANASONIC_OLD, 0x36F121, 22);


Note that you only need to add one bracket. There is no 'repeat statement' so you only need to include a bracket for the 'if statement'. Once you are done, replace the values I have found with your own in the MagicWandTVRemote.ino sketch and upload it to your Arduino. Congratulations! You are now done coding!

Step 9: Download and Print the 3D Models

To house the electronics, you will need to download and print the included 3D models. I printed these models using both a raft and supports. When printing, the inside of the model(with the cutout rectangles) should be facing up so that the support material is on the outside of the model.

I printed these models on a Makerbot Replicator 2 3D printer. The files TopLong.stl and BottomLong.stl do not fit lengthwise on the build plate, but do fit diagonally across.

When you are done printing, remove the support material and you should be good to go!

Step 10: Glue Together BottomShort.stl and BottomLong.stl

Using the Elmer's Cement Glue (or equivalent), glue together the two models that you printed from the files BottomShort.stl and BottomLong.stl. To get a stronger adhesion, rough up the sides that need to be glued together using sandpaper.

Step 11: Solder Your Arduino Micro, MPU-6050 and Infrared LED

The next step is to solder your Arduino Micro and MPU-6050 using gauging wire to connect the pins. As I am not very experienced in soldering, I found this step to be extremely difficult. Luckily I found this great tutorial on Youtube which helped me quite a bit.

Make sure when soldering to use as little gauging wire as possible. The 3D printed parts do not have enough extra space to fit large amounts of extra wire. To make sure your Arduino and MPU-6050 fit properly, test them out by placing them inside their designated spots inside of your 3D printed parts as you solder.

To prepare to solder on the infrared led, you will want to cut two long pieces of gauging wire that each stretch from the end of the remote to their corresponding pins. When soldering on the Infrared LED, we want as little space between the LED and the end of the remote as possible. If you do this correctly, the LED should be centered with the hole on the end of the Magic Wand TV remote when gluing all the parts together.

Solder the gauging wire onto the correct pins and solder your 100Ω resistor onto the end of one of the pieces of gauging wire. Solder the cathode(+) onto the resistor and the anode(-) onto the other piece of gauging wire. It is a good idea to include heat shrink tubing around your anode to ensure that the two LED terminals don't accidentally touch.

Step 12: Solder Your Battery Holder and Slide Switch

To begin soldering your Battery Holder and Slide Switch to the Arduino, you will need to trim the wires on the battery holder to just span the length from the correct pin on the bottom of the Arduino to the hole cut out of the file TopLong.stl.

Begin by soldering the black wire to the GND pin. Next, solder the thered wire to any one of the corner pins on the Slide Switch. The slide switch that I purchased has 6 pins, 3 on each side. Cut a piece of gauging wire that can span from the Slide Switch to the bottom of the Arduino. Solder one end of the gauge wire to the center pin on the same side of the Slide Switch that you soldered the battery holder to. The other end of the gauge wire needs to be soldered to the VIN pin on the Arduino.

If you have soldered everything correctly, you should be able to use this switch to turn you Magic Wand TV Remote on and off.

Step 13: Insert Your M3 Nut Into the 3D Printed Part

Inside of the part you printed from the BottomShort.stl file, there is a hole that can fit an M3 nut. The fit is pretty snug so if you can't push the nut in with your fingers, grab a hammer or another small heavy object and give it a good whack! This should the nut to fit tightly within the hole.

Step 14: Glue It All Together!

Yay, you're almost done! The last thing you need to do is glue everything together.

All of the 3D printed parts need to be glued together except for the part printed from TopShort.stl. Since we have already glued two of the parts together, the only part we need to glue on is the one printed from TopLong.stl. Grab your Elmer's Model & Hobby Cement (or equivalent) and apply the glue to the edges of the parts that you want glued together. It is very easy for wires to pop out while gluing, so make sure you are being patient and looking out for anything not in place. All of the components fit very tightly within the 3D printed model so the parts have a tendency to want to separate. Apply pressure to the pieces by squeezing them together with your hands while they are drying.

Also, make sure your Slide Switch is popping through it's designated hole. Adding a little bit of glue will help the slide switch to stay in place as well. I found it was easier to apply to glue to a thin object which I could use to brush the glue between the slide switch and the 3D printed part. I found a spare piece of PLA filament to use, but anything thin such as a toothpick, end of a paint brush or Q-tip would work.

Lastly, pop your 3D printed part from the file TopShort.stl in place and secure it with an M3 screw.

Step 15: Blimey, You're Done!!!!!!!!!

Woohoo! You've made a Magic Wand TV Remote! 10 points for Gryffindor!!!!!!!!

Go call your friends, show them your remote and watch them be amazed! Most people who I've explained this project to either think I'm the coolest person they know.....or the strangest. If you make this remote, you will probably get similar reactions.

Hope you enjoyed!

Enchanted Objects

First Prize in the
Enchanted Objects

Homemade Gifts Contest

Participated in the
Homemade Gifts Contest

Formlabs Contest

Participated in the
Formlabs Contest

3D Design Contest

Participated in the
3D Design Contest

Halloween Props Contest 2015

Participated in the
Halloween Props Contest 2015

Be the First to Share


    • Instrument Contest

      Instrument Contest
    • Make it Glow Contest

      Make it Glow Contest
    • STEM Contest

      STEM Contest

    29 Discussions


    1 year ago


    First, congratulations for making this and thank you for the explanation :)

    I would love to make one for my sister, but I wouldn't have access to the TV remote to do the step 4. So I was wondering, is it possible to modify it to be able to program it with the TV remote after it's all finish?


    2 years ago

    That works great!!!

    When I'm trying to add the battery as "soldering the black wire to the GND pin", the 2 "GND pin"s on the arduino micro is already soldered to the ir-led and MPU-6050. How could this be solved?


    4 years ago

    When I saw the title of this ibble, i imemdiately thought 'Big Bang Theory' rather than 'Harry Potter'
    Well done!!!!

    2 replies

    Reply 4 years ago

    Thanks! That's funny because I saw another Big Bang Theory inspired 'ible the other day! I should just start making gadgets inspired by the show!


    4 years ago

    Can I make this as a regular remote with buttons.

    1 reply

    Reply 4 years ago

    Yes, it shouldn't be too difficult to modify the code and make a regular remote. Are you asking for permission, or instructions on how to alter the code to make it work with buttons?


    4 years ago on Introduction


    I was looking at your work I was like wow she made this and this is awesome. So I was wonder if I am make this one too but the only different I am having trouble is how can I get this work on LED strip. Is that possible? If so could you explain how it work and what I need to make the Magic wand tool to work on LED strip. This would help me out, because I am working on my BFA show for sjsu am I have got the other to work but I really like learn how you got it work and how can I change it to work on the LED strip.

    Please mail at

    Thank you ,

    Mikey x

    2 replies

    Reply 4 years ago on Introduction

    Hi Mikey,

    In order to get this to work with an LED strip, you should get a second prototyping board such as an Arduino. Attach your LED strip and an IR receiver to the second Arduino and program it so when the IR receiver detects certain signals from your Magic Wand remote, it sends your desired output to the LED strip.

    Because I am unfamiliar with the specs for your LED strip, I suggest you follow Instructable user push.reset's guide on Intro to LED strips which can be found at This guide will help you correctly power your LED strip with a prototyping board. Good luck!


    Reply 4 years ago on Introduction

    Well I have the LED working on the ardunio mega. the LED strip light I am used is Adafruit NeoPixel Digital RGB LED Strip - White 60 LED - WHITE. Yes it is digital I have it working on the accelerometer. accelerometer I am use is ADXL345. The one that have the 3 accelerometer axis. I was able to get it to turn one led strip light on and when I move to the y axis it light up. Would you be able to explain more about how I get the NeoPixel Digital RGB LED Strip connect to the magic wand? Explain the ir receiver dose and how's get that to Collect the date from the NeoPixel Digital RGB LED Strip I already have program.



    4 years ago on Step 7

    It's at this point where I begin to have issues. I've managed to get here, and have replaced the tv codes with my own, but I'm not getting anything from the breadboard/remote and the monitor doesn't show anything. I've switched the IR LED to a visible blue one and it just stays on (but oddly enough, when the IR LED is connected, it stays off as confirmed by my phone's camera). Any ideas?

    9 replies

    Reply 4 years ago on Introduction

    Hi Xenothios. My best guess is something is there are some set up and/or coding issues with your accelerometer. Have you tried the MPU6050RawValues.ino sketch out? If so, have you observed changes in the AcX, AcY and AcZ values?

    As for the monitor you are speaking of, is it your TV monitor or the serial monitor? The MagicWandTVRemote.ino sketch shouldn't show anything in the serial monitor.

    As for the Blue LED going on vs. the IR LED not going on, this is not something that will happen if swapped out correctly. The behavior should be completely identical. If you think about it, if you swapped out your Blue LED with a Red one, the only difference would be the color, not whether the light was on or off. Sometimes the IR LED is really hard to see, even with a phone camera. I tried my phone camera, and the only way I was able to see if the LED was shutting myself in a room with no windows and turning the lights off. Even then, the light was still extremely faint. If you are sure your LED isn't turning on, it might not be working. To confirm this either way, maybe try a simple LED blink sketch.

    Anyway, feel free to post the sketch with you're TV remote values. I'd be happy to take a look at it and see if anything jumps out at me as looking problematic.


    Reply 4 years ago on Introduction

    Thanks so much for responding! I'm really disappointed in myself for not having checked to see if you've replied any sooner, I'll address each point individually.

    That sketch (rawvalues) is indeed the one i'm trying to use in order to confirm the accelerometer's responsiveness. All that shows up is zeros and when uploading the sketch, I get the error "avrdude: stk500_getsync(): not in sync resp=0x1b". The serial monitor reports a connection failure before spamming zeros at me. It's possible my MPU6050 isn't connected properly, but i've followed your schematic exactly and the LED on the module is lit, indicating power.

    The monitor is the Arduino program's Serial Monitor. I'll keep in mind that the TVRemote sketch does not display anything in the monitor. I had tried jumping ahead from raw accelerometer data dump on the assumption that I simply had the wiring wrong and that the accelerometer was functional.

    I had swapped the LED out from IR to blue in an effort to visually see the code being processed (as you said, it doesn't matter if I swap out the LED, it should still be flickering when a command has been successfully sent) and that's when I noticed that the LED was solidly lit. It's probably due to whatever accelerometer issue i'm having? Either way, it's not a step I should worry about until I get the accelerometer issue sorted out.

    Eventually, I just took your example sketch for the tv remote and swapped my IR code in place of yours in an attempt to simply duplicate your results with your code. I'm guessing my biggest obstacle is with the accelerometer, but I can't for the life of me figure out why. I was troubleshooting online and read that apparently I need to take the module out of "sleep mode" in order for it to start returning values, but idk. I couldn't figure out how I would disable sleep mode, let alone if my module was even in it to begin with. Thoughts?


    Reply 4 years ago on Introduction

    Hey, I did a quick google search and I came across this Instructable addressing the problem:

    Out of all of the points brought up, one of them struck me as most likely being the problem. My instructions state to connect the INT pin from the MPU6050 to the RX on your Arduino Micro. Apparently the error comes when you upload the sketch while the RX pin has a wire connected to it. To solve the problem, unplug the wire going into your RX pin, upload the sketch while the connection is broken, and reconnect the RX and INT pins after the sketch is uploaded.

    If this doesn't work, I would troubleshoot the other points made in the Instructable. Hope this helps!


    Reply 4 years ago on Introduction

    It worked!... sorta. The errors are gone but the accel just reports 1s and a constant temp of 36.53 xD


    Reply 4 years ago on Introduction

    I was able to get the MPU6050 example dump sketch ("MPU6050_DMP6" from the library) to respond, so my theory is perhaps my pins for your dump sketch were improperly placed? I'm using an arduino NANO so IDK, but at least it's a step forward. Is there any way to add monitor output to the magic wand remote sketch?


    Reply 4 years ago on Introduction Arduino Nano! There is the source of your problems! To set your mind at ease, it should still work, I believe some wires just have to be rearranged. Arduino Nanos use the ATmega328 microcontroller(same as an UNO), where Arduino Micros use the ATmega32u4 microcontroller(same as a Leonardo). There are some differences between these two microcontrollers in terms of pin functionality, so I believe if you change the following connections, "magic"(haha....see what I did there!?) should happen!!!!

    Accelerometer Connections:

    SCL - A5

    SDA - A4

    LED Connection:

    Pin # 3 (I believe this is the default timer pin on the Nano.)

    I'm not 100% sure this is all correct, but I'd give it a shot!


    Reply 4 years ago on Introduction

    Success! It worked!** After a hell of a lot of fiddling with they accel/gyro readings, I managed to make two gestures with regular results (and then tacked on a few other codes to it so that it commands a series of things with the same gestures). I didn't use the wand form factor, but built my "wand" remote into a staff that I now use to control lights and power my tv in my house :) I'm not entirely sure that the INT pin actually does anything, because when I was attaching/detaching it during bug testing, I noticed the commands were still going through O_o

    **for whatever reason, my accelerometer data and gyroscope data were swapped in the dump sketch, so I switched all instances of Ac(X,Y,Z) to Gy(X,Y,Z) in the code to reflect acceleration data rather than positional gyroscopic data. I might have a swapped pin, but screw it, the code works with that modification and I wanted to be done xD


    Reply 4 years ago on Introduction

    I am so excited that you finally got it to work for you! Congratulations! That is such a neat idea to control the lights in your home! One of these days, I will have to try doing that myself.