[RELEASE] GE Z-Wave Plus Motion Dimmer Combo Driver

GE/Jasco Z-Wave Plus Motion Dimmer Combo Driver
This is a driver for the GE Motion Dimmer device (26933). It differs from the in-box driver in that it exposes all of the device parameters, and can optionally create child devices for the dimmer and motion sensor.

It has been tested with a GE 26933 motion dimmer.

Features:

  • All device parameters exposed
    • Configuration of button inversion variable.
    • Configuration of motion and light parameters.
    • Light Off Time, Motion sensor on/off, Motion sensitivity, Light Sensing for light ON/OFF, Motion Reset time, Dimmer steps/duration, switch mode*
      • NOTE: Switch Mode simply makes the physical buttons work like a switch. And note that when switch mode is enabled the physical buttons do not obey the Default Dimmer Level setting - ON always = 100% level.
  • Commands added for direct access to the following features:
    • Default Dimmer Level - Can use this in rules (via custom commands in RM, for example) to set the default dimmer level. May be useful for mode/time based lighting where you want the light to come on a different level than the level it was at when it was turned off.
    • Manual / Vacancy / Occupancy motion lighting modes. Can be used in rules (via custom commands in RM, for example) to put motion lighting in Manual mode at night for bedroom switches.
  • Has the option to create child devices for the Dimmer and Motion sensor
    • Uses the in-box Dimmer and Motion Sensor component drivers for the child devices - no need to install additional drivers for those.
      image

NOTE: One thing to point out for users of my previous drivers versions, I removed the "(default)" text from options and settings. So you may need to edit any rules/automations that used a command or event that previously had the "(default)" text in it!!!

To-Do:

  • none

Installation:

  1. Install Driver code in Hubitat
  2. Apply to a GE Motion Dimmer device. Click save.
  3. Edit preferences, save preferences.
  4. Click Configure command button

Driver can be found on my GitHub or Hubitat Package Manager

  • 1.0.0 (06/12/2021) - First version
  • 1.0.1 (06/12/2021) - Removed a (default) text I missed
  • 1.0.2 (06/14/2021) - Modified some of the current value checking, as it would throw errors in some situations.
  • 1.1.0 (03/27/2023) - Fixed setLevel duration conversion, thanks to user jpt1081 on hubitat forum for the idea/example code
4 Likes

My plan is to make this my single motion dimmer driver moving forward. Moving to a single combined driver will be easier for me to maintain long term.

That said - If you are using one of my other motion dimmer drivers, you can continue using them - you don't have to switch. Functionally there is no difference (at this time) between this combo driver and the other two drivers.

Thanks for killing (default)

Yeah, that was a well intentioned idea that became very annoying to me after a while... But then I didn't want to remove it and break people's stuff. :confused:

So now was the 1st opportunity I had to get rid of it cleanly.

One of the last platform updates prevented the RM changed trigger from activating when parentheses characters are in the string. I was hacking the driver to remove it from operating mode. Just one less thing to do now :slight_smile:
Thanks for the great driver. Cheers!

2 Likes

@JasonJoel Question about this driver.

I was using your "GE Z-Wave Plus Motion Dimmer Component" driver.

I notice I wasn't seeming to get the "Physical" on/off events for the device (in this case, I'm more interested in physically pressing the on/off buttons to turn it on/off/dim with the buttons vs. from the hub or motion.

So, I tried this newer driver--it seemed to "slip in" without any issues. However, I'm still not seeing events hitting the hub logs (nor physical switch events).

Thoughts?

Thanks!!

@JasonJoel Issue: I am receiving the following errors with a newly installed sensor when the light it manually turned on. Any Ideas?

app:852021-12-25 12:07:11.809 am errorjava.lang.NullPointerException: Cannot invoke method someOn() on null object on line 215 (method groupHandler)

app:862021-12-25 12:07:11.804 am errorjava.lang.NullPointerException: Cannot get property 'switchState' on null object on line 746 (method checkScene)

app:852021-12-25 12:07:11.793 am errorjava.lang.NullPointerException: Cannot get property 'currentSwitch' on null object on line 238 (method indicatorOffHandler)

dev:402021-12-25 12:07:11.745 am infoBathRmMD was turned on

