Z-wave legacy migration is... bad

I am disappointed with z-wave js.

Don’t get me wrong, I love Home Assistant, and Open Source projects. I have been using Home Assistant for over 3 years now. But I feel that the forced z-wave js migration with the latest update is half-baked. This is more of a rant than it is a plea for support help, but I have tried updating to the z-wave js version six times in the last year, and each time is met with failure.

First the integration would not start (now it does). And the GUI is still broken - You must manually edit the YAML to put the correct fields in the integration - because it is unable to read the correct USB port out of the box. The integration does not have a field for the network key - again, you must put that in manually with the YAML.

Its just dissapointing.

For what it is worth, I have tried the official documentation as found here:

But its not correct.

I have followed the stuff here:

But as mentioned, its not complete.

Finally, this is the post I found after much googling that gets me the closest to having something functional:

This nearly gets me to completion but… Here is where I end up:

So, is there a reason that going from configuration.yaml z-wave to z-wave js is just so bad?

And yes, I know projects like this are hard, and I know I am ranting, but this just feels so less polished to me that all the other migrations for Home Assistant I have done in the past.

Converting is always difficult but as they stated in the release notes OZW and z-wave were old and they were not maintained. I don’t get your point on the config.yaml to z-wave js. I am running HAOS and the add-on has configuration built in.

Here is the configuration from the add-on

Everything I needed was in the add-on configuration. There was not a migration tool available early-on and I did my 89 devices in one day. I removed each node and added it back. Then after each addition I fixed all the automations as the entity names were different (partially because I had learned more). I looked at each device and recorded the automations for that device before I started and that saved alot of trouble looking for the right automations. I don’t think it was half baked, I do think the developers were looking for a solution that was maintained and that causes pain for us users while giving us the benefit of enhancements, bug fixes, and hopefully improved security.

If you use hacs watchman it is very easy because watchman tells you when you are missing an entity in your configuration.

I understand your frustration and if a migration tool is written you have expectations that it will work. Sometimes it doesn’t and you have to take the hard route. Are the 11 not ready by chance battery powered? If so it may take until they wake up for them to be ready. Are any of the devices locks? Those will have to be removed or reset and then added back.

They are complete, I was hoping the community would take them over but no one has stepped up. I just haven’t removed the under construction messages at the top.

To me, it seems like you’re missing a fundamental understanding of how the new system works.

I recommend taking the time to learn the system, there’s a community guide for that.

Lastly, there’s also a step by step guide in the home assistant docs.

Also, keep in mind that and the end of all the documents they mention that you have to wake up battery devices in order for them to be seen. I believe this is the step you’re missing at this point.

For what it is worth, I was fully familiar with all those documents. Something about my install is different. I am extremely familiar with how all the components function, but my nodes just break. And yes, I woke them all up. But they kept failing back to “not ready”.

Something with my install is different, there are zero errors in the logs (I put them in Splunk).

The only option seems to be to completely destroy my network on the Z-Wave stick and start anew.

I am not sure what is different about what I have, but my situation does not match what has been described elsewhere.

Can you paste the logs when the addon is started until it hits its first snag please.

I got it working after destroying the old z-wave network on my stick, removing all my z-wave integrations, and restarting net new. Not sure what was goofy about my system.

Here is the last log I captured before completely destroying what I had before:

Subscribed to Z-Wave JS Log Messages…
2022-03-12T20:28:53.061Z SERIAL « 0x01070013970003e798 (9 bytes)
2022-03-12T20:28:53.063Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.065Z DRIVER « [REQ] [SendData]
callback id: 151
transmit status: OK
2022-03-12T20:28:53.167Z SERIAL « 0x01100004000e0a98805bec0c1d1ce9a18f8a (18 bytes)
2022-03-12T20:28:53.169Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.170Z DRIVER « [Node 014] [REQ] [ApplicationCommand]
└─[SecurityCCNonceReport]
nonce: 0x5bec0c1d1ce9a18f
2022-03-12T20:28:53.176Z SERIAL » 0x011d00130e16988121d47ecda31065d2a5b42f5b564e84e7c056ad5f259875 (31 bytes)
2022-03-12T20:28:53.177Z DRIVER » [Node 014] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 152
└─[SecurityCCCommandEncapsulation]
│ nonce id: 91
└─[DoorLockCCOperationGet]
2022-03-12T20:28:53.180Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:53.187Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:53.188Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.190Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:53.345Z SERIAL « 0x010700139800001063 (9 bytes)
2022-03-12T20:28:53.346Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.347Z DRIVER « [REQ] [SendData]
callback id: 152
transmit status: OK
2022-03-12T20:28:53.501Z SERIAL « 0x01080004000e02984027 (10 bytes)
2022-03-12T20:28:53.505Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.507Z DRIVER « [Node 014] [REQ] [ApplicationCommand]
└─[SecurityCCNonceGet]
2022-03-12T20:28:53.516Z SERIAL » 0x011100130e0a98808fef08a9953294b005993f (19 bytes)
2022-03-12T20:28:53.518Z DRIVER » [Node 014] [REQ] [SendData]
│ transmit options: 0x05
│ callback id: 153
└─[SecurityCCNonceReport]
nonce: 0x8fef08a9953294b0
2022-03-12T20:28:53.520Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:53.526Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:53.528Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.529Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:53.629Z SERIAL « 0x010700139900000b79 (9 bytes)
2022-03-12T20:28:53.630Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.632Z DRIVER « [REQ] [SendData]
callback id: 153
transmit status: OK
2022-03-12T20:28:53.719Z SERIAL « 0x01210004000e1b9881868a25499dfcaa8c1852f7355fa4527e8f75aa66f513c0c (35 bytes)
57e05
2022-03-12T20:28:53.722Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.726Z CNTRLR [Node 014] [~] [Door Lock] currentMode: 255 => 255 [Endpoint 0]
2022-03-12T20:28:53.729Z CNTRLR [Node 014] [~] [Door Lock] outsideHandlesCanOpenDoor: false,false [Endpoint 0]
,false,false => false,false,false,false
2022-03-12T20:28:53.734Z CNTRLR [Node 014] [~] [Door Lock] insideHandlesCanOpenDoor: false,false, [Endpoint 0]
false,false => false,false,false,false
2022-03-12T20:28:53.738Z CNTRLR [Node 014] [~] [Door Lock] latchStatus: “open” => “open” [Endpoint 0]
2022-03-12T20:28:53.741Z CNTRLR [Node 014] [~] [Door Lock] boltStatus: “locked” => “locked” [Endpoint 0]
2022-03-12T20:28:53.744Z CNTRLR [Node 014] [~] [Door Lock] doorStatus: “open” => “open” [Endpoint 0]
2022-03-12T20:28:53.747Z DRIVER « [Node 014] [REQ] [ApplicationCommand]
└─[SecurityCCCommandEncapsulation]
│ sequenced: false
└─[DoorLockCCOperationReport]
current mode: Secured
active outside handles: false, false, false, false
active inside handles: false, false, false, false
latch status: open
bolt status: locked
door status: open
2022-03-12T20:28:53.768Z SERIAL » 0x010900130a029840259a8a (11 bytes)
2022-03-12T20:28:53.769Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 154
└─[SecurityCCNonceGet]
2022-03-12T20:28:53.772Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:53.778Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:53.780Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:53.781Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.036Z SERIAL « 0x010700139a00007e0f (9 bytes)
2022-03-12T20:28:55.037Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.039Z DRIVER « [REQ] [SendData]
callback id: 154
transmit status: OK
2022-03-12T20:28:55.051Z SERIAL « 0x01100004000a0a98802807b3710367e48f11 (18 bytes)
2022-03-12T20:28:55.052Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.054Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCNonceReport]
nonce: 0x2807b3710367e48f
2022-03-12T20:28:55.061Z SERIAL » 0x011e00130a179881fba038ca5d67a99abc0eae102815d027c291900a3d259bda (32 bytes)
2022-03-12T20:28:55.062Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 155
└─[SecurityCCCommandEncapsulation]
│ nonce id: 40
└─[ConfigurationCCGet]
parameter #: 33
2022-03-12T20:28:55.066Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.073Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.075Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.077Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.098Z SERIAL « 0x010700139b00000373 (9 bytes)
2022-03-12T20:28:55.099Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.100Z DRIVER « [REQ] [SendData]
callback id: 155
transmit status: OK
2022-03-12T20:28:55.136Z SERIAL « 0x01080004000a02984023 (10 bytes)
2022-03-12T20:28:55.137Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.138Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCNonceGet]
2022-03-12T20:28:55.147Z SERIAL » 0x011100130a0a98806d99e8a45cf073ac059cb7 (19 bytes)
2022-03-12T20:28:55.148Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x05
│ callback id: 156
└─[SecurityCCNonceReport]
nonce: 0x6d99e8a45cf073ac
2022-03-12T20:28:55.153Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.159Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.160Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.161Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.181Z SERIAL « 0x010700139c00000374 (9 bytes)
2022-03-12T20:28:55.182Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.184Z DRIVER « [REQ] [SendData]
callback id: 156
transmit status: OK
2022-03-12T20:28:55.204Z SERIAL « 0x01220004000a1c98811a280d2769edea01edd51df130035152746d6bf6ecb94ab (36 bytes)
25bbd8a
2022-03-12T20:28:55.205Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.209Z CNTRLR [Node 010] [+] [Configuration] 33: 960049462
2022-03-12T20:28:55.211Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCCommandEncapsulation]
│ sequenced: false
└─[ConfigurationCCReport]
parameter #: 33
value size: 4
value: 960049462
2022-03-12T20:28:55.214Z CNTRLR « [Node 010] parameter #33 has value: 960049462
2022-03-12T20:28:55.215Z CNTRLR » [Node 010] querying parameter #34 value…
2022-03-12T20:28:55.225Z SERIAL » 0x010900130a029840259d8d (11 bytes)
2022-03-12T20:28:55.226Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 157
└─[SecurityCCNonceGet]
2022-03-12T20:28:55.229Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.235Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.236Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.238Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.255Z SERIAL « 0x010700139d00000274 (9 bytes)
2022-03-12T20:28:55.256Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.258Z DRIVER « [REQ] [SendData]
callback id: 157
transmit status: OK
2022-03-12T20:28:55.272Z SERIAL « 0x01100004000a0a988090cf22196b9ec2fc5c (18 bytes)
2022-03-12T20:28:55.273Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.274Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCNonceReport]
nonce: 0x90cf22196b9ec2fc
2022-03-12T20:28:55.280Z SERIAL » 0x011e00130a1798816c7fc8be813c1609ebc5e0ed9087b4d34004c353b5259eb8 (32 bytes)
2022-03-12T20:28:55.281Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 158
└─[SecurityCCCommandEncapsulation]
│ nonce id: 144
└─[ConfigurationCCGet]
parameter #: 34
2022-03-12T20:28:55.285Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.292Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.293Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.295Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.316Z SERIAL « 0x010700139e00000376 (9 bytes)
2022-03-12T20:28:55.318Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.319Z DRIVER « [REQ] [SendData]
callback id: 158
transmit status: OK
2022-03-12T20:28:55.354Z SERIAL « 0x01080004000a02984023 (10 bytes)
2022-03-12T20:28:55.356Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.357Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCNonceGet]
2022-03-12T20:28:55.369Z SERIAL » 0x011100130a0a98809bd95b10f970a074059f2b (19 bytes)
2022-03-12T20:28:55.370Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x05
│ callback id: 159
└─[SecurityCCNonceReport]
nonce: 0x9bd95b10f970a074
2022-03-12T20:28:55.373Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.379Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.380Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.382Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.401Z SERIAL « 0x010700139f00000377 (9 bytes)
2022-03-12T20:28:55.402Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.403Z DRIVER « [REQ] [SendData]
callback id: 159
transmit status: OK
2022-03-12T20:28:55.424Z SERIAL « 0x01220004000a1c98812ab51893d68b3082c5f1b826e22332bd749bb57fb8c3d6c (36 bytes)
4940e1f
2022-03-12T20:28:55.426Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.428Z CNTRLR [Node 010] [+] [Configuration] 34: 808464944
2022-03-12T20:28:55.429Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCCommandEncapsulation]
│ sequenced: false
└─[ConfigurationCCReport]
parameter #: 34
value size: 4
value: 808464944
2022-03-12T20:28:55.432Z CNTRLR « [Node 010] parameter #34 has value: 808464944
2022-03-12T20:28:55.434Z CNTRLR [Node 010] [+] [Configuration] interviewComplete: true [Endpoint 0] [internal]
2022-03-12T20:28:55.448Z CNTRLR [Node 010] Interviewing Door Lock Logging…
2022-03-12T20:28:55.449Z CNTRLR » [Node 010] querying supported number of records…
2022-03-12T20:28:55.460Z SERIAL » 0x010900130a02984025a0b0 (11 bytes)
2022-03-12T20:28:55.461Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 160
└─[SecurityCCNonceGet]
2022-03-12T20:28:55.464Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.470Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.471Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.472Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.491Z SERIAL « 0x01070013a000000348 (9 bytes)
2022-03-12T20:28:55.492Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.493Z DRIVER « [REQ] [SendData]
callback id: 160
transmit status: OK
2022-03-12T20:28:55.506Z SERIAL « 0x01100004000a0a988050786e4af24e760237 (18 bytes)
2022-03-12T20:28:55.508Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.509Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCNonceReport]
nonce: 0x50786e4af24e7602
2022-03-12T20:28:55.517Z SERIAL » 0x011d00130a1698814adf858f8ef01afe19e21d506e64c1eab28e4ec125a151 (31 bytes)
2022-03-12T20:28:55.518Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 161
└─[SecurityCCCommandEncapsulation]
│ nonce id: 80
└─[DoorLockLoggingCCRecordsSupportedGet]
2022-03-12T20:28:55.522Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.529Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.530Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.531Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.553Z SERIAL « 0x01070013a100000349 (9 bytes)
2022-03-12T20:28:55.554Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.555Z DRIVER « [REQ] [SendData]
callback id: 161
transmit status: OK
2022-03-12T20:28:55.583Z SERIAL « 0x01080004000a02984023 (10 bytes)
2022-03-12T20:28:55.584Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.586Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCNonceGet]
2022-03-12T20:28:55.594Z SERIAL » 0x011100130a0a9880c8d4d7466c3cd40c05a247 (19 bytes)
2022-03-12T20:28:55.595Z DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x05
│ callback id: 162
└─[SecurityCCNonceReport]
nonce: 0xc8d4d7466c3cd40c
2022-03-12T20:28:55.600Z SERIAL « [ACK] (0x06)
2022-03-12T20:28:55.604Z SERIAL « 0x0104011301e8 (6 bytes)
2022-03-12T20:28:55.605Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.607Z DRIVER « [RES] [SendData]
was sent: true
2022-03-12T20:28:55.626Z SERIAL « 0x01070013a20000034a (9 bytes)
2022-03-12T20:28:55.627Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.628Z DRIVER « [REQ] [SendData]
callback id: 162
transmit status: OK
2022-03-12T20:28:55.648Z SERIAL « 0x011d0004000a179881a44f40b68973ea977c8927b9c832210f0f36f7d834e5 (31 bytes)
2022-03-12T20:28:55.649Z SERIAL » [ACK] (0x06)
2022-03-12T20:28:55.652Z CNTRLR [Node 010] [+] [Door Lock Logging] recordsCount: 10 [Endpoint 0] [internal]
2022-03-12T20:28:55.654Z DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[SecurityCCCommandEncapsulation]
│ sequenced: false
└─[DoorLockLoggingCCRecordsSupportedReport]
supported no. of records: 10
2022-03-12T20:28:55.658Z CNTRLR « [Node 010] supports 10 records
2022-03-12T20:28:55.659Z CNTRLR [Node 010] [+] [Door Lock Logging] interviewComplete: [Endpoint 0] [internal]
true
2022-03-12T20:28:55.666Z CNTRLR [Node 010] Interview stage completed: CommandClasses
2022-03-12T20:28:55.668Z CNTRLR [Node 010] Interview stage completed: OverwriteConfig
2022-03-12T20:28:55.669Z CNTRLR [Node 010] Interview completed
2022-03-12T20:28:55.671Z CNTRLR [Node 010] The node is ready to be used

Thanks a lot for the mention of Watchman by the way after a full restart with new everything it was super helptul getting all my stuff repaired.

Those logs only show 1 node transmitting interview information and doesn’t show the startup either. Hard to say what happened, but I’m assuming 1 node was blocking the rest from becoming ready. It was not node 10, that’s about all you can gather from that.

It is a great tool! I wish they would make it a standard integration in Home Assistant so everyone could benefit from it.