[RELEASE] GE Motion Switch (26931) and Motion Dimmer (26933)

Is there any way to access the light sensor in this device handler to act as an illuminance sensor in webcore?

you should be able to do this with webcore by calling the vacant or manual methods at night and switching back to occupancy in the morning.

Not sure I understand your response. I want to build a piston which sets the level based on the light level of room. Or which only comes on when the light level in the room is under a certain lux. I also would like to trigger other switches in other rooms if the light level in one room with this switch is under a certain amount. In order to do this I would have to be able to read the state of the light sensor in this switch, but webcore doesn’t recognise this switch as an illuminance sensor…

Not that I have found…it is just a ‘threshold’…either too light or too dark.

Thanks Michael. Sonia there any way to read the state of the threshhold instead of the actual light level? I would guess not or you would have already exposed it. Just checking.

The switches do not report light level. The sensor is only used internally (when enabled) to prevent turning on the light with motion.

So then any piston I write for that switch will essentially behave as if there is no light sensor or light sensor is off, correct? So far, any piston I have written turns on the light regardless of the light condition. The only other thing I can think of is to base the piston on sunset and sunrise ± some amount of time and deal with it on the dark rainy days. Unless anyone has any other ideas. I am certainly open to suggestions on how I might do this. Perhaps this isn’t the right forum for that though.

Thanks for the help so far,


Correct, you will need a legitimate light sensor to base a piston on Lux - this device does not expose / report lux, and its light sensing is only rudimentary for its own internal occupancy trigger.

Now - put something like an Aeotec multi 6 in the same room and you can read THAT device for Lux. :slight_smile: (Which I do)

OK, So now I am having issues with the Piston. I will write on the webcore forum about this too, but the reason I am writing this here is because I think this issue is related to the DTH and switch itself, and not the way I wrote the piston. I am thinking that maybe there are more people reading this thread who have experience with this 26933 motion dimmer, this DTH and Webcore, than on the webcore site in general.

So my piston is as follows. My piston starts with a condition that says if the motion changes to active, and the switch is off then set level, and turn on. However, when looking at the Smartthings logs, it appears that the Switch and DTH are firing a “ON/Up on (button 1) was pushed” event and turning on the light milliseconds before the motion event is triggered and DTH sets “Switch is on” status. Thus when my piston fires milliseconds later, it reads the motion change, but also reads the switch as already on and doesn’t fire the do statements. In short, I can’t rely on the On/Off state of the switch as a trigger in the piston because the switch and DTH are beating it to the on state.

Any suggestions on how to redo the piston or the DTH setup to make the piston execute the do statements only when the the motion triggers the on event and the switch is off would certainly be welcome. It seems like the DTH is firing too quickly or the piston is firing too slowly. The issue may lie in that fact. Maybe there is a way to get the piston to fire first. I don’t know. @nathancu @MichaelS @TonyFleisher or anyone else.

Thanks in advance,


One more thing about this… When I go in an edit the piston and then resave exactly as it was, and then go test it, it works fine for the rest of the day. The piston fires first. Then, after the time parameter changes in the evening, it starts behaving as described above, where the DTH fires first and then the piston evaluates later. in the morning before 6:30 am time change it is turning on first then evaluating the piston. Just som more to the mystery.


So my question is do you really need ‘and switch is off’ in your conditions.

It doesn’t really matter what state the switch is, you’re just trying to set level based on motion present ND time Conditions?

Actually I think it does need to be there. What I am trying to do at a basic level is when i first walk into the room and the lights are off turn them on to full (99) during the day, and at night turn them on to 20. Then if the button 1 is pressed while the lights are on at 20 at night turn them to full (99). Then when motion stops, wait 5 minute before turn them off regardless of the state of the level or whether it was set programmatically or due to a button press. If I take out the check for off state, and it is in a motion inactive state and then I walk back into the room while the lights are on, it will dim them if the lights are on high at night, won’t it? I guess I need to test that. I suppose i could add a condition to test for dim level and time of day before firing the set level but that gets much more complicated.

Nonetheless, I don’t understand why the DTH seems to firing a button press when motion is detected even when the button hasn’t been pressed. It only seems to do that sometimes. Right now as i am testing this after resaving the piston it doesn’t seem to be doing it, but each morning, it seems to start happening that way.

OK, I just tested without the Switch Off condition. In the scenario where I walk into the room when off, and the piston triggers the lights to come on based only on the motion activity, the light set to 20 and things are fine to that point. Then I press the Button 1 and the lights go to 99. Then I leave the room and motion sets to inactive. Then I walk back into the room before the lights time out and the lights dim back to 20. I would prefer them to stay at 99 if I pressed the button to set them that way until they time out at turn off completely.

you might try using vacancy or manual mode instead of occupancy if you want to have the piston control the lights.

with occupancy mode, the motion and switch/level are separate events and the order is not deterministic.

1 Like

Interesting and i get your point. I really only would need the vacancy sensor with this piston. I will try this.

I still don’t understand why the DTH would read a button push when there wasn’t one though.


the switch pushes the button for you with motion in occupancy mode (or, to put it another way, from the dth perspective, the two are indistinguishable)

By the way @nathancu, I am planning on going to that sensor in many rooms of my house but the power wiring project in my house is a bit daunting right now because I want to use the usb power to get real time reporting. Do you use power or batteries? If batteries, how long do they last in a busy room like the master bathroom?


Good call Tony, mine isn’t in occupancy mode because I wanted total control over what I wanted it to do. It behaved ‘erratically l’ when it was in occupancy mode and I was also trying to automate it.

As to why, It detects inside the switch and then turns ‘on’ without any input from you. ST stopped differentiation between user button presses and automatic button presses a couple years ago. Now DTHs just report what is going on with the device not what triggered it.

For some reason my smartthings hub can’t find the GE device. I’ve tried resetting the hub and resetting the switch, but nothing. Anyone else have this problem?

Is the GE switch always in pairing mode? Maybe I’m missing a step.

If it was previously paired it may need to be reset to pair it again. Search for how to reset it and the try again. I had to do this a couple times on two of my switches.