OH2 Z-Wave refactoring and testing... and SECURITY

As I said earlier (2 days ago when I released the latest version), I’ve just added the UoM features in the latest version. This feature is not available in 2.2 so you need to use 2.3.

I hope that makes sense.

Is it possible to download the last working development build for 2.2? Been looking for it but not able to find anything

No - There have been a number of changes that could impact the ability to run with older versions so I’d just suggest to use the last version that you had that works with your system. For the snapshot/development version, the assumption is that you are using the latest runtime.

Well the issue is that I’ve bought a Danalock V3 so as I understand I am in need for the posibility to include with security. And the developmemt binding is the way to go then. I was also hoping to not upgrade to 2.3 yet. So I guess Im reaching out for the last working developmemt branch for 2.2. Since there has been a working version earlier this should be doable. Or am I wrong? Maybe someone would like to share a working version with me?

so using the zwave 2.3 snapshot on oh 2.2 stable edition could run into trouble?

If you are using the snapshot binding, it might work ok with 2.2 - I’m not 100% sure as the framework has been upgraded a lot. Generally though, the snapshot has not had many changes so it will likely work fine.

The development binding is a different story - it HAS had a number of changes that need the latest runtime.

until what date it was a snapshot? I think I’m using a jar file from begin of may on a OH 2.2 installation. didnt recognized the move of keywork snapshot -> development binding :stuck_out_tongue: good to know

I’m not sure I understand you.

There are two versions of the ZWave binding - the master branch which comes with the nightly snapshot, and the development branch. It’s been like this for over 1 year and I hope to merge this once 2.3 is released (ie very soon now!).

@chris : I have now added few Z-Wave devices to my network and I encounter 2 major (blocking) issues:

  1. My everspring ST814 temperature/humidity sensor is not working. At startup, the thing is first ONLINE then it appears OFFLINE for ever with the following message: COMMUNICATION_ERROR Node is not communicating with controller. The thing was discovered and added using Paper UI and the device is at less than 2 meters form the Z-Stick. I am using the default configuration paramleters.
  2. For Fibaro FGD211 and Aeon Labs DSC06 Smart Energy Switch, any local control leads to no change in openHAB ! This is something that works perfectly in the Vera, at least for the Fibaro FGD. Is is a feature not yet implemented in the binding ? Is it just a parameter problem ? I have to mention that the local control for the Nodon Micro Smart Plug is working well on its side. The Fibaro FGD thing was discovered and added using Paper UI. I only changed the configuration parameter 14 to set it to 1.

As mentioned in the other thread, the fact to not be able to configure a device in a things file is very annoying but not blockling.

You’d need to check the logs, but it very likely means that the device is not responding to messages that the controller is sending. It could be out of range?

Please check the association configuration. Ideally, this should be configured automatically for ZW+ devices, and any device for which the database is properly configured to set this.

Yes, agreed, but as I hope I’ve explained, I don’t think there’s any nice solution to this at the moment. My solution was to allow configuration to be sent to devices configured in things, but this PR was rejected by ESH. There is a plan to implement a new configuration system for configuring devices, but I think it’s probably still a little while away (sorry again for this).

The Nodon Micro Smart Plug is my only ZW+ device and it is working.

For the Aeon Labs DSC06 Smart Energy Switch, I can see the value “node_1” for Association Groups => “1: Status Reports”. Should I set it to another value ?

For the FGD211, I can see no value set for Association Groups => “1: Switch 1”, “2: Switch 2” and “3: Controller Updates”. Is it expected ? What values should I set ? I can see"openHAB Controller" as possible value for the last parameter.

I imagine it is not possible to change these values from my config file…

Should be fine (I’m assuming your controller is node 1). I’d suggest to check the logs to see if anything is being returned.

No - I think you should have group 3 set (I have many of these at home).

Correct :frowning: .

After setting the parameter “3: Controller Updates” to the value “openHAB Controller”, the thing is ONLINE again but when I reopen the configuration, the value is gone (no value displayed) and the problem is still there.

For my Aeon Labs DSC06 Smart Energy Switch, here are logs when I switch it off from the local button:

14:33:51.028 [DEBUG] [ZWaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 13 00 49 84 03 0D 04 10 01 25 31 32 27 70 85 72 86 EF 82 57
14:33:51.042 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - processReceiveMessage input 0<>128 : Message: class=ApplicationUpdate[73], type=Request[0], dest=3, callback=132, payload=84 03 0D 04 10 01 25 31 32 27 70 85 72 86 EF 82
14:33:51.051 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - processReceiveMessage past lock Message: class=ApplicationUpdate[73], type=Request[0], dest=3, callback=132, payload=84 03 0D 04 10 01 25 31 32 27 70 85 72 86 EF 82
14:33:51.060 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Received msg (0): Message: class=ApplicationUpdate[73], type=Request[0], dest=3, callback=132, payload=84 03 0D 04 10 01 25 31 32 27 70 85 72 86 EF 82
14:33:51.068 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - lastTransaction null
14:33:51.075 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Checking outstanding transactions: 0
14:33:51.082 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Last transaction: null
14:33:51.088 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - ****************** Transaction not correlated
14:33:51.097 [DEBUG] [ave.internal.protocol.ZWaveController] - Incoming Message: Message: class=ApplicationUpdate[73], type=Request[0], dest=3, callback=132, payload=84 03 0D 04 10 01 25 31 32 27 70 85 72 86 EF 82
14:33:51.105 [DEBUG] [message.ApplicationUpdateMessageClass] - NODE 3: Application update request. Node information received. Transaction null
14:33:51.112 [DEBUG] [ing.zwave.internal.protocol.ZWaveNode] - NODE 3: resetResendCount initComplete=true isDead=false
14:33:51.119 [DEBUG] [message.ApplicationUpdateMessageClass] - NODE 3: Application update - no transaction.
14:33:51.127 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - ZWaveReceiveThread queue empty
14:33:51.134 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage 0 out at start
14:33:51.140 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction from controllerQueue
14:33:51.146 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage nothing
14:33:51.377 [DEBUG] [ing.zwave.internal.protocol.ZWaveNode] - NODE 3: Node is listening - ignore wakeup

Something seems to be received.

For the Fibaro FGD211, even if the parameter is not displayed correctly in Paper UI, it is now working as expected (well). One problem solved.

For my ST814 sensor, here is the sequence of logs I got very frequently:

14:46:51.019 [DEBUG] [erialmessage.IsFailedNodeMessageClass] - NODE 4: Requesting IsFailedNode status from controller.
14:46:51.026 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: sendTransaction org.openhab.binding.zwave.internal.protocol.ZWaveSerialPayload@1795fd2
14:46:51.033 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: Adding to controller queue
14:46:51.050 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: Added to queue - size 1
14:46:51.059 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage 0 out at start
14:46:51.068 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction from controllerQueue
14:46:51.076 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - getTransactionToSend 6
14:46:51.086 [DEBUG] [zwave.internal.protocol.SerialMessage] - Assembled message buffer = 01 04 00 62 04 9D
14:46:51.097 [DEBUG] [ding.zwave.handler.ZWaveSerialHandler] - NODE 255: Sending REQUEST Message = 01 04 00 62 04 9D
14:46:51.106 [DEBUG] [ding.zwave.handler.ZWaveSerialHandler] - Message SENT
14:46:51.110 [DEBUG] [ZWaveSerialHandler$ZWaveReceiveThread] - Receive Message = 06
14:46:51.120 [DEBUG] [ve.internal.protocol.ZWaveTransaction] - TID 489: Transaction Start type IsFailedNodeID
14:46:51.124 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - processReceiveMessage input 0<>128 : Message: class=null[0], type=ACK[2], dest=255, callback=0, payload=
14:46:51.128 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage started: TID 489: [WAIT_RESPONSE] requiresResponse=true callback: 0
14:46:51.137 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - processReceiveMessage past lock Message: class=null[0], type=ACK[2], dest=255, callback=0, payload=
14:46:51.139 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage started: expected cmd class: null
14:46:51.147 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Received msg (0): Message: class=null[0], type=ACK[2], dest=255, callback=0, payload=
14:46:51.149 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage started: expected cmd: null
14:46:51.158 [DEBUG] [ZWaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 04 01 62 01 99
14:46:51.156 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - lastTransaction null
14:46:51.165 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage Transactions outstanding: 1
14:46:51.174 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - processReceiveMessage input 0<>128 : Message: class=IsFailedNodeID[98], type=Response[1], dest=255, callback=0, payload=01
14:46:51.172 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Received msg: ACK
14:46:51.183 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Start transaction timer to Fri May 11 14:46:53 CEST 2018 - 2000ms
14:46:51.191 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - processReceiveMessage past lock Message: class=IsFailedNodeID[98], type=Response[1], dest=255, callback=0, payload=01
14:46:51.190 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - ZWaveReceiveThread queue empty
14:46:51.198 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage lastTransaction: TID 489: [WAIT_RESPONSE] requiresResponse=true callback: 0
14:46:51.210 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage 1 out at start
14:46:51.215 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - STOP transaction timer
14:46:51.224 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Start transaction timer to Fri May 11 14:46:53 CEST 2018 - 1958ms
14:46:51.231 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction lastTransaction outstanding...
14:46:51.238 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - STOP transaction timer
14:46:51.246 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Start transaction timer to Fri May 11 14:46:53 CEST 2018 - 1936ms
14:46:51.260 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Received msg (0): Message: class=IsFailedNodeID[98], type=Response[1], dest=255, callback=0, payload=01
14:46:51.267 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - lastTransaction TID 489: [WAIT_RESPONSE] requiresResponse=true callback: 0
14:46:51.274 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Checking outstanding transactions: 1
14:46:51.281 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Last transaction: TID 489: [WAIT_RESPONSE] requiresResponse=true callback: 0
14:46:51.289 [DEBUG] [ave.internal.protocol.ZWaveController] - Incoming Message: Message: class=IsFailedNodeID[98], type=Response[1], dest=255, callback=0, payload=01
14:46:51.296 [DEBUG] [erialmessage.IsFailedNodeMessageClass] - NODE 4: Is currently marked as failed by the controller!
14:46:51.303 [DEBUG] [ve.internal.protocol.ZWaveTransaction] - TID 489: Transaction COMPLETED
14:46:51.310 [DEBUG] [ve.internal.protocol.ZWaveTransaction] - TID 489: TransactionAdvance ST: DONE
14:46:51.317 [DEBUG] [ve.internal.protocol.ZWaveTransaction] - TID 489: TransactionAdvance WT: null {}
14:46:51.324 [DEBUG] [ve.internal.protocol.ZWaveTransaction] - TID 489: TransactionAdvance RX: Message: class=IsFailedNodeID[98], type=Response[1], dest=255, callback=0, payload=01
14:46:51.331 [DEBUG] [ve.internal.protocol.ZWaveTransaction] - TID 489: TransactionAdvance TO: DONE
14:46:51.338 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: Response processed after 218ms
14:46:51.345 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: TID 489: Transaction completed
14:46:51.353 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: notifyTransactionResponse TID:489 DONE
14:46:51.362 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - TID 489: Transaction event listener: DONE: DONE ->
14:46:51.362 [DEBUG] [ave.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveTransactionCompletedEvent
14:46:51.370 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - NODE 255: -- To notify -- COMPLETE
14:46:51.375 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - ZWaveReceiveThread queue empty
14:46:51.378 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - ********* Transaction Response Complete -- 489 --
14:46:51.385 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage 0 out at start
14:46:51.394 [DEBUG] [ialization.ZWaveNodeInitStageAdvancer] - NODE 4: Node Init response (0) org.openhab.binding.zwave.internal.protocol.ZWaveTransactionResponse@60e964
14:46:51.395 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction from controllerQueue
14:46:51.400 [DEBUG] [ialization.ZWaveNodeInitStageAdvancer] - NODE 4: Node Init transaction completed with response COMPLETE
14:46:51.404 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - Transaction SendNextMessage nothing
14:46:51.412 [DEBUG] [rnal.protocol.ZWaveTransactionManager] - STOP transaction timer

For my DSC06 Smart Energy Switch, I can see that there is possible value “openHAB Controller” that is different from “node_1”. I will try it.

The issue here is that the controller is saying that the device is not working. The binding therefore doesn’t try and communicate with the device.

For my Aeon Labs DSC06 Smart Energy Switch, I try to change the parameter “1: Status Reports” but it is finally always reset again to “node_1” and the feature still does not work.
Maybe the logs can help you to analyze.

Does it mean that the ST814 is “incompatible” with my Z-Stick Gen5 ?
The device cannot be out of range, it is at 2 meters from the Stick !
What can be done to force the controller to check again this device ?
PS: this device was working well when connected to my Vera so it is not HS.