Use an Empty to control a property
Everything you are talking about should be doable with drivers.

For example to make a dimmer switch, right click on the strength on the light, go to add driver, and select manually create later.

Now go to the Graph editor and switch from F-Curve to Drivers at the bottom menu. On the right, your light should be listed. Open all the menus until you reach 'Default Value(Strength)' and click on that. Bring up the properties panel with N, and switch to the drivers tab. 

In the drivers tab, change Scripted Expression to Average Value, set the object to be your empty, and change the Type to Z Location.

Now you will have to adjust the curve on the graph to make the dimmer work as you want. The x-axis is the empty position and the y-axis is the light strength. Set the x-axis of the first point to be the lowest the empty will go on the z-axis, and the y-axis of the first point to be the strength of the fully dimmed light. Set the x-axis of the second point to be the highest the empty will go on the z-axis, and the y-axis to be the strength on the non-dimmed light.

Now if you go into rendered view with the empty selected and move it up and down the light intensity should change accordingly.