Breaking changes · Migration guide
- Dropped support for Node.js 12 (#4824, #4491)
- Moved
Driver.interviewNode
method to theZWaveNode
class (#4823) - Added support to provide an API key for the firmware update service, soon mandatory (#4816)
- Removed several deprecated things and reworked
beginExclusion
to use an options object instead (#4699) - CC implementations were moved into their own package (#4668)
- CC code can now be used mostly without a driver instance (#4651)
- Implement discoverable and transparently-typed CC value definitions instead of
getXYZValueId
methods (#4704) Supervision CC
is now used automatically for almost all CCs when supported (#4761, #4945)- Updated the argument type of the
"node found"
event to indicate that it is not an operational node (#4825) - S2 inclusion user callbacks were moved into
ZWaveOptions
(#4856) with the possibility to override them for individual inclusion attempts (#4911) - Node firmware versions are now exposed as
major.minor.patch
where supported (#4857)
Features
- Implement Z-Wave Protocol CC, for internal use (#4691)
- Implemented mock controller and mock nodes to vastly improve how integration tests are written (#4697, #4892)
- Add values to
Basic CC
andMultilevel Switch CC
to restore previous non-zero level (#4732) - Answer incoming requests with the same encapsulation (#4832)
- Allow passing a custom serial port implementation in
port
param of the Driver class (#4885) - Support sending
TimeCC
reports and automatically respond to requests (#4858) - Allow overriding API key for the FW update service per call (#4912)
- Support updating some driver options on the fly (#4930)
- Support correlating node responses to requests for which the ACK hasn't been received yet (#4946)
"notification"
events are now logged (#4948)
Bugfixes
- Swap order of
destroy()
call andDriver_Failed
error after restoring NVM (#4661) - Do not request ACK when sending node to sleep (#4826)
- Correctly interpret powerlevel values as signed in
GetPowerlevelResponse
(#4827) - Add missing
reflect-metadata
dependency to some packages that were meant to be used standalone (#4846) - Fixed an off-by-one error while parsing the
supportedOperationTypes
bitmask ofUser Code CC
(#4848) - Query user codes 1-by-1 if bulk reading is not supported (#4849)
- Include both V1 values and V2+ values in
Notification CC
logs (#4904) - Obfuscate keys in
Entry Control CC
logs (#4905) - Improved command flow for S2-encrypted communication when both parties transmit at the same time (#4900)
- Fixed a bug where commands that should be discarded because of a lower than expected security level would still store their values into the value DB (#4924)
- Fixed looking up a node's provisioning entry using its node ID. This didn't work previously and would cause excluded SmartStart nodes to be included again immediately. (#4925)
- No longer overwrite the security classes of a node when they are known for certain, and retry querying securely supported CCs during the interview (#4923)
- Increase wait time after firmware update and reset nonces before attempting communication (#4944)
Bugfixes (broken and fixed in v10 beta)
- Emit value event after successful supervised
setValue
(#4899) - Correct nested encapsulation of Supervision CC Reports (#4890)
- Ensure the
major.minor.patch
firmware version matches the legacymajor.minor
field before using it (#4906) - Move
"notification"
event args types back intozwave-js
package (#4907) - Fixed a typo in
AddNodeStatusContext
, which would result in anUNKNOWN
device class of newly included nodes (#4922)
Config file changes
- Corrected manufacturer and device labels for Heatit devices (#4838)
- Slightly clean up the Fibaro Motion Sensor config (#4790)
- Update Zooz ZEN17 to firmware 1.10 (#4809)
- Add NewOne N4003, template more in the Minoston directory (#4834)
- Add Fibaro Wall Plug UK - FGWPG-111 (#4865)
- Correct param 9 for STEINEL devices, rework to templates (#4895)
- Add Zooz Zen05 Outdoor Smart Plug (#4896)
- Add MP31ZP (rebranded MP21ZP) (#4894)
- Update Zooz ZEN20 with additional parameters 28 - 36 (#4898)
- Clean up branding of Jasco devices (#4873)
- Add new 700 series Jasco devices (#4928)
- Update description on several Jasco manufactured devices (#4927)
- Apply compat flag to GreenWave PowerNode 5 (#4934)
- Add wakeup instruction to Zooz ZEN34 (#4932)
- Add parameter 15 Invert Output to Heatit Z-Temp2 (#4915)
- Add Enbrighten 58438 / ZWA3016 (#4913)
- Add alarm mappings to ZSMOKE (#4942)
- Add Zooz ZEN14 (#4921)
Changes under the hood
- Patch
tsserver
after install to allow displaying large types - Upgrade dependencies (#4820, #4663)
- Make several reflection decorators generic and untangle
Manufacturer Proprietary CC
implementations (#4701) - Fixed typos throughout the project (#4837, #4842)
- Added compliance tests for Z-Wave certification (#4832)
- Removed a polyfill for
Object.entries
(#4859) - Added best practices for a reliable mesh to the docs (#4875)
- Changes to the public API surface are now tracked using
@microsoft/api-extractor
(#4860) - Reorganized the CI jobs to only compile TypeScript once and reuse the build output during subsequent jobs (#4880)
- Move Supervision Session ID onto
ZWaveHost
interface (#4891) - Add some
"silly"
logging tohandleNotificationReport
(#4949)