Homeseer HS-WD200 Dimmer Button Mapping

Of course, as a Universal driver, you don't want the bloat that would come from adding "just one little customization for device X", with |X| approaching infinity over time.

Unless @MFornander wants to update his code, I will have to fork it and see if my (very) rusty programming skills are up to the task of leveraging your driver, which would make Mattias' extremely useful app available to a much wider range of devices.

You could add the customizations yourself as the code base makes it pretty easy.

For example, if you don't want to use the "setParameter" custom command as I've demonstrated, you could wrap setParameter as a new command. For the example shown, you could add the following in the preferences section:

command "setLed01ToMagenta"

And add a simple function in the body of the code

void setLed01ToMagenta() {
     setParameter(13, 1)
     setParameter(21, 4)

}

I changed back to your driver [Beta 0.1.1] and tested this with RM and a Custom Action to set parameters as per your example, and it worked. Was getting all set to set up all my rules in RM to mirror what I currently have going in the Switch Dashboard app, but then found basic taps and double-taps aren't working at all any more.

Here's the logs:

dev:3112021-03-14 03:52:54.810 pm infoHall was turned off [digital]

dev:3112021-03-14 03:52:54.803 pm debugdimmerEvents value: 87, type: digital

dev:3112021-03-14 03:52:54.794 pm infoBasicReport value: 87

dev:3112021-03-14 03:52:54.791 pm debugparse description: zw device: 09, command: 2003, payload: 57 63 84 , isMulticast: false

dev:3112021-03-14 03:52:53.940 pm infoHall button 2 was doubleTapped

dev:3112021-03-14 03:52:48.398 pm infoHall is 99% [digital]

dev:3112021-03-14 03:52:48.395 pm infoHall is on [digital]

dev:3112021-03-14 03:52:48.392 pm debugdimmerEvents value: 99, type: digital

dev:3112021-03-14 03:52:48.388 pm infoBasicReport value: 99

dev:3112021-03-14 03:52:48.383 pm debugparse description: zw device: 09, command: 2003, payload: 63 63 00 , isMulticast: false

dev:3112021-03-14 03:52:44.856 pm infoHall button 1 was doubleTapped

dev:3112021-03-14 03:52:38.909 pm infoHall was turned on [digital]

dev:3112021-03-14 03:52:38.906 pm debugdimmerEvents value: 6, type: digital

dev:3112021-03-14 03:52:38.904 pm infoBasicReport value: 6

dev:3112021-03-14 03:52:38.901 pm debugparse description: zw device: 09, command: 2003, payload: 06 63 A6 , isMulticast: false

dev:3112021-03-14 03:52:34.859 pm infoHall was turned off [digital]

dev:3112021-03-14 03:52:34.856 pm debugdimmerEvents value: 94, type: digital

dev:3112021-03-14 03:52:34.854 pm infoBasicReport value: 94

dev:3112021-03-14 03:52:34.851 pm debugparse description: zw device: 09, command: 2003, payload: 5E 63 7F , isMulticast: false

dev:3112021-03-14 03:52:29.651 pm infoHall is 99% [digital]

dev:3112021-03-14 03:52:29.636 pm infoHall is on [digital]

dev:3112021-03-14 03:52:29.633 pm debugdimmerEvents value: 99, type: digital

dev:3112021-03-14 03:52:29.629 pm infoBasicReport value: 99

dev:3112021-03-14 03:52:29.622 pm debugparse description: zw device: 09, command: 2003, payload: 63 63 00 , isMulticast: false

dev:3112021-03-14 03:52:29.449 pm debugrefresh

dev:3112021-03-14 03:52:29.407 pm warnconfigure...

dev:3112021-03-14 03:46:23.036 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_jvm__Beta_0_1_1__Almost_Any_Dimmer_Z_wave_Plus_Dimmer_Driver_775.doubleTap() is applicable for argument types: (java.math.BigDecimal) values: [1] (doubleTap)

dev:3112021-03-14 03:46:13.561 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_jvm__Beta_0_1_1__Almost_Any_Dimmer_Z_wave_Plus_Dimmer_Driver_775.doubleTap() is applicable for argument types: (java.math.BigDecimal) values: [2] (doubleTap)

dev:3112021-03-14 03:45:52.076 pm debugDevice Hall: In sendSupervised, Sending supervised command: 9F0301260163

