Enerwave ZWN-SC7 Z-Wave 7 Button Scene Controller

Where did you submit it to? I’m just about to create the XML so if you’ve already done it I’ll use that (sorry if I missed it - is there a Git PR?).

I’ve created a PR for this and merged so it should be in tomorrows snapshot.

I opened an issue on GitHub which I linked to in the post dated Oct 22, 3:53 AM

where can I get the new snapshot? I looked on cloudbees, but the last build is 1042 from Oct 18…

Good question - I normally go to Cloudbees, but as you point out, it hasn’t built for a couple of weeks now… I know there have been issues with it, but I thought the nightly build was still enabled.

@teichsta, any thoughts?

Looks like it’s built again last night…

OK, device seems to be working now. It gets recognized properly and responds to initialization and heals as expected. I set the 7 association groups.

Now, how do I create items linked to each of the 7 buttons?

I’m guessing something like this:
Switch Enerwave_button2 “Enerwave_button2” {zwave=“101:2:command=switch_binary”}

but that does not work…

If I push the buttons on the controller the lights flash, but I do not see any output in my zwave log…

I tried setting it up as shown here

like so:

/*Enerwave Scene Controller */
Switch Enerwave_button1	"Enerwave_button1"	{zwave="101:command=SCENE_ACTIVATION,scene=1,state=0,respond_to_basic=TRUE"}
Switch Enerwave_button2	"Enerwave_button2"	{zwave="101:command=SCENE_ACTIVATION,scene=2,state=0,respond_to_basic=TRUE"}
Switch Enerwave_button3	"Enerwave_button3"	{zwave="101:command=SCENE_ACTIVATION,scene=3,state=0,respond_to_basic=TRUE"}
Switch Enerwave_button4	"Enerwave_button4"	{zwave="101:command=SCENE_ACTIVATION,scene=4,state=0,respond_to_basic=TRUE"}
Switch Enerwave_button5	"Enerwave_button5"	{zwave="101:command=SCENE_ACTIVATION,scene=5,state=0,respond_to_basic=TRUE"}
Switch Enerwave_button6	"Enerwave_button6"	{zwave="101:command=SCENE_ACTIVATION,scene=6,state=0,respond_to_basic=TRUE"}
Switch Enerwave_button7	"Enerwave_button7"	{zwave="101:command=SCENE_ACTIVATION,scene=7,state=0,respond_to_basic=TRUE"}

but that is not working. I still do not see any feedback in my zwave logs when I press buttons

also, I get the following in my logs on initialization

2015-11-04 11:32:54.383 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button3, command class name = scene_activation, using 0 refresh interval.
2015-11-04 11:32:54.383 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button2, command class name = scene_activation, using 0 refresh interval.
2015-11-04 11:32:54.384 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button5, command class name = scene_activation, using 0 refresh interval.
2015-11-04 11:32:54.385 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button4, command class name = scene_activation, using 0 refresh interval.
2015-11-04 11:32:54.385 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button7, command class name = scene_activation, using 0 refresh interval.
2015-11-04 11:32:54.385 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button6, command class name = scene_activation, using 0 refresh interval.
2015-11-04 11:32:54.385 [WARN ] [.b.z.i.c.ZWaveConverterHandler:295 ]- No command class found for item = Enerwave_button1, command class name = scene_activation, using 0 refresh interval.

so it looks like my controller operates differently than the cooper scene controller…

Any ideas on what my items should look like? what the proper command is for the enerwave?

Any luck in getting this Scene Controller to work? I’ve downloaded the latest SNAPSHOT, but can’t seem to figure out how to get the scene buttons to be recognized.

Hi. I ended up following instructions from several threads, so hopefully this will help someone:

First, include the controller into your z-wave network like usual. Next, you’ll need to configure the controller. This utility was invaluable for this:

http://www.moonlitzwave.com/zensys-tools.zip

Shut down openHAB and launch this utility. Click the controller and wait for the device list to populate. If you get an error, close the program, remove the Z-Wave stick, reinsert it, then launch the software again. Click the Enerwave controller on the left (shows as Static Controller), then go to the Command Class tab on the right side. Select COMMAND_CLASS_ASSOCIATION_V2 on the Command Class dropdown, and ASSOCIATION_SET on the second Command Name dropdown.

Set the Grouping Identifier to 01, and set the Node ID to the ID of your controller (usually 1, check the list). Click Send. You should get a confirmation in the log underneath. Do this for group IDs all the way to 07. This tells the controller to associate with the controller for each of the 7 association groups (each group represents each button).

Next, set the Command Classes dropdown to COMMAND_CLASS_SCENE_CONTROLLER_CONF_V1 and the Command Name to SCENE_CONTROLLER_CONF_SET. Set the Group ID to 01, and the Scene ID to 01, then click Send. Change both fields to 02, then click Send. Do this all the way up to 07. This tells the scene controller to send the appropriate scene number for each association group.

Chris has added this controller to the database in the newer snapshots, so it shows up without any fight.

From here you can close the PC Controller utility and fire up OpenHAB. Here are my some of the item lines for my physical buttons:

Switch    Switch_LR_SC_1 "LR SC Button 1" {zwave="13:command=SCENE_ACTIVATION,scene=1,state=0"}
Switch    Switch_LR_SC_2 "LR SC Button 2" {zwave="13:command=SCENE_ACTIVATION,scene=2,state=0"}
Switch    Switch_LR_SC_3 "LR SC Button 3" {zwave="13:command=SCENE_ACTIVATION,scene=3,state=0"}
Switch    Switch_LR_SC_4 "LR SC Button 4" {zwave="13:command=SCENE_ACTIVATION,scene=4,state=0"}

The issue here is that pressing the button on the scene controller changes the OpenHAB switch to ‘ON’, but nothing turns it off. This is solved by using a rule to detect the updated state (even if it’s already ON). Here are my ‘virtual’ switches, which reflect the actual desired states:

Switch    Switch_LR_SC_Entry    "LR SC Entry Light"
Switch    Switch_LR_SC_LR    "LR SC LR Light"

Here are the rules I used to update the virtual switch based on which scene controller button is pressed:

rule "LR_SC_Entry OFF"
when
Item Switch_LR_SC_1 received update ON
then
sendCommand(Switch_LR_SC_Entry, OFF)
end


rule "LR_SC_Entry ON"
when
Item Switch_LR_SC_2 received update ON
then
sendCommand(Switch_LR_SC_Entry, ON)
end


rule "LR_SC_LR OFF"
when
Item Switch_LR_SC_3 received update ON
then
sendCommand(Switch_LR_SC_LR, OFF)
end


rule "LR_SC_LR ON"
when
Item Switch_LR_SC_4 received update ON
then
sendCommand(Switch_LR_SC_LR, ON)
end

So now pressing button 1 will turn the virtual switch off and pressing button 2 turns the virtual switch on. I then have a rule for each virtual switch, which will do whatever needs to be done:

rule "LR Scene Controller - Entry Light"
when
Item Switch_LR_SC_Entry received command
then
sendCommand(Switch_LR_SS_1,Switch_LR_SC_Entry.state.toString)
end

Using rules, you can have each button do pretty much anything you want. Eventually, I’d like to see if it’s possible to manipulate the LEDs on it, but I was satisfied enough getting basic functionality out of it.

Again, I hope this helps someone–reply if you have any questions.

2 Likes

I kinda shifted focus to working on the leviton VRCZ4-M0Z.

If you change your items and include “respond_to_basic=TRUE” you will get the OFF updates.

Switch Switch_LR_SC_1 “LR SC Button 1” {zwave=“13:command=SCENE_ACTIVATION,scene=1,state=0,respond_to_basic=TRUE”}

However, my issue is now that when I hit OFF for one button I get OFF updates for all of my buttons

Any luck getting the LED’s to work?

Thanks,

A

Sorry to revive this thread. I hope someone still has such a device and can help me.

According to many blog I’ve read, you need to configure this device before you can make it work.
Is this still true with OpenHAB 2 ? How can you do that if you do not have any windows computer?
I only have Mac and Linux machines.

It is in the database for OpenHAB 2. Does anyone have it working?

I have a Cooper scene controller and ended up configuring it using the Zensys tools outside of OH to setup my scene’s. @Chris was able to get the definitions in the device database to work to pickup the scene triggers. Hopefully that gets you started down the right path

