[ANNOUNCE - MAJOR UPDATE] : node-red-contrib-zwave-js : Version 11

Well!..... Here it is - The Big One!

I will include the release notes below, but I'll cut to the chase.

  • V11 contains many breaking changes, and is deemed not a simple "Upgrade"
    Your network configuration will remain unaffected - But you will need to re-engineer your flows

I'm truly sorry


This has been a major task of mine, and I am happy to finally finish the transition to a new unified ZWave Stack directly in Node RED. :nerd_face:

I wish to thank @E1cid for the BETA testing, and for the massive involvement and discussion. :folded_hands:


  • 11.0.0

    Breaking Changes

    V11 represents a massive shift in how this set of nodes work. However, it is not considered an easy upgrade from versions <= v10.

    I apologise for the interruption, but the set of libraries behind all of this has changed considerably, and over the years, I have polyfilled features and extended functionality, and in doing so, the project has become increasingly complex to maintain.

    The aim with v11 was to take everything as it is now and rebuild it from the ground up (and that I did).
    NOTE: Your network will not be affected and will survive the transition, its the flows that you will have to re-engineer.

    :warning: BACK UP YOUR SO & S2 KEYS!!

    • All nodes have been updated in their mechanisms and type names/IDs, so you will need to re-add them:
      • Z-Wave Controller
      • Device Node
      • Event Filter (Now Event Splitter)
      • CMD Factory
    • The Controller and Device nodes are now powered by a central Configuration node
    • The Controller Node, no longer receives device updates
    • The command format has been changed (please see HERE)
    • The incoming event format has also been changed (please see HERE)

    You can export the (now missing nodes), and use the JSON metadata to re-configure the new nodes.

    Changes

    • A completely redesigned user interface
    • Smart Start now uses the browser webcam (SSL required)
    • The Mesh Map is now built into the UI (instead of opening in a secondary tab)
    • Improved Multicast support

    New Features

    • Full support for Long Range (Z-Wave 800LR)
    • Full support for the Firmware Update Service
    • Controller firmware updates
    • Bootloader recovery mode (allows to recover the controller from a failed Firmware Update)
    • Unlimited networks
    • Now supports acting as a secondary controller
    • Direct device interaction inside function nodes
    • Enhanced CMD Factory Node

New Side Bar UI screenshots!


Excited as i am for this update, i have so many flows using the previous version.
Can you if you have time talk me through what i have to do to update?

Thanks

Hi @magicman

It's not actually that daunting when you get into it:

1st

  1. Backup your SO, S2 Keys.
  2. Backup your Filter Node(s) JSON Descriptors.
    You will use these to understand how to recreate the filters (now splitters) using the new Node
    (If you use them).

2nd

  1. After installing the latest update (Restart Node RED, Refresh Browser),
    All previous version nodes will not be recognised (ID's have changed).
  2. The Device Node & Controller Node - now require a config Node
    (previously the config lived on the Controller Node).

3rd

  1. Controller Node, no longer emits events for devices, the controller Node only emits network level events.
  2. Its only the Device Nodes that emit device level events

4th

  1. Events & Commands have been updated.
  • Event Manual
  • Command Manual
    Example new payload for a command
    {
        cmd: {
            api: 'VALUE',
            method: 'setValue'
        },
        cmdProperties: {
            nodeId: 10,
            valueId: {...},
            value: 100
        }
    }
    
    Example new payload for an event
    {
        event: 'VALUE_UPDATED',
        timestamp: 1234567890,
        nodeId: 10,
        nodeName: 'My Node',
        nodeLocation: 'My Location',
        eventBody: {
            valueId: {...},
            newValue:100, 
            prevValue: 50
        }
    }
    

The Gist:


Install update, replace the now invalid Nodes with the new versions.
Where you were using a single controller Node to receive events for all devices, replace them with Device Nodes (set to receive events for all Nodes)

When adding a Controller OR Device Node - you will get the opportunity to create the config Node, once created the Controller and / or Device node doesn't need to remain - only where you need it.

When recreating the filter (Now splitter) nodes.
Click a value in the side bar, and choose to add it to a Splitter Node (most be in your flow)

The JSON Descriptor you backed up, will help you name them, as they were, and so you can understand the original property you filtered on.

Sounds more daunting than it actually is, its mainly the updating your commands.
BUT if you were using the CMD Factory - this was already using the new format (in V9)

I hope this helps :smiley:
Happy to answer any questions

Oh and @knolleary...

Please don't screw around with the SideBar / Tray to much in V5 - I now depend on it like my wife depends on me being out the house for peace :grin:

(but I have tested in V5 - and all good, thus far)

V11.0.1 Released.

just some snagging to take care off

Bug Fixes

  • Ensure lastSeen is available before using it (Node List)
  • Restore value lables in Side Bar (where available)

Changes

  • Update README badges
  • Reimplement npm pubhlish via OIDC

hi @marcus-j-davies installed the new version changed my flows as instructed, All working very well !
Thank you
As a side note how do i use transitionduration?
I was hoping to switch on a binary input then using the duration switch it off ? is this what it is designed for?
Please forgive my question if it seems simple but its a learning curve for me.
Thanks again for a wonderful node

Hi @magicman

transitionDuration needs to be supported by the target device for it to have an effect.
it can be used to say change the value of a multilevel switch (dimmer), or an RGB controller (transition to a different colour)

/* Dimming down a light (Multilevel Switch) over 3s */
const Node = 5;
const ValueID = {
    commandClass: 0x26,
    endpoint: 0,
    property: 'targetValue'
}
const SetValueOptions = {
    transitionDuration: '3s',
};

msg.payload = {
    cmd: {
        api: 'VALUE',
        method: 'setValue'
    },
    cmdProperties: {
        nodeId: Node,
        valueId: ValueID,
        value: 25, /* Say from its current value of 100 */
        setValueOptions: SetValueOptions
    }
}

I have never had a device that I can test this with - but it's a set value option in the Driver, that this is designed for.

It could work for a binary switch, as long as its supported by the device

EDIT
The above is verbose of course, but the Factory Node has full support for applying options :smiley: