Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 4.0.0 (Breaking) #31

Open
wants to merge 95 commits into
base: main
Choose a base branch
from
Open

Version 4.0.0 (Breaking) #31

wants to merge 95 commits into from

Conversation

marcus-j-davies
Copy link
Member

@marcus-j-davies marcus-j-davies commented Aug 20, 2023

WORK-IN-PROGRESS

  • Versions

    • ZWave JS Driver Version: 14.3.7
    • ZWave JS Server Version: 1.40.2 (Schema Version 40)
  • 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
    • 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 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 and others added 10 commits November 3, 2023 14:10
* Added Driver.SoftReset method.
Fixed BeginRebuildingRoutes,  StopRebuildingRoutes and RebuildNodeRoutes methods to use the correct commands.
Fixed typo in RebuildRoutesDone event.

* Removed the old command enums for healing the network and nodes.

* Add SoftReset to CHANGELOG

---------

Co-authored-by: Marcus Davies <[email protected]>
* Added RefreshCCValues method to the ZWaveNode class.

* Update ZWaveNode.cs

Just adding my note to state I have checked the severe side signature

---------

Co-authored-by: Marcus Davies <[email protected]>
* Add missing properties to ValueMetadata

* Add ValueFormat parameter to ZWJSS_SetRawConfigParameterValue method

* Align SetRawConfigParameterValue with Options object Variants

---------

Co-authored-by: Marcus Davies <[email protected]>
* Refactor library to support multiple drivers.

* Patch server class to handle multiple hosts + check for used ports

* Bump schema + swtich to yao-pkg/pkg

---------

Co-authored-by: Marcus Davies <[email protected]>
@marcus-j-davies marcus-j-davies linked an issue May 1, 2024 that may be closed by this pull request
marcus-j-davies and others added 9 commits May 1, 2024 19:50
* Socket & LR

* Fix Versions

* Nullable Fix

* Fix & Test

* Show Embedded runtime Driver console output during debug
… to the NodeStatistics class. (#67)

* Add NodeAlive event to the ZWaveNode class, and add lastSeen property to the NodeStatistics class.

* Add lastSeen to the ZWaveNode and Statistics classes as DateTime?
* Smart Start

* improve build

* add lint scripts

* Bump schema 40
@marcus-j-davies
Copy link
Member Author

marcus-j-davies commented Jan 26, 2025

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

@marcus-j-davies
Copy link
Member Author

marcus-j-davies commented Jan 26, 2025

@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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ZWaveJS.NET does not support multiple drivers
4 participants