1 Like

Back on looking at this, I tried the zensys tool but without success. I am not a windows user. I borrowed a laptop but did not find how to send the COMMAND_CLASS_ASSOCIATION_V1 to the device. Any other way to do this? If it just a matter of sending raw commands, couldn’t this be done from another tool or from an Openhab interface?

I have 3 of these that I’d like to use (switching from a micasa verde). It seems as though this is complicated to get working. Is there a better/easier scene controller with roughly the same number of buttons that is recommended? Thanks.

Okay… After following the guidance from many threads, I got this to work! Here’s what it took to get there with OH2 2.40 [SNAPSHOT].

First was to download the zensys-tools. @5iver linked to an version that is actually still available here.

After downloading that, I followed the instructions as laid out by @laboye here. One notable item is that the following instructions need modifying.
" Click the Enerwave controller on the left (shows as Static Controller), then go to the Command Class tab on the right side. Select COMMAND_CLASS_ASSOCIATION_V2 on the Command Class dropdown, and ASSOCIATION_SET on the second Command Name dropdown."

After selecting the item, the “Node Info” 4th button from the right (a pane with an i in a circle) needs to be pressed to load the data for the item selected. The rest of the information for the zensys-tools is spot on.

I could not get the button mapping and rules that he used to work. However, @phinnay posted some rules in another thread that worked well enough for me to test. This scene controller is in my 3-car garage. It turns the overhead lights on, and power to the actual garage door openers via relays in junction boxes. In addition, it controls the lights on the outside of the garage. The 7th button turns everything on in case of a power outtage.

Edit: I just realized through a bit more testing, that the 1 and 2 buttons wouldn’t work properly without having “Controller” set for “Associated Groups” Group 1 and 2 in HABmin. Not sure why the rest would work just fine, but not those 2. I set all 7 Groups to “Controller” just in case.

Hopefully this helps someone new like me (been at it for 3 days now).

garage.items

Number    garageScene    "Garage Scene Controller"    <garage>    (gGarageDoor,gSleep_Security)    {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node13:scene_number"}

oneCarDoor.items

Switch    oneCar_Grg_Pwr   "One Car Door Power"   <poweroutlet>   (garage, garagePower)      {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node4:switch_binary1"}
Switch    oneCar_Grg_Lts   "One Car Lights"   <light>   (garage, garageLights)      {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node4:switch_binary2"}

twoCarDoor.items

Switch    twoCar_Grg_Pwr   "Two Car Door Power"   <poweroutlet>   (gGarage, gGaragePower, gGarageSceneCntrl)      {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node5:switch_binary1"}
Switch    twoCar_Grg_Lts   "Two Car Lights"   <light>   (garage, garageLights, garageSceneCntrlgGarage, gGaragePower, gGarageSceneCntrl)      {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node5:switch_binary2"}

garageSC.rules

rule "garageScene1"
	when
		Item garageScene received update 
			then
				if (garageScene.state == 1.0) {
					logInfo("Demo", "One Car Lights ON")
					oneCar_Grg_Lts.sendCommand(ON)
				}
				if (garageScene.state == 2.0) {
					logInfo("Demo", "One Car Lights OFF")
					oneCar_Grg_Lts.sendCommand(OFF)
				}
				if (garageScene.state == 3.0) {
					logInfo("Demo", "Two Car Lights ON")
					twoCar_Grg_Lts.sendCommand(ON)
				}
				if (garageScene.state == 4.0) {
					logInfo("Demo", "Two Car Lights OFF")
					twoCar_Grg_Lts.sendCommand(OFF)
				}
				if (garageScene.state == 5.0) {
					logInfo("Demo", "Driveway Lights ON")
					drvwyLgts.sendCommand(ON)
				}
				if (garageScene.state == 6.0) {
					logInfo("Demo", "Driveway Lights OFF")
					drvwyLgts.sendCommand(OFF)
				}
				if (garageScene.state == 7.0) {
					logInfo("Demo", "Garage All ON")
					oneCar_Grg_Pwr.sendCommand(ON)
					twoCar_Grg_Pwr.sendCommand(ON)
					oneCar_Grg_Lts.sendCommand(ON)
					twoCar_Grg_Lts.sendCommand(ON)

				}
end

Good to hear you got it working, I’ll try your modifications to the procedure on mine. I hope I can get it working.

I just setup my other 2, and they’re working well. I’m super stoked. Just wish I could get my garage door sensor working!

I just got my ZWN-SC7 up and running thanks to @laboye instructions. Wondering if these configurations can be added to the item in the database so they can be sent via the web interface? I see that the configuration groups are in the Thing configuration parameters (maybe not when the instructions were written), but I don’t see the command classes to set the scene number that each button will send. Is this something that can be added to the database so we don’t have to find a Windows computer to connect the controller to and run zensys-tools (WINE?)?

I’m guessing this part can now be added through the Thing like in the below screenshot, correct me if this is something different.

I had the ZWN-SC7 setup using luup code on my Vera to toggle 6 items off and on, and the large 7th button would toggle the lights off if all 6 lights were on, or if any of the lights were off, it would toggle them all on.

Since there is only a Scene Number channel that doesn’t receive a change action if the item was already set to the same number, it wouldn’t toggle, so I set the scene number to 0 at he end of the rule to allow for a second tap. I couldn’t figure out if there was any other commands I could use in the “when” clause to trigger a toggle of the same button. Perhaps someone else knows, I tried a few suggestions here, but they didn’t work. The below is crude, I’ll clean it up later if it’s the only option, but it’s working now with only a rule and no other items configured.

rule "LivingRoomSceneController"
when
    Item Living_Room_Scene_Controller_Scene_Number changed
then
    // Do nothing if Scene Number is 0
    if (Living_Room_Scene_Controller_Scene_Number.state as Number > 0) {
        // Scene Button 1
        if (Living_Room_Scene_Controller_Scene_Number.state == 1) {
            if (Living_Room_Front_Wall_Light.state == ON) {
                Living_Room_Front_Wall_Light.sendCommand(OFF)
             } else {
                Living_Room_Front_Wall_Light.sendCommand(ON)
             }
            logInfo("Scene LivingRoomSceneController Run", "Toggled Living Room Front Wall Light")
        }
        // Scene Button 2
        if (Living_Room_Scene_Controller_Scene_Number.state == 2) {
            if (Living_Room_Media_Center_Light.state == ON) {
                Living_Room_Media_Center_Light.sendCommand(OFF)
             } else {
                 Living_Room_Media_Center_Light.sendCommand(ON)
             }
            logInfo("Scene LivingRoomSceneController Run", "Toggled Living Room Media Center Light")
        }
        // Scene Button 3
        if (Living_Room_Scene_Controller_Scene_Number.state == 3) {
            if (Living_Room_Floor_Light.state == ON) {
                Living_Room_Floor_Light.sendCommand(OFF) 
            } else {
                Living_Room_Floor_Light.sendCommand(ON)
            }
            logInfo("Scene LivingRoomSceneController Run", "Toggled Living Room Floor Light")
        }
        // Scene Button 4  Not Yet Configured
        
        // Scene Button 5  Not Yet Configured
        
        // Scene Button 6  Not Yet Configured
        
        // Scene Button 7
        if (Living_Room_Scene_Controller_Scene_Number.state == 7) {
            // Toggle all lights off if all are on
            if (Living_Room_Front_Wall_Light.state == ON && Living_Room_Media_Center_Light.state == ON && Living_Room_Floor_Light.state == ON) {
                Living_Room_Front_Wall_Light.sendCommand(OFF)
                Living_Room_Media_Center_Light.sendCommand(OFF)
                Living_Room_Floor_Light.sendCommand(OFF)
            } else {
                // Toggle all lights on if any are off
                Living_Room_Front_Wall_Light.sendCommand(ON)
                Living_Room_Media_Center_Light.sendCommand(ON)
                Living_Room_Floor_Light.sendCommand(ON)
            }
            logInfo("Scene LivingRoomSceneController Run", "Toggled Living Room Lights")
        }
        // Set Scene Number to 0 to allow toggling
        //    Otherwise no change action occurs on a double tap of the same button
        Living_Room_Scene_Controller_Scene_Number.sendCommand(0)
    }
end