dev:3112021-03-14 03:45:52.073 pm debugDevice Hall: Attempted to supervise a class 2601 which was previously rejected as not supervisable.

dev:3112021-03-14 03:45:30.469 pm debugDevice Hall: In sendSupervised, Sending supervised command: 9F0301260100

dev:3112021-03-14 03:45:30.464 pm debugDevice Hall: Attempted to supervise a class 2601 which was previously rejected as not supervisable.

dev:3112021-03-14 03:45:30.385 pm infoDevice Hall: Turning device to: Off.

It looks like a type mismatch or something. The log entries from 3:52pm onwards are after I changed back to the built-in driver for WD200. I included them for comparison purposes.

I Reset State and Initialize/Configure after each driver change, so it should be a clean state for either driver. The device is included as S2 Unauthenticated in case that matters.

Have any ideas, or do you need more info?

Try the version that's on my site as 0.1.2. Double taps are working on my WD200s, so this is odd. Did you reboot after switching to my driver?

No reboot, as I didn't need that before on earlier versions. I'll give 0.1.2 a go and let you know both pre- and post-reboot (if required).

In order to work across multiple different devices, these drivers gather a lot of data from the target device so they can customize to the device - this data is pre-cached by the "initialize()" routine which executes on startup. If you haven't rebooted, the driver will attempt to gather the data the first time its needed, but this might delay actions. If you don't want to re-boot after installing the driver, you have to click on the "Initialize" button on the web interface.

OK, so got it to work without rebooting, but had to use the multiTap (button#.taps#) custom capability. Previously, the doubleTap capability worked without modification. The built-in Button Controllers app and the button of the Device page when using your own driver seem to use the same function, and that's what's not working. If you're only using RM for double- and higher-taps, you wouldn't notice.

I think you saw this before on a type mismatch of "number" vs "decimal" IIRC--perhaps that crept its way back into the driver code? Even after a reboot, I get the same error:

[error] groovy.lang.MissingMethodException: No signature of method: user_driver_jvm__Beta_0_1_2__Almost_Any_Switch_Z_wave_Plus_Dimmer_Driver_775.doubleTap() is applicable for argument types: (java.math.BigDecimal) values: [2] (doubleTap)

Got it. I misunderstood the issue. I thought you meant that doubleTap didn't work when you initiated it from the WD200 - now I see you meant when clicking on the interface control.

Now I see the issue. I'll get this fixed in the next day or two.

Try the 0.1.3 update.
Reboot after installing.

Gah, not sure what happened, but I was doing most of my testing from the HE web UI, (you know, as opposed to getting up off the couch!), when there were in fact some problems at the wall switch. Turns out my physical switch was SNAFU'd--not even single-tap operations were working from the physical paddles. This had happened once before on this particular switch, (and only on this particular switch, wouldn't you know it), and the only way to reset it was to power-cycle it at the breaker.

So I had already upgraded to your new driver, and it wasn't working when I discovered that the physical switch was acting up. After resetting, it worked fine. But now I have no idea if the older release was fine, too, but needed the device reset to make things right. And I also don't know if the various driver changes and subsequent initialize/reset/configure or some combination of events is what caused the physical device issues.

At one point during my testing, I switched to your driver with my only other WD200, and it never had any problems with double-tap operations or anything, but weirdly, after initialize & reboot, it still reported as being a WD100 with your driver instead of a WD200. The only difference I could see with it and the first WD200 was that I had paired the first one with S2 Unauthenticated, and the second one with None. On a hunch, I excluded and re-included so that both were paired with Z-Wave security of None, and voila, both showed up as WD200. No idea if it's the security, S0 or S2 that has anything to do with it, or if the exclude/include reset everything enough to get things right.

TL;DR: The switch now works again with the built-in Button Controller app for single- and double-taps, so no need to redo those actions in Rule Manager. Triple-tap and above works with the multiTap custom attribute in RM. I was able to write the necessary rules in RM to update the status LEDs with setParameter, and was therefore able to remove the community Switch Dashboard app.

