Version 4.0.0 (Breaking)
WORK-IN-PROGRESS
-
Versions
- ZWave JS Driver Version: 15.3.0
- ZWave JS Server Version: 3.1.0 (Schema Version 43)
-
Breaking Changes
- You now need to build your own PSI for the platforms you wish to target. Having to maintain the build actions/platforms to keep these updated is eating into the time I have left. Building a PSI is relatively uneventful - please see the READ ME on how to do this.
- DownloadPSI method on the Helper class has been removed.
- Removed support for NET45 and NET5.0 The supported frameworks are as follows: - NET 48 - NET 6.0 - NET 7.0 - NET 80 - NETSTANDARD 2.0 - NETSTANDARD 2.1
- enableSoftReset has been moved to features.softReset on the ZWaveOptions class
- The NodeStatistics arg on the ZWaveNode class event StatisticsUpdated has been renamed to NodeStatisticsUpdatedArgs
- The ControllerStatistics arg on the Controller class event StatisticsUpdated has been renamed to ControllerStatisticsUpdatedArgs
- The InclusionResult argument has been renamed to InclusionResultArgs
- The ValueUpdated event now uses a dedicated class for the args parameter
- The ValueNotification event now uses a dedicated class for the args parameter
- The NodeRemoved event now contains a reason Enum as to why it was removed.
- The NetworkHealDone and NetworkHealProgress events have been renamed to
RebuildRoutesDone and RebuildRoutesProgress and not have dedicated classes for the args - The BeginExclusion method now requires an Exclusion Options instance
- The Node BeginFirmwareUpdate method has been renamed to UpdateFrimware, and requires a class instance.
- The Node FirmwareUpdateProgress event now passes an args parameter
- The Node FirmwareUpdateFinished event now passes an args parameter
- Setting the Node name, location and keepAwake values is now only possible with methods for each. This is to address some unintentional communication between the Driver runtime and the lib.
- The method GetAllEndpoints has been removed, and is replaced with an endpoints property
-
New Features
- Multiple Driver instances are now supported
- Added ability to save ZWaveOptions to a JSON string and back
- Added Long Range (LR) support
- Added deviceConfig property to the Controller class.
- Added SetRawConfigParameterValue method to the ZWaveNode class.
- Added RefreshValues method to the ZWaveNode class.
- Added RefreshCCValues method to the ZWaveNode class.
- Added WaitForWakeUp method to the ZWaveNode class.
- Added Ping, method to the ZwaveNode class.
- Added StartListeningLogs, StopListeningLogs methods and the associated events to the Driver class.
- Added ValueAdded, ValueRemoved events. ValueRemoved was never added until now, ValueAdded, previously used the ValueUpdated event
- Added metadata updated event to the ZWaveNode class.
- Added ManuallyIdleNotificationValue method to the ZWaveNode class.
- Added endpointLabel to the Endpoint class
- Added Interview method, to the ZWaveNode class - this should only be used if "disableOnNodeAdded" is set to true
- Allow specifying Refresh Info options, when re-interviewing a node.
- Added FirmwareUpdateOTW method (and supporting events) to update the Controller Firmware
- Added SetRFRegion, GetRFRegion methods to the Controller class
- Added SetPowerlevel, GetPowerlevel methods to the Controller class
- Added GetAvailableFirmwareUpdates methods to the Controller class
- Added ConfigManager methods to the Driver class
- Added FirmwareUpdateOTA method to the Controller class, to update a node with the fetched Updates via GetAvailableFirmwareUpdates
- Added HardReset method to the Driver class
Warning!!! This will Reset your controller, and will result in a clean network with no included nodes. - Added SoftReset method to the Driver class
- Added the ccSpecific property to the ValueMetadata class
- Added the ability to add new server methods to the library during runtime.
This is helpful if you want to use a method that is not yet implemented, or to support an older version of an exetrnal server
-
Internal changes
- Switched to an alternative websocket client package (which is now embedded)
- Massive structural / performance improvements
- All event handlers are now executed with their own
Taskinstance - Better (hopefully) recovery/connection error handling
- Updated some of the defaults in the Zwave Options to mirror the Driver defaults
- Internal logic to ensure the server satifies the specified expected schema requested by the library
Shoutout to... @spudwebb for the massive amounts of contribution for this release and @georgeinva2004 for testing the stuff I haven't (which is a lot 😬) and @AlCalzone for..... Ummm Zwave JS and @raman325 for the foundations needed to expose the Driver to other languages
@georgeinva2004
You may want keep close to this PR - I am extremely close to pushing V4 and given your inputs in the past, I'm giving you a head ups.
If you feel up to it, I am happy to build a PSI for you and build a dev lib.
I have been watching. It's very interesting. I was planning on testing the change. An updated PSI would be very helpful.
Thanks for your hard work.
Get Outlook for Androidhttps://aka.ms/AAb9ysg
From: Marcus Davies @.> Sent: Wednesday, August 23, 2023 3:15:03 PM To: zwave-js/ZWaveJS.NET @.> Cc: John M. George @.>; Mention @.> Subject: Re: [zwave-js/ZWaveJS.NET] Version 4.0.0 (Breaking) (PR #31)
@georgeinva2004https://github.com/georgeinva2004
You may want keep close to this PR - I am extremely close to pushing V4 and given your inputs in the past, I'm giving you a head ups.
If you feel up to it, I am happy to build a PSI for you and build a dev lib.
— Reply to this email directly, view it on GitHubhttps://github.com/zwave-js/ZWaveJS.NET/pull/31#issuecomment-1690505629, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABJAZ4JG5DPEMVTT3VNBDA3XWZJDPANCNFSM6AAAAAA3XEYMA4. You are receiving this because you were mentioned.Message ID: @.***>
Of course!
I have uploaded the latest PSI (Win64) to the root of 4.0.0 branch. if you do find the time - please do report back on issues 👍
@marcus-j-davies , in ValueMetadata, could we also add properties for unit and steps https://zwave-js.github.io/node-zwave-js/#/api/valueid?id=number
also I think that for optional number values like min, max, steps, default, those properties type should be int? instead of int
Hi @spudwebb - Agreed!
I have a mental note to look at the Metadata class, as I'm note sure the states property is fully correct also.
Will try and get around to it this weekend.
A PR against the v4 branch will be welcome 😉 it will then be merged with the WIP PR for v4
PR created https://github.com/zwave-js/ZWaveJS.NET/pull/35
The states property works well as is for me.
@georgeinva2004
The latest code is now available for pull, which address's the issue with forcing a license key for non-commercial use (among others).
There is a recent PSI that will need to be used at the root of V4 (Win x64), as I have bumped the Schema.
If you get a chance, let me know of any issues. I am close to doing a release!
That's great!!! Thank-you
Get Outlook for Androidhttps://aka.ms/AAb9ysg
From: Marcus Davies @.> Sent: Friday, November 3, 2023 8:30:10 AM To: zwave-js/ZWaveJS.NET @.> Cc: John M. George @.>; Mention @.> Subject: Re: [zwave-js/ZWaveJS.NET] Version 4.0.0 (Breaking) (PR #31)
@georgeinva2004https://github.com/georgeinva2004
The latest code is now available, which address's the issue with forcing a license key for non-commercial use. There is a recent PSI that will need to be used at the root of V4 (Win x64), as I have bumped the Schema
— Reply to this email directly, view it on GitHubhttps://github.com/zwave-js/ZWaveJS.NET/pull/31#issuecomment-1792353824, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABJAZ4KE5QC4ZTM722QVSEDYCTPVFAVCNFSM6AAAAAA3XEYMA6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJSGM2TGOBSGQ. You are receiving this because you were mentioned.Message ID: @.***>
@spudwebb
I have bumped the schema - and Im thinking about doing a release on this (v4) I have combined some of you recent commits.
- https://github.com/zwave-js/ZWaveJS.NET/pull/31/commits/6b99e30b46a2c01b396374a56c113c27bb058c88
- https://github.com/zwave-js/ZWaveJS.NET/pull/31/commits/d27570773827eda2d8f4921b7b6dadb5de2f16c7
- https://github.com/zwave-js/ZWaveJS.NET/pull/31/commits/233343aa6137646ce888f074a422ce4771698082
I merged them into a secondary PR I was working on (to address smart start inconstancies), and merged that PR to V4
This PR - should now be fully updated with your commits, and has the following versions.
- ZWave JS Driver Version: 14.3.7 (only really applies to Embedded setups)
- ZWave JS Server Version: 1.40.2 (Schema Version 40)
if connecting to a lesser version of the schema (since its now based on 40) - just use the override
public Driver(Uri Server, int SchemaVersion = 0, int ServerErrorThrottleTime = 10000)
Do you want to cast your eyes over it?
@georgeinva2004
This MASSIVE update may get released this week - do you want to test it?
remember to build your PSI
cd ./PSI
npm install && npm run build
rename ./dist/server.exe to ./dist/server.psi, and distrubute the image with the library.
Note: it doesn't yet have the ability to load a PSI from another location.
@spudwebb
I have bumped the schema - and Im thinking about doing a release on this (v4) I have combined some of you recent commits.
I merged them into a secondary PR I was working on (to address smart start inconstancies), and merged that PR to V4
This PR - should now be fully updated with your commits, and has the following versions.
- ZWave JS Driver Version: 14.3.7 (only really applies to Embedded setups)
- ZWave JS Server Version: 1.40.2 (Schema Version 40)
if connecting to a lesser version of the schema (since its now based on 40) - just use the override
public Driver(Uri Server, int SchemaVersion = 0, int ServerErrorThrottleTime = 10000)Do you want to cast your eyes over it?
It looks good, but I won't be able to test it before next week.
@marcus-j-davies you should probably bump the driver to 14.3.8. 14.3.7 has an issue with reading from cache.
Thanks @AlCalzone for the heads up - Bumped!