dev:402021-12-25 12:07:11.742 am infoBathRmMD level was set to 99%

dev:412021-12-25 12:07:11.739 am infoBathRmMDim Dimmer level was set to 99%

dev:412021-12-25 12:07:11.736 am infoBathRmMDim Dimmer was turned on

I don't use groups or scenes, so not sure. I'll try to set some up sometime and see.

First - awesome driver!
Second - I've noted that sometimes my device never registers a "Switch On" event when it fires due to motion in occupancy mode. Instead, I just see a Motion event. Here's what I think is "normal":


And here's an abnormal instance where it never showed a Switch On event:

Here's an excerpt from the logs for the same events. First the normal event:

and the abnormal:

I've got some basic rules that fire based on "switch on" and so they aren't firing when the device fails to register the "on" event. Any theories?

Thanks

Nope, no thoughts off the top of my head.

Maybe try turning on debug logging on the driver and see if a switch on event is even making it to the hub. If it is, but not making it to an event - that is a driver issue. If no log for a zwave event for switch on is received, then nothing can be done in the driver/hub to work around that as it is a device or zwave mesh issue.

@JasonJoel There was one thing missing from the Motion Dimmer (both Hubitat supplied and the ones you created) and I was curious if it could be added if the device supports it. The pre-staging option that is available in the Hubitat supplied GE (non-motion) dimmer drivers. A switch will appear in the preferences as in this image:

image

I have found the pre-staging option to be quite useful for setting my lights to a certain dimmer level before they turn on. I suppose it is similar to the default dimmer value that is in these drivers but I don't know how to set that based upon what mode my system is in. Still learning...

Thanks!

That's what this command does:
image

You would just use a custom command to set it in RM.

I did it that way instead of some "pre-staging" option, as the GE Motion Dimmers support that as a dedicated parameter in hardware.

Most of the "pre-staging" option rigmarole in drivers came from Hubitat adding it in software at the driver level for devices that didn't support it in hardware, and to make the option look/feel the same across multiple device brands. So it was really a different solution, to a different problem.

Since this device supports it out of the box, I used the device native way of doing it, not the kludgy Hubitat workaround way.

Obviously it you specifically wanted it to work the Hubitat pre-staging way, you could form the driver on github and add, it though.

1 Like

I understand now. It took me awhile to actually figure out how it would work in RM but after some trial and error I have it working the way I want it to.

As for adding the pre-staging to the driver, I'll pass. Your drivers work good as they are and not very familiar with the language though I'm sure I could eventually hack it in and make it work.

Thanks for the reply. I appreciate it and the work that you have put into the drivers.

1 Like

And sorry if I was too short in the other message - I was trying to respond quickly in between meetings.

For others, an example action of how this is done in RM is shown below. The parts that may be non-obvious -

  1. Use "Set Variable Mode or File, Run Custom Action"
  2. You have to select "Actuator" as the capability before the setDefaultDimmerLevel command will show up
  3. Specify it as type number when asked for parameter type

2 Likes

Since 2.3.3 release I've been moving my Motion Lighting apps to Room Lighting apps. I noticed that my lights were turning on OK, but not turning off. The root cause is that the switch component of the light never turns 'on'. The motion component activates (activating both ML and RL apps) and goes inactive correctly. Motion Lighting hides the issue because it sends an 'off' even if Hubitat believes the switch is off. Room Lighting does not send the 'off' event if it believes the light is off. Device control works fine from the Device page.

I don't know when the issue started due to ML sending 'off's. I've hit Configure and Refresh with no change.

Here is a debug log for the device, activated by Room Lighting:

I'll take a look this weekend. Thanks for letting me know.

Thanks, it looks like there might be some platform quirks that are being tracked down too, so I posted the issue here:

https://community.hubitat.com/t/does-2-3-3-129-change-also-apply-to-zwave/102626/12?u=bill.d

Well, I can tell that not many people use this driver (versus my component driver or regular non-combo driver)!!!

There are actually a few different things messed up in the code. Maybe I'll refresh it sometime when I have a device handy to test against.

For now:

  • 1.0.3 (10/07/2022) - Added better logic for digital on/off handling

Is updated on github and HPM.

This might fix your issue.

1 Like

The changes work. Thanks for the quick turn around!

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.