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!