Roommate stealing your yogurt?

7. March 2013 22:47 by Ryan in   //  Tags:   //   Comments (0)

We've all had them: roommates who won't stay out of your stuff. You've tried labeling your things, stashing them in your own corner of the kitchen but your stuff still always seem to disappear.  This tip can help catch your thief, but you'll still have to do with the mess and noise your roommate makes.

This tip shows you how to setup InControl to record a snippet of video from your Foscam IP camera anytime that motion is detected. I used a Foscam camera with pan and tilt features, a motion sensor from Aeon Labs, VLC (free download) to record, and InControl Home Automation software to make this all work together. The motion sensor is used to detect motion and then trigger the recording from your IP camera, but you don't need to limit yourself to just motion -- you could use a door or window sensor or even the door lock opening up to trigger your recording.

 

Step 1: First, inside InControl, create a new scene. This scene will be responsible for moving the camera to some re-defined locations.  Be sure to setup your camera's presets beforehand either using InControl or the native camera configuration. My room is big, so I need to move to 3 locations to record it all. My scene will move the camera to the first location, pause for 7 seconds, then continue to the next location. 

To do this, create your scene then use the "Add Device..." button to add your camera to the list. Set it to move to position 1, then click the arrow next to the "Add Device" button and choose to "Add Pause..." Set the pause to 7000 milliseconds, which translates to 7 seconds. After this pause, add your camera again but specify position 2. Repeat this as often as needed. In my setup, I've got 3 cameras and two pauses on my list.

Step 2: Add a scene pre-script to start recording. This same scene will also use the pre-script feature to trigger our recording. Since I use the "pre-script" field, it'll record all of the movement that takes place during the scene. Click the "Browse" button next to the Pre-Script field and choose the existing FoscamRecord.cs script (note that you need at least version 2.212 of InControl to find that script). TIP: Make a copy of that script and use it instead to make sure your customizations don't get lost when you update InControl.

When you are done with steps 1 and 2, your scene should look similar to this:

 

 

Step 3: Customize the script to work with your camera. To do this, open the script up in your favorite text editor. Notepad works well enough for this task. You can find the script in your installation folder of InControl, which is usually C:\Program Files (x86)\Moonlit Software, LLC\InControl HA. Look in the "Scripts" folder and find FoscamRecord.cs.  Near the top of  your script you'll see a section of code that looks like this:

            // *******************************************************
            // ******* Change these to fit your system ***************
            var vlcPath = @"y:\program files (x86)\VideoLan\VLC\vlc.exe";

            // This is where the video will be saved. Be sure it has a trailing slash at the end (\)
            var videoOutputPath = @"Y:\SecurityVids\";
            
            // This is the camera's short id (double click a device inside InControl to find this id)
            var deviceShortId = 152;

            // How long the recording should go
            var recordTimeSeconds = 15;
            // *******************************************************
            // *******************************************************

Hopefully by now you've installed VLC; if not, you should go do so now. Make a note of where you install it because you need to tell the script that. Change this line:

var vlcPath = @"y:\program files (x86)\VideoLan\VLC\vlc.exe";

Next, setup a folder where you want your videos to record to and change this line to match. Make sure the trailing \ remains at the end:

var videoOutputPath = @"Y:\SecurityVids\";

The third piece to change is the deviceShortId. Head back over to InControl and find your camera in your list, then double click it. The window that opens up will have a line called "Short Id:" and then show a number. Make a note of that number and replace "152" in your script to match the number of your camera.

var deviceShortId = 152;

Finally, you can customize how long your script will record by changing this line:

var recordTimeSeconds = 15;

Make sure you save your script and close it.

Step 4: Create the rule to trigger recording. Go back to InControl and create a new rule. Change the "Trigger" to say "On Device Change State/Level." This trigger will watch for your motion sensor to activate and then execute a command -- in this case it'll activate a scene. 

Click on "Rule Data..." and then navigate to the "NodeIds" tab. In this list, find your motion sensor and check it, then pick "Off to On" and type in "True" (without quotes). This tells InControl to watch the motion sensor to change from "Off" (no motion) to "On" (motion detected).

As a last step in this screen, pick the "Scene" item and then choose the scene you created in the earlier step. This is the scene that will be activated when motion is detected. 

Click Close to save your changes and you are set. If you want, you can take some extra steps to setup some Conditions for the rule to only execute during certain hours of the day or when other conditions have been met. As it is now, it'll record anytime motion is detected.

Motion Activated Scene

25. October 2012 09:31 by Ryan in Clipsal, InControl Tips, z-wave  //  Tags: , ,   //   Comments (0)

Sometimes it's beneficial to activate a scene when motion is detected. This tutorial will step through how to setup this quick rule using InControl Home Automation.

The first step of the process is to create a new scene. I won't cover the details of scene creation here though. This scene will be the one that turns on a light when motion is detected.

Now create a new rule. I named mine "Light on with Motion." Select the trigger of "On Device change State/Level" and leave the default script of "ActivateScene.cs."

 

The trigger we picked will watch a device -- in this case, our motion sensor -- and then activate a scene when that device is tripped.

Go ahead and click the Rule Data button and choose the NodeIds option. Find your motion sensor and check it.

The next data item we want is "Off to On." We'll pick that one because we want the motion sensor to trigger the scene when it detects motion. If we wanted to trigger a scene when motion is done, we'd choose "On to Off."

 
As the final step, choose the Scene data option and find the scene you'd like to activate.

Getting the level of a device or a sensor from the command line

9. October 2012 02:25 by Ryan in Clipsal, InControl Tips, z-wave  //  Tags: , , ,   //   Comments (0)
Getting the sensor value or the level of a device from the command line is fairly straight-forward with InControl. In this tutorial, I'll describe how to accomplish this with a device that reports multiple sensor values. The same concept will work even with a standard light. First of all, ensure that you are at least running version 2.80 of InControl on your PC.

This tutorial will assume you are doing this from a Windows computer. It should still work in a similar fashion on other OSes though.

Step 1: You need to get a copy of CURL. Some OSes such as Linux might already have this. If not, visit the CURL web page to download the appropriate version for your operating system.

Once you have that downloaded, extract the curl.exe to your hard drive.  To make this easier, put your CURL.EXE file in your C:\WINDOWS\SYSTEM32 folder. This isn't required, but makes it easier for the sake of this tutorial and helps prevent the "COMMAND IS NOT RECOGNIZED" errors that are common.

Step 2: Find out what your computer's IP address is. This is the computer where you have InControl installed. The quickest way to find this is to open up a CMD window (by clicking Start/Run and typing CMD). Once the window is open, type in ipconfig and hit enter. You should get output similar to this:

The important information is found on the line that says IPv4 address. In my case, it's 10.4.3.178 - make a note of this number because you'll need it later on.  Note: if you see many of these listed like I do, the most likely bet is that it's the only one with a value for Default Gateway. 

Step 3:Create a "Sensor" device. This step is optional and is only required if your device includes sensor readings. My thermostat is just such a device - you can recognize these types of devices because they'll have a table of additional values. Take a look at my thermostat device:

 

Notice in the above screen shot that there is a line that reads "Temperature" and shows a value of 69. That's a sensor reading. If you want to get that value, you'll need to create a sensor device based on it. Notice the blue button to the left of "Temperature?" Click that to create this new virtual device. Give it a name - I named mine "Main Temperature."

Step 4:Find out the device Id of your device. This will be the virtual sensor device you just created in step 3 or any other device you want to get a level on. For this step, we'll use a browser such as Google Chrome (note, this works in all browsers, but is easiest to do in Chrome). From your PC running Incontrol, open up a browser and type in this url: http://localhost:1178/zwave/devices?password=123. Be sure to substitute "123" for your password if you have one set. You should get a window full of something that looks like this:

 

Search for your device by hitting CTRL+F and typing in the device's name. Near your device, you should see a deviceId. I've highlighted mine in the screen shot above. You need to make note of that Id - it's everything in between the quotes. In my case, the id is 15647143-5913-486d-a932-76879000011d.

Step 5:Retrieve the level of the device. It's time to use CURL to get the device along with the level. Type in the following command into a CMD window: http://10.4.3.178:1178/zwave/device/15647143-5913-486d-a932-76879000011d&password=123. Be sure to substitute "10.4.3.178" with your IP address that you located earlier. You'll also need to substitute your device id and password. Here's how my curl output looks - you'll also notice that my main temperature is at 69 degrees ("level":69):

Using On{X} and InControl to activate your lights when you get home

6. June 2012 11:38 by Ryan in Clipsal, InControl Tips, z-wave  //  Tags: , ,   //   Comments (0)

Microsoft has a new product out called On{X}, which lets you add even more brains to your Android device. On{X} is basically an engine that let's you check your phone's many sensors (like GPS) and then perform special tasks when something important happens.

For me, I wanted to setup On{X} to watch my GPS and when I got near my home, it would tell InControl to activate my z-wave enabled garage lights (New to Z-Wave?) Here's how I set it up.

Step 1: Setup a scene inside InControl that activates the lights that should turn on when On{X} detects the phone arriving near the house.

a) Create a new scene. I named mine "Garage On."

 


b) Click Add Device, choose the Garage Lights, then adjust the slider to the "On" position.

 


c) Click Activate Scene to verify that the garage lights turn on properly

d) For this to work, you'll need to make sure you've taken a few steps to access InControl over your 3g phone network.

Step 2: Setup an account on On{X}. It's free and relatively painless since it uses Facebook.

Step 3: Click the Create button to start a new script. You'll end up with a screen that looks like this:

 

 

Step 4: Delete all the code you see in your script, then copy & paste the following into the window:

    // Initializing variables 
    // This requires InControl Home Automation (http://www.incontrolzwave.com)
    var location = { name : "Home",latitude : "28.482657",longitude : "141.935347" } ;
    var inControlServer = "http://208.15.221.12";  // Enter your external IP
    var inControlPort = "1178"; 
    var inControlPassword = "";
    var sceneName = "Garage On";  // Enter the name of your scene
    // End of variables initializing 

    console.log('Started script: Turn on Garage Lights when arriving home');
     
    // create a geo region for the trigger to take place at
    var region = device.regions.createRegion({
        latitude: parseFloat(location.latitude, 10),
        longitude: parseFloat(location.longitude, 10),
        name: location.name,
        radius: 500
    });

    // Assign the callback when entering the region
    region.on('enter', function () {
        console.log('Entered target location!');
        
        // Create a notification that the timer has been started
        var notification = device.notifications.createNotification('Welcome to ' + location.name + '.');
        notification.content = "Your lights have been turned on.";
        notification.show();
        
        device.ajax({
          url: inControlServer + ":" + inControlPort + '/zwave/activateScenePost',
          type: 'POST',
          data: JSON.stringify({
            password:inControlPassword,
            sceneName:sceneName,
            activate:"1"
          }),
          headers: {
            'Content-Type': 'application/json;charset=utf-8'
          }
        },
        function onSuccess(body, textStatus, response){  
            console.log("Sucess:" + textStatus + ":" + body);
        },
        function onError(textStatus, response){   
            console.log("onError:" + textStatus + ":");
        });
        
    });
    
    // start monitoring the region
    device.regions.startMonitoring(region);

    console.log('Completed script: Turn on/off garage lights.');

Step 5: Customize the script to work with your home

a) Change your lat and long to match where your house is. To find mine, I used Google Maps. Just right click on your house and choose "What's here?" to have it show you the Latitude and Longitude (you'll need to hover your mouse over the green arrow that shows up).

 

b) Change your IP address to match what your own external IP is. Just go to www.whatsmyip.com and copy the IP address shown.

 

c) Change the scene name to match the one you created earlier in InControl.

 

Now just save your rule and send it to your phone. Next time you come back to your home, your garage lights should activate automatically for you.

Thermostat Scheduling Using InControl

31. May 2012 02:01 by Ryan in Clipsal, InControl Tips, z-wave  //  Tags: , ,   //   Comments (0)

This requires InControl version 2.0 or higher.

This page will describe the steps required to setup a thermostat to turn up the heat at 7 AM and turn it down again at 10 PM, Monday through Friday. 

Step 1: Create Scene to turn thermostat heat to 72 degrees.

a) Click the New Scene button and enter a name describing the scene.

 

 b) With your new scene selected, click Add Device...  and check the box next to your thermostat. After the your thermostat has been added to the scene, you can click on it and enter a Cool and Heat point. I set my cool point to something high and my heat point to 72.
 
 
 
 

Step 2: Create Scene to turn thermostat heat to 60 degrees.

Repeat step 1 again, this time creating a scene named "Thermostat Heat Off" which tells your thermostat to go to a low heat point, such as 60.

Step 3: Create rule to activate heat on scene at 7 AM

a) Click New Rule and name it "Heat on: Morning"

 

 b) Select the rule Heat On: Morning in your list and verify that Trigger and Script to Execute are set to "On a Specific Date (repeatable)" and "ActivateScene.cs", respectively and that the rule is marked as Enabled.
 

 
