[ANNOUNCEMENT] : node-red-contrib-zwave-js V7

node-red-contrib-zwave-js V7

After various discussions, ~3 months of work, 51 commits, 34 updated source files, various Alpha and Beta testing stages (thank you to those involved):

I am excited to announce the availability of node-red-contrib-zwave-js V7

NOTE!
zwave-js V9 will convert some data files over to a new format,
I STRONGLY advise to back up the directory ~./.node-red/zwave-js-cache just to be on the safe side - the conversation will take a few minutes so don't panic.

Also remember to thoroughly take note of the Breaking Changes (below)


Breaking Changes

  • The GET_VALUE_RESPONSE object is no longer partitioned with response and valueId properties.
    Instead, the returned object now represents a shape simular to VALUE_UPDATED events.
    The value will now be attached to the currentValue property, along with the Value ID on the same level.
  • The VALUE_DB objects are no longer partitioned with currentValue and valueId properties.
    Instead, the returned objects now include the Value ID on the same level as currentValue
  • Much like above, GET_VALUE_METADATA_RESPONSE has also been simplified, where the result is attached to metadata, with the Value ID on the same level.

New Features

  • VALUE_UPDATED, VALUE_NOTIFICATION, GET_VALUE_RESPONSE and VALUE_DB now contain a normalizedObject property.
    This property aims to make it easy to utilise the value change, in that it summarises the event with easy to understand property names.
  • An entierly new side panel UI. This redesign aims to better align with the Node RED style guide.
  • An entierly new Network Mesh Map, that is now based on routing header information instead of Node Neighbours.
  • Network statistics now include route information that is obtained during communication, and is used
    as the basis of the new map.
  • Multiple ZWave sticks/Networks are now supported (finally)
    • All message will contain a property of networkId to indentify the source network.
      WARNING: Before adding another network - please ensure you open up the currently configured Controller and save it again (Remembering to deploy) - this will allign the current network to ID 1
  • Improved Recovery when the USB/ZWave transceiver has been removed/re-introduced.
    • This is possible with a custom Watchdog implmentation, this introduces a new event type of WATCHDOG
      Which will describe what is happening.

Fixes

  • Nodes that are not marked as ready can now be removed correctly.
  • Fix potential issue when httpAdminRoot has a custom value.
  • Various performance, stability and optimisations to the UI.
  • UI Interaction is no longer picked up by Device Nodes.

Changes

  • Bump serialport to V10
  • Bump ZWJS to V9
  • New mapping algorithm - The new algorithm results in a much needed accuracy improvement, and is far superior to previous methods.
  • Nodes have now been named more clearly
  • Live Camera QR Code Scanning has been removed

New UI

7 Likes

Hi Marcus,

I have a big problem.
I upgraded to V7 and now my zwave.js node is gone.
Reinstalling did not help.
What should I do to come online fast?

regards Hannes

Hi @juntiedt,

What does the Node RED start up log say? - that will be our first clue, as it should show some clue.

v7 jumped to V10 of serialport, and this has been known to be problematic under Alpine - there are easy enough work arounds, just curious if this may be a factor.

i.e are you using docker?

Hi Marcus,
I am not using docker.
where can I find the start up log. Did never use it :grimacing:
does V10 mean Node-red serial port V10
I am also missing your confuguration in Node-red

can you start node red your self (i.e in a terminal session) so you can see its output?
this will write any errors during start up

Once Node-RED has started, point a browser at http://10.0.0.50:1880
On Pi Node-RED works better with the Firefox or Chrome browser

Use node-red-stop to stop Node-RED
Use node-red-start to start Node-RED again
Use node-red-log to view the recent log output
Use sudo systemctl enable nodered.service to autostart Node-RED at every boot
Use sudo systemctl disable nodered.service to disable autostart on boot

To find more nodes and example flows - go to http://flows.nodered.org

Starting as a systemd service.
8 Jun 15:27:52 - [info]
Willkommen bei Node-RED!

