Dim the lights when the movie starts


Active Member
Everything hereafter is written by a newbie, for newbies ... so be gentle ;)

Since a few people here were lucky enough to grab the free x10 starter kit, I thought some discussion on this topic might be helpful.

I own the UR86A remote, the CM17A computer interface (aka Firecracker), along with an assortment of modules and switches.

Okay, if you own this remote and some x10 gear, you should be able to use the remote to control your lights. If you haven't gotten that far yet, read page 16 from the above link.

So how to use the CM17A computer interface to control your lights? More importantly, how do you set it up so when you push the play button for, say PowerDVD 4.0, the lights dim?

Well, first things first. I only have a rudimentary understanding of girder, so this should suffice. In other words, you don't have to be a girder wizard to do this. If you haven't messed with girder before, please look at the Getting Started with Girder page.

At this point, I'll assume that you already have girder working for controlling your apps. For my quick and easy set-up, I will be using a pre-made PowerDVD .GML file.

So before we dive in, you will need to download the plug-in for the CM17A. (Its the only x10 on that page at the time of me writing this). Please refer to the getting started link for installing plug-ins if you're not sure how to go about it. (at least I think in its in there)

Okay, so you have the x10 plug-in installed and the CM17A (firecracker) attached to a com port (make sure you designate which com port your using in girder).

Open up the PowerDVD .gml file (any gml will work, though). You should see a command called "Play" with an event string under it. Well, this is a single command at this point. What we want is a Macro of sorts. So create a new MultiGroup and rename it "Play". Drag the original "Play" command into the multigroup. With the multigroup highlighted, go up to edit and create a new command. Label this Light ON.

To set-up the new command, go to the low-right window and select the plug-in tab. Highlight the x10 plug-in and hit the button to the right called "Settings"

This will bring up another dialog box. From here, choose the House and Unit code of the lamp you want to control. Then, choose the "ON" command. With regards to the delay Slider, I have mine set pretty much in the middle, but adjust and test for your own needs. Hit Apply and blam.... you're done.

Now, when you hit the play button on the remote, the light will come on and the movie will play.

Your probably saying to yourself.... why would I want the light to turn on, if I'm about to watch a movie? Good point. The reason is that the cheap x10 lamp modules do not have a preset dim. This means that when the light is intially turned on, it will go on at 100% = full blast. From here you can send it dim commands.

What if the light is already on? Well, if the light is already on (and say you already have it dimmed a bit), well, the dim commands will still work, but will decrease by 5% from the place where it was. (ie.) If your lamp is already at 50%, and you dim it 10 times, your light will be off. Well, I want a bit more consistency. Say for example, I want the light to be at 50% every time I start a movie. To do this, you will want to create a command that will turn the lamp off, then a command to turn it on, and then a command to dim the light.

Using this plug-in, as is, you can only dim/bright by 5% increments. Every Lamp will be different (different watt bulbs), but in essence, you will probably have several commands called "Light Dim 5%" in a row.

So here is what my MultiGroup for "Play" looks like:

## Play   <--- Top MultiGroup
   \ Play   <---  Play command sent to PowerDVD
   \ Light OFF  <--- command using the x10 plug-in
   \ Light ON   <--- resets the lamp to 100%
   \ Light Dim 5%
   \ Light Dim 5%
   \ Light Dim 5%
\ EventString    <---- Learned remote IR (triggers multigroup macro)

Now when you push pause, you may want the lights to brighten a little. So just add a few commands to brighten by 5% under the Pause/Play multigroup (you'll probably have to create this multigroup as well). Note: dont' use the off and back on commands as it can temporarily blind you after sitting in a dark room for a couple of hours. Note: In the GML file I'm using, pause and resume are the same command, meaning that if I push pause, the lights will brighten a bit, BUT when I hit it again to resume the movie, the lights will brightened again!!! Well, this is no good. So how to fix this...

You will need to adjust the state settings for each command. To bring up the "State Settings" dialog box; right click on the command and it should be located at the bottom of the list. Since I hit this button twice (once to pause and again to resume play) I set the brighten commands :: State count = 2 , Begin State =1. I then added some Dim lights commands (to lower the lights when I resume the movie) and have those settings configured as :: State count = 2 , Begin State = 2. Note: you have to change the state settings for all commands - copy and paste are two of my many friends.

This is just one way to do this. I guarantee that someone has a better way. If you do, please explain what you're doing.......because lord knows, I haven't a clue about what I'm doing :)

After finding out that the CM17A is only a transmitter (meaning it cannot recieve x10 signals), I all but quit messing with it. After my free x10 pack came, it included another one, so I figured.... this may be a sign?!?

Side note: You can also control appliance modules using the plug-in (can't dim it of course). So later today, I'm going to hook up my TV to one and create a multigroup that will....

Turn on the TV -- well, no go. It still needs an IR signal to turn the power back on, and my USB-UIRT hasn't arrived yet.
Turn on my Amp
Enter BeyondTV in full screen mode
Adjust the lights

All from hitting one button! :D


Note: Other computer interfaces that I know are supported include the CM11/12A and the serial powerlinc (use the generic serial plug-in).

** If any information is incorrect, or if there is a better way to go about this, please chime in.
I enabled light control using Girder and Homeseer just this weekend too, it's really cool, wife loves it, and very handy! All I did was making it so when you hit play, the lights dim to 0% (announces it too), pause dims the lights to 50% (and another announcement), when you hit stop, it dims the lights to 100%. Nice write up!
Not to start a 'whose is bigger' thing, but you can do a lot better than that with a system that has a more powerful macro language and two way control. For instance, I've set up a set of CQC macros that can do all those sorts of things, but which are independent of the actual devices being used, so they are very easy to adapt to another set of devices, and which can use two way control to not do things that don't need to be done.

For instance, one macro will turn on the projector, the processor/receiver, video switcher and processor, and while they are coming up, lower the lights (if they need to be), and switch the inputs on all the devices to the input that was passed into the macro as the target input.

This the macro is smart and CQC is two way, the same macro is used to switch inputs, since it looks at all of the devices and decides what needs to be turned on. If everything is on, it skips straight to just making the input changes to select the desired input.

There another one that does transport operations (play, stop, etc...), but since it is smart, it can operate on the active source, so the same page on a drawn interface will operate on whichever device is currently active, and of course it's smart enough to know which support transport controls and doesn't nothing if the current source device doesn't.

Actually it's even smarter than that in that you define a field in the Variables driver (which doesn't control a device it just provides a place to store network wide values that macros can read and write when they run), which has values of Default, VCR, DVD, etc... If that field is set to Default, the macro operates on the active source. But, you can set that field to a specific device and the macro will operate on that device. So, at the top of the user interface that provides buttons for the transport operations, I have a set of 'radio buttons' that allow me to override the transport control. So, even if I'm watching one device, I can quickly switch to another device and issue transport controls to it, then switch back to the Default setting.

If you are interested, here is a little writeup I did.

The macros work in terms of 'abstract interfaces' that define what a DVD player, or projector, or video switcher, etc... can do. From each of those abstract interfaces you derive concrete classes that implement each interface for a specific device. The high level classes work in terms of the abstract interfaces, so they are not affected by which actual device you are controlling. You can indicate via an external file which actual device classes you want them to use. Each concrete device class understands how to implement the generic (abstract) operations into device specific operations. So the high level macros use generic types for input source, aspect ratios, transport operations, etc... This leaves them completely independent of the specific devices being controlled.

When you have a serious macro language and fundamentally supported two way control of devices (when they support it), these types of things all become possible.