How do I switch to Zwave JS?

If you look at the road map, you’ll notice all the gaps plan to be filled.

where to find this roadmap?

Because I do realize at the moment I’m not able to change parameters in the current Zwave JS

It’s linked in the blog post for this release

Thanks again!

It shows indeed that there will be GUI adds for node settings.
So I do have to wait a little :innocent:

I do see on regular base the next errors in the zwave JS log:

                      }
20:41:20.007 CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                      n 100 ms.
20:44:34.048 CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                      n 100 ms.
20:45:39.027 CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                      n 100 ms.

As far I know the system is still running okay.
Any Idea?

Location of cache Z-Wave JS addon in the docker’s host folder:

/usr/share/hassio/addons/data/core_zwave_js/cache

And possible that the same folder within Z-Wave JS to MQTT addon:

/usr/share/hassio/addons/data/a0d7b954_zwavejs2mqtt/store

No need to entering into the containers. They are container’s persistent storage.

2 Likes

Is it also possible to find these cache files in a Unraid-> VM -> HA environment?
Because I can not find
/usr/share/hassio/addons/data/core_zwave_js/cache

Probably it’s possible - somehow data needs to be stored, but since I don’t have Unraid or VM environment at hand, it hard to tell where these exactly are. You can try search with ‘find’ like:

sudo find / -type d -name ‘zwave_js’

It just took me all of 5 minutes to make the switch. I dropped all 3 files from the one addon to the other. Presto, now I’m using ZwaveJS2MQTT. It’s very simple once you find the files and move them.

I used WinSCP to find and make the transfer because I didn’t feel like doing it via CLI. But I initially found the file location by searching for zwave_js like @arkoko suggested.

3 Likes

I have switched between addon without cache files, entites were same.

Yes, but then you have to wake everything up again when you start the other network. With the cache files it just ‘knows’ and you don’t need to go through the initial onboarding.

EDIT: Then the zwavejs2mqtt UI even shows that it used cache to init the device instead of waiting for the device to respond:

1 Like

So, you just copied all three .json and *.jsonl files from cache folder to the store folder? Or only one .json file?

I just did all three :man_shrugging:

1 Like

Thanks for explanation!

I’m getting similar errors, but coming from OpenZwave (Beta). It starts up and begins polling devices then suddenly hits this error. Sometimes it seems like it actually runs for a bit before hitting this. Maybe it is a specific device it doesn’t like? I’ve been using a Homeseer SmartStick+ for years with both OpenZwave and the built in Zwave with no issues. The key is copied from OZW with 0x and commas removed (didn’t even start with that in).

17:04:29.847 CNTRLR » [Node 011] querying parameter #1 value...
17:04:29.911 CNTRLR « [Node 004] received location: 啰獴慩牳
17:04:29.914 CNTRLR   [Node 004] MultilevelSwitchCC: doing a complete interview...
17:04:29.917 CNTRLR » [Node 004] requesting current switch state...
17:04:30.036 CNTRLR « [Node 006] parameter #1 has value: 0
17:04:30.038 CNTRLR » [Node 006] querying parameter #3 value...
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
RangeError [ERR_INVALID_BUFFER_SIZE]: Buffer size must be a multiple of 16-bits
    at Buffer.swap16 (buffer.js:1127:11)
    at new NodeNamingAndLocationCCLocationReport (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/commandclass/NodeNamingCC.ts:367:36)
    at new CommandClass (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/commandclass/CommandClass.ts:108:13)
    at new NodeNamingAndLocationCC (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/commandclass/NodeNamingCC.ts:165:1)
    at Function.from (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/commandclass/CommandClass.ts:331:15)
    at new ApplicationCommandRequest (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/controller/ApplicationCommandRequest.ts:88:32)
    at Function.from (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/message/Message.ts:222:15)
    at Driver.serialport_onData (/usr/lib/node_modules/@zwave-js/server/node_modules/zwave-js/src/lib/driver/Driver.ts:1369:18)
    at SerialAPIParser.emit (events.js:315:20)
    at SerialAPIParser.EventEmitter.emit (domain.js:467:12)
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

Is there a way to make this dump ALL entities, even those that have been disabled, or can’t be edited in the UI? I have about 250 of those too.

That’s exactly the same error i’m getting. I’ve tried on my existing install as well as spinning up a brand new VM and Home Assistant install and same result. That’s what leads me to agree with you that it must be something specific to our devices. Mine errors out after interrogating node 20 which is a Fibaro dimmer 2.

I just wanted to express my thanks for getting these new zwave integrations out - both to the core team and the community.

I’ve 43 zwave devices, and was really struggling with latency when firing lots of light and switch operations together (goodnight routines sometimes took more than 40 seconds to complete).

I moved from the deprecated zwave integration to zwave js last night. It took around 2 hours to get everything renamed. and all my Fibaro multi-sensors have called in successfully.

The speed difference is very noticeable. That same good-night routine is now completing in seconds. I also see the difference in individual light operations when you click off and on repeatedly. Thank you for this - it makes a huge experience improvement, particularly with any routines based on movement triggers.

Wishlist?

(1) Obviously having a control panel back would be great! I don’t have plans to add more devices yet, but all of my fibaro dimmer 2 modules have specific configurations which need access to the device parameters. I also have 2 or 3 orphaned devices (not marked as dead so I cannot remove them). I would love to get these cleared out once and for all, and I’m hoping this release will allow me to do that.

(2) I was using a 3rd party tool to create a zwave network visualisation. I could see the mesh, as well as the latency figures. Given the dramatic speed improvements, this might not be needed now, but - I would prefer to still have access to it.

I did use this template to find all nodes of my zwave 1,4:

{%- for node, zstates in states | selectattr('attributes.node_id', 'in', range(1000)) | groupby('attributes.node_id') %}
{{ node }}:
  {%- for s in zstates %}
  - {{ s.name }}
    {{ s.entity_id }}
  {% endfor %}
{%- endfor %}

This is working fine with zwave 1.4, but not with zwave js implemented
Is there also a template to find all nodes in zwave js?

(I’m not used to make such kind of scripts)

You will find in the roadmap this is all planned: