I’m been fighting with this for days, and this is one of the reason I thought OH2 was broken. I have a bunch of these switches and they support “instant status” but what this means is that send out a scene update. I’m fine with this but it causes some issues that I’m trying to work around. Here are the two ways these lights can be changed.
This is what’s sent when I manually switch the light off
2017-02-27 08:31:20.678 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 19 00 49 84 04 13 04 10 01 5E 86 72 5A 85 59 73 25 27 70 2C 2B 5B 7A EF 5B 96
2017-02-27 08:31:20.682 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-02-27 08:31:20.685 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 19 00 49 84 04 13 04 10 01 5E 86 72 5A 85 59 73 25 27 70 2C 2B 5B 7A EF 5B 96
2017-02-27 08:31:20.685 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 0B 00 04 00 04 05 5B 03 6B 00 02 C0
2017-02-27 08:31:20.686 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 19 00 49 84 04 13 04 10 01 5E 86 72 5A 85 59 73 25 27 70 2C 2B 5B 7A EF 5B 96
2017-02-27 08:31:20.686 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationUpdate[0x49], type=Request[0x00], priority=High, dest=255, callback=0, payload=84 04 13 04 10 01 5E 86 72 5A 85 59 73 25 27 70 2C 2B 5B 7A EF 5B
2017-02-27 08:31:20.686 [DEBUG] [essage.ApplicationUpdateMessageClass] - NODE 4: Application update request. Node information received.
2017-02-27 08:31:20.687 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 4: Starting initialisation from DONE
2017-02-27 08:31:20.687 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@3ba617db already registered
2017-02-27 08:31:20.687 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Sent Message: class=SendData[0x13], type=Request[0x00], priority=Get, dest=2, callback=115, payload=02 02 25 02
2017-02-27 08:31:20.688 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Recv Message: class=ApplicationUpdate[0x49], type=Request[0x00], priority=High, dest=255, callback=0, payload=84 04 13 04 10 01 5E 86 72 5A 85 59 73 25 27 70 2C 2B 5B 7A EF 5B
2017-02-27 08:31:20.688 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: class=ApplicationUpdate, callback id=115, expected=ApplicationCommandHandler, cancelled=false MISMATCH
2017-02-27 08:31:20.689 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-02-27 08:31:20.689 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0B 00 04 00 04 05 5B 03 6B 00 02 C0
2017-02-27 08:31:20.690 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 0B 00 04 00 04 05 5B 03 6B 00 02 C0
2017-02-27 08:31:20.690 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 04 05 5B 03 6B 00 02
2017-02-27 08:31:20.690 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 4: Application Command Request (ALIVE:DONE)
2017-02-27 08:31:20.690 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 4: Starting initialisation from DONE
2017-02-27 08:31:20.690 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@3ba617db already registered
2017-02-27 08:31:20.691 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 4: Incoming command class CENTRAL_SCENE
2017-02-27 08:31:20.691 [DEBUG] [dclass.ZWaveCentralSceneCommandClass] - NODE 4: Received CENTRAL_SCENE command V2
2017-02-27 08:31:20.691 [DEBUG] [dclass.ZWaveCentralSceneCommandClass] - NODE 4: Received scene 2 at key 0 [Single Press]
2017-02-27 08:31:20.691 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveCommandClassValueEvent
2017-02-27 08:31:20.692 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Got an event from Z-Wave network: ZWaveCommandClassValueEvent
2017-02-27 08:31:20.692 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Got a value event from Z-Wave network, endpoint = 0, command class = CENTRAL_SCENE, value = 2.0
2017-02-27 08:31:20.692 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Updating channel state zwave:device:500632da:node4:scene_number to 2.0 [DecimalType]
2017-02-27 08:31:20.693 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 2: Transaction not completed: node address inconsistent. lastSent=2, incoming=255
2017-02-27 08:31:23.481 [ERROR] [io.openhabcloud.internal.CloudClient] - Socket.IO error: io.socket.engineio.client.EngineIOException: xhr post error
2017-02-27 08:31:23.482 [INFO ] [io.openhabcloud.internal.CloudClient] - Disconnected from the openHAB Cloud service (UUID = fd3fd4dd-ab5a-4dad-81a5-91afc3e22497, base URL = http://localhost:8090)
It got a scene update to 2.0 which is single tap down but this does not turn the switch OFF, in my events.log I see no event at all and in the GUI it does not update and it still looks like the light is on. Here is what happens when I trigger the light ON from either a rule or the GUI.
2017-02-27 08:32:13.894 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Command received zwave:device:500632da:node4:switch_binary --> ON
2017-02-27 08:32:13.894 [DEBUG] [dclass.ZWaveBinarySwitchCommandClass] - NODE 4: Creating new message for application command SWITCH_BINARY_SET
2017-02-27 08:32:13.895 [DEBUG] [ve.internal.protocol.ZWaveController] - Message queued. Queue length = 1. Queue={}
2017-02-27 08:32:13.895 [DEBUG] [ocol.ZWaveController$ZWaveSendThread] - Took message from queue for sending. Queue length = 0
2017-02-27 08:32:13.895 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0A 00 13 04 03 25 01 FF 25 76 69
2017-02-27 08:32:13.895 [DEBUG] [ing.zwave.handler.ZWaveSerialHandler] - NODE 4: Sending REQUEST Message = 01 0A 00 13 04 03 25 01 FF 25 76 69
2017-02-27 08:32:13.896 [INFO ] [impl.connections.SubscriptionManager] - Publishing changes for 170787487
2017-02-27 08:32:13.896 [INFO ] [impl.connections.SubscriptionManager] - Publishing changes for 170787487
2017-02-27 08:32:13.902 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 04 01 13 01 E8
2017-02-27 08:32:13.904 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-02-27 08:32:13.904 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 04 01 13 01 E8
2017-02-27 08:32:13.905 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 04 01 13 01 E8
2017-02-27 08:32:13.905 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=SendData[0x13], type=Response[0x01], priority=High, dest=255, callback=0, payload=01
2017-02-27 08:32:13.905 [DEBUG] [l.serialmessage.SendDataMessageClass] - NODE 4: Sent Data successfully placed on stack.
2017-02-27 08:32:13.918 [DEBUG] [WaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 05 00 13 76 00 9F
2017-02-27 08:32:13.920 [DEBUG] [ve.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
2017-02-27 08:32:13.920 [DEBUG] [wave.internal.protocol.SerialMessage] - Assembled message buffer = 01 07 00 13 76 00 00 00 9D
2017-02-27 08:32:13.920 [DEBUG] [ve.internal.protocol.ZWaveController] - Process Message = 01 07 00 13 76 00 00 00 9D
2017-02-27 08:32:13.920 [DEBUG] [ve.internal.protocol.ZWaveController] - Message: class=SendData[0x13], type=Request[0x00], priority=High, dest=255, callback=0, payload=76 00
2017-02-27 08:32:13.921 [DEBUG] [l.serialmessage.SendDataMessageClass] - NODE 4: SendData Request. CallBack ID = 118, Status = Transmission complete and ACK received(0)
2017-02-27 08:32:13.921 [DEBUG] [alization.ZWaveNodeInitStageAdvancer] - NODE 4: Starting initialisation from DONE
2017-02-27 08:32:13.921 [DEBUG] [ve.internal.protocol.ZWaveController] - Event Listener org.openhab.binding.zwave.internal.protocol.initialization.ZWaveNodeInitStageAdvancer@3ba617db already registered
2017-02-27 08:32:13.921 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Sent Message: class=SendData[0x13], type=Request[0x00], priority=Set, dest=4, callback=118, payload=04 03 25 01 FF
2017-02-27 08:32:13.921 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Recv Message: class=SendData[0x13], type=Request[0x00], priority=High, dest=255, callback=0, payload=76 00
2017-02-27 08:32:13.921 [DEBUG] [.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: class=SendData, callback id=118, expected=SendData, cancelled=false transaction complete!
2017-02-27 08:32:13.922 [DEBUG] [ve.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveTransactionCompletedEvent
2017-02-27 08:32:13.922 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 4: Got an event from Z-Wave network: ZWaveTransactionCompletedEvent
2017-02-27 08:32:13.922 [DEBUG] [ocol.ZWaveController$ZWaveSendThread] - NODE 4: Response processed after 24ms/4987ms.
Here you can see that the switch was triggered. The GUI is updated but the scene is left as 2.0 so if I change the scene it appears it’s OFF (2.0 scene number) but if I check the switch it says it’s off. This puts it an an unknown state, basically because I only get updates of one of the other. I have a hack working which basically does this
rule "Update switch when scene changes"
when
Item MudroomLight_SceneNumber changed to 1.0
then
sendCommand(MudroomLight_Switch, ON)
end
rule "Update switch when scene changes"
when
Item MudroomLight_SceneNumber changed to 2.0
then
sendCommand(MudroomLight_Switch, OFF)
end
rule "Hack for manual switch"
when
Item MudroomLight_Switch changed to OFF
then
sendCommand(MudroomLight_SceneNumber, 2.0)
end
rule "Mudroom light turns on"
when
Item MudroomLight_Switch changed to ON
then
sendCommand(MudroomLight_SceneNumber, 1.0)
end
This seems kind of hacky and I have to do this for each switch. Am I doing something wrong is or this the best solution with what I have? Can I make this a more general rule that applies to all HS switches (maybe by a rule)?