Older changelog entries (v1...v10)
- Support
SendTestFrame
command and perform powerlevel tests on behalf of other nodes (#6889)
- Respond to more queries from other devices (#6866)
- Handle supervised queries from other devices correctly (#6866)
- Harden S2 extension parsing and validation (#6866)
- Fixed some more edge cases found by S2 certification tests (#6887)
- Abort S2 bootstrapping when CSA is requested (not supported in Z-Wave JS) (#6890)
- Parameter update for Zooz Zen16 v2.0 and v2.10 (#6855)
- Override Central Scene CC version for Springs Window Fashions BRZ (#6870)
- Add parameter 117 to Shelly Wave Plug US and UK (#6831)
- Add params 12, 20, 254 for Aeotec DSB09 (#6818)
- Use HomeSeer template for LED Indicator (parameter 3) for all HomeSeer switches (#6868)
- Add Fibaro FGR-224 Roller Shutter 4 (#6812)
This release contains several bugfixes and improvements for Zniffer, as well as fixing some deviations from the Z-Wave specification.
- Zniffer: Expose raw capture data in emitted frames (#6852)
- Zniffer: Expose previously captured frames using
capturedFrames
property andclearCapturedFrames()
method (#6852) - Zniffer: Add method to return saved capture file as Buffer (#6836)
- Zniffer: Add a special frame type to distinguish Broadcast frames from singlecast frames without having to inspect the node ID (#6863)
- Zniffer: Add an optional parameter for
znifferProtocolDataRateToString
to omit the protocol name (#6863) - Zniffer: Add an option to limit the number of captured frames kept in memory (#6863)
- Always query Basic CC version as part of the interview
- Do not report
Z-Wave Protocol CC
andZ-Wave Long Range CC
as supported - Encode CCs using the version implemented by Z-Wave JS, not the target's version
- Abort S2 bootstrapping when first
KEXReport
incorrectly has echo flag set - Correct NIF contents, distinguish between securely and insecurely supported commands
- Respond to
ManufacturerSpecificCCGet
- Correct parsing of auto-channel capabilities in
GetLongRangeChannelResponse
(#6850) - Include LR node information in NVM conversion (#6846)
- Zniffer: Expose
rssi
field in allFrame
types (#6851) - Zniffer: Expose payload in ExplorerInclusionRequest frame
- Docs: add link to Zooz 800 series firmware upgrade (#6856, #6862)
This release adds a bit of polishing for Zniffer and some bugfixes (#6849):
- Z-Wave Classic inclusion frames from LR devices are now parsed instead of logging an error
- Z-Wave LR protocol frames are now recognized (but not parsed in detail) instead of logging an error
- The
payload
property for routed frames contains the parsed CC now - Expose the
active
property used to determine whether the Zniffer is currently capturing traffic
- Automatically prefer LR-capable RF regions over their non-LR counterparts (#6843, #6845)
- Add
destroy
method to Zniffer to free serial port (#6848) - Expose more Long Range RF settings as methods, controller properties and driver options (#6841)
- Disable Supervision for Everspring EH403 (#6847)
- Add methods to get/set max. LR powerlevel, add driver option to automatically configure it (#6824)
- Fixed a bug causing the device class of a node to be unintentionally be deleted (#6840)
- Forbid associations from and to LR devices, except for the lifeline (#6819)
- Zniffer: convert LR beam TX power to dBm, add documentation for beam frames (#6820)
- Override CC versions for Wayne Dalton WDTC-20 (#6822)
- Refactor Zniffer exports, add them to
/safe
entrypoint (#6830)
This release enhances the diagnostics in Z-Wave JS by adding support for controlling a Zniffer, which allows inspecting traffic from any Z-Wave network. See here for details on using this API, and here for information on how to create a Zniffer device.
- Add Zniffer support (#6651)
- Ignore SmartStart requests and log errors when some keys for the granted security classes were not configured (#6787)
- Fixed an issue where excluded ZWLR nodes were not removed from the list of nodes until restart (#6795)
- The mandatory CCs for a device class are no longer automatically considered supported. Instead only the NIF is used to determine them (#6788)
- The
mandatorySupportedCCs
andmandatoryControlledCCs
properties of theDeviceClass
class are now deprecated and return an empty array (#6796)
- Use specific float encoding for Namron 4512757 (#6793)
- Add fingerprint for Aeotec MultiSensor 7 (#6807)
- Fix links on Long Range documentation page (#6790)
- NVM restore works around an issue in some 800 series controllers where the NVM migration built into the Z-Wave firmware would not work due to the SDK version being encoded incorrectly (#6777)
- Add HomeSeer PS100 presence sensor, fix broken links (#6783)
- Fix value size for Fibaro FGWCEU-201, params 150/151 (#6779)
- Disable Supervision for Heatit Z-Temp2, firmware 1.2.1 (#6785)
- Rework compat flags for
Basic CC
mapping (#6773)
- The
protocolDataRate
field inRouteStatistics
is optional (#6746) - Fixed an infinite loop during NVM migration which could happen in rare cases (#6769)
- Always map
Basic CC
toBinary Sensor CC
for Aeotec ZW100 Multisensor 6 (#6773)
- Reword recommendations on encrypting traffic (#6770)
- Firmware updates on Z-Wave Long Range now utilize the larger frame size better (#6759)
- Fixed an issue where multicast
setValue
had aSupervisionCCReport
as the result instead of aSetValueResult
(#6765) - Parsing of provisioning entries with numeric
supportedProtocols
(#6764) - Fix error when
ConfigurationCCBulkGet
response is missing (#6763) - Values from force-removed or endpoint-mapped CCs are no longer persisted (#6760)
- Fix versioning logic for parameter 26 of Zooz ZEN72 (#6761)
- Disallow associating a node with itself and skip self-associations when rebuilding routes (#6749)
- Fix computation of SNR margin when noise floor measurement is N/A (#6732)
- Add new Leviton 800 series devices (#6757)
- Add UltraPro Z-Wave Plus In-Wall Toggle Switch, 700S (#6664)
- Rename generic 700 series controller to include 800 series (#6744)
- Add fingerprint and config parameters for UltraPro 700 Switch (#6726)
- Add Zooz Zen37 800LR Wall Remote (#6577)
- Several dependency updates
- Add workaround for devices that omit notification event parameters instead of sending "no data" (#6719)
- Added 11 Shelly Qubino Wave devices (#6633)
- Add Heatit Leakage Water Stopper (#6605)
- Add Ring Smoke/CO Listener (#6591)
- Add ZVIDAR Z-TRV-V01 thermostatic valve (#6542)
- Add Safe Grow NSG-AB-02 Z-Wave Plus Smart Outlet Plug (#6535)
- Add a new productId and add parameters to 14297/ZW1002 outlet (#6517)
- Fix/improve route diagnostics for Z-Wave LR devices (#6718)
This release adds support for Z-Wave Long Range thanks to the amazing work of @jtbraun. Application developers planning to add support should read this to get started.
- Support Z-Wave Long Range (#6401, #6620)
- Remove Association Groups 2 & 3 from AEON Labs DSB09 (#6691)
- Correct group 3 label for GE/Enbrighten 26931/ZW4006 (#6703)
- Add new Fingerprint for Ring Contact sensor (#6676)
- Preserve root endpoint in Vision ZL7432 (#6675)
- Add new Product ID to Fibaro Smoke Detector (#6603)
- Add Product ID for Benext Energy Switch FW1.6 (#6602)
- Add fingerprint for Ring Glass Break Sensor EU (#6590)
- Change MH9-CO2 Temperature Reporting Threshold step size to 0.1 (#6581)
- Add new product ID to Fibaro FGS-213 (#6576)
- Add units, improve descriptions for Everspring ST814 (#6712)
- Label and parameter definitions for Sensative Drip 700 (#6514)
- Override supported sensor scales for HELTUN HE-ZW-THERM-FL2 (#6711)
- NVM backups can now be restored onto 800 series controllers (#6670)
- Use Color Switch V2 for Inovelli LZW42 (#6654)
- Correct Zooz ZEN1x timer config params (#6648)
- Reduce idle CPU load (#6640)
- Extend version range for Vesternet VES-ZW-DIM-001 (#6636)
- The check for a changed device config now always returns
false
for the controller (#6625)
- Disable Supervision for Alfred DB1 Digital Deadbolt Lock to work around battery drain issue (#6629)
- Add 2nd product ID for Ring Panic Button Gen2 (#6595)
- Fix compatibility of ESLint plugin with Node.js 18 (#6580)
- Handle more cases of unexpected Serial API restarts (#6551)
- Add wakeup instructions for Nexia ZSENS930 (#6545)
- Correct parameter 5 size for Zooz ZEN34 (#6546)
- Expose rebuild routes progress as a controller property (#6525)
- On devices that should/must not support
Basic CC
, but use it for reporting, only thecurrentValue
is now exposed. This allows applications to consider it a sensor, not an actor (#6526)
- Correct firmware version condition for Zooz ZSE40 v3.0 (#6519)
- Add mocks for
Multilevel Sensor CC
- Upgrade transitive dependency
axios
to a non-vulnerable version (#6520)
- Fixed an issue where the unresponsive controller recovery could put "immediate" commands to a sleeping node on the wrong queue, blocking all outgoing communication (#6507)
- Add missing units and firmware condition for Heatit Z-Temp2 (#6500)
- Correct device label for Airzone Aidoo Control HVAC unit (#6493)
- Allow disabling the unresponsive controller recovery feature (#6480)
- Do not abort timed out
Send Data
commands twice (#6484) - Ensure the default Basic CC values are only exposed if they should be, even with the compat
event
enabled (#6485) - Auto-remove failed SmartStart nodes when bootstrapping times out (#6483)
- Do not attempt to poll values from nodes that are considered dead (#6470)
- Fixed an issue where the send queue was blocked when recovering controller from missed Send Data callback failed (#6473)
- Instead of restarting the driver, the serial port is now reopened if controller is still missing ACKs after soft-reset (#6477)
- Do not attempt to recover an unresponsive controller before fully initializing (#6480)
- Tweak Heatit Z-TRM6 options (#6464)
- Add Ring Alarm Panic Button Gen2 (#6453)
- Update fingerprints for Vesternet devices (#6460)
- Added a
mock-server
hook to run code after initializing mocks (#6478) - Changed the headline in the logs from "ZWAVE-JS" to "Z-WAVE JS" (#6462)
- Lint device config files as part of CI (#6471)
- The
enableSoftReset
driver option is now deprecated in favor offeatures.softReset
(#6480)
- Mark
Central Scene CC
scene
property as stateless. The previous fix wasn't working. (#6458) - Preserve
stateful
andsecret
flags for dynamic CC values (#6457)
- Correct product id for Fakro ZWS12 (#6454)
- add PM-B400ZW-N (#6421)
- Ensure
kWh
is written consistently in parameter units (#6456)
- Bot: Consider
zwave_js
to be a valid logfile name in issue reports (#6459)
- Fixed an issue where nodes would appear to have two lifeline associations, one with and one without target endpoint 0 (#6448)
- Writing to the
volume
value of theSound Switch CC
no longer throws an error, but pre-sets the volume to use for the next tone to be played using thetoneId
value (#6450, #6451) - The
defaultToneId
value of theSound Switch CC
now also lists the names for each possible tone (#6452)
- Treat
Binary Switch Set
andThermostat Mode Set
as reports forSRT321 HRT4-ZW
(#6423)
- Add compat flag to treat
Set
commands asReport
(#6423)
- Add ESLint rule to ensure all types used in a public CC API are exported (#6438)
- Throttle
firmware update progress
events for OTA updates (#6435) - Mark
Central Scene CC
scene
property as stateless (#6424)
- Override supported Thermostat modes for Eurotronics Spirit TRV (#6436)
- Correct firmware warnings for Zooz controllers (#6433)
- Correct overridden
thermostatMode
metadata for ZME_FT (#6420) - Add MCOHome C521/C621 shutters, fix C321, make shutters consistent (#6419)
- Add all
EventListener
methods toTypedEventEmitter
interface (#6437) - Bug reports, feature requests and request for tech support have been moved from issues to discussions. We'll escalate them to issues if necessary.
This release includes several more fixes and workarounds for the problematic interaction between some controller firmware bugs and the automatic controller recovery introduced in the v12
release:
- Added a workaround to recognize corrupted
ACK
frames after soft-reset of controllers running an 7.19.x firmware or higher. Previously this triggered the unresponsive controller detection and recovery process. (#6409) - When the response to a
Send Data
command times out, the command is now aborted, instead of retrying and potentially putting the controller in a bad state due to not waiting for the command cycle to complete. When this happens, Z-Wave JS no longer attempts to recover the controller by restarting it, unless the callback is also missing. (#6408) - When the callback to a
Send Data
command continues to be missing after restarting the controller, Z-Wave JS no longer restarts itself. Instead the old behavior of marking the node asdead
is now restored, as the node being unresponsive/unreachable is most likely the actual problem. (#6403) - In addition, the
Send Data
callback timeout has been reduced to 30 seconds and ongoing transmissions are now aborted before reaching this timeout. This should limit the impact of the controller taking excessively long to transmit, especially in busy networks with lots of unsolicited reporting and end nodes expecting a timely response (#6411)
- The
Driver
constructor now accepts multiple sets of options and curated presets are available (#6412)
- Only auto-refresh
Meter
andMultilevel Sensor CC
values if none were updated recently (#6398) - Export all option types for
Configuration CC
(#6413)
- Add NEO Cool Cam Repeater (#6332)
- Increase report timeout for Aeotec Multisensor 6 to 2s (#6397)
- Fixed a long standing issue that prevented multi-target firmware updates from being applied correctly (#6395)
- Fixed an issue with multi-target firmware updates where the wrong update capabilities were exposed to applications, preventing manual updates of the additional targets (#6396)
- Add parameter 26 to
Inovelli VZW31-SN
(#6391)
Almost 1000 device configuration files have been reworked to be more consistent, mostly affecting device labels, parameter labels, descriptions and predefined options. After updating, you should expect to see several notifications for changed device configurations, prompting you to re-interview the affected nodes. Unless the device is mentioned below, there's no need to do this immediately.
- Always set time for Namron 16A thermostats as UTC (#6388)
- Add Alloy (Zipato) devices (#6331)
- Parameter 21 of Inovelli VZW31-SN is readonly (#6389)
- Add Shelly Wave Shutter (#6382)
- Add Eurotronic Comet Z (700 series) (#6336)
- Add params 7, 18, 19 to Zooz ZEN71 FW 10.20 (#6375)
- Add Qubino Shades Remote Controller (#6335)
- Add fingerprint for new MH8-FC version, add new option for param 1 (#6358)
- Add Hank HKZW-SO08 (#6383)
- Add link to manual of Honeywell T6 Pro Thermostat (#6353)
- When a device has a default wakeup interval of 0 (never wake up), this is now preserved during the interview, even when outside of the valid range advertised by the device (#6387)
- Added a compat flag to always set the time using
Time Parameters CC
as UTC, even if the device exposes way to set the timezone (#6388)
- Lots of config file requirements from the style guide, especially regarding Title Case and Sentence case of strings, are now automatically enforced using ESLint (#6345)
- Normalize result of
Controller.getAvailableFirmwareUpdates
to always includechannel
field (#6359) - Fixed a crash that could happen while logging dropped sensor readings (#6379)
- Increased the range and default of the
response
timeout to accomodate slower 500 series controllers (#6378)
- Treat Basic Set as events for TKB TZ35S/D and TZ55S/D (#6381)
- Add Zooz ZAC38 Range Extender (#6136)
- Corrected the label of the notification event
0x0a
to beEmergency Alarm
(#6368)
The v12
release was supposed to increase reliability of Z-Wave JS, primarily by detecting situations where the controller was unable to transmit due to excessive RF noise or being unresponsive and automatically taking the necessary steps to recover.
Instead, it uncovered bugs and erratical behavior in the 500 series firmwares, which triggered the automatic recovery in situations where it was not necessary. In the worst case, this would cause Z-Wave JS to end up in an infinite loop or restart over and over.
This patch should fix and/or work around most (if not all) of these issues. Really sorry for the inconvenience!
- Fixed an infinite loop caused by assuming the controller was temporarily unable to transmit when when sending a command results in the transmit status
Fail
(#6361) - Added a workaround to avoid a restart loop caused by 500 series controllers replying with invalid commands when assigning routes back to the controller (SUC) failed (#6370, #6372)
- Automatically recovering an unresponsive controller by restarting it or Z-Wave JS in case of a missing callback is now only done for
SendData
commands. Previously some commands which were expecting a specific command to be received from a node could also trigger this, even if that command was not technically a command callback. (#6373) - Fixed an issue where rebuilding routes would throw an error because of calling the wrong method internally (#6362)
- The workaround from
v12.0.0
for the7.19.x
SDK bug was not working correctly when the command that caused the controller to get stuck could be retried. This has now been fixed. (#6343)
- Ignore when a node reports
Security S0/S2 CC
to have version 0 (unsupported) although it is using that CC (#6333)
- Add Shelly to manufacturers (#6339)
- Add Shelly Wave 1, Wave 2PM, update Wave 1PM association labels (#6326)
- Add Sunricher SR-ZV2833PAC (#6310)
- Added an ESLint rule to help with deciding whether a config parameter needs to be
unsigned
or not (#6325, #6338)
Home Assistant users who manage zwave-js-server
themselves, must install the following upgrades before upgrading to this driver version:
- Home Assistant 2023.10.0 or higher
zwave-js-server
1.32.0
Breaking changes · Migration guide
- Removed auto-disabling of soft-reset capability. If Z-Wave JS is no longer able to communicate with the controller after updating, please read this issue (#6256)
- Remove support for Node.js 14 and 16 (#6245)
- Subpath exports are now exposed using the
exports
field inpackage.json
instead oftypesVersions
(#5839) - The
"notification"
event now includes a reference to the endpoint that sent the notification (#6083) - Keep separate Supervision session ID counters for each node (#6175)
- Validate the device fingerprint before installing firmware update instead of when checking for updates (#6192)
- Removed some deprecated methods (#6250)
- Managing SUC routes with the non-SUC method variants is no longer allowed (#6251)
- "Heal (network)" was renamed to "rebuild routes" to better reflect what it does (#6252)
- Corrected the argument type for
Driver.constructor
,updateLogConfig
andupdateOptions
(#6254, #6319)
- Detect an unresponsive stick and reset it (#6244)
- The default time after which battery-powered devices with no pending commands are sent back to sleep is now
250 ms
(down from1000ms
). This timeout is now configurable using the driver optiontimeouts.sendToSleep
. This should result in significant battery savings for devices that frequently wake up. (#6312)
- A bug in the
7.19.x
SDK has surfaced where the controller gets stuck in the middle of a transmission. Previously this would go unnoticed because the failed commands would cause the nodes to be marked dead until the controller finally recovered. Sincev11.12.0
however, Z-Wave JS would consider the controller jammed and retry the last command indefinitely. This situation is now detected and Z-Wave JS attempts to recover by soft-resetting the controller when this happens. (#6296) - Default to RF protection state
Unprotected
if not given forProtection CC
V2+ (#6257)
- Add Heatit Z-Water 2 (#6299)
- Add Shelly Wave 1PM (#6280, #6317)
- Add Heatit Z-TRM6 (#6263)
- Increase poll delay for ZW500D (#6270)
- Add fingerprint for Simon IO Master Roller Blind (#6262)
- Add HOPPE eHandle ConnectSense (#6269)
- Add parameters to Zooz ZEN17 from firmware 1.30 (#6189)
- Update Zooz ZEN32 config to the latest firmware, include 800 series (#6283)
- Fixed the interpretation of
limit_options
in OpenSmartHouse import script (#6313) - Some Z-Wave JS specific implementation checks are now done using a custom ESLint plugin (#6276, #6279, #6315)
- Migrated more Z-Wave JS specific checks to the custom ESLint plugin (#6297, #6302)
- Use ESLint to enforce consistent property ordering in config parameters and avoid unnecessary
minValue/maxValue
(#6321, #6322) yarn test
now only runs tests affected by changed files by default. This is also done on CI in PRs to speed up check times (#6274)- Upgraded lots of dependencies (#6258)
- Fixed an issue where some
Notification CC Reports
including an enumeration value would cause the corresponding value ID to be set to the wrong value (#6282) - When the Serial API on a controller restarts unexpectedly, the node ID length is now synchronized again (#6271)
- Add warnings about broken controller firmware versions (#6293)
- Fixed an issue causing commands that have previously been moved to the wakeup queue for sleeping nodes would no longer be handled correctly on wakeup and block the send queue for an extended amount of time (#6266)
- The
mock-server
now supports loading mocks from outside thenode-zwave-js
repository (#6261)
Driver.sendCommand
,Driver.sendMessage
andNode.setValue
now accept an optional callback as part of the options that will be called with the transaction progress (queued, active, failed, complete) (#6212)- Optimized the order of node communication during startup to ensure responsive nodes are ready first (#6233)
- Transmit reports now include the routing scheme (direct, LWR, ...) used for the transmission (#6232)
- The start/stop time and date values in
Schedule Entry Lock CC
commands are now validated (#6231) - Fixed an issue where
hasDeviceConfigChanged
would return the opposite of what it should (#6240)
- Delay value refresh for
ZW500D
(#6230) - Update several Zooz devices to their 800 series revisions (#6218)
- Extend version range for
Vesternet VES-ZW-DIM-001
(#6216)
- No longer report errors to Sentry (#6225)
silly
level logging forsetValue
calls now includes the endpoint index (#6223)- Added a regression test for
setValue
with a temporary communication failure (#6224)
- Fixed a regression from
v11.13.0
whereMeter CC
andMultilevel Sensor CC
reports from an endpoint were discarded, although the endpoint did support them, but the root endpoint didn't (#6222) - Fixed a startup crash that happens when the controller returns an empty list of nodes (#6220)
- Fixed an issue where API calls would be rejected early or incorrectly resolved while the driver was still retrying a command to an unresponsive node (#6219)
- Fixed an issue where the controller would be considered jammed if it responds with a
Fail
status, even after transmitting (#6211)
- Switched formatting from
Prettier
to the much fasterDprint
(#6198) - Added a precommit hook to format files (#6205)
- Fix type definitions in the documentation for the
"firmware update finished"
controller event (#6206) - Fixed an issue during documentation generation where referencing the same type definition multiple times would not work (#6207)
- Moved the documentation for
Driver.interviewNode
toNode.interview
(#6209)
- Auto-detected serialports now prominently include
/dev/serial/by-id/*
paths (#6182)
- Discard
Meter CC
andMultilevel Sensor CC
reports when the node they supposedly come from does not support them (#6178) - Abort inclusion when a node with the same ID is already part of the network (#6180)
- Fixed an issue where a node that does not support S0 and/or S2 was shown with an unknown security class (#6187)
- Fixed a regression from
v11.12.0
where devices with aproprietary
field in the device config would not finish the interview (#6202)
- Remove unnecessary endpoint functionality for CT100 (#6185)
- Extended documentation for parsing QR codes (#6181)
- Fixed an issue where directly editing
driver.options
in tests would modify thedefaultOptions
and influence future driver instances (#6188)
- When the controller cannot transmit due to being jammed, this is now detected and exposed to applications. In this situation, nodes are no longer being marked as dead. (#6174)
- A hash of the device config used during the interview is now stored and can be used to detect whether a node needs to be re-interviewed after a configuration update (#6170)
- Fixed an issue where 700 series controllers were not soft-reset after NVM backup when soft-reset was disabled via config (#6176)
- Correct reporting frequency parameter values for Sensative AB Strips Comfort / Drips Multisensor (#6171)
- Config file checks now detect invalid firmware version ranges where
min > max
(#6169)
- The driver configuration now includes settings for RF region and TX power which will automatically be configured on startup (#6159)
- Add support for persistent node-specific defaults for transition duration and volume (#6162)
- Fixed a regression from
v11.10.1
where the controller's firmware version was not fully queried (x.y
instead ofx.y.z
) (#6165) - Fixed an issue where devices supporting
Notification CC
in push mode were incorrectly detected as using pull mode whenAssociation Group Information CC
is not supported (#6157) - Requests to the firmware update service now include the full
x.y.z
firmware version where known (#6166) - Fixed an issue where region-specific firmware updates would not be returned from the firmware update service (#6167)
- Disable Supervision for Kwikset HC620 to work around a device bug causing it to flood the network (#6155)
- Add fingerprint for Ring Outdoor Contact Sensor (#6163)
- Change order of commands so the startup does not fail when a controller is already set to use 16-bit node IDs and soft-reset is disabled (#6153)
- Soft-reset is now always enabled on 700+ series controllers (#6154)
- Queried user codes and their status are now preserved during re-interview when they won't be re-queried automatically (#6152)
- Remove unnecessary endpoint functionality for CT101 (#6146)
- The
mock-server
now supports loading a directory of mocks (#6145)
- The controller
identify
event callback now includes a reference to the node that requested the identification (#6140)
- When downloading a firmware file, the file extension of the final redirected URL is also considered (#6142)
- Add parameters 9-13 to
Minoston MP21ZP / MP31ZP
(#6139) - Add fingerprint to Yale
YRD446-ZW2
(#6135) - Add and update
Yale Assure ZW3
series locks (#6134)
- Fixed a regression from
v11.9.1
where the startup process could stall after soft-reset when using certain pre-700 series controllers (#6132)
- Fixed a regression from
v11.7.0
where the controller was incorrectly assumed to encode node IDs as 16-bit after a soft reset (#6130) - Improve heuristic to refresh values from legacy nodes when receiving a node information frame (#6121)
- Fixed an issue where no control values were exposed for devices that do not support/advertise
Version CC
(#6123)
- Correct value size for some Nortek
PD300EMZ5-1
params that were previously swapped (#6124) - Add new MCOHome MH-S411/S412 models (#6120)
- Add
getDateAndTime
method toZWaveNode
(#6073)
- Fixed an issue where turning on a
Multilevel Switch
with transition duration could update thecurrentValue
to an illegal value (#6111) - Fixed an issue where empty daily repeating schedules were encoded incorrectly in mocks (#6113)
- Support absolute config paths in
mock-server
(#6112)
- Recover from Security S2 collisions in a common scenario where nodes send a supervised command at the same time Z-Wave JS is trying to control them (#6106)
- During NVM migration, an incorrect flag for "on other network" is now automatically corrected instead of raising an error (#6108)
- Preserve endpoint 0 for Zooz ZEN14 to toggle both outlets at once (#6099)
- Fixed the message sequencing between mock controller and mock nodes in integration tests and the
mock-server
(#6101)
- Health checks now include the intermediate results in progress callbacks (#6086)
- Added the ability to abort health checks and testing whether a health check is in progress (#6091)
- When a CC version query times out, the CC version is now actually assumed to be 1 instead of only logging this (#6089)
- Correct state after power failure for Minoston MP21Z/31Z (#6087)
- Add Namron 4512757 (#6072)
- Add methods to read sensor/meter support information from cache for
Alarm/Binary/Multilevel Sensor CC
andMeter CC
(#6065) - Fall back to the embedded config directory when looking up
$import
targets from user-defined config files (#6067)
- Fixed an issue where a delayed endpoint capability report could be associated with the wrong query (#6076)
- During NVM migration, some invalid/unexpected bytes in the 500 series NVM can now be corrected (#6082)
- Hide configuration values for
Door Lock CC v4
functionality that is not supported by a lock (#6075)
- Add Leviton RZM10-1L (#6080)
- Force use of Multi Channel CC v1 for all versions of PE653 (#6077)
- Enable 16-bit node IDs in Serial API communication (#6070)
- Fix link in v11 Migration guide (#6071)
- Setting the date and time on a node will now also attempt sending unsolicited
Time CC
reports if no other way is supported (#6042)
- Fixed an issue where auto-discovered config parameters could create non-existing partial parameters (#6059)
- Auto-discovered config parameters that are missing from a config file are now preserved and exposed to applications. These can be distinguished from known parameters by checking the
isFromConfig
metadata property (#6058) - Fixed an issue where config parameter metadata from a config file could be overridden with auto-discovered information (#6060)
- Fixed a regression where unsuccessful pings to sleeping nodes would not resolve. Among other things, this could prevent the remove failed node function from working (#6064)
- Add new product id to
Fakro ZWS12
(#6027) - Disable Supervision for
NICE Spa IBT4ZWAVE
(#6050) - Add variant of
Inovelli NZW31T
with manufacturer ID0x015d
(#6057) - Split and correct
Minoston MP21Z/MP31Z/MP21ZP/MP31ZP
config files (#6056) - Add
EVA LOGIK (NIE Tech) ZKS31
Rotary Dimmer (#5877)
- Added a section to the documentation that explains how to use custom log transports (#6061)
- Throw when trying to heal or discover neighbors for the controller (#6043)
- Correct parameters of Zooz ZEN05 (#6045)
- Override supported setpoint types for Intermatic PE653 (#6044)
- Update Inovelli LZW31 parameter 52 for FW 1.54 (#6001)
- Implement mocks for
Basic CC
(#6041)
- Fixed an issue where partial param values were not exposed correctly (#6035)
- When a device unnecessarily sends a supervised GET request, the response is no longer sent with Supervision (#6034)
- Fixed another regression from
v11.2.0
where some time-critical requests weren't answered while waiting for a response from a different node (#6024)
- Fix Zooz ZSE40 parameters 7 and 8 (#6019)
- Reworked how build caching is done (#6040)
- Fixed an infinite loop that could happen when parsing 4-byte bitfield config parameters where the high bit is set (#6029)
- Allow associations between insecure devices which support the latest
(Multi Channel) Association CC
(#6011)
- Add
lastSeen
property to node and node statistics (#6008) - Make
ZWaveNode
events available via theDriver
(#6002)
- Handle when the controller sends a reserved status code after failed exclusion (#6004)
- Fixed a regression from
v11.2.0
where a node's S0 nonce requests weren't answered during a Get-Report command flow (#6024)
fix(config): add new fingerprint for Zooz ZST10-700 (#6022)
- Add mocks for
User Code CC
andSchedule Entry Lock CC
(#6023) - Add mocks for
Manufacturer Specific
,Thermostat Mode
andThermostat Setpoint CC
(#6013)
- Add Heatit ZM Dimmer (#5999)
- Add Heatit Z-HAN2 (#5998)
- Add Remotec ZXT-800 (#5955)
- Clarify Hand Button action for
ZVIDAR Z-CM-V01 Smart Curtain Motor
(#5946) - Add MCOHome MH-S220 FW 3.2 (#5832)
- Add another device ID for Switch IO On/Off Power Switch (#5801)
- Add/fix params for Intermatic PE653 (#5822)
- Add ShenZhen Sunricher Technology Multisensor SR-ZV9032A-EU (#5718)
- The
commandClasses.add/remove
compat flags now support specifying the CC name instead of its hexadecimal ID (#6000)
- Add missing product type to
Aeotec Water Sensor 7 Basic ZWA018
(#5989) - Override endpoint indizes for
heatapp! floor
(#5994) - Override schedule slot count for
P-KFCON-MOD-YALE
(#5991) - Override supported color channels for
Zipato RGBW Bulb2
(#5993) - Override supported thermostat modes for Z-Wave.me ZME_FT (#5997)
- Fixed a typo in the
discoverNodeNeighbors
JSDoc (#5984) - Added Node.js 20 to the test matrix (#5983)
- Added a compat flag to override (almost) arbitrary CC API queries (#5987, #5995)
- Added the
yarn configfind ...
CLI command to quickly find a config file by ID
- Added the ability to assign priority return routes along with custom fallbacks (#5980)
- Add
zwaveDataRateToString
method (#5978)
- Disable
Window Covering CC
for ZVIDAR Roller Blind (#5976)
- Upgrade to TypeScript 5.1.6 (#5977)
- The
withTXReport
proxy now has thesetValue
andpollValue
methods available (#3735)
- When checking incoming S2-encapsulated commands for duplicates, only the last command is now considered (#5967)
- Incoming multicast
SupervisionCC::Get
commands are no longer answered (#5973) - Automatically use
...SUC...
variant when assigning custom/priority return routes with the controller as the destination (#5972) - Clear cached custom SUC return routes after assigning a priority SUC return route (#5970)
- Ignore
Transport Service
andCRC16
encapsulation when checking if a command is received at a lower-than-expected security level (#5966) - Respond to
Inclusion Controller CC
commands without requiring support (#5949)
- Update Swidget devices to match their June 8th 2023 spec (#5956)
- Add endpoint configuration parameters to SES 302 (#5954)
- Upgrade to TypeScript 5.1 (#5950)
- Most state machines involved with sending commands have been removed. Queue handling is now done entirely in the driver, making it easier to follow and debug. (#5958)
- Add logging for
Energy Production CC
(#5951)
- The
ThermostatModeCC.set
API now acceptsmanufacturerData
as a hex string instead of just a Buffer (#5929) - Support responding to "identify" commands (#5934)
- An API for discovering neighbors is now available to applications (#5938)
- Added support for assigning custom return routes and reading previously set priority return routes from cache (#5941)
- Allow other devices to configure a single lifeline to receive factory reset notifications (#5931)
- Simplified the interview process to contain a sequence that was previously done before the actual interview (#5936)
- During network heals, routes to all association destinations are now assigned, instead of just 4 (#5938)
- Remove unnecessary endpoints for RTC CT32 (#5927)
Home Assistant users who manage zwave-js-server
themselves, must install the following upgrades before upgrading to this driver version:
- Home Assistant 2023.6.0 or higher
zwave-js-server
1.29.0
Breaking changes · Migration guide
- Hide
Multilevel Switch CC
in favor ofWindow Covering CC
(#5812) - Improve return type of
firmwareUpdateOTA
andfirmwareUpdateOTW
methods (#5815) - Rename some
ZWaveHost
interface methods (#5814) - Remove deprecated method signatures, enums and properties (#5816)
- Support configuration parameters on endpoints (#5818)
- Removed
preserveUnknownValues
driver option, distinguish between (known to be) unknown and not (yet) known states/values (#5843) - Auto-discovered
BitField
config params are now represented as partial params (#5870) - Change return type of
setValue
to include context on the execution result (#5897) - Changed
"node removed"
event callback to specify why a node was removed (#5920)
- Auto-remove nodes when they leave the network after failed SmartStart bootstrapping (#5922)
- Hide
Binary Switch CC
in favor ofWindow Covering CC
on iBlinds v3 (#5912)