ZWaveJS.NET icon indicating copy to clipboard operation
ZWaveJS.NET copied to clipboard

Version 4.0.0 (Breaking)

Open marcus-j-davies opened this issue 2 years ago • 13 comments

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 Task instance
    • 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

marcus-j-davies avatar Aug 20 '23 09:08 marcus-j-davies

@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.

marcus-j-davies avatar Aug 23 '23 19:08 marcus-j-davies

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: @.***>

georgeinva2004 avatar Aug 23 '23 19:08 georgeinva2004

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 avatar Aug 23 '23 19:08 marcus-j-davies

@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

spudwebb avatar Sep 07 '23 14:09 spudwebb

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

marcus-j-davies avatar Sep 07 '23 14:09 marcus-j-davies

PR created https://github.com/zwave-js/ZWaveJS.NET/pull/35

The states property works well as is for me.

spudwebb avatar Sep 08 '23 14:09 spudwebb

@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!

marcus-j-davies avatar Nov 03 '23 12:11 marcus-j-davies

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: @.***>

georgeinva2004 avatar Nov 03 '23 13:11 georgeinva2004

@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?

marcus-j-davies avatar Jan 26 '25 11:01 marcus-j-davies

@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.

marcus-j-davies avatar Jan 26 '25 11:01 marcus-j-davies

@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.

spudwebb avatar Jan 26 '25 14:01 spudwebb

@marcus-j-davies you should probably bump the driver to 14.3.8. 14.3.7 has an issue with reading from cache.

AlCalzone avatar Jan 28 '25 21:01 AlCalzone

Thanks @AlCalzone for the heads up - Bumped!

marcus-j-davies avatar Jan 28 '25 22:01 marcus-j-davies