[Withdrawn] HomeSeer HS-WD200+ Dimmer Driver

To review your questions; c4 hub, patched to latest version, integer parameter. :grinning:. Not sure why RM4 will not work for me. Back to the drawing board I guess.

If you haven't already you might post about RM4 in one of the other sections so that you might get some suggestions on how to fix it.

This may have been answered but in case it hasn't....

The LED's can be controlled by a Custom Command created in RM4. A custom function (for this device) essentially calls a function from the driver. For the HS-WD200+ the function is:

setStatusLED(string1, string2, string3)
Where:
string1 = the LED number
string2 = the color (0 will turn it off)
string3: 0 = on solid, 1 = blinking

There is a difference between the codehq driver and the internal driver.

One is setStatusLED and the other is setStatusLed

John

here is the backend when setting it up.. this action blinks the bottom LEDs red

RM shouldn't be seeing two commands for setStatusLed. There is just one on the driver and for me it shows like this in RM (with lowercase 'Led'):

I made some new changes:

1.0.4 2020-01-16

  • Fixed the delay between for single and double tap events @joe.roback
  • Added preference to not let setStatusLed to manage switch mode. If not used carefully this can conflict with bottom status on when load off or the setStatusLed command. However, it lets a user hide load when no status LEDs are set @JohnRob
  • Fixed firmware reporting for new Hubitat command classes
  • Made manufacturer an int and added manufacturer name
  • Fixed fingerprint hopefully

The background behind the new preference can be found here.

@mike12 I just finished a bunch of changes to the driver and I did not put in start or stop level changing commands. I don't see this supported directly by the hardware so I would have had to do it in software.

The only way I could think to do it would be to set the ramp rate to change very slowly, then schedule set levels. When it stopped I would have to restore the previous ramp rate. I didn't want to implement this in case there is a better way and because I was worried that the previous ramp could potentially get lost.

Maybe if you message Mike Maxwell he'll give you a hint on how he implemented it.

I am seeing the below error and thought it started when I went from the internal driver to yours. I could be mistaken though.

dev:20912020-01-18 04:31:46.592 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_codahq_hubitat_HS_WD200__Dimmer_2716.setStatusLed() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.String) values: [6, 3, 0]

That means that Mike implemented the internal driver with String parameters and you have RM setup to pass String parameter types. I'm not sure how I feel about that. On the one hand, I feel like people should be able to switch back and forth between the two drivers. On the other hand, I feel like my implementation is correct. Those parameters are definitely numbers.

You would have redo the action in the rules to pass numbers as parameters instead of Strings.

Here's what I'll do... I'll add an overloaded method that takes Strings and calls the other one. Give me five minutes.

1 Like

Related but a little different. I am on the version of the driver before your update today. I finally got it working, honestly not sure what it took. I know there are notes about having to initialize it first. I had been doing that. I did again, with 8,1,0. I found that this was sort of remembered. So as I went back and forth playing with the device in my rules, if I did something like 1,2,0 then back to off, it would go back to 8,1,0. Eventually I initialized it again with 0,0,0. That works. Note I only find it working if I intetionally call SetNormal and SetMode (abbreviated)

Ok, so as you can see I am trying to control individual LEDs.

If the light is on, or off and hsm disarmed, and 2 contacts and 2 other switches, then SetSwitchModeNormal (all LEDs normal). But if HSM is not disarmed, then SetStatusLed 8,1,0-all red. If Contact1 open then 1,2,0. If Contact2 open then 5,6,0. If Switch2 On, then 3,4,0 and finally If Switch3 On, then 7,3,0.

The challenge I am having is my rule keeps skipping.

This is the current state of the rule:

IF (FR Deck(off) is on(F)  OR 
(	FR Deck, Thermostat Override, Master Lights Override(off, off, off) all is off(T)  AND 
	Thermo: Doors / Windows Open, Alarm: Windows / Doors Open all closed(T)  AND 
	HSM status is Disarmed(T)
) [TRUE]) THEN
	setSwitchModeNormal() on FR Deck
