OH2 Z-Wave binding and SCENE_ACTIVATION


I have been playing around with openHAB for a while - first OH1 and noew OH2 - using a number of Nodon remote switches. Under OH1 these worked fine using SCENE_ACTIVATION with the following .items:

Switch { zwave=“3:command=SCENE_ACTIVATION,scene=20,state=1” }

Moving to OH2, I have been using the following syntax in .items:

Switch { channel=“zwave:device::node3:scene_number:20” }

when trying to “catch” button press for scene 20 (I’m not certain that this syntax is correct).

Using DEBUG for the Z-Wave binding, I can see that the button generate the correct scene numbers, but for some reason they are not mapped to the specifed , i.e. I’m not able to catch any changes in my rules.

The following log sniplet shows some of the output:
Receive Message = 01 0A 00 04 00 03 04 2B 01 14 00 C8
2016-10-24 19:36:48.479 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2016-10-24 19:36:48.480 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0A 00 04 00 03 04 2B 01 14 00 C8
2016-10-24 19:36:48.480 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 0A 00 04 00 03 04 2B 01 14 00 C8
2016-10-24 19:36:48.480 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 03 04 2B 01 14 00
2016-10-24 19:36:48.480 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 3: Application Command Request (ALIVE:DONE)
2016-10-24 19:36:48.480 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 3: Starting initialisation from DONE
2016-10-24 19:36:48.480 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@533ad728 already registered
2016-10-24 19:36:48.480 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 3: Incoming command class SCENE_ACTIVATION
2016-10-24 19:36:48.481 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - Received Scene Activation for Node ID = 3
2016-10-24 19:36:48.481 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - Scene Activation Set
2016-10-24 19:36:48.481 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - Scene activation node from node 3: Scene 20, Time 0
2016-10-24 19:36:48.481 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveCommandClassValueEvent
2016-10-24 19:36:48.481 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 3: Got an event from Z-Wave network: ZWaveCommandClassValueEvent
2016-10-24 19:36:48.481 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 3: Got a value event from Z-Wave network, endpoint = 0, command class = SCENE_ACTIVATION, value = 20
2016-10-24 19:36:48.481 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Sent Message: class=SendData[0x13], type=Request[0x00], priority=Immediate, dest=3, callback=123, payload=03 02 84 08
2016-10-24 19:36:48.481 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Recv Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 03 04 2B 01 14 00
2016-10-24 19:36:48.482 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: class=ApplicationCommandHandler, callback id=123, expected=SendData, cancelled=false MISMATCH

Followed by a WAKE_UP class command.

Am I doing anything wrong, or is this feature unsupported?


Sorry, maybe it’s just a typo, but you have a :: instead of a : in your item definition.

Thanks, but it is just a typo - the device number is between the ::.

I dont think that works in OH2
just create a genereic item for scene number (without:20)
and catch the scene number in a rule

Item zwave_device_blah_node9_scene_number received update
if (zwave_device_blah_node9_scene_number.state == 10) {

and so on

also you must give a name to the item and change the type

Old: Switch { channel=“zwave:device::node3:scene_number:20” }

NEW: Number MyRemoteItem “ThisIsMyLabel” { channel=“zwave:device:xyz:node3:scene_number” }

this might make a rule framework easier for you

	Item MyRemoteItem received update

	if (MyRemoteItem.state == 10) {
		logInfo("Remote Nodon", "Rule: Button1 SingleClick")
	if (MyRemoteItem.state == 13) {
		logInfo("Remote Nodon", "Rule: Button1 DoubleClick")
	if (MyRemoteItem.state == 11) {
		logInfo("Remote Nodon", "Rule: Button1 LongClick")
	if (MyRemoteItem.state == 20) {
		logInfo("Remote Nodon", "Rule: Button2 SingleClick")
	if (MyRemoteItem.state == 23) {
		logInfo("Remote Nodon", "Rule: Button2 DoubleClick")
	if (MyRemoteItem.state == 21) {
		logInfo("Remote Nodon", "Rule: Button2 LongClick")
	if (MyRemoteItem.state == 30) {
		logInfo("Remote Nodon", "Rule: Button3 SingleClick")
	if (MyRemoteItem.state == 33) {
		logInfo("Remote Nodon", "Rule: Button3 DoubleClick")
	if (MyRemoteItem.state == 31) {
		logInfo("Remote Nodon", "Rule: Button3 LongClick")
	if (MyRemoteItem.state == 40) {
		logInfo("Remote Nodon", "Rule: Button4 SingleClick")
	if (MyRemoteItem.state == 43) {
		logInfo("Remote Nodon", "Rule: Button4 DoubleClick")
	if (MyRemoteItem.state == 41) {
		logInfo("Remote Nodon", "Rule: Button4 LongClick")


Thanks alot for your quick answers, I’ll give it a try.

Tried to do this, with a very minimal OH2 system (just the controller and the Nodon switch), but with excatly the same result. Nodon reports the correct scenes when scanning the DEBUG output, but the rule is never trigged. I have been working on the SNAPSHOT branch

Nodon item config:

Number NODON “My Nodon switch” { channel=“zwave:device:a3d84a1e:node5:scene_number” }

Corresponding rule:

Item NODON changed
logInfo(“Remote Nodon”, “TEST”)

Using the online interface I get the following output:

openhab> smarthome:items
zwave_device_a3d84a1e_node5_battery_level (Type=NumberItem, State=100, Label=Battery Level, Category=Battery)
zwave_device_a3d84a1e_node5_scene_number (Type=NumberItem, State=2, Label=Scene Number, Category=null)
NODON (Type=NumberItem, State=NULL, Label=My Nodon switch, Category=null)

openhab> smarthome:links
NODON -> zwave:device:a3d84a1e:node5:scene_number
zwave_device_a3d84a1e_node5_battery_level -> zwave:device:a3d84a1e:node5:battery-level
zwave_device_a3d84a1e_node5_scene_number -> zwave:device:a3d84a1e:node5:scene_number

openhab> smarthome:things
zwave:device:a3d84a1e:node5 (Type=Thing, Status=ONLINE, Label=Z-Wave Node 5: CWS-3101 Wall Switch, Bridge=zwave:serial_zstick:a3d84a1e)
zwave:serial_zstick:a3d84a1e (Type=Bridge, Status=ONLINE, Label=Z-Wave Serial Controller, Bridge=null)

Any idea of what is wrong?

probably config params or assocications

Thanks again for your quick answer, but still no luck :frowning: The SCENE_ACTIVATION command class is received, but my rule is never trigged.
Maybe it is better to revert to Zwave 1.x for the moment.

i’m having the same problem with OH2 and my NODON. I can see the scene_activation in the debug log but it will never trigger the rule
Do you found a solution ?
Thanks in advance

No I did not find a solution. I’m currently using a Nexa button as a temporary solution, although with much simpler operations just stepping up and down.
Hopefully a solution will be found in the near future.

very strange … it still works for me …
the only problem is … the range is very SHORT … I guess because the binding currently does not support the mesh network and therefore the remote must be in a direct connection to the controller

but if that is the case I can see the “Scene_Activation” in my log and my rules based on that do work

Thanks for your response…
I can see the “Scene_Activation” in my log too …
Too bad i was trying to change my system and use openhab2… Do you think that it will work with openhab1 ?

Not sure I understand that - the mesh networking is managed by the controller and the binding only sets some static routes (although the controller actually sets the routes).

SCENE_ACTIVATION should work fine in both OH1 and OH2.

Yes, but it doesnt… i’m not the only one to have the problem.
Do you have an idea ? or some tests to make ? i see it in my logs, but the rules do nothing…

I have no information, so sorry, no ideas ;). If you can provide more information such as logs, then I can take a look, but currently all I have is your comment that it doesn’t work, and I can’t offer a suggestion based on no information…

hi @chris
I meant this:
(my network still looks like this - and the remote seems to have a real low range)

I’m not sure if that matters - the mesh itself (I believe) is handled by the controller - the binding doesn’t do anything except to say to the controller “set the route between node 1 and 2” - and this it does .

That said, I hope soon to e able to update this as the new transaction code is working quite well I think, and it solves the problems with the neighbor update calls. Current work is focussing on getting the security working now - once that’s done I will provide an update with all these changes.