c) Click the Rule Data... button. Enter today for the Target Date, and 7:00 AM for when you want the heat to turn on. NOTE: This date may be in the past. This is OK since we are going to tell this rule to repeat everyday at the same time.
 

 d) Choose the scene you'd like to activate for this rule. In this case, we pick "Thermostat Heat On."

 e) For the Interval, enter "Days" to specify that this rule should repeat every day.

 f) For the interval number, we will specify "1" to tell it to repeat every 1 day.

 g) Finally, choose which Days of the Week you'd like this rule to be valid on.

 

Step 4: Repeat step 3, creating a rule to activate the "Heat Off" scene at 10 PM.

Your thermostat should now turn on and off every day based on the schedule you set.

Activate a scene from the command line

11. May 2012 00:55 by Ryan in InControl Tips  //  Tags: , , ,   //   Comments (0)

If you've ever wanted to integrate another program with InControl, one way to do it would be to use CURL to consume the hosted service.  This page will outline the steps needed to perform such a task.

This tutorial will assume you are doing this from a Windows computer. It should still work in a similar fashion on other OSes though.

Step 1: You need to get a copy of CURL. Some OSes such as Linux might already have this. If not, visit the CURL web page to download the appropriate version for your operating system.

Once you have that downloaded, extract the curl.exe to your hard drive.  To make this easier, put your CURL.EXE file in your C:\WINDOWS\SYSTEM32 folder. This isn't required, but makes it easier for the sake of this tutorial and helps prevent the "COMMAND IS NOT RECOGNIZED" errors that are common.

Step 2: Find out what your computer's IP address is. This is the computer where you have InControl installed. The quickest way to find this is to open up a CMD window (by clicking Start/Run and typing CMD). Once the window is open, type in ipconfig and hit enter. You should get output similar to this:

The important information is found on the line that says IPv4 address. In my case, it's 10.4.3.178 - make a note of this number because you'll need it later on.  Note: if you see many of these listed like I do, the most likely bet is that it's the only one with a value for Default Gateway. 

Step 3: Figure out your the scene's Guid ID that you want to activate.  A Guid is just a simple way to identify an object. Each scene in your system is assigned something unique. 

Go back to your CMD window now and be prepared to type in this command:

curl -X PUT -H "Content-Type:application/json;charset=utf-8" -d "{\"password\":\"yourPassword\"}" http://10.4.3.178:1178/zwave/getScenes

I've highlighted certain portions of the command that you'll need to change specifically for your own setup. If you use a password, replace yourPassword to match the password you setup. Just delete the text if you don't have one a password.

Replace 10.4.3.178 with the IP Address you noted from step 2.

Execute the command by hitting ENTER.  Here's how it should look -- and I want to point out that this may not be for the faint of heart! Indeed, it could appear to be as cryptic as the vertical lines from the Matrix. Don't worry though, I'll help you sort it out:

 

Look for your scene in that list. I've highlighted mine for example purposes. The one I'm interested in is named "Portable Sonos." What you want is the sceneID associated to that scene, in this case, it's the series of numbers/characters that starts with 90f18.  Grab the entire set of characters, including dashes up until the final quote and make a note of it. 

This ID will never change, so once you have it you can store it away somewhere and always use it to activate that scene.

Step 4: Activate the scene.

It's now time to use another curl command to activate the scene we picked. I'll once again highlight the portions that you'll need to change to match your own setup.

curl -X PUT -H "Content-Type:application/json;charset=utf-8" -d "{\"password\":\"yourpassword\",\"sceneId\":\"90f18fea-bd80-4c53-96a3-5b04429ca790\",\"activate\":\"1\"}" http://10.4.3.178:1178/zwave/activateSceneByGuid

That's it! If everything went well your scene should now be active. You can repeat this command anytime to turn that scene on again.

 

 

Kids leave the garage door open... again? (And how to close it with your cell phone)

29. December 2011 05:02 by Ryan in z-wave  //  Tags: , , ,   //   Comments (0)

My kids are notorious for opening the garage door and leaving it open.  When a neighbor called me at 2 in the morning to let me know the garage was open, I decided that I was going to figure out a way to monitor the garage door from my computer. 

This job took me about 4 hours. My friends and neighbors will be shocked to find out I did it, because my wife is the handy-man around the house. She asks for the power tools for Christmas while I ask for the NewEgg & Best Buy gift cards.  If you are truly handy, this should be a quick and simple project.

The first step was to get me some z-wave hardware. I ordered an Evolve LFM-20 relay and an Aeon Labs Door / Window Sensor.  The LFM-20 would be used to actually open and close the door, while the sensor is used to tell me if the door is currently opened or closed.