The RM implementation so far seems faster and more reliable than the community app, although the app had the advantages of managing the Blink parameter bitmask (param 31) and applying multiple conditions with different priority levels to the same LED. I could re-implement this functionality with Global Variables in RM, or fork the community app to work with your driver instead of relying on the setStatusLED() function in the WD200-specific driver. Maybe one day when I'm bored, or looking for an excuse to teach myself more about Groovy.

Guys, I am as green as it gets here. Just installing my Hubitat. Forced to upgrade from a ST ADT...

I have 20+ HS 100 and 200 switches in my house. I had a custom controller for ST that gave me the multi-taps and I would love to add this feature to my Hubitat now. Can you tell me what code in this post is needed and how I add it to my system.

Much appreciated,

Ed

1 Like

I was in the same boat and made the switch starting in December. I got up and running so fast with HE, that I threw out my initial plan of using HubConnect to gradually transition devices from ST to HE, and just cutover in a day. At the time, I was pretty pleased, except for the fact that the HE world didn’t have any drivers that allowed for more than double-tap. I initially resigned myself to this fact, and then this thread came along!

First off, if you haven’t installed it and learned about it, you must make friends with Hubitat Package Manager (HPM). Like the Community Installer in the ST world, but way better.

You need the driver being developed by @jvm33 called “Almost Anything Universal Z-Wave Drivers”. It’s labelled as Beta, but I’ve been using it since its initial Alpha release on my HomeSeer WD100 dimmers, and more recently on my WD200 dimmers, and it’s been rock solid.

Unfortunately, JVM is new to the HE world, as well, and putting his driver into HPM has not been a priority while he considers it to be pre-release. The good news is that you can install it manually from GitHub, and then automatically “discover” it’s updates after using the “Match Up” feature in HPM once it’s been installed manually.

The driver is at GitHub - jvmahon/HubitatCustom.

Once you’ve got that sorted, then you can start on figuring out Rule Manager (RM) to program your multi-tap functionality.

The driver is actually in HPM. I think I need to do a bit more to make it easier to find, but if you use the github URL the first time (in Hubitat Package Manager, choose "Install" and then "From URL"), it will then connect you to the Hubitat Package Manager copy so that you get updates.

I"m currently updating the driver to work better for devices connected via S2 security. I'll have that update out by Sunday (version 0.1.8) , so wait until then.

I know, that’s how I originally installed it. I went to HPM to see if you had had the time to make it findable through keywords or tags, but couldn’t find it that way yet.

So I went to screenshot this method by URL, and I got a package manifest error, so something looks to have changed that broke it. Let me know if you want more details.

Regardless, loving your work, it’s much appreciated!

I'll try again to get that fixed. This weekend, I"m trying to make the driver work with my Zooz Zen30s (a real problem device) and then I plan to publish an update, so I'll try to fix HPM at the same time.

I am real new and evidently a little slow. I believe I managed to install HPM, but I have not figured how to install the driver yet. Every web site that I copy and paste from the address bar gives me an Invalid Package File... Does not appear to be a valid Hubitat Package or does not exist.

Can you spoon feed me here?

Also trying to figure out the Basic Rules and/or Rule Machine. I created a rule that opens up the garage door when someone arrives, but I cannot figure out how to get it to close the door only when everyone (not 1 person but both) is gone. I am sure that it can be done, but I just can't seem to stumble into it.

Appreciate any help anyone is willing to give..

Ed

From HPM, select "Install":
image

Then select:

Then enter the URL to the packageManifest.json file:

** Must use the URL to the Github "Raw" version of the packageManifest.json file, which is:
https://raw.githubusercontent.com/jvmahon/HubitatCustom/main/packagemanifest.json

Also, you can find the Repository by selecting "Install" then "Browse by Tags", then select the tags "Lights and Switches" and "ZWave" and scroll down until you see:

To add onto jvm33’s post, Keywords are another way to find something in HPM. Also to clarify the copy/paste links, generally when I post an alternative link it is to the raw groovy source which is suitable for pasting into the import URL option of the App or Driver Code options - it’s the manual way of updating if you don’t have HPM.

Thanks. I now have the drivers installed and applied to all of my switches. I have also configured them with Enable Advanced Configuration, Show Parameter Value Input Controls, Enable text logging, and Enable Command Supervision if supported. But I cant figure out how to access the multi-tap controls. I don't see it in Button Controllers or Rule Machine. Do I need to also update something else to gain access?

Thanks,

Ed