Skip to content

Add schema 45 support#1363

Draft
raman325 wants to merge 5 commits intohome-assistant-libs:mainfrom
raman325:feature/schema-45-support
Draft

Add schema 45 support#1363
raman325 wants to merge 5 commits intohome-assistant-libs:mainfrom
raman325:feature/schema-45-support

Conversation

@raman325
Copy link
Contributor

@raman325 raman325 commented Jan 23, 2026

Summary

Adds support for Z-Wave JS Server schema 45, including new driver, controller, node, endpoint, and utils commands, events, and state properties.

Related: zwave-js/zwave-js-server#1480

Changes

Driver

  • New commands: soft_reset_and_restart, enter_bootloader, leave_bootloader, get_supported_cc_version, get_safe_cc_version, update_user_agent
  • New events: error, bootloader ready
  • New state properties: ready, all_nodes_ready, config_version

Controller

  • New commands: get_background_rssi, get_long_range_nodes, get_dsk, get_all_association_groups, get_all_associations, get_all_available_firmware_updates, begin_joining_network, stop_joining_network, begin_leaving_network, stop_leaving_network, start_watchdog, stop_watchdog, get_supported_rf_regions, query_supported_rf_regions, query_rf_region_info, assign_return_routes, delete_return_routes, assign_suc_return_routes, delete_suc_return_routes, discover_node_neighbors
  • New events: network found, network joined, network left, joining network failed, leaving network failed
  • New state properties: sdk_version, zwave_api_version, zwave_chip_type, is_sis, max_payload_size, max_payload_size_lr

Node

  • New commands: check_link_reliability, is_link_reliability_check_in_progress, abort_link_reliability_check
  • New events: check link reliability progress
  • New state properties: can_sleep, supports_wake_up_on_demand, hardware_version, has_suc_return_route, manufacturer, dsk

Endpoint

  • New commands: get_ccs, may_support_basic_cc, was_cc_removed_via_config

Utils

  • New commands: guess_firmware_file_format, try_unzip_firmware_file, extract_firmware
  • New enum: FirmwareFileFormat

Commands Summary

Component Command Code Test
Driver soft_reset_and_restart driver/__init__.py:357 test_driver.py:557
Driver enter_bootloader driver/__init__.py:361 test_driver.py:570
Driver leave_bootloader driver/__init__.py:365 test_driver.py:583
Driver get_supported_cc_version driver/__init__.py:369 test_driver.py:597
Driver get_safe_cc_version driver/__init__.py:382 test_driver.py:622
Driver update_user_agent driver/__init__.py:395 test_driver.py:646
Controller get_background_rssi controller/__init__.py:923 test_controller.py:2367
Controller get_long_range_nodes controller/__init__.py:937 test_controller.py:2389
Controller get_dsk controller/__init__.py:944 test_controller.py:2406
Controller get_all_association_groups controller/__init__.py:951 test_controller.py:2428
Controller get_all_associations controller/__init__.py:979 test_controller.py:2465
Controller get_all_available_firmware_updates controller/__init__.py:1011 test_controller.py:2491
Controller begin_joining_network controller/__init__.py:1037 test_controller.py:2519
Controller stop_joining_network controller/__init__.py:1044 test_controller.py:2536
Controller begin_leaving_network controller/__init__.py:1051 test_controller.py:2553
Controller stop_leaving_network controller/__init__.py:1058 test_controller.py:2570
Controller start_watchdog controller/__init__.py:1067 test_controller.py:2587
Controller stop_watchdog controller/__init__.py:1074 test_controller.py:2604
Controller get_supported_rf_regions controller/__init__.py:1083 test_controller.py:2621
Controller query_supported_rf_regions controller/__init__.py:1099 test_controller.py:2643
Controller query_rf_region_info controller/__init__.py:1106 test_controller.py:2660
Controller assign_return_routes controller/__init__.py:1126 test_controller.py:2684
Controller delete_return_routes controller/__init__.py:1140 test_controller.py:2707
Controller assign_suc_return_routes controller/__init__.py:1151 test_controller.py:2725
Controller delete_suc_return_routes controller/__init__.py:1162 test_controller.py:2743
Controller discover_node_neighbors controller/__init__.py:1173 test_controller.py:2761
Node check_link_reliability node/__init__.py:1024 test_node.py:2813
Node is_link_reliability_check_in_progress node/__init__.py:1046 test_node.py:2915
Node abort_link_reliability_check node/__init__.py:1056 test_node.py:2943
Endpoint get_ccs endpoint.py:364 test_node.py:3017
Endpoint may_support_basic_cc endpoint.py:377 test_node.py:3052
Endpoint was_cc_removed_via_config endpoint.py:387 test_node.py:3077
Utils guess_firmware_file_format utils.py:57 test_utils.py:127
Utils try_unzip_firmware_file utils.py:84 test_utils.py:147
Utils extract_firmware utils.py:117 test_utils.py:190