Door sensors are sensitive to metal, otherwise I could have mounted them directly to my garage door railing. Instead, I needed to figure out how to raise them "above" the rails and still have the paired sensor halves match up.

I went to my local hardware store and purchased a "Garage Door Top Bracket." After removing part of it and forcefully bending it into a desired shape, I was able to mount it to my garage door along with a sturdy piece of 2x4. This piece would go up and down with the garage door. 

 

 

On the other side I mounted a 2x4 to the fixed side of the door. This part wouldn't be moving anywhere. Here is the finished sensor mount:

 

 

I purchased a $5 plug kit and wired it onto the black/white/green wires of my LFM-20 relay. My garage door opener is conveniently located right next to an outlet, so this worked out great.

 

The next step was to wire the Evolve switch into a parallel circuit with my existing garage door opener button. The "diagram" of how I did it looks like this (please don't mock my artistic ability!)

 

One problem I ran into with this setup is that while the Evolve LFM-20 is active, the normal button used to open the garage door won't work. The fix is to find a way to shut the relay off just after it activates. For this, I used InControl's "auto-toggle off" feature to turn the relay off after a few seconds.

 

Using InControl, I'm able to monitor my garage door. When it's open past 9 PM, I get a text message at which point I can use my Android phone to close the door.

Here's a complete shopping list of z-wave items to make this work:

Most of these items can be purchased in a package to save you some money.

Automatic Christmas

12. December 2011 02:46 by Ryan in z-wave  //  Tags: , ,   //   Comments (0)

No, this article isn't about how to automatically get your Christmas shopping done. It's about those pesky Christmas lights. If you are like me, you remember that your Christmas lights need turned off right about the same time you pull the blanket up around your head and hit the pillow. 

This article will step you through how to use z-wave to automatically turn your Christmas lights on at sunset and off at a pre-programmed time.  Because you are using z-wave, you'll also have the added bonus of being able to control them and your other household lights using your smart phone.

This article assumes you've never used z-wave before and steps you through the basics of getting things setup.

Overview

Z-Wave is a technology that lets light switches, outlets and other devices communicate wirelessly with each other. To set this up, you'll need a master controller, a z-wave appliance module for each set of Christmas lights you want to control and a computer running the free version of InControl.

Hardware

The master controller is required to be able to setup and manage your z-wave devices.  For this, I recommend the Aeon Labs USB Stick.  Not only does this USB stick work as a master controller, but it also doubles as a controller that you can use on your PC, allowing your PC to send commands like "turn off" to your lights.  

In order to control a set of Christmas lights, you'll also want to purchase an appliance module -- which basically plugs into an outlet and provides a new outlet for your string of Christmas lights. Anything plugged into this module will be controllable using your PC and smart phone. 

Shop around a bit, you'll often times find sales on the appliance modules putting them at the $10-$20 range. The Aeon Labs USB stick is usually around $59. Here are some links to a website where I generally purchase my z-wave equipment from:

Lamp Module (dimmable, only supports plugs with 2 prongs)

Appliance Module (not dimmable, but supports 3-pronged plugs)

Setup Z-Wave Network

Now that you've got your hardware, it's time to get your z-wave network setup. First, plug in the Appliance module to a wall outlet and get your Christmas lights plugged into it.  

We need to tell the master controller (your Aeon Labs USB stick) about your appliance module.  Push the button on your USB stick and the blue ring should light up and start to blink.  Now put the USB stick next to your appliance module and push the "include" button (if you purchased the modules I linked here, it's the black button on top). The light on your USB stick should quickly flash a few times indicating that everything went well.

Repeat this process for each appliance module that you purchased.

Setup InControl

InControl is a free app which will allow you to use your PC and smart phone to control your lights.  Follow these instructions to download and install InControl

Before you continue, make sure you've downloaded and installed InControl and that you are able to use it to turn your Christmas lights on/off manually from your PC. I'll now show you how to setup InControl to create a schedule so that your Christmas lights automatically turn on at dusk and off at bedtime.

In order for InControl to know what time sunset occurs, you need to set your latitude and longitude. Use this site to pick your location, then inside InControl, open up the Tools/Options menu to enter the information you found on the site. 

 

Scenes

Scenes are a way for your computer to memorize which lights are on and which are off.  We'll create two scenes, one with all your Christmas lights on, and another with all the lights off. 

From within InControl, click on the Scenes tab. Click the Create New Scene button.  Add all the appropriate modules to your scene using the Add Device and make sure the slider is at full power.  Name your scene "Christmas Lights On."

 

Now create a 2nd scene and add the same set of modules to it. This time make sure that the slider indicates they are all powered off. Name this scene "Christmas Lights Off."

Rules

Rules are used to tell your PC when to turn the lights on or off. First, we'll create the scene that will turn your lights on at Sunset.

Go into the Rules tab and create a new rule by clicking Add Rule.  Name it "Christmas Lights On" and put in a description if you'd like.  Make sure the rule is enabled. Choose "At Sunset" for the Event Trigger. Click the Browse button next to script and choose "ActivateScene.cs." 

 
Now choose the Rule Data tab and double click the Scene row. Choose Christmas Lights On as the scene name. Click OK.
 

 

Now we are ready to create the rule that will turn lights off at bedtime.  Click Add Rule again, naming it "Christmas Lights Off" - be sure to Enable the rule as well. For the Event Trigger choose "On a Specific Date (repeatable)." For the script name, choose browse and find "ActivateScene.cs."

Change over to the Rule Data tab and double click each of the following rows, entering the respective value:

  • Target Date & Time: Choose today's date and enter the time you want the lights to turn off
  • Scene: Choose "Christmas Lights Off"
  • Interval: "Days"
  • Interval Number: 1
These values will create a rule that will repeat every day at the specified time.
 

Finished

That's it, you are done! Your Christmas lights should turn on automatically at sunset and turn off around bedtime. 

New to Z-Wave

10. December 2011 04:11 by Ryan in   //  Tags: , , ,   //   Comments (0)

When I was growing up, I rigged up a string and "pulley" system in my room so that I could turn off my light at night without getting out of bed. The string was anchored to a nail in the cieling above my light switch, then strung across the room to my bed. When I gave the string a tug, it would pull the switch into the "up" position and the light would turn off. I never could figure out how to rig the system to be able to pull the switch to the "down" position, so it was always a one way trip: once it was off, I had to crawl out of bed to turn it back on again.

Perhaps my early days of lazyness inspired me seek out a way to do the same in my modern home. Although I admit that some of it may be lazyness, most of it is for convenience (Editor's Note: Isn't convenience the same as being lazy?) Not only can I turn my lights on and off using the smart phone sitting next to me on my night stand, but I can automate many tasks to save energy and add a little bit of security to my home.

With z-wave, I've got the ability to easily convert my existing light system into something I can automate without much hassle. I'll explain how z-wave works and how easy it is for you to get started on it as well.

The Basics

You don't need to run new wires to get started with z-wave since it uses radio signals to communicate. When you tell a light to turn on using your smart phone, radio waves are really being sent to the switch with the command. Z-wave requires a master controller and a z-wave device. The most useful type of master controller is a USB stick, as it will allow you to control your devices using your smart phone or computer.

A z-wave device can be a light switch, a light dimmer, an outlet -- for controlling things like TV's, DVD's and plugin-lamps -- a motion sensor, a thermostat, or even a deadbolt lock. There's no end to what you can find that is z-wave enabled.

 

 

The master controller is what helps your z-wave devices know to communicate with each other. It not only "builds" your z-wave network, but it can also be used to send commands (like "dim" & "turn off") to your z-wave devices.

I mentioned network - don't let that term scare you off. It's quite simple to build your network once everything is installed. Simply use the master controller to recognize your device. This typically involves pushing the "include" button and then standing near your z-wave device and turning it on.

The Hardware

I've used two USB Sticks. One from ControlThink, and the other from Aeon Labs. USB sticks can double as Master Controllers so you can eliminate the purchase of an item when you get a USB stick. The Aeon Labs USB stick has a button on it that let's you "include" your devices simply with the USB stick. ControlThink requires you to walk around with a laptop to include devices.

The Aeon Labs stick is more convenient (read: for the lazy), but costs ~$60 as compared to $30 for ControlThink.

Dimmer switches range from cheap $20 to the expensive $100+ range. I've found that both work equally well and that it often comes down to your personal preference for how fancy you want the switch to look. 

The Shopping List

If you are ready to get started, here's what I'd recommend you purchase. This is enough to get you setup and controlling at least one light with your smart phone:

You can also purchase the Z-Wave Starter Kit, which includes home automation software, the master controller and 2 dimmable light switches.

It's easy to add-on products as your budget allows, so there's no need to blow the budget on your first go-around. 

Have fun!