[Beta Release] Advanced "Every Device Customized" Zwave Plus Dimmer/Switch Driver

It does not handle the hail command.

@jvm33 Thanks for the quick feedback!

But to clarify - I can probably add "hail" to support these devices - it just isn't there now.

If you expand into that, and you want a test subject to try with the Leviton Vizia Z-wave dimmers/switches, let me know!

Thanks,
Jonathan

1 Like

I tried that with the 0.0.8 version, but it didn’t help. The good news is that I just tried it with 0.0.10 you committed on 2021-02-02 and this issue is resolved. I did have to Reset State Driver Data and Initialize, and I’ve tried it on two HS-WD100+ switches with success.

Still can’t find your code in HPM, though—is it supposed to be there, or should I continue to update manually from GitHub until your official post-2.2.5 release?

Re: the HPM issue, I hadn’t used the find-by-URL feature before, and just figured out that I need to give it the full path https://raw.githubusercontent.com/jvmahon/HubitatCustom/main/packagemanifest.json.

This only offers the 0.0.7 Beta version, so I guess you’ll update the package manifest when you’re ready for wider distribution, presumably with the post-2.2.5 release you’re currently working on.

Many thanks, this looks very promising. I’ll give it a shot with a Fibaro FGS-223 dual switch to test the multi-endpoint capability when you’re ready.

I've updated all of these drivers to better support devices with endpoints and to improve concurrency. They have also been renamed to "Almost Any Z-Wave Plus Dimmer Driver.groovy" and "Almost Any Z-Wave Plus Switch Driver.groovy"

Cool new feature is support of the "Supervision" command class - this should greatly increase reliability for any device that supports Supervision.

The drivers should show up on Hubitat Package Manager as the package "Almost Anything Universal Z-Wave Drivers" but if you can't find them there for some reason, you can get it from my gitHub site. See GitHub - jvmahon/HubitatCustom

Be sure to restart Hubitat after updating!

Testing / Feedback welcome and encouraged.

Just in case these updates cause any issues, the old versions of the drivers are archived here: HubitatCustom/Archive/Advanced Universal Driver at main · jvmahon/HubitatCustom · GitHub

2 Likes

Great update, working flawlessly--except for one thing that seems to have disappeared from your older code.

On my HS-WD100+ dimmers and HS-WS200+ switches, I no longer get the firmware levels and device names in the State Variables if I Reset State and then Initialize with the new driver.

Here's what I had under the older driver:

State Variables

  • ZwaveClassVersions : {44=1, 89=1, 38=1, 39=1, 133=2, 122=2, 134=2, 112=1, 114=2, 115=1, 90=1, 91=2, 94=2, 32=1, 43=1}

  • driverVersionNum : 0.0.10

  • pendingChanges : {}

  • deviceInformation : Click Here to get your Device Info.

  • ProductInstructions :
    Get Detailed information on your device by clicking this link Your device info

  • firmwareVersion : {sub=19, main=5}

  • parameterInputs : {000C:4447:3034:86120304220513FF00={4={size=1, name=configParam004, options={0=Normal, 1=Inverted}, description=Controls the on/off orientation of the rocker switch, title=(4) Orientation, type=enum}, 7={size=1, name=configParam007, description=Number of levels (1-99) to change dimming each step when controlled remotely, range=1..99, title=(7) Remote Dimming Level Increment, type=number}, 8={size=2, name=configParam008, description=Time interval (in tens of ms) of brightness change when controlled remotely, range=1..255, title=(8) Remote Dimming Step Duration, type=number}, 9={size=1, name=configParam009, description=Number of levels (1-99) to change dimming each step when controlled locally, range=1..99, title=(9) Local Dimming Level Increment, type=number}, 10={size=2, name=configParam010, description=Time interval (in tens of ms) of brightness change when controlled locally, range=1..255, title=(10) Local Dimming Step Duration, type=number}}}

  • device : HomeSeer Technologies: HS-WD100+, Scene Capable Wall Dimmer Switch.

  • parameterValues : {4=0, 7=1, 8=1, 9=1, 10=3}

