HomeSeer HS-WD100+ Configurations

Hi folks,

Anyone manage to get the scene functionality working in OH1? If so, would you be so kind as to share your items/sitemap configurations?

Also, which version of the z-wave binding is required to support these devices?

I managed to get this to work with the HS-WS100+ (a binary relay switch), which I imagine will work very much like the HS-WD100+, possibly requiring only changes to the first line to reflect the fact that it’s a dimmer:

Switch  GarageLights        "Garage Lights"				{ zwave="15:command=SWITCH_BINARY" }
Number  GarageLights_1TU	"Garage Lights_Scene 1TU"   { zwave="15:command=CENTRAL_SCENE,scene=1,key=0" }
Number  GarageLights_2TU	"Garage Lights_Scene 2TU"   { zwave="15:command=CENTRAL_SCENE,scene=1,key=3" }
Number  GarageLights_3TU	"Garage Lights_Scene 3TU"   { zwave="15:command=CENTRAL_SCENE,scene=1,key=4" }
Number  GarageLights_1TD	"Garage Lights_Scene 1TD"   { zwave="15:command=CENTRAL_SCENE,scene=2,key=0" }
Number  GarageLights_2TD	"Garage Lights_Scene 2TD"   { zwave="15:command=CENTRAL_SCENE,scene=2,key=3" }
Number  GarageLights_3TD	"Garage Lights_Scene 3TD"   { zwave="15:command=CENTRAL_SCENE,scene=2,key=4" }

Using the switch paddle sends scene updates. Turning on the switch with the paddle is one tap up (1TU), off is one tap down (1TD), two taps up on the paddle is 2TU, and so forth. Note that commanding/telling the switch to turn on or off with a ZWave command is not an update and you won’t see that with a rule that looks for scene updates.

Here’s a sample rule that tells you that one tap of the up paddle occurred:

rule "Garage Lights Switch 1 Tap Up"
	when 
		Item GarageLights_1TU received update
	then
		logInfo("GLSM", "Got 1TU.")
end

Hope this helps,
Bill

Older thread but I wanted to comment/cross post about this. I remember having seen this originally when looking at the HomeSeer switches. I recently picked these up and added them to my arsenal across the house. They are FANTASTIC!! Please bear in mind, this configuration is for OH2 vs OH1 which I believe the original poster was asking about.

If you are able to get the firmware updated on them to the latest, you will be able to just read a secondary item for the switches/dimmers. In my case I call it “switch_name_dimmer_scene” in addition to my “switch_name_dimmer”. This allows me to simply read the scene as 1.0, 2.0, 1.3, 2.3, 1.4, 2.4 - and apply the appropriate change.

The result is a simple rule allowing multiple actions. Example below. I wanted to outline this as it helps reduce the amount of rules and lines of code overall. One extra item, and a few If/Else If statements added to one rule.

rule "Master Bathroom Switch Automation"
when
  Item master_bathroom_dimmer_scene changed
then
  if(master_bathroom_dimmer_scene.state == 1.3){
    sendCommand(left_vanity_switch, ON)
    sendCommand(right_vanity_switch, ON)
    sendCommand(master_bathroom_dimmer, 100)
      logInfo("rules.automation", "Master Bathroom - All ON rule executed (2 Taps UP)")
  }
  else if(master_bathroom_dimmer_scene.state == 2.3){
    sendCommand(left_vanity_switch, OFF)
    sendCommand(right_vanity_switch, OFF)
    sendCommand(master_bathroom_dimmer, 10)
      logInfo("rules.automation", "Master Bathroom - Dim rule executed (2 Taps DOWN)")
  }
  else if(master_bathroom_dimmer_scene.state == 2.0){
    sendCommand(left_vanity_switch, OFF)
    sendCommand(right_vanity_switch, OFF)
    sendCommand(master_bathroom_dimmer, 0)
      logInfo("rules.automation", "Master Bathroom - All OFF rule executed (1 Tap DOWN)")
  }
end

Credit where due, I did see and mimic the similar mechanism that @Python used in this thread here. If you aren’t aware of the firmware update, this post supplies some information around that as well. I HIGHLY suggest getting the update. It seems switches ordered (at least direct from HS) at this point include the newer firmware by default.

It looks like pretty much any future order will include the latest firmware. HS has been outof stock everywhere and stores are now getting new stock, and i’ve read everyone getting the switches has the latest firmware.

To add to your post (i cleaned up my rule to demonstrate an alternate way) i originally did the else if{} check but decided to do case logic, its all the same, visually it just looks cleaner when looking at it.

