Zwave js 1.0.0 update

Perhaps I don’t understand your question. The device is functional in my z-wave network with s2 security.

However, it does NOT show up in Smart Start nor in any other way I’ve tried to get the DSK keys.

What I’m trying to accomplish is to get all of the DSK’s inside of Home Assistant so I can stop tracking all these pieces of paper/cardboard boxes and this spreadsheet.

I KNOW the DSKs are in Home Assistant somewhere. Because twice now I forced a device to factory reset while leaving Home Assistant untouched and roughly 10 hours later the device rejoins as though nothing happened… so somewhere in the internals of HA when the device looks around HA recognizes it, knows it, and re-adds it. So … in my VERY limited understanding, I don’t see how the DSK is NOT known by HA… Clearly it knows it somewhere/somehow… but HA isn’t showing it.

I REALLY don’t want to have to exclude and re-add all of my devices then reconfigure all of the automations. I just want a list of all the DSK keys on my network.

:man_shrugging:

Thanks for helping! I do appreciate it.

If the device is in zwavejs, the device will be in HA. Are you sure you’re looking for the correct device? You may simply need to clear your cache and refresh the zwave devices page after changing the name & area.

Greetings,
The device is in zwaveJS and in HA. The DSK keys are not shown. As I said in the last post:

I just want a list of all the DSK keys on my network.

Thanks

I used this some time back when I was making sure all my nodes where in the Provisioning Entries list. But, I mostly scanned QRs. Not sure if this would find everything.

➜  ~ docker exec -it addon_core_zwave_js bash
core-zwave-js:/# jq . /config/cache/cb2f72a2.jsonl | grep dsk | sort | uniq -c
      6       "dsk": "35859-64349-24093-15103-64168-27921-56783-32505",
      7       "dsk": "56033-57163-13955-04996-35525-27997-56795-06638",
      1   "k": "node.6.dsk",
      1   "k": "node.8.dsk",

The DSKs don’t live inside Home Assistant. They live in z-wave js.

In general terms, when you add a device via Home Assistant and enter (or scan) the QR then Home Assistant sends the QR code to z-wave js, which creates an entry in the z-wave js provisioning table. That’s where the DSK gets stored.

During that process HA creates a new (skeleton) device and HA sends that device ID to z-wave js to store along with the provisioning data. Then HA waits for z-wave js to report a device was added.

(Actually, once included I think the new z-wave node ID is reported to HA and then HA asks z-wave js for the provisioning data for that node ID which would then include the device ID so HA then knows to link it with the HA skeleton device id. I’m not sure why that is necessary – and can be confusing as you saw with seemingly “duplicate” devices.)

FWIW, my suggestion is don’t add devices to HA that way. Although HA creates the provisioning entry in z-wave js, HA does not send the device name and area. So, if you were to later exclude a device and re-include it you would have to enter the name/area again – and if you don’t use the exact same name your entity IDs would change.

Use the QR codes, or just use the DSK if you have only that, and add them directly in the ZUI Provisioning Screen. And enter the name and area there so you have a permanent list of not only the DSKs but also the names for HA to use.

HTH.

Thanks for the explanation. That does help me understand what is going on.

As for the command you gave, I don’t have a /config/cache directory… And a find / -type f -iname "*.json1" returns nothing found. This is a HAOS installed on a physical x86_64 machine.

Thanks.

It’s not json + “one” but json + l. as in json “lines”.

I have this running on a machine called argon. I’m using the Advanced SSH & Web Terminal:

$ ssh argon

       ▄██▄           _   _
     ▄██████▄        | | | | ___  _ __ ___   ___
   ▄████▀▀████▄      | |_| |/ _ \| '_ ` _ \ / _ \
 ▄█████    █████▄    |  _  | (_) | | | | | |  __/