And under the newest driver (or even the previous 0.0.8 beta):

State Variables

  • pendingChanges : {}
  • deviceInformation : Click Here to get your Device Info.
  • parameterInputs : {000C:4447:3034:86120304220513FF00={4={size=1, name=configParam004, options={0=Normal, 1=Inverted}, description=Controls the on/off orientation of the rocker switch, title=(4) Orientation, type=enum}, 7={size=1, name=configParam007, description=Number of levels (1-99) to change dimming each step when controlled remotely, range=1..99, title=(7) Remote Dimming Level Increment, type=number}, 8={size=2, name=configParam008, description=Time interval (in tens of ms) of brightness change when controlled remotely, range=1..255, title=(8) Remote Dimming Step Duration, type=number}, 9={size=1, name=configParam009, description=Number of levels (1-99) to change dimming each step when controlled locally, range=1..99, title=(9) Local Dimming Level Increment, type=number}, 10={size=2, name=configParam010, description=Time interval (in tens of ms) of brightness change when controlled locally, range=1..255, title=(10) Local Dimming Step Duration, type=number}}}

@jvm33, how do I make use of the multi-endpoint capability? The driver I'm used to using for my Fibaro FGS-223 Switch 2 (2-channel switch) by @ericm automatically created the Child devices for the two loads (provided the necessary driver was pre-installed, of course)?

Is this something I just need to look up in the Hubitat docs, (haven't found it yet), or are there more steps involved with your driver?

Thanks again!

I found that writing to "state" can be unreliable as there can be race conditions that cause writes to be unpredictable. Therefore, in this version, I cut that down to the minimum. I think I can add back the firmware version and device name without causing problems as they would be written in the same thread that writes parameterInputs..

The driver should automatically create "child" devices for the endpoints. I tested that with various Zooz and Inovelli devices and they work. For the FGS223 it should create two "switch" endpoints -- is that not happening? Try clicking on "initialize" from the web interface.

Did your old driver create "child" devices -- it should have, but if it didn't, let me know. If they were "left behind" and can't be edited / deleted, let me know that too.

I could've sworn I did that the first time around, but maybe I just got too excited. :wink:

Anyway, I updated to 0.1.1 and the Initialize function worked as expected, creating the requisite Child Devices.

1 Like

Just an FYI - I'm not seeing your drivers in HPM, searching for "Almost Anything", "Almost Any", "Almost" and other combinations in HPM's Search By Keywords option. I did find below using Bryan's Package Explorer app, but searching on "Advanced Universal", "Advanced", and "Universal" I was still unable to find anything in HPM.

Maybe your updated HPM submission didn't take?

I still haven't been able to find it through normal search methods either, but see my post #67 for how to add it via HPM using the Find-by-URL method.

Yup, I did see that, thanks. :slight_smile:

I just wanted to let @jvm33 know that the HPM submission wasn't showing up.

Yes, the old driver created the Child Devices. When I switched to your driver, the old child devices were still there, but I was able to manually delete them without issue. Clicking on Initialize with your driver did create the new Child Devices as expected.

I'm not sure if I fully understand the updating of HPM and the use of keywords in the packagemanifest.json file here https://github.com/jvmahon/HubitatCustom

If anybody understands this better, and can suggest keywords to add to the packagemanifest, a pull request on the repository would be welcome (and instructions on what else I need to do to push the changes to HPM).

Unfortunately I've never submitted anything so can't help. Maybe @bertabcd1234, @lewis.heidrick, or @dman2306 can share some wisdom on HPM submissions?

Yeah!

I've been working since midnight and my brain is pretty much mush at this point. It takes a bit after you submit it before the repo is published. When they added mine it was about 3 days. It's a manual thing on their side to add new people to HPM but afterwards you just update the version number in each of the files.

2 Likes