Older changelog entries (v1...v10)
- Fixed: Firmware updates fail to start on some devices with error "invalid hardware version" (#7452)
- Classes that emit events are now based on the DOM compatible
EventTarget
class instead of Node.js's proprietaryEventEmitter
. This means that some methods likeprependListener
no longer exist, but we haven't found any usage of this in the wild.
- Fixed another issue where some CC API methods would incorrectly fail validation of their arguments, causing the node interview to fail (#7435)
- Fixed an issue that prevented the
nvmedit
CI utility from starting (#7432) - Fixed an issue where some CC API methods would incorrectly fail validation of their arguments (#7433)
- Fixed an issue where CC classes would have a different name when
zwave-js
was loaded as CommonJS, changing how those CCs were handled (#7426)
- Argument validation of CC APIs no longer uses
require
calls and explains the validation errors much better (#7407)
- Fix parsing of some older 500 series NVM formats (#7399)
- Fixed an issue where
mock-server
would not start due to an incorrect module format (#7401) - Fixed an issue where the auto-generated argument validation for CC API methods would not work correctly in some cases when
zwave-js
was bundled (#7403)
- Add HomeSys HomeMech-2001/2 (#7400)
- Fixed an issue where encoding a buffer as an ASCII string would throw an error on Node.js builds without full ICU (#7395)
- Ignore setpoint range for Ecolink TBZ500 (#7393)
- Further reduce dependency on Node.js internals (#7394)
This release adds support for using the WebCrypto API as the cryptography backend. Unlike the node:crypto
module, this API is supported by all modern browsers and JS runtimes.
Technically this is a breaking change, as SecurityManager2
now needs to be instantiated asynchronously using await SecurityManager2.create()
instead of new SecurityManager2()
. However, we don't expect anyone to use this class directly, so this will not be marked as a semver-major release.
- Improve portability of the library by supporting the WebCrypto API as cryptography backend (#7386)
- Improved tree-shakability (#7376, #7379)
- CCs are now parsed and serialized asynchronously, Message instances are serialized asynchronously (#7377)
- Allow specifying RF region for OTA firmware updates if the region is unknown or cannot be queried (#7369)
- Add
tryUnzipFirmwareFile
utility to support zipped OTA firmware files (#7372)
- Parse negative setback state consistently (#7366)
- Ignore LR nodes when computing neighbor discovery timeout (#7367)
- Automatically fall back to
Europe
when setting region toDefault (EU)
(#7368)
- Improve bundler-friendlyness of
@zwave-js/core
and@zwave-js/shared
with new browser-specific entry points andsideEffects
hints (#7374)
In this release, a lot of the internal API was refactored to decrease interdependencies. Technically this results in a huge list of breaking changes, but most of those should not affect any application, unless very low-level APIs are frequently used. For example, Z-Wave JS UI and Z-Wave JS Server had just two small breaks. In addition, Z-Wave JS is now released as hybrid ESM/CJS packages.
Breaking changes · Migration guide
Driver.installConfigUpdates()
now requires the external config directory to be configured (#7365)- Replace Node.js Buffer with
Uint8Array
portable replacement classBytes
(#7332) zwave-js
no longer loops up the package version at runtime (#7344)- Changed some paths to be relative to
process.cwd()
instead of source location (#7345) - Decouple CCs and messages from host, split parsing and creation, split ZWaveNode class (#7305)
- Add Aeotec TriSensor 8 (#7342)
- Decorators have been migrated from the legacy specification to the accepted proposal (#7360)
- Transition modules to hybrid ESM/CJS, switch to vitest for testing (#7349)
- Removed dependency on
fs-extra
in favor ofnode:fs/promises
(#7335) @zwave-js/config
no longer loops up the package version at runtime (#7343)
- Disable Supervision for Everspring SE813 (#7333)
- Bootloader mode is now detected in more difficult cases (#7327)
- Correct unit of Meter CC values (#7322)
- Bootloader mode is now detected even when short chunks of data are received (#7318)
- Corrected the wording of idle/busy queue logging (#7309)
- Add Heatit Z-TEMP3 (#7179)
- Add new parameters 17 and 18 for HeatIt TF016_TF021 FW 1.92 (#7287)
- Disable Supervision for Heatit TF021 (#7321)
- Add ZVIDAR WB04V Smartwings Day Night Shades (#7319)
- Add ZVIDAR WM25L Smartwings Smart Motor (#7312)
- Add ZVIDAR ZW881 Multi-Protocol Gateway (#7311)
- Add include, exclude, and wakeup instructions for VCZ1 (#7307)
- Add new Product ID to Namron 16A Switch (#7301)
- Add Minoston MP24Z 800LR Outdoor Smart Plug - 2 Outlet (#7302)
mock-server
now supports putting the simulated controller into add and remove mode (#7314)
- Fixed an issue where preferred scales were not being found when set as a string (#7286)
- Zniffer: allow filtering frames when saving the capture (#7279)
- Fixed an issue where the
StartLevelChange
command forWindow Covering CC
was sent with an inverted direction flag (#7278)
- Add manual and reset metadata for Danfoss LC-13 (#7274)
- Support playing tones on mocked sirens, improve support for node dumps of switches/dimmers (#7272)
- Thermostat Setback CC: Fix encoding of the setback state, add mocks, remove non-functional CC values (#7271)
- Skip rebuilding routes for nodes with priority return routes (#7252)
- Add
node info received
event (#7253) - OTA firmware updates now use the task scheduler. This allows running multiple OTA updates at once. (#7256)
- Implement Multilevel Switch mocks, add default state for Binary Switch mocks (#7270)
- Use configured network keys on secondary controller if learned keys are absent (#7226)
- Pending tasks are removed when hard-resetting or entering bootloader (#7255)
- Add incompatibility warning to UZB1 (#7225)
- Override Central Scene CC version for Springs Window Fashions VCZ1 (#7263)
- Dependency updates
- Fix bootstrap command in devcontainer (#7254)
This release adds an internal task scheduler that will allow more control over longer running tasks like device interviews, route rebuilding, firmware updates, etc. These improvements include pausing/resuming tasks, better prioritization for user-initiated actions, queueing tasks without interrupting ongoing ones, and more. Migration of existing features to the new scheduler will be done incrementally, starting with route rebuilding.
- Reworked route rebuilding to use the task scheduler. This enables rebuilding routes for multiple individual nodes at once. (#7196, #7203)
- Fixed a regression from
13.4.0
that prevented restoring NVM backups on 700/800 series controllers (#7220)
- Add fingerprint to Aeotec ZWA024 (#7191)
- Correct max. value of SKU parameters for Kwikset locks (#7178)
- Add fingerprint to Remotec ZXT-800 (#7195)
- Implement task scheduler (#7193)
- Upgrade to ESLint v9, typescript-eslint v8 (#6987)
- Update FAQ on secondary controllers (#7190)
- Added
Controller.nvm
property to enable incremental modification of NVM contents on the fly (#7153) - When the
NODE_ENV
env variable is set todevelopment
, debugging information for S0 encryption is included in logs (#7181) - Add driver preset
NO_WATCHDOG
to disable watchdog (#7188)
- Update Z-Wave SDK warnings to mention recommended versions (#7187)
- Update Zooz devices (#7186)
- Fixed the identification of the primary controller role on some older controllers (#7174)
- Fixed an issue where passing a custom log transport to
updateOptions
would cause a call stack overflow (#7173) - Implement deserialization for more
WindowCoveringCC
commands to be used in mocks (#7159)
- Add Philio Technology Smart Keypad (#7168, #7175)
- Add LED indication parameter for Inovelli NZW31 dimmer (#7172)
- Fixed a build issue on Windows systems
- Make
mock-server.js
executable (#7160, #7161)
- Add support for EU Long Range (#6751)
- Support learn mode to become a secondary controller (#7135)
- Add method to query supported RF regions and their info (#7118)
- Support
Firmware Update Meta Data CC
v8 (#7079) - Implement 32-bit addressed NVM operations (#7114)
- Add methods to reset SPAN of one or all nodes (#7105)
- Fix missing values in endpoint dump (#7101)
- Add new fingerprint for TZ45 thermostat (#7127)
- Add alarm mapping for Schlage lock CKPD FE599 (#7122)
- Add fingerprint for Climax Technology SDCO-1 (#7102)
- Add Shelly Wave Pro 3 and Wave Pro Shutter (#7103)
- Remove endpoint workaround for Zooz ZEN30, FW 3.20+ (#7115)
- Document soft-reset issue in VMs (#7119)
- Update documentation for troubleshooting and Zniffer, clean up migration guides (#7107)
- Update
FunctionType
definitions (#7106) - CI now checks that all device config files have a
.json
extension (#7099)
- Add method to enumerate all device classes (#7094)
- Add ZVIDAR ZW872 800 series Pi Module (#7026)
- Add ZVIDAR ZW871 800 series USB Controller (#7025)
- Rename Zvidar config file name Z-PI to Z-PI.json (#7024)
- The VSCode extension for editing config files is now incuded locally in the workspace as a git submodule. Running
yarn bootstrap
automatically downloads and builds it. To use, install the recommended workspace extension (#6989)
- Update list of manufacturers and existing CCs (#7060)
- Add
inclusion state changed
event (#7059) - Add support for new notifications (#7072)
- Bump version of
Association CC
andMulti Channel Association CC
(#7078)
- Preserve granted security classes of provisioning entries when switching protocols (#7058)
- Version of Humidity Control Mode CC is 1, not 2 (#7062)
- Abort S2 bootstrapping when
KEXSetEcho
has reserved bits set (#7070) - Fixed an issue causing non-implemented CCs to be dropped before applications could handle them (#7080)
- Include default value in
Color Switch CC
mocks (#7071)
- Fixed an issue causing all ZWLR multicast groups to be considered identical (#7042)
- Fixed a startup crash on Zniffers older than FW 2.55 (#7051)
- Fixed the devcontainer setup (#7041)
- Look at all test files to resolve dirty tests (#7045)
- Introduce
yarn bootstrap
command to set up environment (#7046) - Add mocks for Binary and Color Switch CC (#7056)
- Fixed latency calculation in link reliability check, distinguish between latency and RTT (#7038)
- Fixed a regression that could cause incorrect units and missing sensor readings (#7031)
- Don't verify delivery of S2 frames in link reliability check (#7030)
Home Assistant users who manage zwave-js-server
themselves, must install the following upgrades before upgrading to this driver version:
- Home Assistant TBD or higher
zwave-js-server
1.37.0
Breaking changes · Migration guide
- Align Meter CC Reset v6 with specifications, add mocks, add API for report commands (#6921)
- Convert all Z-Wave specific configs except devices and manufacturers into code, move from ConfigManager methods to utility functions (#6925, #6929, #7023)
- Remove
ZWaveApplicationHost
dependency fromCommandClass.toLogEntry()
(#6927) - Removed some deprecated things (#6928)
- Replace
Controller.isAssociationAllowed
withController.checkAssociation
(#6935) - Fixed health checks for ZWLR nodes, throw when requesting neighbors (#6939)
- The repo now uses Yarn 4 and Corepack to manage its dependencies (#6949)
- "Master Code" was renamed to "Admin Code" (#6995)
mock-server
now supports communication with endpoints (#7005)
- Reset aborted flags when starting link reliability or route health check (#7022)
- Update Zooz ZEN30 to latest revisions (#6630)
- Support MCO Home MH-S412 parameters properly (#6623)
- Add Ring Flood Freeze Sensor (#6970)
- Override user code count for Yale ZW2 locks to expose admin code (#6528)
- Add GDZW7-ECO Ecolink 700 Series Garage Door Controller (#6572)
- Correct label for Remote 3-Way Switch parameter on Zooz ZEN32 (#6871)
- Add UltraPro 700 Series Z-Wave In-Wall Smart Dimmer (#6904)
- Add Yale Assure 2 Biometric Deadbolt locks (#6972)
- Add iDevices In-Wall Smart Dimmer (#5521)
- Support Comet parameters properly (#6583)
- Update label of Nortek GD00Z-6, -7, -8 (#6991)
- Disable Supervision for Zooz ZSE11 (#6990)
- Clarify parameters and units for Everspring AN158 (#6364)
- Force-add support for Multilevel Switch CC to FGRM-222, remove Binary Switch CC (#6986)
- Add ZVIDAR Z-PI 800 Series PI Module (#7018)
- Upgrade to TypeScript 5.5 (#6919)
- The root
tsconfig.json
is now set up in "solution-style", which should improve the goto references functionality. In addition, linting, testing and running locally no longer requires all modules to be compiled first. (#6748) - Fixed some minor issues found by code scanning (#6992)
- Fixed an issue where
yarn codefind
was loading no source files (#6993) - Fixed an issue where
import(...)
types with absolute paths could appear in in CC docs (#6996)