▄██████▄  ▄██████▄   |_| |_|\___/|_| |_| |_|\___|          _
████████  ██▀  ▀██      / \   ___ ___(_)___| |_ __ _ _ __ | |_
███▀▀███  ██   ▄██     / _ \ / __/ __| / __| __/ _` | '_ \| __|
██    ██  ▀ ▄█████    / ___ \\__ \__ \ \__ \ || (_| | | | | |_
███▄▄ ▀█  ▄███████   /_/   \_\___/___/_|___/\__\__,_|_| |_|\__|
▀█████▄   ███████▀

Welcome to the Home Assistant command line interface.


Home Assistant Supervisor is running!
System information:
  IPv4 addresses for end0:  192.168.0.53/24
  IPv6 addresses for end0:  fe80::16c:e0be:d2e8:4d9a/64
  IPv4 addresses for wlan0: (No address)

  OS Version:               Home Assistant OS 17.1
  Home Assistant Core:      2026.2.3

  Home Assistant URL:       http://argon.local:8123
  Observer URL:             http://argon.local:4357

System is ready! Use browser or app to configure.

➜  ~ ls /addon_configs/core_zwave_js/cache
cb2f72a2.jsonl                cb2f72a2.metadata.jsonl       cb2f72a2.values.jsonl         
cb2f72a2.jsonl.lock           cb2f72a2.metadata.jsonl.lock  cb2f72a2.values.jsonl.lock

With Protection Mode disabled you can connect to the Z-Wave core container, which is the same place, like this:

➜  ~ docker ps | grep zwave
1cf74c8fbc3e   homeassistant/aarch64-addon-zwave_js:1.0.1                      "/init"               4 days ago   Up 4 days                                              addon_core_zwave_js

➜  ~ docker exec -it addon_core_zwave_js bash
core-zwave-js:/# ls /config/cache
cb2f72a2.jsonl                cb2f72a2.metadata.jsonl       cb2f72a2.values.jsonl         
cb2f72a2.jsonl.lock           cb2f72a2.metadata.jsonl.lock  cb2f72a2.values.jsonl.lock

“cb2f72a2” is the Home ID for that z-wave controller. Yours will be different, of course.

For this you don’t actually need the community advanced terminal app, protection mode disabled, nor Docker. The cache files are globally available at /addon_configs/core_zwave_js/cache, accessible directly from the core terminal app, File editor app (core), or Studio Code Server (community), and probably others.

Greetings,
Thanks for that! Unfortunately, that didn’t give me what I was hoping for…

➜  cache jq '.' c3c70ca5.jsonl| grep dsk | sort | uniq -c
      1   "k": "node.11.dsk",
      1   "k": "node.12.dsk",
      1   "k": "node.13.dsk",
      1   "k": "node.14.dsk",
      1   "k": "node.15.dsk",
      1   "k": "node.16.dsk",
      1   "k": "node.17.dsk",
      1   "k": "node.20.dsk",
      1   "k": "node.22.dsk",
      1   "k": "node.23.dsk",
      1   "k": "node.25.dsk",
      1   "k": "node.26.dsk",
      1   "k": "node.27.dsk",
      1   "k": "node.28.dsk",
      1   "k": "node.29.dsk",
      1   "k": "node.3.dsk",
      1   "k": "node.30.dsk",
      1   "k": "node.31.dsk",
      1   "k": "node.32.dsk",
      1   "k": "node.33.dsk",
      1   "k": "node.34.dsk",
      1   "k": "node.35.dsk",
      1   "k": "node.36.dsk",
      1   "k": "node.37.dsk",
      1   "k": "node.38.dsk",
      1   "k": "node.40.dsk",
      1   "k": "node.41.dsk",
      1   "k": "node.42.dsk",
      1   "k": "node.43.dsk",
      1   "k": "node.44.dsk",
      1   "k": "node.45.dsk",
      1   "k": "node.46.dsk",
      1   "k": "node.47.dsk",
      1   "k": "node.49.dsk",
      1   "k": "node.5.dsk",
      1   "k": "node.50.dsk",
      1   "k": "node.51.dsk",
      1   "k": "node.52.dsk",
      1   "k": "node.53.dsk",
      1   "k": "node.6.dsk",
      1   "k": "node.7.dsk",
      1   "k": "node.8.dsk",
      1   "k": "node.9.dsk",

Not only do I not see any DSK’s but I have like 80 z-wave devices. :man_shrugging:

What if you do this:

jq '.' c3c70ca5.jsonl| grep -A1 dsk | sort | uniq -c

Or even jq '.' c3c70ca5.jsonl | less and look around?

Huzzah! Brilliant @busman ! I’m still verifying them, but it does look like these are indeed the missing DSK keys. :confetti_ball: That’s a huge relief to have backed up!

So now back to your original point about “merging” them. I ideally would like to exclude-then-re-include several battery powered devices in LR mode instead of mesh, but I really don’t want to have to fix all of the automations with them if I don’t have to :grin:

Meanwhile, I’m going to try to verify that these are the DSK’s for some of the known devices to boost confidence for those that the DSK’s are missing.

Thank you!

Hey @busman
Wanted to give you another shout out of thanks! I never figured out how to “merge” the dsk’s I’ve collected into HA, however, my spreadsheet now has every full DSK. For the devices where I couldn’t find the paper or a QR code, I was able to pull out enough of a match from the cache file you pointed out to get a match. I then excluded/reincluded those devices just to make certain. Then I scanned all the ones where the DSK is missing from HA, used your tool to convert the QR to a DSK, verified the first 5 digits from the device and added those to my spreadsheet. So my spreadsheet now lists every DSK! :confetti_ball:

I have too many automations to go and reset every device, but for a handful where it was simple I did just to have the DSK’s in HA. About half my devices are now listed in SmartStart.

Thanks again for all the help and that nifty QR tool!

Glad you got all your devices’ data. That tool is provided by the great Z-Wave JS team.

Again, they don’t really go into HA. You would add them to the Z-Wave JS provisioning table. You can do that via HA, but then HA creates (what seems to be) a placeholder device. You don’t want a new device because the devices are already included.

That’s why I prefer to use the ZUI Provisioning screen. Did you try that?

Here you can see that “Zen 15 Left” is already include as node 009:

It does not have a provisioning entry, so I add it like this:

(although I always use the QR code, not the DSK)

And after I click “ADD” it adds it to the Provisioning Entries and you can see the UI now shows it associated with the existing Node 9.

Again, one big value, other than backup, to add the devices to the SmartStart/ (Provisioning Entries) page is so if you exclude a device and then include it again it should keep the same entity IDs – meaning your automations, dashboards, etc. won’t need updating.

Device IDs will change, which is one reason why using device IDs in automations is not a great way to go.

Hi all.
I do not understand what to do after upgrading from z-wave js 0.29.1 to this 1.0 (or better 1.1.0 now)
Each time i try, i see that z-wave js ui appears and all my devices (mainly FGR 223) are appearing in z-wave js ui, but nothing is working.
i can ping the devices, but from ha, no button is working.
I do not see where to search to understand the problem.
so each time, i revert to a backup of the 0.29.1 and everything is working again.