8 Jun 15:27:52 - [info] Node-RED Version: v2.2.2
8 Jun 15:27:52 - [info] Node.js Version: v14.18.1
8 Jun 15:27:52 - [info] Linux 5.10.63-v7l+ arm LE
8 Jun 15:27:52 - [info] Paletten-Nodes werden geladen
8 Jun 15:27:55 - [info] Dashboard version 3.1.7 started at /ui
8 Jun 15:27:55 - [warn] ------------------------------------------------------
8 Jun 15:27:55 - [warn] [node-red-contrib-zwave-js/zwave-js] TypeError: Class extends value undefined is not a constructor or null
8 Jun 15:27:55 - [warn] ------------------------------------------------------
8 Jun 15:27:55 - [info] Einstellungsdatei: /home/pi/.node-red/settings.js
8 Jun 15:27:55 - [info] Kontextspeicher: default [module=memory]
8 Jun 15:27:55 - [info] Benutzerverzeichnis: /home/pi/.node-red
8 Jun 15:27:55 - [warn] Projekte deaktiviert: editorTheme.projects.enabled=false
8 Jun 15:27:55 - [info] Flow-Datei: /home/pi/.node-red/flows.json
8 Jun 15:27:55 - [info] Server wird jetzt auf http://127.0.0.1:1880/ ausgeführt
8 Jun 15:27:55 - [warn]

Die Datei mit den Flow-Berechtigungen wird mit einem vom System
generierten Schlüssel verschlüsselt.
Wenn der vom System generierte Schlüssel aus irgendeinem Grund
verloren geht, kann die Datei mit den Berechtigungen nicht
wiederhergestellt werden. Sie muss dann gelöscht und die
Berechtigungen müssen erneut eingestellt werden.
Es sollte ein eigener Schlüssel mit Hilfe der Option
'credentialSecret' in der Einstellungsdatei vorgegeben werden.
Node-RED wird dann die Datei mit den Flow-Berechtigungen
bei der nächsten Übernahme (deploy) einer Änderung erneut
verschlüsseln.

8 Jun 15:27:55 - [info] Warten auf Registrierung fehlender Typen:
8 Jun 15:27:55 - [info] - zwave-js

Last 2 lines seem to be the problem

I can start node-red but node zwave-js is not there and the configuration menu is missing

Yep, as the Node isn't loaded - just goto do school run and will be back ~30 minutes...

ok thanks

Can I ask what version you was on before you updated?

version 6.2 or 6.3 I think
I always updated when a new version was available

OK, Im just replicating your environment, and following the upgrade route.
nothing immediate is shouting at me.

super, thank you very much ...

So, I have not been able to replicate this, all updates go through using node 14.18.1
I tried from 6.2.0 to 7.1.1 using a clean environment/NR install. can you backdate?

within the .node-red directory install the previous version
i.e : npm install node-red-contrib-zwave-js@6.2.0

maybe try updating via the terminal (again within the NR directory)
npm install node-red-contrib-zwave-js@latest

Prior to 7 it was 6.5.5

6.2.0 is working again. :+1:
Do you mean update latest would be V7?
Does V7 impact my flows?

I guess you use the NR pallet to update?

maybe try updating via terminal.
the tag @latest means use what ever version is current (currently 7.1.1)

if that still fails (restart NR after of course), just backdate again (6.5.5 was the last v6 version).

and the golden rule!
backup your zwave-js-cache folder :sweat_smile:

6.5.5 is running again.
one last question:
Do I have to change someting in my flows with Version 7 or will there only be changes on later versions than 7?

As of V7,

There are changes in the returned payload.
The only breaking change that may affect you is in the response payload for GET_VALUE_RESPONSE

response is now currentValue

But the error you received is something waaay deeper, Evan before the module is loaded - which I am not able to replicate :slightly_frowning_face:.

Anytime there is a breaking change the major version number will increment, so nothing will change (that you need to worry about) for all of the v7 revisions.

try and update using npm install node-red-contrib-zwave-js@latest in terminal (.node-red directory)
im not sure why that will make a difference, but if you have a backup of the cache folder, there isn't anything to lose

@juntiedt

You could try ripping out the module all toghether (as if it was never installed)
and try a direct install on the latest version.

as long as you have a backup of the zwave-js-cache folder, you won't lose the network info (just in case)
also backup your keys - if you go this route, your flows won't change.

PM me if you want to try.

I will try npm to version 7 tomorrow.
if it works like with 6.5.5 all will be ok - hopefully :wink:

PM me if you want to try the purge method.
what ever you do...

1 - Backup zwave-js-cache folder
2 - Backup your flows
3 - use node-red-contrib-zwave-js@latest for the terminal route