Here’s a rule using CASE to determine the tap scene controls:

Item:

Number vDimmer_Scene "Driveway Soffit Lights_Scene" { channel="zwave:device:159a54632e2:node2:scene_number" }

Rule:

rule "Homeseer WD-100+ Single/Double/Tripple Tap Scene Control"
when
    Item vDimmer_Scene received update
then
{
	switch(vDimmer_Scene.state) {
		/*ON*/
		case 1.0 : {							/* Single Tap ON */
			logInfo("RULE.DIMMER", "Single Tap: ON")
		}
		case 1.3 : {							/* Double Tap ON */
			logInfo("RULE.DIMMER", "Double Tap: ON")
			}
		case 1.4 : { 							/* Tripple Tap ON */
			logInfo("RULE.DIMMER", "Tripple Tap: ON")
		}
		/*OFF*/
		case 2.0 : {							/* Single Tap OFF */
			logInfo("RULE.DIMMER", "Single Tap: OFF")
		}
		case 2.3 : {							/* Double Tap OFF */
			logInfo("RULE.DIMMER", "Double Tap: OFF")
		}
		case 2.4 : { 							/* Tripple Tap OFF */
		   logInfo("RULE.DIMMER", "Tripple Tap: OFF")
		}
	}
}
end

@Python - thanks that makes it visually easier to digest. Interesting, I wasn’t aware of the case functionality in rules. I’m not a coder by any means, and just getting my feet wet again with the xtend language for rules here. I might have to adopt that as most my switches are these. And one thing that’s nice, is catching the 1.0/2.0 for triggers where I want multiple lights to go off with one switch. Instead of waiting for the dimmer to hit 0, it will immediately turn the others out while the dimmer gets to 0 instead of a “perceived” delay in trigger.

Is there a syntax to use for the device state to watch? I see you have
switch(vDimmer.state){}
Is switch referencing the device type? Or would I be using that EVERY time I want to use the case rule type? And am I correct in understanding that whatever follows the case line, would be the equivalent of == as in my rule above?

EDIT: Ok I should have googled first. That was a noobie failure on my part. Simple google of switch() returned a javascript explanation of switch blocks. Very handy. For reference of anyone else: nice explanation of switch blocks

I made a typo. let me correct it above shortly. To convert your rule into the case statement it would look like this:

rule "Homeseer WD-100+ Single/Double/Tripple Tap Scene Control"
when
    Item master_bathroom_dimmer_scene received update
then
{
	switch(master_bathroom_dimmer_scene.state) {
		/*ON*/
		case 1.0 : {							/* Single Tap ON */
			logInfo("RULE.DIMMER", "Single Tap: ON")
		}
		case 1.3 : {							/* Double Tap ON */
			sendCommand(left_vanity_switch, ON)
			sendCommand(right_vanity_switch, ON)
			sendCommand(master_bathroom_dimmer, 100)
			logInfo("rules.automation", "Master Bathroom - All ON rule executed (2 Taps UP)")
		}
		case 1.4 : { 							/* Tripple Tap ON */
			logInfo("RULE.DIMMER", "Tripple Tap: ON")
		}
		/*OFF*/
		case 2.0 : {							/* Single Tap OFF */
			sendCommand(left_vanity_switch, OFF)
			sendCommand(right_vanity_switch, OFF)
			sendCommand(master_bathroom_dimmer, 0)
			logInfo("rules.automation", "Master Bathroom - All OFF rule executed (1 Tap DOWN)")
		}
		case 2.3 : {							/* Double Tap OFF */
			sendCommand(left_vanity_switch, OFF)
			sendCommand(right_vanity_switch, OFF)
			sendCommand(master_bathroom_dimmer, 10)
			logInfo("rules.automation", "Master Bathroom - Dim rule executed (2 Taps DOWN)")
		}
		case 2.4 : { 							/* Tripple Tap OFF */
		   logInfo("RULE.DIMMER", "Tripple Tap: OFF")
		}
	}
}
end

EDIT: I corrected my post above to include my item line,

That’s interesting stuff, and answers one major question about the Z-Wave binding I’ve been struggling with since trying OH2 over the past few weekends. (I’d have complemented you sooner, 'cept I haven’t tried OH2 until now.)

Since you’ve defined a switch successfully with OH2, can you have a look at this question and provide some insight, please?

Thanks,
Bill

@Python Thanks for the work there. Sorry it had to be for nothing though. :frowning:

Unfortunately I realize now I’m going to have to use IF statements to account for non-physical usage. We have 2 echo’s hooked up in the house for taking action via voice. So if accidentally we walk out of the bathroom and go to get in bed, realize forgot the light, we tell Alexa. Unfortunately since we aren’t actually tapping the switch, the scene is not updated. I could switch the items to being bound to the scene instead, but then I can’t set the dimmer. And I wouldn’t be able to tell if the light is actually on/off at the time.

So I have to set the when clause to account for either of the items changing, then use the IF to catch the specific change. And I need to put an OR into the IF statement so that I don’t end up with duplicates in case of a physical press that then changes the dimmer to hit the # as well and cause unnecessary calls.

I love home automation, don’t get me wrong - but it seriously causes headaches thinking through all the use case scenarios and combinations possible before we program these damn rules. :anguished:

Haha yup! I have so many lines of code to control just two switches for my dimmer syncing and door sensor lighting. I found i do a little each day and make a change, slowly you will get it perfected or realize you need to do a change (eg. Last night when renoing the bedroom and running out my patio door to do some cuts… it would dim the soffit lights to a defined dimmer setting for the patio door, meanwhile i had manually triggered the lights to be a specific value). Now I have it not change any lights if they were manually set.

Just do a little at a time, find out where things need changing and after many days you will have it perfect. The one really nice thing is once you get it all perfect you don’t touch any code anymore and its super nice!

I’ll be back in coding mode when i get my 5 switches next week to complicate things even more lol :slight_smile:

Curious if you guys find a better way to do this. I just stumbled in this “issue” tonight while setting up rules for my mudroom. Basically the light auto turns on with motion or door sensor and has a timer to shut it off after x minutes if no motion is seen. The problem came when I shut the light off manually I needed a way to disable the timer and execute other actions (there is music also playing) but since it’s not using the switch when you manually turn it off it never triggered. I then had different rules for if it was a scene change (manual) or state change (auto) but it got ugly fast. I decided to just change the scene in a rule if the state changes so I basically set the state to 2.0 if the state changes to OFF and 1.0 if it changes to ON. Not pretty but it works. It would be nice if the binding could do this for us, no? Is this possible?

I know this is an old thread, but for reference, here is an example of my items config for a known working configuration in OH1 to capture single tap, double tap, triple tap, hold and release events.

Switch  HS_WS100_SWITCH         "HS_WS100 Switch"  {zwave="2:command=switch_binary,refresh_interval=500"}

//-------------------------------------------------------------------
// SCENE 1 = TOP (UP) BUTTON
//-------------------------------------------------------------------

Switch  HS_WS100_ANY_TAP_UP      "HS_WS100 <UP> Any Tap"      { zwave="2:command=CENTRAL_SCENE,scene=1"}
Switch  HS_WS100_SINGLE_TAP_UP   "HS_WS100 <UP> Single Tap"   { zwave="2:command=CENTRAL_SCENE,scene=1,key=0" }
Switch  HS_WS100_RELEASE_UP      "HS_WS100 <UP> Release"      { zwave="2:command=CENTRAL_SCENE,scene=1,key=1" }
Switch  HS_WS100_HOLD_UP         "HS_WS100 <UP> Hold"         { zwave="2:command=CENTRAL_SCENE,scene=1,key=2" }
Switch  HS_WS100_DOUBLE_TAP_UP   "HS_WS100 <UP> Double Tap"   { zwave="2:command=CENTRAL_SCENE,scene=1,key=3" }
Switch  HS_WS100_TRIPLE_TAP_UP   "HS_WS100 <UP> Triple Tap"   { zwave="2:command=CENTRAL_SCENE,scene=1,key=4" }

//-------------------------------------------------------------------
// SCENE 2 = BOTTOM (DOWN) BUTTON
//-------------------------------------------------------------------

Switch  HS_WS100_ANY_TAP_DOWN    "HS_WS100 <DOWN> Any Tap"    { zwave="2:command=CENTRAL_SCENE,scene=2" }
Switch  HS_WS100_SINGLE_TAP_DOWN "HS_WS100 <DOWN> Single Tap" { zwave="2:command=CENTRAL_SCENE,scene=2,key=0" }
Switch  HS_WS100_RELEASE_DOWN    "HS_WS100 <DOWN> Release"    { zwave="2:command=CENTRAL_SCENE,scene=2,key=1" }
Switch  HS_WS100_HOLD_DOWN       "HS_WS100 <DOWN> Hold"       { zwave="2:command=CENTRAL_SCENE,scene=2,key=2" }
Switch  HS_WS100_DOUBLE_TAP_DOWN "HS_WS100 <DOWN> Double Tap" { zwave="2:command=CENTRAL_SCENE,scene=2,key=3" }
Switch  HS_WS100_TRIPLE_TAP_DOWN "HS_WS100 <DOWN> Triple Tap" { zwave="2:command=CENTRAL_SCENE,scene=2,key=4" }
1 Like

Hi Guys,

Old thread, but I think this is an appropriate place for my post. Hoping maybe @Python or someone will see this and rescue me :smiley:

So I have some HS-WD100+ dimmers updated with v5.14 firmware, and am trying to get some scenes going using the double/triple tap functionality. Doesn’t seem to be working, though.

I also added the following line to OH Console, in hopes I would at least see myself tapping the switch as a test, but no joy there, either:
log:set INFO org.eclipse.smarthome.model.script.RULE.DIMMER

Item
Number vDimmer_FF_Living_Closets "Closet Lights - Scene" { channel="zwave:device:0ac70ffa:node14:scene_number" }

Rule
rule “Living Room - Over Closet Dimmer: Scene Tap Selection Syncing”

when
    Item vDimmer_FF_Living_Closets received update
then
{
	switch(vDimmer_FF_Living_Closets.state) {
		/*ON*/
		case 1.0 : {							/* Single Tap ON */
			logInfo("RULE.DIMMER", "Single Tap: ON")
		}
		case 1.3 : {							/* Double Tap ON */
			logInfo("RULE.DIMMER", "Double Tap: ON")
			sendCommand(Light_FF_Living_Closets, ON)
			sendCommand(Light_FF_Living_TV, ON)
			sendCommand(Light_FF_Living_Couch, ON)
			}
		case 1.4 : { 							/* Tripple Tap ON */
			logInfo("RULE.DIMMER", "Tripple Tap: ON")
			sendCommand(Light_FF_Living_Closets, ON)
			sendCommand(Light_FF_Living_TV, ON)
			sendCommand(Light_FF_Living_Couch, ON)
			sendCommand(Light_FF_Library_Outer, ON)
			sendCommand(Light_FF_Library_Inner, ON)
		}
		/*OFF*/
		case 2.0 : {							/* Single Tap OFF */
			logInfo("RULE.DIMMER", "Single Tap: OFF")
		}
		case 2.3 : {							/* Double Tap OFF */
			logInfo("RULE.DIMMER", "Double Tap: OFF")
			sendCommand(Light_FF_Living_Closets, OFF)
			sendCommand(Light_FF_Living_TV, OFF)
			sendCommand(Light_FF_Living_Couch, OFF)
		}
		case 2.4 : { 							/* Tripple Tap OFF */
		   logInfo("RULE.DIMMER", "Tripple Tap: OFF")
		   	sendCommand(Light_FF_Living_Closets, OFF)
			sendCommand(Light_FF_Living_TV, OFF)
			sendCommand(Light_FF_Living_Couch, OFF)
			sendCommand(Light_FF_Library_Outer, OFF)
			sendCommand(Light_FF_Library_Inner, OFF)
		}
	}
}
end

I have switches that are on fw5.14 aswell and no issues whatsoever.
If you watch your events.log and double/triple tap do you see the scene number changing?

Everything looks correct in your item / rule

Nope - I do not even see an event in there when I do a single tap (did single/double/triple).

What about the item attached to switch_dimmer? eg. { channel=“zwave:device:0ac70ffa:node14:switch_dimmer” }

Can you control the switch remotely and/or see the status updates in your events.log. When you manually change the dim value you should see the value reflected in the logs.

Yep - I can see those:

2018-03-19 20:52:08.809 [ome.event.ItemCommandEvent] - Item ‘Light_FF_Living_Closets’ received command ON
2018-03-19 20:52:08.823 [vent.ItemStateChangedEvent] - Light_FF_Living_Closets changed from OFF to ON
2018-03-19 20:52:08.832 [GroupItemStateChangedEvent] - FF_LivingRoom_Lights changed from OFF to ON through Light_FF_Living_Closets

It’s almost like the scene_number channel isnt associated with a item.
If you go into paper UI and load up the thing/switch do you see your item associated with the channel?

I only ever created the Scene item in my items file. Here is a pic of the Dimmer item.

Looks like I need to create the Scene item in PaperUI first?

No, that is fine… it looks correct. If you click on each blue dot it should show the item name associated with each channel…

I’m not too sure why it isn’t showing your tap selection. Is this the only WD100 switch you have?

1 Like