Events Summary

Component Event Code Test
Driver error driver/__init__.py:432 test_driver.py:660
Driver bootloader ready driver/__init__.py:436 test_driver.py:674
Controller network found controller/__init__.py:1314 test_controller.py:2808
Controller network joined controller/__init__.py:1318 test_controller.py:2808
Controller network left controller/__init__.py:1321 test_controller.py:2808
Controller joining network failed controller/__init__.py:1324 test_controller.py:2808
Controller leaving network failed controller/__init__.py:1327 test_controller.py:2808
Node check link reliability progress event_model.py:84 test_node.py:2964

State Properties Summary

Component Property Code Test
Driver ready driver/__init__.py:212 test_driver.py:686
Driver all_nodes_ready driver/__init__.py:217 test_driver.py:686
Driver config_version driver/__init__.py:222 test_driver.py:686
Controller sdk_version controller/__init__.py:119 test_controller.py:2779
Controller zwave_api_version controller/__init__.py:272 test_controller.py:2779
Controller zwave_chip_type controller/__init__.py:277 test_controller.py:2779
Controller is_sis controller/__init__.py:257 test_controller.py:2779
Controller max_payload_size controller/__init__.py:262 test_controller.py:2779
Controller max_payload_size_lr controller/__init__.py:267 test_controller.py:2779
Node can_sleep node/__init__.py:387 test_node.py:2985
Node supports_wake_up_on_demand node/__init__.py:392 test_node.py:2985
Node hardware_version node/__init__.py:397 test_node.py:2985
Node has_suc_return_route node/__init__.py:402 test_node.py:2985
Node manufacturer node/__init__.py:407 test_node.py:2985
Node dsk node/__init__.py:412 test_node.py:2985

Test plan

  • All existing tests pass (346 total)
  • New tests for schema 45 commands added
  • New tests for schema 45 events added
  • New tests for schema 45 state properties added
  • New tests for utils firmware commands added
  • Pre-commit checks pass (ruff, black, pydocstyle, mypy, pylint)

🤖 Generated with Claude Code

raman325 and others added 5 commits January 23, 2026 12:22
This adds support for all new commands, events, and state properties
introduced in schema 45 of zwave-js-server.

- Commands: soft_reset_and_restart, enter_bootloader, leave_bootloader,
  get_supported_cc_version, get_safe_cc_version, update_user_agent
- Events: error, bootloader ready
- State properties: ready, all_nodes_ready, config_version

- Commands: check_link_reliability, is_link_reliability_check_in_progress,
  abort_link_reliability_check
- State properties: can_sleep, supports_wake_up_on_demand, hardware_version,
  has_suc_return_route, manufacturer, dsk

- Commands: get_ccs, may_support_basic_cc, was_cc_removed_via_config

- Commands: get_background_rssi, get_long_range_nodes, get_dsk,
  get_all_association_groups, get_all_associations,
  get_all_available_firmware_updates, begin_joining_network,
  stop_joining_network, begin_leaving_network, stop_leaving_network,
  start_watchdog, stop_watchdog, get_supported_rf_regions,
  query_supported_rf_regions, query_rf_region_info, assign_return_routes,
  delete_return_routes, assign_suc_return_routes, delete_suc_return_routes,
  discover_node_neighbors
- Events: network found, network joined, network left,
  joining network failed, leaving network failed
- State properties: is_sis, max_payload_size, max_payload_size_lr,
  zwave_api_version, zwave_chip_type

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add utils firmware commands: guess_firmware_file_format,
  try_unzip_firmware_file, extract_firmware
- Add FirmwareFileFormat enum
- Add check link reliability progress node event
- Add tests for new functionality
- Fix schema version in tests (44 -> 45)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move imports out of functions to top of file to fix ruff PLC0415 errors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add tests to cover conditional branches in schema 45 code:
- Endpoint key with colon parsing in get_all_associations
- rf_region parameter in get_all_available_firmware_updates
- regions being None in get_supported_rf_regions
- includesRegion field in query_rf_region_info response

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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.

1 participant

Comments