ELSE-IF (NOT HSM status is Disarmed(T) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(0, 1, 0) on FR Deck
END-IF
IF (Alarm: Windows / Doors Open open(F) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(1, 2, 0) on FR Deck
END-IF
IF (Thermo: Doors / Windows Open open(F) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(5, 6, 0) on FR Deck

This results in this log:
Action: setStatusLed(5, 6, 0) on FR Deck (skipped)

When I opened contact1 or contact2

However, this worked before I built the last If section...

IF (FR Deck(off) is on(F)  OR 
(	FR Deck, Thermostat Override, Master Lights Override(off, off, off) all is off(T)  AND 
	Thermo: Doors / Windows Open, Alarm: Windows / Doors Open all closed(F)  AND 
	HSM status is Disarmed(T)
) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
ELSE-IF (NOT HSM status is Disarmed(T) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(0, 1, 0) on FR Deck
END-IF
IF (Alarm: Windows / Doors Open open(T) [TRUE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(1, 2, 0) on FR Deck
END-IF

Log:
Action: setStatusLed(1, 2, 0) on FR Deck

I am really trying to write this as one rule, and remember I still have to step through 2 more light switches. I need the last 4 items; 2 contacts and 2 switches to stack. Such that if contact1 is open and switch3 is on, it would send SetStatusLeds 1,2,0 AND 7,3,0.

Any ideas why my rule skips?

There's a new committed version with an extra method for setStatusLed that takes Strings. Please try it and let me know.

Sure, it skipped because that condition is false. This is a RM question and doesn't really have anything to do with this driver. I would check to make sure you have all of those if conditions as triggers. Make sure you don't really mean to put them all in IF (one is ELSE-IF). Make sure you end them all correctly (END-IF).

If you still aren't getting what you expect open a thread in the RM section so this can get the exposure/help it needs.

By the way, if you are using this driver then you shouldn't have to set the mode of the switch. The driver sets it for you (unless you have the new preference turned on). I don't set the mode and I have rules that work just fine. One of them is posted above. I don't set individual lights but it's the same thing to the driver. It's just one parameter. On true I set some LEDs and on false I set them to off. The switch goes in between status and normal mode on its own.

1 Like

Thanks so much :slight_smile: I tried the LED status and it worked just like I needed.

And I'm not getting the java exception error.

Awesome !!

John

Yeah, thanks. All conditions where right when I was really testing it. I might have cut a corner or two trying to get this post written.

All 3 switches, 2 contacts and HSM are in conditions as 'changed'.

HSM status becomes *changed*
Thermo: Doors / Windows Open, Alarm: Windows / Doors Open any *changed*
FR Deck, Thermostat Override, Master Lights Override(off, off, off) any turns *changed*

I rebuilt it, adding the second condition as follows:

IF (FR Deck(off) is on(F)  OR 
(	FR Deck, Thermostat Override, Master Lights Override(off, off, off) all is off(T)  AND 
	Thermo: Doors / Windows Open, Alarm: Windows / Doors Open all closed(F)  AND 
	HSM status is Disarmed(T)
) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
ELSE-IF (NOT HSM status is Disarmed(T) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(0, 1, 0) on FR Deck
END-IF
IF (Alarm: Windows / Doors Open open(F) [FALSE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(1, 2, 0) on FR Deck
END-IF
IF (Thermo: Doors / Windows Open open(T) [TRUE]) THEN
	setSwitchModeNormal() on FR Deck
	Delay 0:00:05
	setSwitchModeStatus() on FR Deck
	setStatusLed(5, 6, 0) on FR Deck
END-IF

This version has the conditions accurate to this log:

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:54.612 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: END-IF

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:54.562 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setStatusLed(5, 6, 0) on FR Deck

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:54.514 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeStatus() on FR Deck

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:54.437 pm [info](http://192.168.87.225/installedapp/configure/1408)Delay Over: Delay 0:00:05

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:49.172 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: Delay 0:00:05

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.997 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeNormal() on FR Deck

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.975 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: IF (Thermo: Doors / Windows Open open(T) [TRUE]) THEN

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.909 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: END-IF

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.907 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setStatusLed(1, 2, 0) on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.897 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeStatus() on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.885 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: Delay 0:00:05 (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.877 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeNormal() on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.852 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: IF (Alarm: Windows / Doors Open open(F) [FALSE]) THEN (skipping)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.764 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: END-IF

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.710 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setStatusLed(0, 1, 0) on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.704 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeStatus() on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.601 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: Delay 0:00:05 (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.596 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeNormal() on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.588 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: ELSE-IF (NOT HSM status is Disarmed(T) [FALSE]) THEN (skipping)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.099 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setSwitchModeNormal() on FR Deck (skipped)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.078 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: IF (FR Deck(off) is on(F) OR ( FR Deck, Thermostat Override, Master Lights Override(off, off, off) all is off(T) AND Thermo: Doors / Windows Open, Alarm: Windows / Doors Open all closed(F) AND HSM status is Disarmed(T) ) [FALSE]) THEN (skipping)

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:47.362 pm [info](http://192.168.87.225/installedapp/configure/1408)test 118 copy Triggered

[app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:47.336 pm [info](http://192.168.87.225/installedapp/configure/1408)test 118 copy: Thermo: Doors / Windows Open contact open

Yet both LED 1 and 5 are on. Any ideas? The log even says [app:1408](http://192.168.87.225/logs#app1408)2020-01-18 06:01:48.907 pm [info](http://192.168.87.225/installedapp/configure/1408)Action: setStatusLed(1, 2, 0) on FR Deck (skipped)

This doesn't turn LED 5 to color 6 AND turn everything else off. It just turns 5 on to color 6. You have to manually turn the individual LEDS off if you want them off or you have to turn them all off e.g. setStatusLed(0, 0, 0).

Thanks. I will play with removing the mode lines. But in earlier testing, I never got any results whatsoever without those commands in there. Only time I get anything is when I call them all.

Shouldn't SetNormal set them all off (0,0,0)?

Yes, but I don't see your rule doing that.