diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 983a61861fa0..62b4ddf4d594 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ "COREPACK_ENABLE_DOWNLOAD_PROMPT": "0" // Avoids interactive prompt causing container creation to hang }, - "updateContentCommand": "sudo corepack enable && yarn && yarn build", + "updateContentCommand": "sudo corepack enable && yarn && yarn bootstrap", "customizations": { "vscode": { "extensions": [ diff --git a/.dprint.jsonc b/.dprint.jsonc index 720d0126a2aa..54dfa696b311 100644 --- a/.dprint.jsonc +++ b/.dprint.jsonc @@ -64,9 +64,9 @@ ".yarnrc.yml", ], "plugins": [ - "https://plugins.dprint.dev/typescript-0.90.0.wasm", - "https://plugins.dprint.dev/json-0.19.2.wasm", - "https://plugins.dprint.dev/markdown-0.16.4.wasm", - "https://plugins.dprint.dev/prettier-0.39.0.json@896b70f29ef8213c1b0ba81a93cee9c2d4f39ac2194040313cd433906db7bc7c", + "https://plugins.dprint.dev/typescript-0.93.0.wasm", + "https://plugins.dprint.dev/json-0.19.3.wasm", + "https://plugins.dprint.dev/markdown-0.17.8.wasm", + "https://plugins.dprint.dev/prettier-0.46.1.json@e5bd083088a8dfc6e5ce2d3c9bee81489b065bd5345ef55b59f5d96627928b7a", ], } diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index fe16634a0217..000000000000 --- a/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -build/ -node_modules/ -**/node_modules/ - -**/ava.config.cjs -maintenance/esbuild-register.js -.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index d045f6f66a92..000000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,206 +0,0 @@ -/* - Note to future self: - - If ESLint is ever extremely slow again, check if there are .js and/or .map files in the source directories - and delete them: - - ```bash - find . -type f -name "*.map" | grep ./packages | grep /src/ | xargs -n1 rm - find . -type f -name "*.js" | grep ./packages | grep /src/ | xargs -n1 rm - ``` - - Running `TIMING=1 DEBUG=eslint:cli-engine yarn run lint:ts` helps detect the problem -*/ - -module.exports = { - root: true, - parser: "@typescript-eslint/parser", // Specifies the ESLint parser - parserOptions: { - ecmaVersion: 2023, // Allows for the parsing of modern ECMAScript features - sourceType: "module", // Allows for the use of imports - project: "./tsconfig.all.json", - tsconfigRootDir: __dirname, - }, - extends: [ - // Use the recommended rules from the @typescript-eslint/eslint-plugin - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - ], - plugins: [ - "deprecation", - "unused-imports", - "unicorn", - "@zwave-js", - ], - reportUnusedDisableDirectives: true, - rules: { - // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs - "@typescript-eslint/no-parameter-properties": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-use-before-define": [ - "error", - { - functions: false, - typedefs: false, - classes: false, - }, - ], - "@typescript-eslint/no-unused-vars": [ - "error", - { - ignoreRestSiblings: true, - argsIgnorePattern: "^_", - }, - ], - "@typescript-eslint/no-object-literal-type-assertion": "off", - "@typescript-eslint/interface-name-prefix": "off", - "@typescript-eslint/no-non-null-assertion": "off", // This is necessary for Map.has()/get()! - "@typescript-eslint/no-inferrable-types": [ - "error", - { - ignoreProperties: true, - ignoreParameters: true, - }, - ], - "@typescript-eslint/ban-ts-comment": [ - "error", - { - "ts-expect-error": false, - "ts-ignore": true, - "ts-nocheck": true, - "ts-check": false, - }, - ], - "@typescript-eslint/restrict-template-expressions": [ - "error", - { - allowNumber: true, - allowBoolean: true, - // This is necessary to log errors - // TODO: Consider switching to false when we may annotate catch clauses - allowAny: true, - allowNullish: true, - }, - ], - "@typescript-eslint/no-misused-promises": [ - "error", - { - checksVoidReturn: false, - }, - ], - - // Make sure type imports are used where necessary - "@typescript-eslint/consistent-type-imports": [ - "error", - { - fixStyle: "inline-type-imports", - disallowTypeAnnotations: false, - }, - ], - "@typescript-eslint/consistent-type-exports": "error", - - // We can turn this on from time to time but in general these rules - // make our lives harder instead of easier - "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-return": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-enum-comparison": "off", - "@typescript-eslint/no-unsafe-declaration-merging": "off", - - // Although this rule makes sense, it takes about a second to execute (and we don't need it) - "@typescript-eslint/no-implied-eval": "off", - - "@typescript-eslint/explicit-module-boundary-types": [ - "warn", - { allowArgumentsExplicitlyTypedAsAny: true }, - ], - "@typescript-eslint/no-this-alias": "off", - - // Prefer simple property access and declaration without quotes - "dot-notation": "off", - "@typescript-eslint/dot-notation": [ - "error", - { - allowPrivateClassPropertyAccess: true, - allowProtectedClassPropertyAccess: true, - }, - ], - "quote-props": ["error", "as-needed"], - "deprecation/deprecation": "error", - "unused-imports/no-unused-imports-ts": "error", - "unused-imports/no-unused-imports": "error", - - "unicorn/prefer-array-find": ["error", { checkFromLast: true }], - "unicorn/prefer-array-flat-map": "error", - "unicorn/prefer-array-flat": "error", - "unicorn/prefer-array-index-of": "error", - "unicorn/prefer-array-some": "error", - "unicorn/prefer-at": "error", - "unicorn/prefer-includes": "error", - "unicorn/prefer-logical-operator-over-ternary": "error", - "unicorn/prefer-modern-math-apis": "error", - "unicorn/prefer-negative-index": "error", - "unicorn/prefer-node-protocol": "error", - "unicorn/prefer-regexp-test": "error", - "unicorn/prefer-string-slice": "error", - "unicorn/prefer-string-starts-ends-with": "error", - "unicorn/prefer-string-replace-all": "error", - }, - overrides: [ - { - files: ["*.test.ts", "*.test.ava.ts"], - rules: { - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-member-return": "off", - "@typescript-eslint/no-unsafe-return": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-floating-promises": "off", - "@typescript-eslint/require-await": "off", - "@typescript-eslint/unbound-method": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/dot-notation": "off", - - "@zwave-js/no-debug-in-tests": "error", - }, - }, - { - files: ["*.js"], - rules: { - "@typescript-eslint/*": "off", - }, - }, - { - files: ["packages/cc/src/**/*CC.ts"], - rules: { - "@zwave-js/ccapi-validate-args": "error", - "@zwave-js/no-internal-cc-types": "error", - }, - }, - { - files: ["packages/cc/src/**"], - rules: { - "@zwave-js/consistent-cc-classes": "error", - }, - }, - { - files: ["packages/**/*.ts"], - rules: { - "@zwave-js/no-forbidden-imports": "error", - }, - }, - { - files: ["packages/config/config/devices/**/*.json"], - parser: "jsonc-eslint-parser", - rules: { - "@zwave-js/consistent-device-configs": "error", - }, - }, - ], -}; diff --git a/.github/DISCUSSION_TEMPLATE/request-support-investigate-issue.yml b/.github/DISCUSSION_TEMPLATE/request-support-investigate-issue.yml index 469c0c76e329..3ceca1788307 100644 --- a/.github/DISCUSSION_TEMPLATE/request-support-investigate-issue.yml +++ b/.github/DISCUSSION_TEMPLATE/request-support-investigate-issue.yml @@ -76,6 +76,19 @@ body: If you are using something non-standard, tell us here: ... + - type: textarea + id: controller + attributes: + label: Z-Wave Controller (Stick/Dongle/...) + description: | + Some issues are known to be caused by the Z-Wave controller. + Please let us know which controller and firmware you are using: + + value: | + Manufacturer: ... + Model name: ... + Firmware version: ... + - type: textarea id: devices attributes: diff --git a/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch b/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch new file mode 100644 index 000000000000..24c7c9485c04 --- /dev/null +++ b/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch @@ -0,0 +1,24 @@ +diff --git a/dist/index.js b/dist/index.js +index 924f1d410edf7ad3a217b9542d0455ee0954846e..92113759cd21a17b937c6b18369644a01802a9ae 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -7,6 +7,7 @@ var commaFilter = { filter: (token) => token.value === "," }; + var includeCommentsFilter = { includeComments: true }; + function makePredicate(isImport, addFixer) { + return (problem, context) => { ++ if (!problem.node && !problem.loc) return false; + const sourceCode = context.sourceCode || context.getSourceCode(); + const { parent } = _nullishCoalesce(problem.node, () => ( // typescript-eslint >= 7.8 sets a range instead of a node + sourceCode.getNodeByRangeIndex(sourceCode.getIndexFromLoc(problem.loc.start)))); +diff --git a/dist/index.mjs b/dist/index.mjs +index c9d421a8620f17748b9eef51d1480c2ba4a1b541..0752516e7adce3de842127f1a5e06bb0314e73e7 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -3,6 +3,7 @@ var commaFilter = { filter: (token) => token.value === "," }; + var includeCommentsFilter = { includeComments: true }; + function makePredicate(isImport, addFixer) { + return (problem, context) => { ++ if (!problem.node && !problem.loc) return false; + const sourceCode = context.sourceCode || context.getSourceCode(); + const { parent } = problem.node ?? // typescript-eslint >= 7.8 sets a range instead of a node + sourceCode.getNodeByRangeIndex(sourceCode.getIndexFromLoc(problem.loc.start)); diff --git a/CHANGELOG.md b/CHANGELOG.md index 506444669934..3da2c8eb8489 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,80 @@ +## 13.10.0 (2024-10-24) +### Features +* `mock-server` now supports putting the simulated controller into add and remove mode (#7314) + +## 13.9.1 (2024-10-17) +### Bugfixes +* Fixed an issue where preferred scales were not being found when set as a string (#7286) + +## 13.9.0 (2024-10-14) +### Features +* Zniffer: allow filtering frames when saving the capture (#7279) + +### Bugfixes +* Fixed an issue where the `StartLevelChange` command for `Window Covering CC` was sent with an inverted direction flag (#7278) + +### Config file changes +* Add manual and reset metadata for Danfoss LC-13 (#7274) + +## 13.8.0 (2024-10-11) +### Features +* Support playing tones on mocked sirens, improve support for node dumps of switches/dimmers (#7272) + +## 13.7.0 (2024-10-10) +### Features +* Thermostat Setback CC: Fix encoding of the setback state, add mocks, remove non-functional CC values (#7271) + +## 13.6.0 (2024-10-10) +### Features +* 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) + +### Bugfixes +* Use configured network keys on secondary controller if learned keys are absent (#7226) +* Pending tasks are removed when hard-resetting or entering bootloader (#7255) + +### Config file changes +* Add incompatibility warning to UZB1 (#7225) +* Override Central Scene CC version for Springs Window Fashions VCZ1 (#7263) + +### Changes under the hood +* Dependency updates +* Fix bootstrap command in devcontainer (#7254) + +## 13.5.0 (2024-10-07) +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. + +### Features +* Reworked route rebuilding to use the task scheduler. This enables rebuilding routes for multiple individual nodes at once. (#7196, #7203) + +### Bugfixes +* Fixed a regression from `13.4.0` that prevented restoring NVM backups on 700/800 series controllers (#7220) + +### Config file changes +* Add fingerprint to Aeotec ZWA024 (#7191) +* Correct max. value of SKU parameters for Kwikset locks (#7178) +* Add fingerprint to Remotec ZXT-800 (#7195) + +### Changes under the hood +* Implement task scheduler (#7193) +* Upgrade to ESLint v9, typescript-eslint v8 (#6987) +* Update FAQ on secondary controllers (#7190) + +## 13.4.0 (2024-09-24) +### Features +* Added `Controller.nvm` property to enable incremental modification of NVM contents on the fly (#7153) +* When the `NODE_ENV` env variable is set to `development`, debugging information for S0 encryption is included in logs (#7181) +* Add driver preset `NO_WATCHDOG` to disable watchdog (#7188) + +### Config file changes +* Update Z-Wave SDK warnings to mention recommended versions (#7187) +* Update Zooz devices (#7186) + ## 13.3.1 (2024-09-17) ### Bugfixes * Fixed the identification of the primary controller role on some older controllers (#7174) diff --git a/docs/api/controller.md b/docs/api/controller.md index 833fce5e239d..b8d11ad84da6 100644 --- a/docs/api/controller.md +++ b/docs/api/controller.md @@ -428,6 +428,8 @@ async rebuildNodeRoutes(nodeId: number): Promise Rebuilds routes for a single alive node in the network, updating the neighbor list and assigning fresh routes to association targets. The returned promise resolves to `true` if the process was completed, or `false` if it was unsuccessful. +> [!ATTENTION] Rebuilding routes for a single node will delete existing priority return routes to end nodes and the SUC. It is recommended to first check if priority return routes are known to exist using `getPriorityReturnRoutesCached` and `getPrioritySUCReturnRouteCached` and asking for confirmation before proceeding. + #### `beginRebuildingRoutes` ```ts @@ -449,6 +451,8 @@ The `options` argument can be used to skip sleeping nodes: interface RebuildRoutesOptions { /** Whether the routes of sleeping nodes should be rebuilt too at the end of the process. Default: true */ includeSleeping?: boolean; + /** Whether nodes with priority return routes should be included, as those will be deleted. Default: false */ + deletePriorityReturnRoutes?: boolean; } ``` @@ -628,10 +632,12 @@ As mentioned before, there is unfortunately no way to query return routes from a ```ts getPriorityReturnRouteCached(nodeId: number, destinationNodeId: number): MaybeUnknown | undefined; +getPriorityReturnRoutesCached(nodeId: number): Record; getPrioritySUCReturnRouteCached(nodeId: number): MaybeUnknown | undefined; ``` - `getPriorityReturnRouteCached` returns a priority return route that was set using `assignPriorityReturnRoute`. If a non-priority return route has been set since assigning the priority route, this will return `UNKNOWN_STATE` (`null`). +- `getPriorityReturnRoutesCached` returns an object containing the IDs of all known end node destinations a node has priority return routes for and their respective routes. - `getPrioritySUCReturnRouteCached` does the same for a route set through `assignPrioritySUCReturnRoute`. The return type `Route` has the following shape: diff --git a/docs/api/node.md b/docs/api/node.md index 85643eb3dcc7..3eef5a7533c6 100644 --- a/docs/api/node.md +++ b/docs/api/node.md @@ -1581,3 +1581,11 @@ interface RouteStatistics { routeFailedBetween?: [number, number]; } ``` + +### `"node info received"` + +The node has sent a node information frame (NIF) Z-Wave JS did not expect. This can be caused by the user pushing a button on the device. Some older devices also send a NIF to notify the controller that their status has changed. The callback only references the node itself: + +```ts +(node: ZWaveNode) => void +``` diff --git a/docs/api/zniffer.md b/docs/api/zniffer.md index d84205cccb25..2d1bf662985d 100644 --- a/docs/api/zniffer.md +++ b/docs/api/zniffer.md @@ -113,6 +113,20 @@ Captured frames can also be returned as a `Buffer` in the `.zlf` format using th await zniffer.getCaptureAsZLFBuffer(); ``` +When saving the capture to a file or buffer, an optional predicate function can be passed to filter frames first, for example: + +```ts +await zniffer.saveCaptureToFile("/path/to/file.zlf", (frame) => { + // Limit frames to a specific home ID + return "homeId" in f.parsedFrame && f.parsedFrame.homeId === 0xdeadbeef; +}); +await zniffer.getCaptureAsZLFBuffer((frame) => { + // Only include ZWLR frames + return "protocol" in f.parsedFrame + && f.parsedFrame.protocol === Protocols.ZWaveLongRange; +}); +``` + ## Frequency selection The configured frequency of the Zniffer has to match the frequency of the Z-Wave network it is capturing. Zniffers based on 700/800 series firmware support frequencies that match the `ZnifferRegion` enum: diff --git a/docs/development/implementing-cc.md b/docs/development/implementing-cc.md index 559a58808415..780780a4f08f 100644 --- a/docs/development/implementing-cc.md +++ b/docs/development/implementing-cc.md @@ -13,14 +13,14 @@ Make sure you have the [project snippets](https://marketplace.visualstudio.com/i 1. Define all available commands in the command enum. You'll find them in `SDS13548` in the `specs` directory. The names in the specs might need to be simplified, e.g. `Multilevel Toggle Switch Set` → `Set`. 1. Implement each command. There are a few snippets available to help you generate the classes: - | Snippet name | Description | - | --- | --- | - | `zwcccmd` | Simple command which expects a response. The deserialization doesn't need to be implemented if the command is only sent not received. | - | `zwccreport` | A response command that is received from a node (usually in response to a request). In the CC file, response commands must be placed before the requesting command. These commands **must** have a name that ends with `Report`. | - | `zwccemptycmd` | A command that contains no payload (only CC and command identifier). The entire contents of the class may be removed if nothing needs to be done. | - | `zwccemptyget` | Like `zwccemptycmd` but with an expected response. | - | `zwcclog` | Should be used in each command to convert it into a log message. A variant is `zwcclogempty` which hides the default `payload` line if that is not of interest | - | `zwccprop` | Can be used to generate the properties of a command which serve as values for consuming applications. | + | Snippet name | Description | + | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `zwcccmd` | Simple command which expects a response. The deserialization doesn't need to be implemented if the command is only sent not received. | + | `zwccreport` | A response command that is received from a node (usually in response to a request). In the CC file, response commands must be placed before the requesting command. These commands **must** have a name that ends with `Report`. | + | `zwccemptycmd` | A command that contains no payload (only CC and command identifier). The entire contents of the class may be removed if nothing needs to be done. | + | `zwccemptyget` | Like `zwccemptycmd` but with an expected response. | + | `zwcclog` | Should be used in each command to convert it into a log message. A variant is `zwcclogempty` which hides the default `payload` line if that is not of interest | + | `zwccprop` | Can be used to generate the properties of a command which serve as values for consuming applications. | 1. Implement the CC API which is used by consuming libraries and the interview procedure. The snippet `zwccapi` generates the basic shape, `zwccsupp` generates the method used to define which commands are supported. diff --git a/docs/getting-started/faq.md b/docs/getting-started/faq.md index bb650169fe98..dccba751dbc8 100644 --- a/docs/getting-started/faq.md +++ b/docs/getting-started/faq.md @@ -2,12 +2,20 @@ ## Does Z-Wave JS support secondary controllers? -Yes and no. +Mostly. -Z-Wave JS expects to **be the primary controller** in the network and it will try to assume that role when started. It will not work correctly as a secondary controller. +Slightly longer answer:\ +On startup, Z-Wave JS detects whether the Z-Wave module it controls is a primary controller or a secondary/inclusion controller. -It does however support **having secondary controllers in the network**. This includes: +Its default operation mode is acting as a **primary controller**, or assuming that role if there is none in the network. In this mode, it supports **having secondary controllers in the network**. This includes: - Including/excluding a secondary controller - Letting secondary controllers (inclusion controllers) include and exclude devices - Perform network key exchange with devices included by a secondary controller + +Z-Wave JS also supports joining other networks as a **secondary controller**. This mode is not meant for controlling a smart home, because reports are sent to the primary controller. + +> [!WARNING] Secondary controller support is still experimental and has some limitations: +> +> - Including devices on behalf of the primary controller does not work +> - Devices won't be interviewed by default. Triggering an interview manually may set up the lifelines incorrectly. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000000..5bd34809479e --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,209 @@ +/* + Note to future self: + + If ESLint is ever extremely slow again, check if there are .js and/or .map files in the source directories + and delete them: + + ```bash + find . -type f -name "*.map" | grep ./packages | grep /src/ | xargs -n1 rm + find . -type f -name "*.js" | grep ./packages | grep /src/ | xargs -n1 rm + ``` + + Running `TIMING=1 DEBUG=eslint:cli-engine yarn run lint:ts` helps detect the problem +*/ + +// @ts-check + +import zjs from "@zwave-js/eslint-plugin"; +import unicorn from "eslint-plugin-unicorn"; +import unusedImports from "eslint-plugin-unused-imports"; +import tseslint from "typescript-eslint"; + +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default tseslint.config( + ...tseslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + { + languageOptions: { + parserOptions: { + project: "tsconfig.all.json", + tsconfigRootDir: __dirname, + }, + }, + linterOptions: { + reportUnusedDisableDirectives: true, + }, + plugins: { + "unused-imports": unusedImports, + unicorn, + "@zwave-js": zjs, + }, + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + "@typescript-eslint/no-parameter-properties": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-use-before-define": [ + "error", + { + functions: false, + typedefs: false, + classes: false, + }, + ], + "@typescript-eslint/no-unused-vars": [ + "error", + { + ignoreRestSiblings: true, + argsIgnorePattern: "^_", + }, + ], + "@typescript-eslint/no-object-literal-type-assertion": "off", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/no-non-null-assertion": "off", // This is necessary for Map.has()/get()! + "@typescript-eslint/no-inferrable-types": [ + "error", + { + ignoreProperties: true, + ignoreParameters: true, + }, + ], + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "ts-expect-error": false, + "ts-ignore": true, + "ts-nocheck": true, + "ts-check": false, + }, + ], + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + allowNumber: true, + allowBoolean: true, + // This is necessary to log errors + // TODO: Consider switching to false when we may annotate catch clauses + allowAny: true, + allowNullish: true, + }, + ], + "@typescript-eslint/no-misused-promises": [ + "error", + { + checksVoidReturn: false, + }, + ], + + // Make sure type imports are used where necessary + "@typescript-eslint/consistent-type-imports": [ + "error", + { + fixStyle: "inline-type-imports", + disallowTypeAnnotations: false, + }, + ], + "@typescript-eslint/consistent-type-exports": "error", + + // We can turn this on from time to time but in general these rules + // make our lives harder instead of easier + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-unsafe-enum-comparison": "off", + "@typescript-eslint/no-unsafe-declaration-merging": "off", + + // Although this rule makes sense, it takes about a second to execute (and we don't need it) + "@typescript-eslint/no-implied-eval": "off", + + "@typescript-eslint/explicit-module-boundary-types": [ + "warn", + { allowArgumentsExplicitlyTypedAsAny: true }, + ], + "@typescript-eslint/no-this-alias": "off", + "@typescript-eslint/no-deprecated": "error", + + // Prefer simple property access and declaration without quotes + "dot-notation": "off", + "@typescript-eslint/dot-notation": [ + "error", + { + allowPrivateClassPropertyAccess: true, + allowProtectedClassPropertyAccess: true, + }, + ], + "quote-props": ["error", "as-needed"], + + "unused-imports/no-unused-imports": "error", + + "unicorn/prefer-array-find": ["error", { checkFromLast: true }], + "unicorn/prefer-array-flat-map": "error", + "unicorn/prefer-array-flat": "error", + "unicorn/prefer-array-index-of": "error", + "unicorn/prefer-array-some": "error", + "unicorn/prefer-at": "error", + "unicorn/prefer-includes": "error", + "unicorn/prefer-logical-operator-over-ternary": "error", + "unicorn/prefer-modern-math-apis": "error", + "unicorn/prefer-negative-index": "error", + "unicorn/prefer-node-protocol": "error", + "unicorn/prefer-regexp-test": "error", + "unicorn/prefer-string-slice": "error", + "unicorn/prefer-string-starts-ends-with": "error", + "unicorn/prefer-string-replace-all": "error", + }, + }, + // Disable unnecessarily strict rules for test files + { + files: ["**/*.test.ts"], + rules: { + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-member-return": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/unbound-method": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/dot-notation": "off", + + "@zwave-js/no-debug-in-tests": "error", + }, + }, + // Disable all TS-related rules for JS files + { + files: ["**/*.js"], + rules: { + "@typescript-eslint/*": "off", + }, + }, + // Enable rules from the local plugin for relevant files + { + files: ["packages/cc/src/**/*CC.ts"], + rules: { + "@zwave-js/ccapi-validate-args": "error", + "@zwave-js/no-internal-cc-types": "error", + }, + }, + { + files: ["packages/cc/src/**"], + rules: { + "@zwave-js/consistent-cc-classes": "error", + }, + }, + { + files: ["packages/**/*.ts"], + rules: { + "@zwave-js/no-forbidden-imports": "error", + }, + }, +); diff --git a/maintenance/watch.ts b/maintenance/watch.ts index f0b4d280f1f2..6366fc5aa9ca 100644 --- a/maintenance/watch.ts +++ b/maintenance/watch.ts @@ -1,11 +1,10 @@ import { bold, gray, green, red } from "ansi-colors"; -import cp from "child_process"; import chokidar from "chokidar"; -import crypto from "crypto"; -import fs from "fs"; - -// @ts-expect-error This is available in Node 16, but we're targeting Node 14 -import stream from "stream/promises"; +import cp from "node:child_process"; +import crypto from "node:crypto"; +import fs from "node:fs"; +import { basename, relative, sep } from "node:path"; +import stream from "node:stream/promises"; import type PQueue from "p-queue"; @@ -22,21 +21,44 @@ let hashQueue: PQueue | undefined; let ready = false; let child: cp.ChildProcess | undefined; +const cwd = process.cwd(); const watcher = chokidar.watch( - [ - "packages/**/*.ts", - "packages/**/tsconfig.json", - "packages/**/tsconfig.build.json", - "packages/**/package.json", - "package.json", - "tsconfig.json", - "tsconfig.*.json", - "turbo.json", - "yarn.lock", - ], + ".", { - ignored: ["**/build/**", "**/node_modules/**"], - cwd: process.cwd(), + ignored: (path, stat) => { + const relativePath = relative(cwd, path); + const pathPortions = relativePath.split(sep); + // Ignore build and node_modules directories + if ( + pathPortions.includes("build") + || pathPortions.includes("node_modules") + ) { + return true; + } + if (stat?.isFile()) { + const filename = basename(path); + // Watch .ts files + if (relativePath.endsWith(".ts")) return false; + // Watch tsconfig files + if ( + filename.startsWith("tsconfig.") + && filename.endsWith(".json") + ) { + return false; + } + // Watch npm package files + if (filename === "package.json" || filename === "yarn.lock") { + return false; + } + // Watch turbo.json + if (filename === "turbo.json") return false; + // Ignore all other files + return true; + } + // Watch all directories + return false; + }, + cwd, // atomic: true, }, ); diff --git a/package.json b/package.json index 12fac5c95cec..0bfdf1376cf1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/repo", - "version": "13.3.1", + "version": "13.10.0", "private": true, "description": "Z-Wave driver written entirely in JavaScript/TypeScript", "keywords": [], @@ -28,34 +28,32 @@ "packages/*" ], "devDependencies": { - "@actions/core": "^1.10.1", + "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/github": "^6.0.0", "@alcalzone/jsonl-db": "^3.1.1", "@alcalzone/monopack": "^1.3.0", - "@alcalzone/release-script": "~3.7.3", - "@commitlint/cli": "^19.2.1", - "@commitlint/config-conventional": "^19.1.0", - "@dprint/formatter": "^0.3.0", + "@alcalzone/release-script": "~3.8.0", + "@commitlint/cli": "^19.5.0", + "@commitlint/config-conventional": "^19.5.0", + "@dprint/formatter": "^0.4.1", "@dprint/json": "^0.19.3", - "@dprint/markdown": "^0.17.2", - "@dprint/typescript": "^0.91.1", - "@microsoft/api-extractor": "^7.47.0", + "@dprint/markdown": "^0.17.8", + "@dprint/typescript": "^0.93.0", + "@microsoft/api-extractor": "^7.47.9", "@monorepo-utils/workspaces-to-typescript-project-references": "^2.10.4", "@tsconfig/node18": "^18.2.4", "@types/fs-extra": "^11.0.4", - "@types/node": "^18.19.42", + "@types/node": "^18.19.55", "@types/semver": "^7.5.8", "@types/source-map-support": "^0.5.10", "@types/xml2js": "^0.4.14", - "@typescript-eslint/eslint-plugin": "^7.13.0", - "@typescript-eslint/parser": "^7.13.0", "@zwave-js/cc": "workspace:*", "@zwave-js/config": "workspace:*", "@zwave-js/core": "workspace:*", "@zwave-js/eslint-plugin": "workspace:*", "@zwave-js/flash": "workspace:*", - "@zwave-js/fmt": "^1.0.1", + "@zwave-js/fmt": "^1.0.2", "@zwave-js/host": "workspace:*", "@zwave-js/maintenance": "workspace:*", "@zwave-js/nvmedit": "workspace:*", @@ -64,31 +62,31 @@ "@zwave-js/testing": "workspace:*", "alcalzone-shared": "^4.0.8", "ansi-colors": "^4.1.3", - "chokidar": "^3.6.0", - "comment-json": "^4.2.3", - "commitizen": "^4.3.0", + "chokidar": "^4.0.1", + "comment-json": "^4.2.5", + "commitizen": "^4.3.1", "cz-conventional-changelog": "^3.3.0", - "del-cli": "^5.1.0", + "del-cli": "^6.0.0", "dprint": "^0.47.2", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", - "eslint": "^8.57.0", - "eslint-plugin-deprecation": "^2.0.0", - "eslint-plugin-unicorn": "^52.0.0", - "eslint-plugin-unused-imports": "^3.2.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", + "eslint": "^9.12.0", + "eslint-plugin-unicorn": "^56.0.0", + "eslint-plugin-unused-imports": "patch:eslint-plugin-unused-imports@npm%3A4.1.4#~/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch", "execa": "^5.1.1", "fs-extra": "^11.2.0", - "husky": "^9.1.5", + "husky": "^9.1.6", "json5": "^2.2.3", "jsonc-eslint-parser": "^2.4.0", - "lint-staged": "^15.2.2", + "lint-staged": "^15.2.10", "p-queue": "^8.0.1", "reflect-metadata": "^0.2.2", - "semver": "^7.6.2", + "semver": "^7.6.3", "source-map-support": "^0.5.21", "ts-patch": "3.2.1", - "turbo": "1.13.4", - "typescript": "5.5.3", + "turbo": "2.1.3", + "typescript": "5.6.2", + "typescript-eslint": "^8.8.1", "xml2js": "^0.6.2", "zwave-js": "workspace:*" }, @@ -147,5 +145,5 @@ "path": "./node_modules/cz-conventional-changelog" } }, - "packageManager": "yarn@4.3.1" + "packageManager": "yarn@4.5.0" } diff --git a/packages/cc/cc.api.md b/packages/cc/cc.api.md index 5c965c8cf557..8e862e9d13f3 100644 --- a/packages/cc/cc.api.md +++ b/packages/cc/cc.api.md @@ -38,7 +38,6 @@ import { Duration as Duration_2 } from '@zwave-js/core'; import { EncapsulationFlags } from '@zwave-js/core'; import { EnergyProductionCCAPI } from '../cc/EnergyProductionCC'; import { EntryControlCCAPI } from '../cc/EntryControlCC'; -import { ExpandRecursively } from '../lib/Values'; import { FirmwareUpdateMetaDataCCAPI } from '../cc/FirmwareUpdateMetaDataCC'; import { FLiRS } from '@zwave-js/core'; import { FLiRS as FLiRS_2 } from '@zwave-js/core/safe'; @@ -92,7 +91,6 @@ import { PowerlevelCCAPI } from '../cc/PowerlevelCC'; import { ProtectionCCAPI } from '../cc/ProtectionCC'; import { ProtocolVersion } from '@zwave-js/core'; import { ReadonlyObjectKeyMap } from '@zwave-js/shared/safe'; -import { S2SecurityClass } from '@zwave-js/core'; import { Scale } from '@zwave-js/core/safe'; import { SceneActivationCCAPI } from '../cc/SceneActivationCC'; import { SceneActuatorConfigurationCCAPI } from '../cc/SceneActuatorConfigurationCC'; @@ -233,12 +231,12 @@ export const AlarmSensorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Alarm Sensor"]; property: "supportedSensorTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Alarm Sensor"]; - readonly endpoint: number; - readonly property: "supportedSensorTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Alarm Sensor"]; + readonly endpoint: number; + readonly property: "supportedSensorTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -253,36 +251,31 @@ export const AlarmSensorCCValues: Readonly<{ readonly internal: true; }; }; - duration: ((sensorType: AlarmSensorType) => ExpandRecursively< { - readonly meta: { - readonly unit: "s"; - readonly label: `${string} duration`; - readonly description: "For how long the alarm should be active"; - readonly ccSpecific: { - readonly sensorType: AlarmSensorType; - }; - readonly writeable: false; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Alarm Sensor"]; - property: "duration"; - propertyKey: AlarmSensorType; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Alarm Sensor"]; - property: "duration"; - propertyKey: AlarmSensorType; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + duration: ((sensorType: AlarmSensorType) => { + readonly meta: { + readonly unit: "s"; + readonly label: `${string} duration`; + readonly description: "For how long the alarm should be active"; + readonly ccSpecific: { + readonly sensorType: AlarmSensorType; + }; + readonly writeable: false; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Alarm Sensor"]; + property: "duration"; + propertyKey: AlarmSensorType; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Alarm Sensor"]; + readonly endpoint: number; + readonly property: "duration"; + readonly propertyKey: AlarmSensorType; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -292,37 +285,32 @@ export const AlarmSensorCCValues: Readonly<{ readonly autoCreate: true; }; }; - severity: ((sensorType: AlarmSensorType) => ExpandRecursively< { - readonly meta: { - readonly min: 1; - readonly max: 100; - readonly unit: "%"; - readonly label: `${string} severity`; - readonly ccSpecific: { - readonly sensorType: AlarmSensorType; - }; - readonly writeable: false; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Alarm Sensor"]; - property: "severity"; - propertyKey: AlarmSensorType; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Alarm Sensor"]; - property: "severity"; - propertyKey: AlarmSensorType; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + severity: ((sensorType: AlarmSensorType) => { + readonly meta: { + readonly min: 1; + readonly max: 100; + readonly unit: "%"; + readonly label: `${string} severity`; + readonly ccSpecific: { + readonly sensorType: AlarmSensorType; + }; + readonly writeable: false; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Alarm Sensor"]; + property: "severity"; + propertyKey: AlarmSensorType; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Alarm Sensor"]; + readonly endpoint: number; + readonly property: "severity"; + readonly propertyKey: AlarmSensorType; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -332,35 +320,30 @@ export const AlarmSensorCCValues: Readonly<{ readonly autoCreate: true; }; }; - state: ((sensorType: AlarmSensorType) => ExpandRecursively< { - readonly meta: { - readonly label: `${string} state`; - readonly description: "Whether the alarm is active"; - readonly ccSpecific: { - readonly sensorType: AlarmSensorType; - }; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Alarm Sensor"]; - property: "state"; - propertyKey: AlarmSensorType; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Alarm Sensor"]; - property: "state"; - propertyKey: AlarmSensorType; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + state: ((sensorType: AlarmSensorType) => { + readonly meta: { + readonly label: `${string} state`; + readonly description: "Whether the alarm is active"; + readonly ccSpecific: { + readonly sensorType: AlarmSensorType; + }; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Alarm Sensor"]; + property: "state"; + propertyKey: AlarmSensorType; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Alarm Sensor"]; + readonly endpoint: number; + readonly property: "state"; + readonly propertyKey: AlarmSensorType; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -635,30 +618,25 @@ export interface AssociationCCSupportedGroupingsReportOptions extends CCCommandO // // @public (undocumented) export const AssociationCCValues: Readonly<{ - nodeIds: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Association; - property: "nodeIds"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Association; - property: "nodeIds"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + nodeIds: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Association; + property: "nodeIds"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Association; + readonly endpoint: number; + readonly property: "nodeIds"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -668,30 +646,25 @@ export const AssociationCCValues: Readonly<{ readonly internal: true; }; }; - maxNodes: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Association; - property: "maxNodes"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Association; - property: "maxNodes"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + maxNodes: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Association; + property: "maxNodes"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Association; + readonly endpoint: number; + readonly property: "maxNodes"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -706,12 +679,12 @@ export const AssociationCCValues: Readonly<{ commandClass: CommandClasses.Association; property: "groupCount"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Association; - readonly endpoint: number; - readonly property: "groupCount"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Association; + readonly endpoint: number; + readonly property: "groupCount"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -731,12 +704,12 @@ export const AssociationCCValues: Readonly<{ commandClass: CommandClasses.Association; property: "hasLifeline"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Association; - readonly endpoint: number; - readonly property: "hasLifeline"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Association; + readonly endpoint: number; + readonly property: "hasLifeline"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -983,30 +956,25 @@ export interface AssociationGroupInfoCCNameReportOptions extends CCCommandOption // // @public (undocumented) export const AssociationGroupInfoCCValues: Readonly<{ - commands: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Association Group Information"]; - property: "issuedCommands"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Association Group Information"]; - property: "issuedCommands"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + commands: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Association Group Information"]; + property: "issuedCommands"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Association Group Information"]; + readonly endpoint: number; + readonly property: "issuedCommands"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -1016,30 +984,25 @@ export const AssociationGroupInfoCCValues: Readonly<{ readonly internal: true; }; }; - groupInfo: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Association Group Information"]; - property: "info"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Association Group Information"]; - property: "info"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + groupInfo: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Association Group Information"]; + property: "info"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Association Group Information"]; + readonly endpoint: number; + readonly property: "info"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -1049,30 +1012,25 @@ export const AssociationGroupInfoCCValues: Readonly<{ readonly internal: true; }; }; - groupName: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Association Group Information"]; - property: "name"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Association Group Information"]; - property: "name"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + groupName: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Association Group Information"]; + property: "name"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Association Group Information"]; + readonly endpoint: number; + readonly property: "name"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -1087,12 +1045,12 @@ export const AssociationGroupInfoCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Association Group Information"]; property: "hasDynamicInfo"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Association Group Information"]; - readonly endpoint: number; - readonly property: "hasDynamicInfo"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Association Group Information"]; + readonly endpoint: number; + readonly property: "hasDynamicInfo"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -1613,36 +1571,31 @@ export class BarrierOperatorCCSignalingCapabilitiesReport extends BarrierOperato // // @public (undocumented) export const BarrierOperatorCCValues: Readonly<{ - signalingState: ((subsystemType: SubsystemType) => ExpandRecursively< { - readonly meta: { - readonly label: `Signaling State (${string})`; - readonly states: { - [x: number]: string; - }; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Barrier Operator"]; - property: "signalingState"; - propertyKey: SubsystemType; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Barrier Operator"]; - property: "signalingState"; - propertyKey: SubsystemType; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + signalingState: ((subsystemType: SubsystemType) => { + readonly meta: { + readonly label: `Signaling State (${string})`; + readonly states: { + [x: number]: string; + }; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Barrier Operator"]; + property: "signalingState"; + propertyKey: SubsystemType; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; + readonly endpoint: number; + readonly property: "signalingState"; + readonly propertyKey: SubsystemType; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -1657,12 +1610,12 @@ export const BarrierOperatorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Barrier Operator"]; property: "currentState"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; - readonly endpoint: number; - readonly property: "currentState"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; + readonly endpoint: number; + readonly property: "currentState"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current Barrier State"; readonly states: { @@ -1688,12 +1641,12 @@ export const BarrierOperatorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Barrier Operator"]; property: "targetState"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; - readonly endpoint: number; - readonly property: "targetState"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; + readonly endpoint: number; + readonly property: "targetState"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Target Barrier State"; readonly states: { @@ -1719,12 +1672,12 @@ export const BarrierOperatorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Barrier Operator"]; property: "position"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; - readonly endpoint: number; - readonly property: "position"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; + readonly endpoint: number; + readonly property: "position"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Barrier Position"; readonly unit: "%"; @@ -1748,12 +1701,12 @@ export const BarrierOperatorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Barrier Operator"]; property: "supportedSubsystemTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; - readonly endpoint: number; - readonly property: "supportedSubsystemTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Barrier Operator"]; + readonly endpoint: number; + readonly property: "supportedSubsystemTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -1887,12 +1840,12 @@ export const BasicCCValues: Readonly<{ commandClass: CommandClasses.Basic; property: "event"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Basic; - readonly endpoint: number; - readonly property: "event"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Basic; + readonly endpoint: number; + readonly property: "event"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Event value"; readonly writeable: false; @@ -1915,12 +1868,12 @@ export const BasicCCValues: Readonly<{ commandClass: CommandClasses.Basic; property: "restorePrevious"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Basic; - readonly endpoint: number; - readonly property: "restorePrevious"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Basic; + readonly endpoint: number; + readonly property: "restorePrevious"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Restore previous value"; readonly states: { @@ -1944,12 +1897,12 @@ export const BasicCCValues: Readonly<{ commandClass: CommandClasses.Basic; property: "duration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Basic; - readonly endpoint: number; - readonly property: "duration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Basic; + readonly endpoint: number; + readonly property: "duration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Remaining duration"; readonly minVersion: number; @@ -1971,12 +1924,12 @@ export const BasicCCValues: Readonly<{ commandClass: CommandClasses.Basic; property: "targetValue"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Basic; - readonly endpoint: number; - readonly property: "targetValue"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Basic; + readonly endpoint: number; + readonly property: "targetValue"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Target value"; readonly forceCreation: boolean; @@ -2000,12 +1953,12 @@ export const BasicCCValues: Readonly<{ commandClass: CommandClasses.Basic; property: "currentValue"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Basic; - readonly endpoint: number; - readonly property: "currentValue"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Basic; + readonly endpoint: number; + readonly property: "currentValue"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current value"; readonly writeable: false; @@ -2141,12 +2094,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "lowTemperatureStatus"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "lowTemperatureStatus"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "lowTemperatureStatus"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Battery temperature is low"; readonly writeable: false; @@ -2167,12 +2120,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "disconnected"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "disconnected"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "disconnected"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Battery is disconnected"; readonly writeable: false; @@ -2193,12 +2146,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "rechargeOrReplace"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "rechargeOrReplace"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "rechargeOrReplace"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Recharge or replace"; readonly states: { @@ -2224,12 +2177,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "lowFluid"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "lowFluid"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "lowFluid"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Fluid is low"; readonly writeable: false; @@ -2250,12 +2203,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "overheating"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "overheating"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "overheating"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Overheating"; readonly writeable: false; @@ -2276,12 +2229,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "backup"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "backup"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "backup"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Used as backup"; readonly writeable: false; @@ -2302,12 +2255,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "rechargeable"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "rechargeable"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "rechargeable"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Rechargeable"; readonly writeable: false; @@ -2328,12 +2281,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "chargingStatus"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "chargingStatus"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "chargingStatus"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Charging status"; readonly states: { @@ -2359,12 +2312,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "temperature"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "temperature"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "temperature"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Temperature"; readonly writeable: false; @@ -2387,12 +2340,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "maximumCapacity"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "maximumCapacity"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "maximumCapacity"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly max: 100; readonly unit: "%"; @@ -2416,12 +2369,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "isLow"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "isLow"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "isLow"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Low battery level"; readonly writeable: false; @@ -2442,12 +2395,12 @@ export const BatteryCCValues: Readonly<{ commandClass: CommandClasses.Battery; property: "level"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Battery; - readonly endpoint: number; - readonly property: "level"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Battery; + readonly endpoint: number; + readonly property: "level"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly max: 100; readonly unit: "%"; @@ -2600,31 +2553,27 @@ export interface BinarySensorCCSupportedReportOptions { // // @public (undocumented) export const BinarySensorCCValues: Readonly<{ - state: ((sensorType: BinarySensorType) => ExpandRecursively< { - readonly meta: { - readonly label: `Sensor state (${string})`; - readonly ccSpecific: { - readonly sensorType: BinarySensorType; - }; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Binary Sensor"]; - property: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Binary Sensor"]; - property: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + state: ((sensorType: BinarySensorType) => { + readonly meta: { + readonly label: `Sensor state (${string})`; + readonly ccSpecific: { + readonly sensorType: BinarySensorType; + }; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Binary Sensor"]; + property: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Binary Sensor"]; + readonly endpoint: number; + readonly property: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -2639,12 +2588,12 @@ export const BinarySensorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Binary Sensor"]; property: "supportedSensorTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Binary Sensor"]; - readonly endpoint: number; - readonly property: "supportedSensorTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Binary Sensor"]; + readonly endpoint: number; + readonly property: "supportedSensorTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -2799,12 +2748,12 @@ export const BinarySwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Binary Switch"]; property: "duration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Binary Switch"]; - readonly endpoint: number; - readonly property: "duration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Binary Switch"]; + readonly endpoint: number; + readonly property: "duration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Remaining duration"; readonly writeable: false; @@ -2825,12 +2774,12 @@ export const BinarySwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Binary Switch"]; property: "targetValue"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Binary Switch"]; - readonly endpoint: number; - readonly property: "targetValue"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Binary Switch"]; + readonly endpoint: number; + readonly property: "targetValue"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Target value"; readonly valueChangeOptions: readonly ["transitionDuration"]; @@ -2852,12 +2801,12 @@ export const BinarySwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Binary Switch"]; property: "currentValue"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Binary Switch"]; - readonly endpoint: number; - readonly property: "currentValue"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Binary Switch"]; + readonly endpoint: number; + readonly property: "currentValue"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current value"; readonly writeable: false; @@ -3262,33 +3211,28 @@ export class CentralSceneCCSupportedReport extends CentralSceneCC { // // @public (undocumented) export const CentralSceneCCValues: Readonly<{ - scene: ((sceneNumber: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Scene ${string}`; - readonly writeable: false; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Central Scene"]; - property: "scene"; - propertyKey: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Central Scene"]; - property: "scene"; - propertyKey: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + scene: ((sceneNumber: number) => { + readonly meta: { + readonly label: `Scene ${string}`; + readonly writeable: false; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Central Scene"]; + property: "scene"; + propertyKey: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Central Scene"]; + readonly endpoint: number; + readonly property: "scene"; + readonly propertyKey: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly secret: false; readonly internal: false; @@ -3303,12 +3247,12 @@ export const CentralSceneCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Central Scene"]; property: "slowRefresh"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Central Scene"]; - readonly endpoint: number; - readonly property: "slowRefresh"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Central Scene"]; + readonly endpoint: number; + readonly property: "slowRefresh"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Send held down notifications at a slow rate"; readonly description: "When this is true, KeyHeldDown notifications are sent every 55s. When this is false, the notifications are sent every 200ms."; @@ -3330,12 +3274,12 @@ export const CentralSceneCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Central Scene"]; property: "supportedKeyAttributes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Central Scene"]; - readonly endpoint: number; - readonly property: "supportedKeyAttributes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Central Scene"]; + readonly endpoint: number; + readonly property: "supportedKeyAttributes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -3355,12 +3299,12 @@ export const CentralSceneCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Central Scene"]; property: "supportsSlowRefresh"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Central Scene"]; - readonly endpoint: number; - readonly property: "supportsSlowRefresh"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Central Scene"]; + readonly endpoint: number; + readonly property: "supportsSlowRefresh"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -3380,12 +3324,12 @@ export const CentralSceneCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Central Scene"]; property: "sceneCount"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Central Scene"]; - readonly endpoint: number; - readonly property: "sceneCount"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Central Scene"]; + readonly endpoint: number; + readonly property: "sceneCount"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -3577,31 +3521,26 @@ export interface ClimateControlScheduleCCSetOptions extends CCCommandOptions { // // @public (undocumented) export const ClimateControlScheduleCCValues: Readonly<{ - schedule: ((weekday: Weekday) => ExpandRecursively< { - readonly meta: { - readonly label: `Schedule (${string})`; - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Climate Control Schedule"]; - property: "schedule"; - propertyKey: Weekday; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Climate Control Schedule"]; - property: "schedule"; - propertyKey: Weekday; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + schedule: ((weekday: Weekday) => { + readonly meta: { + readonly label: `Schedule (${string})`; + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Climate Control Schedule"]; + property: "schedule"; + propertyKey: Weekday; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Climate Control Schedule"]; + readonly endpoint: number; + readonly property: "schedule"; + readonly propertyKey: Weekday; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -3616,12 +3555,12 @@ export const ClimateControlScheduleCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Climate Control Schedule"]; property: "overrideState"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Climate Control Schedule"]; - readonly endpoint: number; - readonly property: "overrideState"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Climate Control Schedule"]; + readonly endpoint: number; + readonly property: "overrideState"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Override state"; readonly min: -12.8; @@ -3643,12 +3582,12 @@ export const ClimateControlScheduleCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Climate Control Schedule"]; property: "overrideType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Climate Control Schedule"]; - readonly endpoint: number; - readonly property: "overrideType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Climate Control Schedule"]; + readonly endpoint: number; + readonly property: "overrideType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Override type"; readonly states: { @@ -3990,35 +3929,30 @@ export interface ColorSwitchCCSupportedReportOptions { // // @public (undocumented) export const ColorSwitchCCValues: Readonly<{ - targetColorChannel: ((component: ColorComponent) => ExpandRecursively< { - readonly meta: { - readonly label: `Target value (${string})`; - readonly description: `The target value of the ${string} channel.`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Color Switch"]; - property: "targetColor"; - propertyKey: ColorComponent; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Color Switch"]; - property: "targetColor"; - propertyKey: ColorComponent; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + targetColorChannel: ((component: ColorComponent) => { + readonly meta: { + readonly label: `Target value (${string})`; + readonly description: `The target value of the ${string} channel.`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Color Switch"]; + property: "targetColor"; + propertyKey: ColorComponent; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "targetColor"; + readonly propertyKey: ColorComponent; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -4028,34 +3962,29 @@ export const ColorSwitchCCValues: Readonly<{ readonly autoCreate: true; }; }; - currentColorChannel: ((component: ColorComponent) => ExpandRecursively< { - readonly meta: { - readonly label: `Current value (${string})`; - readonly description: `The current value of the ${string} channel.`; - readonly writeable: false; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Color Switch"]; - property: "currentColor"; - propertyKey: ColorComponent; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Color Switch"]; - property: "currentColor"; - propertyKey: ColorComponent; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + currentColorChannel: ((component: ColorComponent) => { + readonly meta: { + readonly label: `Current value (${string})`; + readonly description: `The current value of the ${string} channel.`; + readonly writeable: false; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Color Switch"]; + property: "currentColor"; + propertyKey: ColorComponent; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "currentColor"; + readonly propertyKey: ColorComponent; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -4070,12 +3999,12 @@ export const ColorSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Color Switch"]; property: "hexColor"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; - readonly endpoint: number; - readonly property: "hexColor"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "hexColor"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly minLength: 6; readonly maxLength: 7; @@ -4099,12 +4028,12 @@ export const ColorSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Color Switch"]; property: "duration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; - readonly endpoint: number; - readonly property: "duration"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "duration"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Remaining duration"; readonly writeable: false; @@ -4125,12 +4054,12 @@ export const ColorSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Color Switch"]; property: "targetColor"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; - readonly endpoint: number; - readonly property: "targetColor"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "targetColor"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Target color"; readonly valueChangeOptions: readonly ["transitionDuration"]; @@ -4152,12 +4081,12 @@ export const ColorSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Color Switch"]; property: "currentColor"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; - readonly endpoint: number; - readonly property: "currentColor"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "currentColor"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Current color"; readonly writeable: false; @@ -4178,12 +4107,12 @@ export const ColorSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Color Switch"]; property: "supportsHexColor"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; - readonly endpoint: number; - readonly property: "supportsHexColor"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "supportsHexColor"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -4203,12 +4132,12 @@ export const ColorSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Color Switch"]; property: "supportedColorComponents"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; - readonly endpoint: number; - readonly property: "supportedColorComponents"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Color Switch"]; + readonly endpoint: number; + readonly property: "supportedColorComponents"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -4789,30 +4718,25 @@ export type ConfigurationCCSetOptions = CCCommandOptions & ({ // // @public (undocumented) export const ConfigurationCCValues: Readonly<{ - paramInformation: ((parameter: number, bitMask?: number | undefined) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Configuration; - property: number; - propertyKey: number | undefined; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Configuration; - property: number; - propertyKey: number | undefined; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + paramInformation: ((parameter: number, bitMask?: number | undefined) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Configuration; + property: number; + propertyKey: number | undefined; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Configuration; + readonly endpoint: number; + readonly property: number; + readonly propertyKey: number | undefined; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -4827,12 +4751,12 @@ export const ConfigurationCCValues: Readonly<{ commandClass: CommandClasses.Configuration; property: "isParamInformationFromConfig"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Configuration; - readonly endpoint: number; - readonly property: "isParamInformationFromConfig"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Configuration; + readonly endpoint: number; + readonly property: "isParamInformationFromConfig"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5201,12 +5125,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "doorStatus"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "doorStatus"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "doorStatus"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current status of the door"; readonly writeable: false; @@ -5219,7 +5143,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly minVersion: 1; readonly supportsEndpoints: true; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; doorSupported: { @@ -5227,12 +5151,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "doorSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "doorSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "doorSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5252,12 +5176,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "boltStatus"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "boltStatus"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "boltStatus"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current status of the bolt"; readonly writeable: false; @@ -5270,7 +5194,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly minVersion: 1; readonly supportsEndpoints: true; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; boltSupported: { @@ -5278,12 +5202,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "boltSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "boltSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "boltSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5303,12 +5227,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "latchStatus"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "latchStatus"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "latchStatus"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current status of the latch"; readonly writeable: false; @@ -5321,7 +5245,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly minVersion: 1; readonly supportsEndpoints: true; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; latchSupported: { @@ -5329,12 +5253,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "latchSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "latchSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "latchSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5354,12 +5278,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "blockToBlock"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "blockToBlock"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "blockToBlock"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Block-to-block functionality enabled"; readonly type: "boolean"; @@ -5372,7 +5296,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly supportsEndpoints: true; readonly minVersion: 4; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; blockToBlockSupported: { @@ -5380,12 +5304,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "blockToBlockSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "blockToBlockSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "blockToBlockSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5405,12 +5329,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "twistAssist"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "twistAssist"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "twistAssist"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Twist Assist enabled"; readonly type: "boolean"; @@ -5423,7 +5347,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly supportsEndpoints: true; readonly minVersion: 4; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; twistAssistSupported: { @@ -5431,12 +5355,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "twistAssistSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "twistAssistSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "twistAssistSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5456,12 +5380,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "holdAndReleaseTime"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "holdAndReleaseTime"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "holdAndReleaseTime"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Duration in seconds the latch stays retracted"; readonly min: 0; @@ -5476,7 +5400,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly supportsEndpoints: true; readonly minVersion: 4; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; holdAndReleaseSupported: { @@ -5484,12 +5408,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "holdAndReleaseSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "holdAndReleaseSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "holdAndReleaseSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5509,12 +5433,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "autoRelockTime"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "autoRelockTime"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "autoRelockTime"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Duration in seconds until lock returns to secure state"; readonly min: 0; @@ -5529,7 +5453,7 @@ export const DoorLockCCValues: Readonly<{ readonly internal: false; readonly supportsEndpoints: true; readonly minVersion: 4; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; autoRelockSupported: { @@ -5537,12 +5461,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "autoRelockSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "autoRelockSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "autoRelockSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5562,12 +5486,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "lockTimeout"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "lockTimeout"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "lockTimeout"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Seconds until lock mode times out"; readonly writeable: false; @@ -5590,12 +5514,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "lockTimeoutConfiguration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "lockTimeoutConfiguration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "lockTimeoutConfiguration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Duration of timed mode in seconds"; readonly min: 0; @@ -5618,12 +5542,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "operationType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "operationType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "operationType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Lock operation type"; readonly states: { @@ -5649,12 +5573,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "insideHandlesCanOpenDoor"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "insideHandlesCanOpenDoor"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "insideHandlesCanOpenDoor"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Which inside handles can open the door (actual status)"; readonly writeable: false; @@ -5675,12 +5599,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "insideHandlesCanOpenDoorConfiguration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "insideHandlesCanOpenDoorConfiguration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "insideHandlesCanOpenDoorConfiguration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Which inside handles can open the door (configuration)"; readonly type: "any"; @@ -5701,12 +5625,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "supportedInsideHandles"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "supportedInsideHandles"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "supportedInsideHandles"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5726,12 +5650,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "outsideHandlesCanOpenDoor"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "outsideHandlesCanOpenDoor"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "outsideHandlesCanOpenDoor"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Which outside handles can open the door (actual status)"; readonly writeable: false; @@ -5752,12 +5676,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "outsideHandlesCanOpenDoorConfiguration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "outsideHandlesCanOpenDoorConfiguration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "outsideHandlesCanOpenDoorConfiguration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Which outside handles can open the door (configuration)"; readonly type: "any"; @@ -5778,12 +5702,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "supportedOutsideHandles"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "supportedOutsideHandles"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "supportedOutsideHandles"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -5803,12 +5727,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "duration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "duration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "duration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Remaining duration until target lock mode"; readonly writeable: false; @@ -5829,12 +5753,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "currentMode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "currentMode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "currentMode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current lock mode"; readonly states: { @@ -5860,12 +5784,12 @@ export const DoorLockCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock"]; property: "targetMode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock"]; - readonly endpoint: number; - readonly property: "targetMode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock"]; + readonly endpoint: number; + readonly property: "targetMode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Target lock mode"; readonly states: { @@ -5982,12 +5906,12 @@ export const DoorLockLoggingCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Door Lock Logging"]; property: "recordsCount"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Door Lock Logging"]; - readonly endpoint: number; - readonly property: "recordsCount"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Door Lock Logging"]; + readonly endpoint: number; + readonly property: "recordsCount"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -6264,31 +6188,26 @@ export interface EnergyProductionCCReportOptions extends CCCommandOptions { // // @public (undocumented) export const EnergyProductionCCValues: Readonly<{ - value: ((parameter: EnergyProductionParameter) => ExpandRecursively< { - readonly meta: { - readonly label: string; - readonly writeable: false; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Energy Production"]; - property: "value"; - propertyKey: EnergyProductionParameter; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Energy Production"]; - property: "value"; - propertyKey: EnergyProductionParameter; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + value: ((parameter: EnergyProductionParameter) => { + readonly meta: { + readonly label: string; + readonly writeable: false; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Energy Production"]; + property: "value"; + propertyKey: EnergyProductionParameter; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Energy Production"]; + readonly endpoint: number; + readonly property: "value"; + readonly propertyKey: EnergyProductionParameter; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -6464,12 +6383,12 @@ export const EntryControlCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Entry Control"]; property: "supportedKeys"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Entry Control"]; - readonly endpoint: number; - readonly property: "supportedKeys"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Entry Control"]; + readonly endpoint: number; + readonly property: "supportedKeys"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -6489,12 +6408,12 @@ export const EntryControlCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Entry Control"]; property: "supportedEventTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Entry Control"]; - readonly endpoint: number; - readonly property: "supportedEventTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Entry Control"]; + readonly endpoint: number; + readonly property: "supportedEventTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -6514,12 +6433,12 @@ export const EntryControlCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Entry Control"]; property: "supportedDataTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Entry Control"]; - readonly endpoint: number; - readonly property: "supportedDataTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Entry Control"]; + readonly endpoint: number; + readonly property: "supportedDataTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -6539,12 +6458,12 @@ export const EntryControlCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Entry Control"]; property: "keyCacheTimeout"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Entry Control"]; - readonly endpoint: number; - readonly property: "keyCacheTimeout"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Entry Control"]; + readonly endpoint: number; + readonly property: "keyCacheTimeout"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Key cache timeout"; readonly unit: "seconds"; @@ -6569,12 +6488,12 @@ export const EntryControlCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Entry Control"]; property: "keyCacheSize"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Entry Control"]; - readonly endpoint: number; - readonly property: "keyCacheSize"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Entry Control"]; + readonly endpoint: number; + readonly property: "keyCacheSize"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Key cache size"; readonly description: "Number of character that must be stored before sending"; @@ -6843,8 +6762,20 @@ export type FirmwareUpdateCapabilities = { readonly firmwareTargets: readonly number[]; readonly continuesToFunction: MaybeNotKnown; readonly supportsActivation: MaybeNotKnown; + readonly supportsResuming: MaybeNotKnown; + readonly supportsNonSecureTransfer: MaybeNotKnown; }; +// Warning: (ae-missing-release-tag) "FirmwareUpdateInitResult" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface FirmwareUpdateInitResult { + nonSecureTransfer?: boolean; + resume?: boolean; + // (undocumented) + status: FirmwareUpdateRequestStatus; +} + // Warning: (ae-missing-release-tag) "FirmwareUpdateMetaData" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -6867,6 +6798,10 @@ export interface FirmwareUpdateMetaData { maxFragmentSize?: number; // (undocumented) supportsActivation: MaybeNotKnown; + // (undocumented) + supportsNonSecureTransfer?: MaybeNotKnown; + // (undocumented) + supportsResuming?: MaybeNotKnown; } // Warning: (ae-missing-release-tag) "FirmwareUpdateMetaDataCC" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -6984,6 +6919,10 @@ export class FirmwareUpdateMetaDataCCMetaDataReport extends FirmwareUpdateMetaDa // (undocumented) readonly supportsActivation: MaybeNotKnown; // (undocumented) + readonly supportsNonSecureTransfer?: MaybeNotKnown; + // (undocumented) + readonly supportsResuming?: MaybeNotKnown; + // (undocumented) toLogEntry(host?: ZWaveValueHost_2): MessageOrCCLogEntry_2; } @@ -7009,6 +6948,10 @@ export interface FirmwareUpdateMetaDataCCMetaDataReportOptions { maxFragmentSize?: number; // (undocumented) supportsActivation?: MaybeNotKnown; + // (undocumented) + supportsNonSecureTransfer?: MaybeNotKnown; + // (undocumented) + supportsResuming?: MaybeNotKnown; } // Warning: (ae-missing-release-tag) "FirmwareUpdateMetaDataCCPrepareGet" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -7110,6 +7053,10 @@ export class FirmwareUpdateMetaDataCCRequestGet extends FirmwareUpdateMetaDataCC // (undocumented) manufacturerId: number; // (undocumented) + nonSecureTransfer?: boolean; + // (undocumented) + resume?: boolean; + // (undocumented) serialize(): Buffer; // (undocumented) toLogEntry(host?: ZWaveValueHost_2): MessageOrCCLogEntry_2; @@ -7127,6 +7074,8 @@ export type FirmwareUpdateMetaDataCCRequestGetOptions = { fragmentSize: number; activation?: boolean; hardwareVersion?: number; + resume?: boolean; + nonSecureTransfer?: boolean; }>; // Warning: (ae-missing-release-tag) "FirmwareUpdateMetaDataCCRequestReport" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -7135,6 +7084,10 @@ export type FirmwareUpdateMetaDataCCRequestGetOptions = { export class FirmwareUpdateMetaDataCCRequestReport extends FirmwareUpdateMetaDataCC { constructor(host: ZWaveHost_2, options: CommandClassDeserializationOptions); // (undocumented) + nonSecureTransfer?: boolean; + // (undocumented) + resume?: boolean; + // (undocumented) readonly status: FirmwareUpdateRequestStatus; // (undocumented) toLogEntry(host?: ZWaveValueHost_2): MessageOrCCLogEntry_2; @@ -7156,17 +7109,67 @@ export class FirmwareUpdateMetaDataCCStatusReport extends FirmwareUpdateMetaData // // @public (undocumented) export const FirmwareUpdateMetaDataCCValues: Readonly<{ + supportsNonSecureTransfer: { + readonly id: { + commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + property: "supportsNonSecureTransfer"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + readonly endpoint: number; + readonly property: "supportsNonSecureTransfer"; + }; + readonly is: (valueId: ValueID_2) => boolean; + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly options: { + readonly stateful: true; + readonly secret: false; + readonly minVersion: 1; + readonly supportsEndpoints: true; + readonly autoCreate: true; + readonly internal: true; + }; + }; + supportsResuming: { + readonly id: { + commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + property: "supportsResuming"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + readonly endpoint: number; + readonly property: "supportsResuming"; + }; + readonly is: (valueId: ValueID_2) => boolean; + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly options: { + readonly stateful: true; + readonly secret: false; + readonly minVersion: 1; + readonly supportsEndpoints: true; + readonly autoCreate: true; + readonly internal: true; + }; + }; continuesToFunction: { readonly id: { commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; property: "continuesToFunction"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; - readonly endpoint: number; - readonly property: "continuesToFunction"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + readonly endpoint: number; + readonly property: "continuesToFunction"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -7186,12 +7189,12 @@ export const FirmwareUpdateMetaDataCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; property: "additionalFirmwareIDs"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; - readonly endpoint: number; - readonly property: "additionalFirmwareIDs"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + readonly endpoint: number; + readonly property: "additionalFirmwareIDs"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -7211,12 +7214,12 @@ export const FirmwareUpdateMetaDataCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; property: "firmwareUpgradable"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; - readonly endpoint: number; - readonly property: "firmwareUpgradable"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + readonly endpoint: number; + readonly property: "firmwareUpgradable"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -7236,12 +7239,12 @@ export const FirmwareUpdateMetaDataCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; property: "supportsActivation"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; - readonly endpoint: number; - readonly property: "supportsActivation"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Firmware Update Meta Data"]; + readonly endpoint: number; + readonly property: "supportsActivation"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -7286,6 +7289,14 @@ export enum FirmwareUpdateMetaDataCommand { StatusReport = 7 } +// Warning: (ae-missing-release-tag) "FirmwareUpdateOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface FirmwareUpdateOptions { + nonSecureTransfer?: boolean; + resume?: boolean; +} + // Warning: (ae-missing-release-tag) "FirmwareUpdateProgress" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -7647,12 +7658,12 @@ export const HumidityControlModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Humidity Control Mode"]; property: "supportedModes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Humidity Control Mode"]; - readonly endpoint: number; - readonly property: "supportedModes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Humidity Control Mode"]; + readonly endpoint: number; + readonly property: "supportedModes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -7672,12 +7683,12 @@ export const HumidityControlModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Humidity Control Mode"]; property: "mode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Humidity Control Mode"]; - readonly endpoint: number; - readonly property: "mode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Humidity Control Mode"]; + readonly endpoint: number; + readonly property: "mode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly states: { [x: number]: string; @@ -7766,12 +7777,12 @@ export const HumidityControlOperatingStateCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Humidity Control Operating State"]; property: "state"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Humidity Control Operating State"]; - readonly endpoint: number; - readonly property: "state"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Humidity Control Operating State"]; + readonly endpoint: number; + readonly property: "state"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly states: { [x: number]: string; @@ -7994,33 +8005,28 @@ export class HumidityControlSetpointCCSupportedReport extends HumidityControlSet // // @public (undocumented) export const HumidityControlSetpointCCValues: Readonly<{ - setpointScale: ((setpointType: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Setpoint scale (${string})`; - readonly writeable: false; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; - property: "setpointScale"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; - property: "setpointScale"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + setpointScale: ((setpointType: number) => { + readonly meta: { + readonly label: `Setpoint scale (${string})`; + readonly writeable: false; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; + property: "setpointScale"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; + readonly endpoint: number; + readonly property: "setpointScale"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -8030,34 +8036,29 @@ export const HumidityControlSetpointCCValues: Readonly<{ readonly autoCreate: true; }; }; - setpoint: ((setpointType: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Setpoint (${string})`; - readonly ccSpecific: { - readonly setpointType: number; - }; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; - property: "setpoint"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; - property: "setpoint"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + setpoint: ((setpointType: number) => { + readonly meta: { + readonly label: `Setpoint (${string})`; + readonly ccSpecific: { + readonly setpointType: number; + }; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; + property: "setpoint"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; + readonly endpoint: number; + readonly property: "setpoint"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -8072,12 +8073,12 @@ export const HumidityControlSetpointCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; property: "supportedSetpointTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; - readonly endpoint: number; - readonly property: "supportedSetpointTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Humidity Control Setpoint"]; + readonly endpoint: number; + readonly property: "supportedSetpointTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -8271,6 +8272,12 @@ export const inclusionTimeouts: Readonly<{ readonly TA5: 10000; readonly TAI1: 240000; readonly TAI2: 240000; + readonly TB1: 30000; + readonly TB2: 240000; + readonly TB3: 10000; + readonly TB4: 10000; + readonly TB5: 10000; + readonly TBI1: 240000; }>; // Warning: (ae-missing-release-tag) "IndicatorCC" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -8470,27 +8477,23 @@ export interface IndicatorCCSupportedReportOptions extends CCCommandOptions { // // @public (undocumented) export const IndicatorCCValues: Readonly<{ - indicatorDescription: ((indicatorId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Indicator; - property: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Indicator; - property: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + indicatorDescription: ((indicatorId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Indicator; + property: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -8500,34 +8503,29 @@ export const IndicatorCCValues: Readonly<{ readonly minVersion: 4; }; }; - valueV2: ((indicatorId: number, propertyId: number) => ExpandRecursively< { - readonly meta: { - readonly ccSpecific: { - indicatorId: number; - propertyId: number; - }; - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Indicator; - property: number; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Indicator; - property: number; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + valueV2: ((indicatorId: number, propertyId: number) => { + readonly meta: { + readonly ccSpecific: { + indicatorId: number; + propertyId: number; + }; + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Indicator; + property: number; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: number; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -8537,30 +8535,25 @@ export const IndicatorCCValues: Readonly<{ readonly minVersion: 2; }; }; - supportedPropertyIDs: ((indicatorId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Indicator; - property: "supportedPropertyIDs"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Indicator; - property: "supportedPropertyIDs"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + supportedPropertyIDs: ((indicatorId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Indicator; + property: "supportedPropertyIDs"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: "supportedPropertyIDs"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -8575,12 +8568,12 @@ export const IndicatorCCValues: Readonly<{ commandClass: CommandClasses.Indicator; property: "timeout"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Indicator; - readonly endpoint: number; - readonly property: "timeout"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: "timeout"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Timeout"; readonly type: "string"; @@ -8601,12 +8594,12 @@ export const IndicatorCCValues: Readonly<{ commandClass: CommandClasses.Indicator; property: "identify"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Indicator; - readonly endpoint: number; - readonly property: "identify"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: "identify"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Identify"; readonly states: { @@ -8630,12 +8623,12 @@ export const IndicatorCCValues: Readonly<{ commandClass: CommandClasses.Indicator; property: "value"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Indicator; - readonly endpoint: number; - readonly property: "value"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: "value"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Indicator value"; readonly ccSpecific: { @@ -8661,12 +8654,12 @@ export const IndicatorCCValues: Readonly<{ commandClass: CommandClasses.Indicator; property: "supportedIndicatorIds"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Indicator; - readonly endpoint: number; - readonly property: "supportedIndicatorIds"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Indicator; + readonly endpoint: number; + readonly property: "supportedIndicatorIds"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -8911,35 +8904,30 @@ export class IrrigationCCSystemStatusReport extends IrrigationCC { // // @public (undocumented) export const IrrigationCCValues: Readonly<{ - valveRunStartStop: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Start/Stop`; - readonly states: { - readonly true: "Start"; - readonly false: "Stop"; - }; - readonly type: "boolean"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "startStop"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "startStop"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + valveRunStartStop: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Start/Stop`; + readonly states: { + readonly true: "Start"; + readonly false: "Stop"; + }; + readonly type: "boolean"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "startStop"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "startStop"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -8949,34 +8937,29 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - valveRunDuration: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Run duration`; - readonly min: 1; - readonly unit: "s"; - readonly max: 65535; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "duration"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "duration"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + valveRunDuration: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Run duration`; + readonly min: 1; + readonly unit: "s"; + readonly max: 65535; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "duration"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "duration"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -8986,31 +8969,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - useMoistureSensor: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Use moisture sensor`; - readonly type: "boolean"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "useMoistureSensor"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "useMoistureSensor"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + useMoistureSensor: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Use moisture sensor`; + readonly type: "boolean"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "useMoistureSensor"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "useMoistureSensor"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9020,31 +8998,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - useRainSensor: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Use rain sensor`; - readonly type: "boolean"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "useRainSensor"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "useRainSensor"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + useRainSensor: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Use rain sensor`; + readonly type: "boolean"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "useRainSensor"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "useRainSensor"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9054,31 +9027,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - errorLowFlow: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Error - Flow below high threshold`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorLowFlow"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorLowFlow"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + errorLowFlow: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Error - Flow below high threshold`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "errorLowFlow"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "errorLowFlow"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9088,33 +9056,28 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - lowFlowThreshold: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Low flow threshold`; - readonly min: 0; - readonly unit: "l/h"; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "lowFlowThreshold"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "lowFlowThreshold"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + lowFlowThreshold: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Low flow threshold`; + readonly min: 0; + readonly unit: "l/h"; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "lowFlowThreshold"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "lowFlowThreshold"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9124,31 +9087,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - errorHighFlow: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Error - Flow above high threshold`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorHighFlow"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorHighFlow"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + errorHighFlow: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Error - Flow above high threshold`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "errorHighFlow"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "errorHighFlow"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9158,33 +9116,28 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - highFlowThreshold: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: High flow threshold`; - readonly min: 0; - readonly unit: "l/h"; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "highFlowThreshold"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "highFlowThreshold"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + highFlowThreshold: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: High flow threshold`; + readonly min: 0; + readonly unit: "l/h"; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "highFlowThreshold"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "highFlowThreshold"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9194,31 +9147,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - errorMaximumFlow: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Error - Maximum flow detected`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorMaximumFlow"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorMaximumFlow"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + errorMaximumFlow: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Error - Maximum flow detected`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "errorMaximumFlow"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "errorMaximumFlow"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9228,33 +9176,28 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - maximumFlow: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Maximum flow`; - readonly min: 0; - readonly unit: "l/h"; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "maximumFlow"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "maximumFlow"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + maximumFlow: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Maximum flow`; + readonly min: 0; + readonly unit: "l/h"; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "maximumFlow"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "maximumFlow"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9264,31 +9207,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - errorLowCurrent: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Error - Current below low threshold`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorLowCurrent"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorLowCurrent"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + errorLowCurrent: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Error - Current below low threshold`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "errorLowCurrent"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "errorLowCurrent"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9298,31 +9236,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - errorHighCurrent: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Error - Current above high threshold`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorHighCurrent"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorHighCurrent"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + errorHighCurrent: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Error - Current above high threshold`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "errorHighCurrent"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "errorHighCurrent"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9332,31 +9265,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - errorShortCircuit: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Error - Short circuit detected`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorShortCircuit"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "errorShortCircuit"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + errorShortCircuit: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Error - Short circuit detected`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "errorShortCircuit"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "errorShortCircuit"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9366,34 +9294,29 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - nominalCurrentLowThreshold: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Nominal current - low threshold`; - readonly min: 0; - readonly max: 2550; - readonly unit: "mA"; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "nominalCurrentLowThreshold"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "nominalCurrentLowThreshold"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + nominalCurrentLowThreshold: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Nominal current - low threshold`; + readonly min: 0; + readonly max: 2550; + readonly unit: "mA"; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "nominalCurrentLowThreshold"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "nominalCurrentLowThreshold"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9403,34 +9326,29 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - nominalCurrentHighThreshold: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Nominal current - high threshold`; - readonly min: 0; - readonly max: 2550; - readonly unit: "mA"; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "nominalCurrentHighThreshold"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "nominalCurrentHighThreshold"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + nominalCurrentHighThreshold: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Nominal current - high threshold`; + readonly min: 0; + readonly max: 2550; + readonly unit: "mA"; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "nominalCurrentHighThreshold"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "nominalCurrentHighThreshold"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9440,32 +9358,27 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - nominalCurrent: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Nominal current`; - readonly unit: "mA"; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "nominalCurrent"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "nominalCurrent"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + nominalCurrent: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Nominal current`; + readonly unit: "mA"; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "nominalCurrent"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "nominalCurrent"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9475,31 +9388,26 @@ export const IrrigationCCValues: Readonly<{ readonly autoCreate: true; }; }; - valveConnected: ((valveId: ValveId) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Connected`; - readonly writeable: false; - readonly type: "boolean"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "valveConnected"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Irrigation; - property: ValveId; - propertyKey: "valveConnected"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + valveConnected: ((valveId: ValveId) => { + readonly meta: { + readonly label: `${string}: Connected`; + readonly writeable: false; + readonly type: "boolean"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Irrigation; + property: ValveId; + propertyKey: "valveConnected"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: ValveId; + readonly propertyKey: "valveConnected"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -9514,12 +9422,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "shutoff"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "shutoff"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "shutoff"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Shutoff system"; readonly states: { @@ -9543,12 +9451,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "firstOpenZoneId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "firstOpenZoneId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "firstOpenZoneId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "First open zone valve ID"; readonly writeable: false; @@ -9569,12 +9477,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "masterValveOpen"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "masterValveOpen"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "masterValveOpen"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Master valve is open"; readonly writeable: false; @@ -9595,12 +9503,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "errorValve"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "errorValve"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "errorValve"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Error: valve reporting error"; readonly writeable: false; @@ -9621,12 +9529,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "lowPressureThreshold"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "lowPressureThreshold"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "lowPressureThreshold"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Low pressure threshold"; readonly unit: "kPa"; @@ -9648,12 +9556,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "errorLowPressure"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "errorLowPressure"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "errorLowPressure"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Error: low pressure"; readonly writeable: false; @@ -9674,12 +9582,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "highPressureThreshold"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "highPressureThreshold"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "highPressureThreshold"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "High pressure threshold"; readonly unit: "kPa"; @@ -9701,12 +9609,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "errorHighPressure"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "errorHighPressure"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "errorHighPressure"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Error: high pressure"; readonly writeable: false; @@ -9727,12 +9635,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "errorEmergencyShutdown"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "errorEmergencyShutdown"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "errorEmergencyShutdown"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Error: emergency shutdown"; readonly writeable: false; @@ -9753,12 +9661,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "errorNotProgrammed"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "errorNotProgrammed"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "errorNotProgrammed"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Error: device not programmed"; readonly writeable: false; @@ -9779,12 +9687,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "shutoffDuration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "shutoffDuration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "shutoffDuration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Remaining shutoff duration"; readonly unit: "hours"; @@ -9808,12 +9716,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "pressure"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "pressure"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "pressure"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Pressure"; readonly unit: "kPa"; @@ -9835,12 +9743,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "flow"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "flow"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "flow"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Flow"; readonly unit: "l/h"; @@ -9862,12 +9770,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "moistureSensorPolarity"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "moistureSensorPolarity"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "moistureSensorPolarity"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Moisture sensor polarity"; readonly min: 0; @@ -9893,12 +9801,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "moistureSensorActive"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "moistureSensorActive"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "moistureSensorActive"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Moisture sensor attached and active"; readonly writeable: false; @@ -9919,12 +9827,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "rainSensorPolarity"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "rainSensorPolarity"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "rainSensorPolarity"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Rain sensor polarity"; readonly min: 0; @@ -9950,12 +9858,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "rainSensorActive"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "rainSensorActive"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "rainSensorActive"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Rain sensor attached and active"; readonly writeable: false; @@ -9976,12 +9884,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "pressureSensorActive"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "pressureSensorActive"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "pressureSensorActive"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Pressure sensor active"; readonly writeable: false; @@ -10002,12 +9910,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "flowSensorActive"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "flowSensorActive"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "flowSensorActive"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Flow sensor active"; readonly writeable: false; @@ -10028,12 +9936,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "masterValveDelay"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "masterValveDelay"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "masterValveDelay"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Master valve delay"; readonly description: "The delay between turning on the master valve and turning on any zone valve"; @@ -10058,12 +9966,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "systemVoltage"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "systemVoltage"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "systemVoltage"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "System voltage"; readonly unit: "V"; @@ -10087,12 +9995,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "maxValveTableSize"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "maxValveTableSize"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "maxValveTableSize"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -10112,12 +10020,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "supportsMasterValve"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "supportsMasterValve"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "supportsMasterValve"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -10137,12 +10045,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "numValveTables"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "numValveTables"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "numValveTables"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -10162,12 +10070,12 @@ export const IrrigationCCValues: Readonly<{ commandClass: CommandClasses.Irrigation; property: "numValves"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Irrigation; - readonly endpoint: number; - readonly property: "numValves"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Irrigation; + readonly endpoint: number; + readonly property: "numValves"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -10618,12 +10526,12 @@ export const LanguageCCValues: Readonly<{ commandClass: CommandClasses.Language; property: "country"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Language; - readonly endpoint: number; - readonly property: "country"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Language; + readonly endpoint: number; + readonly property: "country"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Country code"; readonly writeable: false; @@ -10644,12 +10552,12 @@ export const LanguageCCValues: Readonly<{ commandClass: CommandClasses.Language; property: "language"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Language; - readonly endpoint: number; - readonly property: "language"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Language; + readonly endpoint: number; + readonly property: "language"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Language code"; readonly writeable: false; @@ -10760,12 +10668,12 @@ export const LockCCValues: Readonly<{ commandClass: CommandClasses.Lock; property: "locked"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Lock; - readonly endpoint: number; - readonly property: "locked"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Lock; + readonly endpoint: number; + readonly property: "locked"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Locked"; readonly description: "Whether the lock is locked"; @@ -10922,31 +10830,26 @@ export interface ManufacturerSpecificCCReportOptions { // // @public (undocumented) export const ManufacturerSpecificCCValues: Readonly<{ - deviceId: ((type: DeviceIdType) => ExpandRecursively< { - readonly meta: { - readonly label: string; - readonly writeable: false; - readonly type: "string"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Manufacturer Specific"]; - property: "deviceId"; - propertyKey: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Manufacturer Specific"]; - property: "deviceId"; - propertyKey: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + deviceId: ((type: DeviceIdType) => { + readonly meta: { + readonly label: string; + readonly writeable: false; + readonly type: "string"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Manufacturer Specific"]; + property: "deviceId"; + propertyKey: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; + readonly endpoint: number; + readonly property: "deviceId"; + readonly propertyKey: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -10961,12 +10864,12 @@ export const ManufacturerSpecificCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Manufacturer Specific"]; property: "productId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; - readonly endpoint: number; - readonly property: "productId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; + readonly endpoint: number; + readonly property: "productId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Product ID"; readonly writeable: false; @@ -10989,12 +10892,12 @@ export const ManufacturerSpecificCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Manufacturer Specific"]; property: "productType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; - readonly endpoint: number; - readonly property: "productType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; + readonly endpoint: number; + readonly property: "productType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Product type"; readonly writeable: false; @@ -11017,12 +10920,12 @@ export const ManufacturerSpecificCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Manufacturer Specific"]; property: "manufacturerId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; - readonly endpoint: number; - readonly property: "manufacturerId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Manufacturer Specific"]; + readonly endpoint: number; + readonly property: "manufacturerId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Manufacturer ID"; readonly writeable: false; @@ -11226,35 +11129,30 @@ export interface MeterCCSupportedReportOptions { // // @public (undocumented) export const MeterCCValues: Readonly<{ - value: ((meterType: number, rateType: RateType, scale: number) => ExpandRecursively< { - readonly meta: { - readonly ccSpecific: { - readonly meterType: number; - readonly rateType: RateType; - readonly scale: number; - }; - readonly writeable: false; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Meter; - property: "value"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Meter; - property: "value"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + value: ((meterType: number, rateType: RateType, scale: number) => { + readonly meta: { + readonly ccSpecific: { + readonly meterType: number; + readonly rateType: RateType; + readonly scale: number; + }; + readonly writeable: false; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Meter; + property: "value"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "value"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -11264,39 +11162,34 @@ export const MeterCCValues: Readonly<{ readonly autoCreate: true; }; }; - resetSingle: ((meterType: number, rateType: RateType, scale: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Reset (${string})` | `Reset (Consumption, ${string})` | `Reset (Production, ${string})`; - readonly states: { - readonly true: "Reset"; - }; - readonly ccSpecific: { - readonly meterType: number; - readonly rateType: RateType; - readonly scale: number; - }; - readonly readable: false; - readonly type: "boolean"; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Meter; - property: "reset"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Meter; - property: "reset"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + resetSingle: ((meterType: number, rateType: RateType, scale: number) => { + readonly meta: { + readonly label: `Reset (${string})` | `Reset (Consumption, ${string})` | `Reset (Production, ${string})`; + readonly states: { + readonly true: "Reset"; + }; + readonly ccSpecific: { + readonly meterType: number; + readonly rateType: RateType; + readonly scale: number; + }; + readonly readable: false; + readonly type: "boolean"; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Meter; + property: "reset"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "reset"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -11311,12 +11204,12 @@ export const MeterCCValues: Readonly<{ commandClass: CommandClasses.Meter; property: "reset"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Meter; - readonly endpoint: number; - readonly property: "reset"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "reset"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Reset accumulated values"; readonly states: { @@ -11340,12 +11233,12 @@ export const MeterCCValues: Readonly<{ commandClass: CommandClasses.Meter; property: "supportedRateTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Meter; - readonly endpoint: number; - readonly property: "supportedRateTypes"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "supportedRateTypes"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -11365,12 +11258,12 @@ export const MeterCCValues: Readonly<{ commandClass: CommandClasses.Meter; property: "supportedScales"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Meter; - readonly endpoint: number; - readonly property: "supportedScales"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "supportedScales"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -11390,12 +11283,12 @@ export const MeterCCValues: Readonly<{ commandClass: CommandClasses.Meter; property: "supportsReset"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Meter; - readonly endpoint: number; - readonly property: "supportsReset"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "supportsReset"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -11415,12 +11308,12 @@ export const MeterCCValues: Readonly<{ commandClass: CommandClasses.Meter; property: "type"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Meter; - readonly endpoint: number; - readonly property: "type"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Meter; + readonly endpoint: number; + readonly property: "type"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -11708,30 +11601,25 @@ export interface MultiChannelAssociationCCSupportedGroupingsReportOptions extend // // @public (undocumented) export const MultiChannelAssociationCCValues: Readonly<{ - endpoints: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multi Channel Association"]; - property: "endpoints"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multi Channel Association"]; - property: "endpoints"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + endpoints: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multi Channel Association"]; + property: "endpoints"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel Association"]; + readonly endpoint: number; + readonly property: "endpoints"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -11741,30 +11629,25 @@ export const MultiChannelAssociationCCValues: Readonly<{ readonly internal: true; }; }; - nodeIds: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multi Channel Association"]; - property: "nodeIds"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multi Channel Association"]; - property: "nodeIds"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + nodeIds: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multi Channel Association"]; + property: "nodeIds"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel Association"]; + readonly endpoint: number; + readonly property: "nodeIds"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -11774,30 +11657,25 @@ export const MultiChannelAssociationCCValues: Readonly<{ readonly internal: true; }; }; - maxNodes: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multi Channel Association"]; - property: "maxNodes"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multi Channel Association"]; - property: "maxNodes"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + maxNodes: ((groupId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multi Channel Association"]; + property: "maxNodes"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel Association"]; + readonly endpoint: number; + readonly property: "maxNodes"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -11812,12 +11690,12 @@ export const MultiChannelAssociationCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel Association"]; property: "groupCount"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel Association"]; - readonly endpoint: number; - readonly property: "groupCount"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel Association"]; + readonly endpoint: number; + readonly property: "groupCount"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12153,30 +12031,25 @@ export class MultiChannelCCV1Report extends MultiChannelCC { // // @public (undocumented) export const MultiChannelCCValues: Readonly<{ - aggregatedEndpointMembers: ((endpointIndex: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multi Channel"]; - property: "members"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multi Channel"]; - property: "members"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + aggregatedEndpointMembers: ((endpointIndex: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multi Channel"]; + property: "members"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "members"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -12191,12 +12064,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "deviceClass"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "deviceClass"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "deviceClass"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12216,12 +12089,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "commandClasses"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "commandClasses"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "commandClasses"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12241,12 +12114,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "identicalCapabilities"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "identicalCapabilities"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "identicalCapabilities"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12266,12 +12139,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "countIsDynamic"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "countIsDynamic"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "countIsDynamic"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12291,12 +12164,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "aggregatedCount"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "aggregatedCount"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "aggregatedCount"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12316,12 +12189,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "individualCount"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "individualCount"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "individualCount"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12341,12 +12214,12 @@ export const MultiChannelCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multi Channel"]; property: "endpointIndizes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multi Channel"]; - readonly endpoint: number; - readonly property: "endpointIndizes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multi Channel"]; + readonly endpoint: number; + readonly property: "endpointIndizes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12602,28 +12475,24 @@ export interface MultilevelSensorCCSupportedSensorReportOptions extends CCComman // // @public (undocumented) export const MultilevelSensorCCValues: Readonly<{ - value: ((sensorTypeName: string) => ExpandRecursively< { - readonly meta: { - readonly label: string; - readonly writeable: false; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multilevel Sensor"]; - property: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multilevel Sensor"]; - property: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + value: ((sensorTypeName: string) => { + readonly meta: { + readonly label: string; + readonly writeable: false; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multilevel Sensor"]; + property: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Sensor"]; + readonly endpoint: number; + readonly property: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -12633,30 +12502,25 @@ export const MultilevelSensorCCValues: Readonly<{ readonly autoCreate: true; }; }; - supportedScales: ((sensorType: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multilevel Sensor"]; - property: "supportedScales"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multilevel Sensor"]; - property: "supportedScales"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + supportedScales: ((sensorType: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multilevel Sensor"]; + property: "supportedScales"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Sensor"]; + readonly endpoint: number; + readonly property: "supportedScales"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -12671,12 +12535,12 @@ export const MultilevelSensorCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Sensor"]; property: "supportedSensorTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Sensor"]; - readonly endpoint: number; - readonly property: "supportedSensorTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Sensor"]; + readonly endpoint: number; + readonly property: "supportedSensorTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12870,36 +12734,32 @@ export class MultilevelSwitchCCSupportedReport extends MultilevelSwitchCC { // // @public (undocumented) export const MultilevelSwitchCCValues: Readonly<{ - levelChangeDown: ((switchType: SwitchType) => ExpandRecursively< { - readonly meta: { - readonly label: `Perform a level change (${string})`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly states: { - readonly true: "Start"; - readonly false: "Stop"; - }; - readonly ccSpecific: { - readonly switchType: SwitchType; - }; - readonly readable: false; - readonly type: "boolean"; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multilevel Switch"]; - property: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multilevel Switch"]; - property: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + levelChangeDown: ((switchType: SwitchType) => { + readonly meta: { + readonly label: `Perform a level change (${string})`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly states: { + readonly true: "Start"; + readonly false: "Stop"; + }; + readonly ccSpecific: { + readonly switchType: SwitchType; + }; + readonly readable: false; + readonly type: "boolean"; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multilevel Switch"]; + property: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -12909,36 +12769,32 @@ export const MultilevelSwitchCCValues: Readonly<{ readonly autoCreate: true; }; }; - levelChangeUp: ((switchType: SwitchType) => ExpandRecursively< { - readonly meta: { - readonly label: `Perform a level change (${string})`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly states: { - readonly true: "Start"; - readonly false: "Stop"; - }; - readonly ccSpecific: { - readonly switchType: SwitchType; - }; - readonly readable: false; - readonly type: "boolean"; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Multilevel Switch"]; - property: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Multilevel Switch"]; - property: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + levelChangeUp: ((switchType: SwitchType) => { + readonly meta: { + readonly label: `Perform a level change (${string})`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly states: { + readonly true: "Start"; + readonly false: "Stop"; + }; + readonly ccSpecific: { + readonly switchType: SwitchType; + }; + readonly readable: false; + readonly type: "boolean"; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Multilevel Switch"]; + property: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -12953,12 +12809,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "superviseStartStopLevelChange"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "superviseStartStopLevelChange"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "superviseStartStopLevelChange"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -12978,12 +12834,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "switchType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "switchType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "switchType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -13003,12 +12859,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "event"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "event"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "event"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Event value"; readonly writeable: false; @@ -13023,7 +12879,7 @@ export const MultilevelSwitchCCValues: Readonly<{ readonly minVersion: 1; readonly supportsEndpoints: true; readonly stateful: false; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; restorePrevious: { @@ -13031,12 +12887,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "restorePrevious"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "restorePrevious"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "restorePrevious"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Restore previous value"; readonly states: { @@ -13060,12 +12916,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "duration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "duration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "duration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Remaining duration"; readonly writeable: false; @@ -13086,12 +12942,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "targetValue"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "targetValue"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "targetValue"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Target value"; readonly valueChangeOptions: readonly ["transitionDuration"]; @@ -13115,12 +12971,12 @@ export const MultilevelSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Multilevel Switch"]; property: "currentValue"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; - readonly endpoint: number; - readonly property: "currentValue"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Multilevel Switch"]; + readonly endpoint: number; + readonly property: "currentValue"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Current value"; readonly writeable: false; @@ -13288,12 +13144,12 @@ export const NodeNamingAndLocationCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Node Naming and Location"]; property: "location"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Node Naming and Location"]; - readonly endpoint: number; - readonly property: "location"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Node Naming and Location"]; + readonly endpoint: number; + readonly property: "location"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Node location"; readonly type: "string"; @@ -13314,12 +13170,12 @@ export const NodeNamingAndLocationCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Node Naming and Location"]; property: "name"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Node Naming and Location"]; - readonly endpoint: number; - readonly property: "name"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Node Naming and Location"]; + readonly endpoint: number; + readonly property: "name"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Node name"; readonly type: "string"; @@ -13556,30 +13412,25 @@ export interface NotificationCCSupportedReportOptions extends CCCommandOptions { // // @public (undocumented) export const NotificationCCValues: Readonly<{ - notificationVariable: ((notificationName: string, variableName: string) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Notification; - property: string; - propertyKey: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Notification; - property: string; - propertyKey: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + notificationVariable: ((notificationName: string, variableName: string) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Notification; + property: string; + propertyKey: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: string; + readonly propertyKey: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -13589,36 +13440,31 @@ export const NotificationCCValues: Readonly<{ readonly autoCreate: true; }; }; - unknownNotificationVariable: ((notificationType: number, notificationName: string) => ExpandRecursively< { - readonly meta: { - readonly label: `${string}: Unknown value`; - readonly ccSpecific: { - readonly notificationType: number; - }; - readonly writeable: false; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Notification; - property: string; - propertyKey: "unknown"; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Notification; - property: string; - propertyKey: "unknown"; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + unknownNotificationVariable: ((notificationType: number, notificationName: string) => { + readonly meta: { + readonly label: `${string}: Unknown value`; + readonly ccSpecific: { + readonly notificationType: number; + }; + readonly writeable: false; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Notification; + property: string; + propertyKey: "unknown"; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: string; + readonly propertyKey: "unknown"; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -13628,33 +13474,29 @@ export const NotificationCCValues: Readonly<{ readonly autoCreate: true; }; }; - unknownNotificationType: ((notificationType: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Unknown notification (${string})`; - readonly ccSpecific: { - readonly notificationType: number; - }; - readonly writeable: false; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: CommandClasses.Notification; - property: string; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Notification; - property: string; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + unknownNotificationType: ((notificationType: number) => { + readonly meta: { + readonly label: `Unknown notification (${string})`; + readonly ccSpecific: { + readonly notificationType: number; + }; + readonly writeable: false; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: CommandClasses.Notification; + property: string; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: string; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -13664,30 +13506,25 @@ export const NotificationCCValues: Readonly<{ readonly autoCreate: true; }; }; - supportedNotificationEvents: ((notificationType: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Notification; - property: "supportedNotificationEvents"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Notification; - property: "supportedNotificationEvents"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + supportedNotificationEvents: ((notificationType: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Notification; + property: "supportedNotificationEvents"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "supportedNotificationEvents"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -13703,13 +13540,13 @@ export const NotificationCCValues: Readonly<{ property: "Access Control"; propertyKey: "Door tilt state"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "Access Control"; - readonly propertyKey: "Door tilt state"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "Access Control"; + readonly propertyKey: "Door tilt state"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Door tilt state"; readonly states: { @@ -13740,13 +13577,13 @@ export const NotificationCCValues: Readonly<{ property: "Access Control"; propertyKey: "Door state (simple)"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "Access Control"; - readonly propertyKey: "Door state (simple)"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "Access Control"; + readonly propertyKey: "Door state (simple)"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Door state (simple)"; readonly states: { @@ -13768,7 +13605,7 @@ export const NotificationCCValues: Readonly<{ readonly internal: false; readonly minVersion: 1; readonly supportsEndpoints: true; - readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => ExpandRecursively; + readonly autoCreate: (applHost: ZWaveApplicationHost_2, endpoint: IZWaveEndpoint_2) => boolean; }; }; alarmLevel: { @@ -13776,12 +13613,12 @@ export const NotificationCCValues: Readonly<{ commandClass: CommandClasses.Notification; property: "alarmLevel"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "alarmLevel"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "alarmLevel"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Alarm Level"; readonly writeable: false; @@ -13804,12 +13641,12 @@ export const NotificationCCValues: Readonly<{ commandClass: CommandClasses.Notification; property: "alarmType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "alarmType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "alarmType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Alarm Type"; readonly writeable: false; @@ -13832,12 +13669,12 @@ export const NotificationCCValues: Readonly<{ commandClass: CommandClasses.Notification; property: "lastRefresh"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "lastRefresh"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "lastRefresh"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -13857,12 +13694,12 @@ export const NotificationCCValues: Readonly<{ commandClass: CommandClasses.Notification; property: "notificationMode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "notificationMode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "notificationMode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -13882,12 +13719,12 @@ export const NotificationCCValues: Readonly<{ commandClass: CommandClasses.Notification; property: "supportedNotificationTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "supportedNotificationTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "supportedNotificationTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -13907,12 +13744,12 @@ export const NotificationCCValues: Readonly<{ commandClass: CommandClasses.Notification; property: "supportsV1Alarm"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Notification; - readonly endpoint: number; - readonly property: "supportsV1Alarm"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Notification; + readonly endpoint: number; + readonly property: "supportsV1Alarm"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -14344,12 +14181,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "supportedRFStates"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "supportedRFStates"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "supportedRFStates"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -14369,12 +14206,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "supportedLocalStates"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "supportedLocalStates"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "supportedLocalStates"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -14394,12 +14231,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "supportsTimeout"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "supportsTimeout"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "supportsTimeout"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -14419,12 +14256,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "supportsExclusiveControl"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "supportsExclusiveControl"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "supportsExclusiveControl"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -14444,12 +14281,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "timeout"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "timeout"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "timeout"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "RF protection timeout"; readonly min: 0; @@ -14472,12 +14309,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "rf"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "rf"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "rf"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "RF protection state"; readonly states: { @@ -14501,12 +14338,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "local"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "local"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "local"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Local protection state"; readonly states: { @@ -14530,12 +14367,12 @@ export const ProtectionCCValues: Readonly<{ commandClass: CommandClasses.Protection; property: "exclusiveControlNodeId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Protection; - readonly endpoint: number; - readonly property: "exclusiveControlNodeId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Protection; + readonly endpoint: number; + readonly property: "exclusiveControlNodeId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly min: 1; readonly max: 232; @@ -14659,12 +14496,12 @@ export const SceneActivationCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Scene Activation"]; property: "dimmingDuration"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Scene Activation"]; - readonly endpoint: number; - readonly property: "dimmingDuration"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Scene Activation"]; + readonly endpoint: number; + readonly property: "dimmingDuration"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Dimming duration"; readonly type: "duration"; @@ -14685,12 +14522,12 @@ export const SceneActivationCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Scene Activation"]; property: "sceneId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Scene Activation"]; - readonly endpoint: number; - readonly property: "sceneId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Scene Activation"]; + readonly endpoint: number; + readonly property: "sceneId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly min: 1; readonly label: "Scene ID"; @@ -14800,31 +14637,26 @@ export interface SceneActuatorConfigurationCCSetOptions extends CCCommandOptions // // @public (undocumented) export const SceneActuatorConfigurationCCValues: Readonly<{ - dimmingDuration: ((sceneId: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Dimming duration (${number})`; - readonly type: "duration"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; - property: "dimmingDuration"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; - property: "dimmingDuration"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + dimmingDuration: ((sceneId: number) => { + readonly meta: { + readonly label: `Dimming duration (${number})`; + readonly type: "duration"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; + property: "dimmingDuration"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; + readonly endpoint: number; + readonly property: "dimmingDuration"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -14833,35 +14665,30 @@ export const SceneActuatorConfigurationCCValues: Readonly<{ readonly supportsEndpoints: true; readonly autoCreate: true; }; - }; - level: ((sceneId: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Level (${number})`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; - property: "level"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; - property: "level"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + }; + level: ((sceneId: number) => { + readonly meta: { + readonly label: `Level (${number})`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; + property: "level"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Scene Actuator Configuration"]; + readonly endpoint: number; + readonly property: "level"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -14971,31 +14798,26 @@ export interface SceneControllerConfigurationCCSetOptions extends CCCommandOptio // // @public (undocumented) export const SceneControllerConfigurationCCValues: Readonly<{ - dimmingDuration: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Dimming duration (${number})`; - readonly type: "duration"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; - property: "dimmingDuration"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; - property: "dimmingDuration"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + dimmingDuration: ((groupId: number) => { + readonly meta: { + readonly label: `Dimming duration (${number})`; + readonly type: "duration"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; + property: "dimmingDuration"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; + readonly endpoint: number; + readonly property: "dimmingDuration"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -15005,34 +14827,29 @@ export const SceneControllerConfigurationCCValues: Readonly<{ readonly autoCreate: true; }; }; - sceneId: ((groupId: number) => ExpandRecursively< { - readonly meta: { - readonly label: `Associated Scene ID (${number})`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly min: 0; - readonly max: 255; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; - property: "sceneId"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; - property: "sceneId"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + sceneId: ((groupId: number) => { + readonly meta: { + readonly label: `Associated Scene ID (${number})`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly min: 0; + readonly max: 255; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; + property: "sceneId"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Scene Controller Configuration"]; + readonly endpoint: number; + readonly property: "sceneId"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -15309,30 +15126,25 @@ export interface ScheduleEntryLockCCTimeOffsetSetOptions extends CCCommandOption // // @public (undocumented) export const ScheduleEntryLockCCValues: Readonly<{ - schedule: ((scheduleKind: ScheduleEntryLockScheduleKind, userId: number, slotId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - property: "schedule"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - property: "schedule"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + schedule: ((scheduleKind: ScheduleEntryLockScheduleKind, userId: number, slotId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + property: "schedule"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + readonly endpoint: number; + readonly property: "schedule"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -15342,30 +15154,25 @@ export const ScheduleEntryLockCCValues: Readonly<{ readonly internal: true; }; }; - scheduleKind: ((userId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - property: "scheduleKind"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - property: "scheduleKind"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + scheduleKind: ((userId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + property: "scheduleKind"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + readonly endpoint: number; + readonly property: "scheduleKind"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -15375,30 +15182,25 @@ export const ScheduleEntryLockCCValues: Readonly<{ readonly internal: true; }; }; - userEnabled: ((userId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - property: "userEnabled"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - property: "userEnabled"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + userEnabled: ((userId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + property: "userEnabled"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + readonly endpoint: number; + readonly property: "userEnabled"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -15413,12 +15215,12 @@ export const ScheduleEntryLockCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; property: "numDailyRepeatingSlots"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - readonly endpoint: number; - readonly property: "numDailyRepeatingSlots"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + readonly endpoint: number; + readonly property: "numDailyRepeatingSlots"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -15438,12 +15240,12 @@ export const ScheduleEntryLockCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; property: "numYearDaySlots"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - readonly endpoint: number; - readonly property: "numYearDaySlots"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + readonly endpoint: number; + readonly property: "numYearDaySlots"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -15463,12 +15265,12 @@ export const ScheduleEntryLockCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; property: "numWeekDaySlots"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; - readonly endpoint: number; - readonly property: "numWeekDaySlots"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Schedule Entry Lock"]; + readonly endpoint: number; + readonly property: "numWeekDaySlots"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -15860,7 +15662,7 @@ export class Security2CC extends CommandClass { // (undocumented) ccCommand: Security2Command; static encapsulate(host: ZWaveHost_2, cc: CommandClass, options?: { - securityClass?: S2SecurityClass; + securityClass?: SecurityClass; multicastOutOfSync?: boolean; multicastGroupId?: number; verifyDelivery?: boolean; @@ -15999,6 +15801,8 @@ export interface Security2CCKEXSetOptions { // (undocumented) permitCSA: boolean; // (undocumented) + _reserved?: number; + // (undocumented) selectedECDHProfile: ECDHProfiles; // (undocumented) selectedKEXScheme: KEXSchemes; @@ -16041,7 +15845,7 @@ export interface Security2CCMessageEncapsulationOptions extends CCCommandOptions encapsulated?: CommandClass; // (undocumented) extensions?: Security2Extension[]; - securityClass?: S2SecurityClass; + securityClass?: SecurityClass; // (undocumented) verifyDelivery?: boolean; } @@ -16361,6 +16165,8 @@ export class SecurityCCNetworkKeySet extends SecurityCC { networkKey: Buffer; // (undocumented) serialize(): Buffer; + // (undocumented) + toLogEntry(applHost: ZWaveApplicationHost_2): MessageOrCCLogEntry; } // Warning: (ae-missing-release-tag) "SecurityCCNetworkKeySetOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -16423,7 +16229,11 @@ export class SecurityCCSchemeInherit extends SecurityCC { // // @public (undocumented) export class SecurityCCSchemeReport extends SecurityCC { - constructor(host: ZWaveHost_2, options: CommandClassDeserializationOptions); + constructor(host: ZWaveHost_2, options: CommandClassDeserializationOptions | CCCommandOptions); + // (undocumented) + serialize(): Buffer; + // (undocumented) + toLogEntry(host?: ZWaveValueHost_2): MessageOrCCLogEntry; } // Warning: (ae-missing-release-tag) "SecurityCommand" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -16773,12 +16583,12 @@ export const SoundSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Sound Switch"]; property: "defaultToneId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Sound Switch"]; - readonly endpoint: number; - readonly property: "defaultToneId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Sound Switch"]; + readonly endpoint: number; + readonly property: "defaultToneId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly min: 0; readonly max: 254; @@ -16801,12 +16611,12 @@ export const SoundSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Sound Switch"]; property: "defaultVolume"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Sound Switch"]; - readonly endpoint: number; - readonly property: "defaultVolume"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Sound Switch"]; + readonly endpoint: number; + readonly property: "defaultVolume"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly min: 0; readonly max: 100; @@ -16830,12 +16640,12 @@ export const SoundSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Sound Switch"]; property: "toneId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Sound Switch"]; - readonly endpoint: number; - readonly property: "toneId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Sound Switch"]; + readonly endpoint: number; + readonly property: "toneId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Play Tone"; readonly valueChangeOptions: readonly ["volume"]; @@ -16859,12 +16669,12 @@ export const SoundSwitchCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Sound Switch"]; property: "volume"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Sound Switch"]; - readonly endpoint: number; - readonly property: "volume"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Sound Switch"]; + readonly endpoint: number; + readonly property: "volume"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly min: 0; readonly max: 100; @@ -17037,30 +16847,25 @@ export type SupervisionCCReportOptions = { // // @public (undocumented) export const SupervisionCCValues: Readonly<{ - ccSupported: ((ccId: CommandClasses) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: CommandClasses.Supervision; - property: "ccSupported"; - propertyKey: CommandClasses; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: CommandClasses.Supervision; - property: "ccSupported"; - propertyKey: CommandClasses; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + ccSupported: ((ccId: CommandClasses) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: CommandClasses.Supervision; + property: "ccSupported"; + propertyKey: CommandClasses; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Supervision; + readonly endpoint: number; + readonly property: "ccSupported"; + readonly propertyKey: CommandClasses; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -17233,12 +17038,12 @@ export const ThermostatFanModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; property: "supportedModes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; - readonly endpoint: number; - readonly property: "supportedModes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; + readonly endpoint: number; + readonly property: "supportedModes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -17258,12 +17063,12 @@ export const ThermostatFanModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; property: "mode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; - readonly endpoint: number; - readonly property: "mode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; + readonly endpoint: number; + readonly property: "mode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly states: { [x: number]: string; @@ -17289,12 +17094,12 @@ export const ThermostatFanModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; property: "off"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; - readonly endpoint: number; - readonly property: "off"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Fan Mode"]; + readonly endpoint: number; + readonly property: "off"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Thermostat fan turned off"; readonly type: "boolean"; @@ -17390,12 +17195,12 @@ export const ThermostatFanStateCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Fan State"]; property: "state"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Fan State"]; - readonly endpoint: number; - readonly property: "state"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Fan State"]; + readonly endpoint: number; + readonly property: "state"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly states: { [x: number]: string; @@ -17575,12 +17380,12 @@ export const ThermostatModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Mode"]; property: "supportedModes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Mode"]; - readonly endpoint: number; - readonly property: "supportedModes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Mode"]; + readonly endpoint: number; + readonly property: "supportedModes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -17600,12 +17405,12 @@ export const ThermostatModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Mode"]; property: "manufacturerData"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Mode"]; - readonly endpoint: number; - readonly property: "manufacturerData"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Mode"]; + readonly endpoint: number; + readonly property: "manufacturerData"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Manufacturer data"; readonly writeable: false; @@ -17626,12 +17431,12 @@ export const ThermostatModeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Mode"]; property: "mode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Mode"]; - readonly endpoint: number; - readonly property: "mode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Mode"]; + readonly endpoint: number; + readonly property: "mode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly states: { [x: number]: string; @@ -17738,12 +17543,12 @@ export const ThermostatOperatingStateCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Operating State"]; property: "state"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Operating State"]; - readonly endpoint: number; - readonly property: "state"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Operating State"]; + readonly endpoint: number; + readonly property: "state"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Operating state"; readonly states: { @@ -17840,12 +17645,12 @@ export const ThermostatSetbackCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Setback"]; property: "setbackState"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Setback"]; - readonly endpoint: number; - readonly property: "setbackState"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Setback"]; + readonly endpoint: number; + readonly property: "setbackState"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly min: -12.8; readonly max: 12; @@ -17868,12 +17673,12 @@ export const ThermostatSetbackCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Setback"]; property: "setbackType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Setback"]; - readonly endpoint: number; - readonly property: "setbackType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Setback"]; + readonly endpoint: number; + readonly property: "setbackType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Setback type"; readonly type: "any"; @@ -18103,30 +17908,25 @@ export interface ThermostatSetpointCCSupportedReportOptions extends CCCommandOpt // // @public (undocumented) export const ThermostatSetpointCCValues: Readonly<{ - setpointScale: ((setpointType: ThermostatSetpointType) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; - property: "setpointScale"; - propertyKey: ThermostatSetpointType; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; - property: "setpointScale"; - propertyKey: ThermostatSetpointType; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + setpointScale: ((setpointType: ThermostatSetpointType) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; + property: "setpointScale"; + propertyKey: ThermostatSetpointType; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; + readonly endpoint: number; + readonly property: "setpointScale"; + readonly propertyKey: ThermostatSetpointType; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly secret: false; @@ -18136,34 +17936,29 @@ export const ThermostatSetpointCCValues: Readonly<{ readonly internal: true; }; }; - setpoint: ((setpointType: ThermostatSetpointType) => ExpandRecursively< { - readonly meta: { - readonly label: `Setpoint (${string})`; - readonly ccSpecific: { - readonly setpointType: ThermostatSetpointType; - }; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; - property: "setpoint"; - propertyKey: ThermostatSetpointType; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; - property: "setpoint"; - propertyKey: ThermostatSetpointType; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + setpoint: ((setpointType: ThermostatSetpointType) => { + readonly meta: { + readonly label: `Setpoint (${string})`; + readonly ccSpecific: { + readonly setpointType: ThermostatSetpointType; + }; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; + property: "setpoint"; + propertyKey: ThermostatSetpointType; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; + readonly endpoint: number; + readonly property: "setpoint"; + readonly propertyKey: ThermostatSetpointType; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -18178,12 +17973,12 @@ export const ThermostatSetpointCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; property: "setpointTypesInterpretation"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; - readonly endpoint: number; - readonly property: "setpointTypesInterpretation"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; + readonly endpoint: number; + readonly property: "setpointTypesInterpretation"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -18203,12 +17998,12 @@ export const ThermostatSetpointCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; property: "supportedSetpointTypes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; - readonly endpoint: number; - readonly property: "supportedSetpointTypes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Thermostat Setpoint"]; + readonly endpoint: number; + readonly property: "supportedSetpointTypes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -18549,12 +18344,12 @@ export const TimeParametersCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Time Parameters"]; property: "dateAndTime"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Time Parameters"]; - readonly endpoint: number; - readonly property: "dateAndTime"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Time Parameters"]; + readonly endpoint: number; + readonly property: "dateAndTime"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly label: "Date and Time"; readonly type: "any"; @@ -19191,30 +18986,25 @@ export interface UserCodeCCUsersNumberReportOptions extends CCCommandOptions { // // @public (undocumented) export const UserCodeCCValues: Readonly<{ - userCode: ((userId: number) => ExpandRecursively< { - readonly meta: { - readonly type: "any"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["User Code"]; - property: "userCode"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["User Code"]; - property: "userCode"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + userCode: ((userId: number) => { + readonly meta: { + readonly type: "any"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["User Code"]; + property: "userCode"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "userCode"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly stateful: true; readonly internal: false; @@ -19224,31 +19014,26 @@ export const UserCodeCCValues: Readonly<{ readonly secret: true; }; }; - userIdStatus: ((userId: number) => ExpandRecursively< { - readonly meta: { - readonly label: `User ID status (${number})`; - readonly type: "number"; - readonly readable: true; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses)["User Code"]; - property: "userIdStatus"; - propertyKey: number; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses)["User Code"]; - property: "userIdStatus"; - propertyKey: number; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID_2) => ExpandRecursively; + userIdStatus: ((userId: number) => { + readonly meta: { + readonly label: `User ID status (${number})`; + readonly type: "number"; + readonly readable: true; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses)["User Code"]; + property: "userIdStatus"; + propertyKey: number; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "userIdStatus"; + readonly propertyKey: number; + }; + }) & { + is: (valueId: ValueID_2) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -19263,12 +19048,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "adminCode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "adminCode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "adminCode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Admin Code"; readonly minLength: 4; @@ -19291,12 +19076,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "keypadMode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "keypadMode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "keypadMode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Keypad Mode"; readonly writeable: false; @@ -19317,12 +19102,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "userCodeChecksum"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "userCodeChecksum"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "userCodeChecksum"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19342,12 +19127,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportedASCIIChars"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportedASCIIChars"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportedASCIIChars"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19367,12 +19152,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportedKeypadModes"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportedKeypadModes"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportedKeypadModes"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19392,12 +19177,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportedUserIDStatuses"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportedUserIDStatuses"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportedUserIDStatuses"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19417,12 +19202,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsMultipleUserCodeSet"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsMultipleUserCodeSet"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsMultipleUserCodeSet"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19442,12 +19227,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsMultipleUserCodeReport"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsMultipleUserCodeReport"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsMultipleUserCodeReport"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19467,12 +19252,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsUserCodeChecksum"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsUserCodeChecksum"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsUserCodeChecksum"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19492,12 +19277,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsMasterCodeDeactivation"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsMasterCodeDeactivation"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsMasterCodeDeactivation"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19517,12 +19302,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsMasterCode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsMasterCode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsMasterCode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19542,12 +19327,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsAdminCodeDeactivation"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsAdminCodeDeactivation"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsAdminCodeDeactivation"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19567,12 +19352,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportsAdminCode"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportsAdminCode"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportsAdminCode"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19592,12 +19377,12 @@ export const UserCodeCCValues: Readonly<{ commandClass: (typeof CommandClasses)["User Code"]; property: "supportedUsers"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["User Code"]; - readonly endpoint: number; - readonly property: "supportedUsers"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["User Code"]; + readonly endpoint: number; + readonly property: "supportedUsers"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -19860,12 +19645,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "applicationBuildNumber"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "applicationBuildNumber"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "applicationBuildNumber"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Application build number"; readonly writeable: false; @@ -19886,12 +19671,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "applicationVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "applicationVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "applicationVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Application version"; readonly writeable: false; @@ -19912,12 +19697,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "zWaveProtocolBuildNumber"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "zWaveProtocolBuildNumber"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "zWaveProtocolBuildNumber"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Z-Wave protocol build number"; readonly writeable: false; @@ -19938,12 +19723,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "zWaveProtocolVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "zWaveProtocolVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "zWaveProtocolVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Z-Wave protocol version"; readonly writeable: false; @@ -19964,12 +19749,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "hostInterfaceBuildNumber"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "hostInterfaceBuildNumber"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "hostInterfaceBuildNumber"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Serial API build number"; readonly writeable: false; @@ -19990,12 +19775,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "hostInterfaceVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "hostInterfaceVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "hostInterfaceVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Serial API version"; readonly writeable: false; @@ -20016,12 +19801,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "applicationFrameworkBuildNumber"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "applicationFrameworkBuildNumber"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "applicationFrameworkBuildNumber"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Z-Wave application framework API build number"; readonly writeable: false; @@ -20042,12 +19827,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "applicationFrameworkAPIVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "applicationFrameworkAPIVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "applicationFrameworkAPIVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Z-Wave application framework API version"; readonly writeable: false; @@ -20068,12 +19853,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "sdkVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "sdkVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "sdkVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "SDK version"; readonly writeable: false; @@ -20094,12 +19879,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "supportsZWaveSoftwareGet"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "supportsZWaveSoftwareGet"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "supportsZWaveSoftwareGet"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -20119,12 +19904,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "hardwareVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "hardwareVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "hardwareVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Z-Wave chip hardware version"; readonly writeable: false; @@ -20145,12 +19930,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "protocolVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "protocolVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "protocolVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Z-Wave protocol version"; readonly writeable: false; @@ -20171,12 +19956,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "libraryType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "libraryType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "libraryType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Library type"; readonly states: { @@ -20200,12 +19985,12 @@ export const VersionCCValues: Readonly<{ commandClass: CommandClasses.Version; property: "firmwareVersions"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: CommandClasses.Version; - readonly endpoint: number; - readonly property: "firmwareVersions"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: CommandClasses.Version; + readonly endpoint: number; + readonly property: "firmwareVersions"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "string[]"; readonly label: "Z-Wave chip firmware versions"; @@ -20374,12 +20159,12 @@ export const WakeUpCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Wake Up"]; property: "wakeUpOnDemandSupported"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Wake Up"]; - readonly endpoint: number; - readonly property: "wakeUpOnDemandSupported"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Wake Up"]; + readonly endpoint: number; + readonly property: "wakeUpOnDemandSupported"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -20399,12 +20184,12 @@ export const WakeUpCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Wake Up"]; property: "wakeUpInterval"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Wake Up"]; - readonly endpoint: number; - readonly property: "wakeUpInterval"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Wake Up"]; + readonly endpoint: number; + readonly property: "wakeUpInterval"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Wake Up interval"; readonly min: 0; @@ -20427,12 +20212,12 @@ export const WakeUpCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Wake Up"]; property: "controllerNodeId"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Wake Up"]; - readonly endpoint: number; - readonly property: "controllerNodeId"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Wake Up"]; + readonly endpoint: number; + readonly property: "controllerNodeId"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly label: "Node ID of the controller"; readonly writeable: false; @@ -20677,39 +20462,34 @@ export interface WindowCoveringCCSupportedReportOptions extends CCCommandOptions // // @public (undocumented) export const WindowCoveringCCValues: Readonly<{ - levelChangeDown: ((parameter: WindowCoveringParameter) => ExpandRecursively< { - readonly meta: { - readonly label: `${string} - ${string}`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly states: { - readonly true: "Start"; - readonly false: "Stop"; - }; - readonly ccSpecific: { - readonly parameter: WindowCoveringParameter; - }; - readonly readable: false; - readonly type: "boolean"; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "levelChangeDown"; - propertyKey: WindowCoveringParameter; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "levelChangeDown"; - propertyKey: WindowCoveringParameter; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + levelChangeDown: ((parameter: WindowCoveringParameter) => { + readonly meta: { + readonly label: `${string} - ${string}`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly states: { + readonly true: "Start"; + readonly false: "Stop"; + }; + readonly ccSpecific: { + readonly parameter: WindowCoveringParameter; + }; + readonly readable: false; + readonly type: "boolean"; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Window Covering"]; + property: "levelChangeDown"; + propertyKey: WindowCoveringParameter; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; + readonly endpoint: number; + readonly property: "levelChangeDown"; + readonly propertyKey: WindowCoveringParameter; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -20719,39 +20499,34 @@ export const WindowCoveringCCValues: Readonly<{ readonly autoCreate: true; }; }; - levelChangeUp: ((parameter: WindowCoveringParameter) => ExpandRecursively< { - readonly meta: { - readonly label: `${string} - ${string}`; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly states: { - readonly true: "Start"; - readonly false: "Stop"; - }; - readonly ccSpecific: { - readonly parameter: WindowCoveringParameter; - }; - readonly readable: false; - readonly type: "boolean"; - readonly writeable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "levelChangeUp"; - propertyKey: WindowCoveringParameter; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "levelChangeUp"; - propertyKey: WindowCoveringParameter; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + levelChangeUp: ((parameter: WindowCoveringParameter) => { + readonly meta: { + readonly label: `${string} - ${string}`; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly states: { + readonly true: "Start"; + readonly false: "Stop"; + }; + readonly ccSpecific: { + readonly parameter: WindowCoveringParameter; + }; + readonly readable: false; + readonly type: "boolean"; + readonly writeable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Window Covering"]; + property: "levelChangeUp"; + propertyKey: WindowCoveringParameter; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; + readonly endpoint: number; + readonly property: "levelChangeUp"; + readonly propertyKey: WindowCoveringParameter; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -20761,34 +20536,29 @@ export const WindowCoveringCCValues: Readonly<{ readonly autoCreate: true; }; }; - duration: ((parameter: WindowCoveringParameter) => ExpandRecursively< { - readonly meta: { - readonly label: `Remaining duration - ${string}`; - readonly ccSpecific: { - readonly parameter: WindowCoveringParameter; - }; - readonly writeable: false; - readonly type: "duration"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "duration"; - propertyKey: WindowCoveringParameter; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "duration"; - propertyKey: WindowCoveringParameter; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + duration: ((parameter: WindowCoveringParameter) => { + readonly meta: { + readonly label: `Remaining duration - ${string}`; + readonly ccSpecific: { + readonly parameter: WindowCoveringParameter; + }; + readonly writeable: false; + readonly type: "duration"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Window Covering"]; + property: "duration"; + propertyKey: WindowCoveringParameter; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; + readonly endpoint: number; + readonly property: "duration"; + readonly propertyKey: WindowCoveringParameter; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -20798,41 +20568,36 @@ export const WindowCoveringCCValues: Readonly<{ readonly autoCreate: true; }; }; - targetValue: ((parameter: WindowCoveringParameter) => ExpandRecursively< { - readonly meta: { - readonly label: `Target value - ${string}`; - readonly writeable: boolean; - readonly states: { - [x: number]: string; - }; - readonly allowManualEntry: boolean; - readonly ccSpecific: { - readonly parameter: WindowCoveringParameter; - }; - readonly valueChangeOptions: readonly ["transitionDuration"]; - readonly max: 99; - readonly min: 0; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "targetValue"; - propertyKey: WindowCoveringParameter; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "targetValue"; - propertyKey: WindowCoveringParameter; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + targetValue: ((parameter: WindowCoveringParameter) => { + readonly meta: { + readonly label: `Target value - ${string}`; + readonly writeable: boolean; + readonly states: { + [x: number]: string; + }; + readonly allowManualEntry: boolean; + readonly ccSpecific: { + readonly parameter: WindowCoveringParameter; + }; + readonly valueChangeOptions: readonly ["transitionDuration"]; + readonly max: 99; + readonly min: 0; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Window Covering"]; + property: "targetValue"; + propertyKey: WindowCoveringParameter; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; + readonly endpoint: number; + readonly property: "targetValue"; + readonly propertyKey: WindowCoveringParameter; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -20842,39 +20607,34 @@ export const WindowCoveringCCValues: Readonly<{ readonly autoCreate: true; }; }; - currentValue: ((parameter: WindowCoveringParameter) => ExpandRecursively< { - readonly meta: { - readonly label: `Current value - ${string}`; - readonly states: { - [x: number]: string; - }; - readonly ccSpecific: { - readonly parameter: WindowCoveringParameter; - }; - readonly writeable: false; - readonly max: 99; - readonly min: 0; - readonly type: "number"; - readonly readable: true; - }; - readonly id: { - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "currentValue"; - propertyKey: WindowCoveringParameter; - }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively & { - endpoint: number; - } & Omit<{ - commandClass: (typeof CommandClasses_2)["Window Covering"]; - property: "currentValue"; - propertyKey: WindowCoveringParameter; - }, "commandClass">>>; - }>) & { - is: (valueId: ValueID) => ExpandRecursively; + currentValue: ((parameter: WindowCoveringParameter) => { + readonly meta: { + readonly label: `Current value - ${string}`; + readonly states: { + [x: number]: string; + }; + readonly ccSpecific: { + readonly parameter: WindowCoveringParameter; + }; + readonly writeable: false; + readonly max: 99; + readonly min: 0; + readonly type: "number"; + readonly readable: true; + }; + readonly id: { + commandClass: (typeof CommandClasses_2)["Window Covering"]; + property: "currentValue"; + propertyKey: WindowCoveringParameter; + }; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; + readonly endpoint: number; + readonly property: "currentValue"; + readonly propertyKey: WindowCoveringParameter; + }; + }) & { + is: (valueId: ValueID) => boolean; readonly options: { readonly internal: false; readonly minVersion: 1; @@ -20889,12 +20649,12 @@ export const WindowCoveringCCValues: Readonly<{ commandClass: (typeof CommandClasses_2)["Window Covering"]; property: "supportedParameters"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; - readonly endpoint: number; - readonly property: "supportedParameters"; - }>; - readonly is: (valueId: ValueID) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses_2)["Window Covering"]; + readonly endpoint: number; + readonly property: "supportedParameters"; + }; + readonly is: (valueId: ValueID) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -21075,12 +20835,12 @@ export const ZWavePlusCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; property: "installerIcon"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; - readonly endpoint: number; - readonly property: "installerIcon"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; + readonly endpoint: number; + readonly property: "installerIcon"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -21100,12 +20860,12 @@ export const ZWavePlusCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; property: "userIcon"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; - readonly endpoint: number; - readonly property: "userIcon"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; + readonly endpoint: number; + readonly property: "userIcon"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -21125,12 +20885,12 @@ export const ZWavePlusCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; property: "roleType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; - readonly endpoint: number; - readonly property: "roleType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; + readonly endpoint: number; + readonly property: "roleType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -21150,12 +20910,12 @@ export const ZWavePlusCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; property: "nodeType"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; - readonly endpoint: number; - readonly property: "nodeType"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; + readonly endpoint: number; + readonly property: "nodeType"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; @@ -21175,12 +20935,12 @@ export const ZWavePlusCCValues: Readonly<{ commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; property: "zwavePlusVersion"; }; - readonly endpoint: (endpoint?: number | undefined) => ExpandRecursively< { - readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; - readonly endpoint: number; - readonly property: "zwavePlusVersion"; - }>; - readonly is: (valueId: ValueID_2) => ExpandRecursively; + readonly endpoint: (endpoint?: number | undefined) => { + readonly commandClass: (typeof CommandClasses)["Z-Wave Plus Info"]; + readonly endpoint: number; + readonly property: "zwavePlusVersion"; + }; + readonly is: (valueId: ValueID_2) => boolean; readonly meta: { readonly type: "any"; readonly readable: true; diff --git a/packages/cc/package.json b/packages/cc/package.json index 5b985e3cfc71..4beb64c596e3 100644 --- a/packages/cc/package.json +++ b/packages/cc/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/cc", - "version": "13.3.1", + "version": "13.9.1", "description": "zwave-js: Command Classes", "keywords": [], "publishConfig": { @@ -59,7 +59,7 @@ "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", "ts": "node -r esbuild-register --conditions=@@dev", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" @@ -74,14 +74,14 @@ "reflect-metadata": "^0.2.2" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", + "@microsoft/api-extractor": "^7.47.9", "@types/fs-extra": "^11.0.4", - "@types/node": "^18.19.42", + "@types/node": "^18.19.55", "@zwave-js/maintenance": "workspace:*", "@zwave-js/transformers": "workspace:*", "ava": "^6.1.3", - "del-cli": "^5.1.0", + "del-cli": "^6.0.0", "fs-extra": "^11.2.0", - "typescript": "5.5.3" + "typescript": "5.6.2" } } diff --git a/packages/cc/src/cc/DeviceResetLocallyCC.ts b/packages/cc/src/cc/DeviceResetLocallyCC.ts index a34516fac8c9..8a028fa9e3c7 100644 --- a/packages/cc/src/cc/DeviceResetLocallyCC.ts +++ b/packages/cc/src/cc/DeviceResetLocallyCC.ts @@ -57,7 +57,7 @@ export class DeviceResetLocallyCCAPI extends CCAPI { // We don't want failures causing us to treat the node as asleep or dead changeNodeStatusOnMissingACK: false, }); - } catch (e) { + } catch { // Don't care } } diff --git a/packages/cc/src/cc/MultilevelSensorCC.ts b/packages/cc/src/cc/MultilevelSensorCC.ts index c6977ffbe6f9..785723cf61bf 100644 --- a/packages/cc/src/cc/MultilevelSensorCC.ts +++ b/packages/cc/src/cc/MultilevelSensorCC.ts @@ -162,7 +162,7 @@ function getPreferredSensorScale( if (typeof preferred === "string") { for (const [key, scale] of Object.entries(sensor.scales)) { if (scale.label === preferred || scale.unit === preferred) { - preferred = key; + preferred = parseInt(key, 10); break; } } diff --git a/packages/cc/src/cc/MultilevelSwitchCC.ts b/packages/cc/src/cc/MultilevelSwitchCC.ts index ecbcf05f6aba..cda49dc18438 100644 --- a/packages/cc/src/cc/MultilevelSwitchCC.ts +++ b/packages/cc/src/cc/MultilevelSwitchCC.ts @@ -677,8 +677,8 @@ export class MultilevelSwitchCCSet extends MultilevelSwitchCC { // @publicAPI export interface MultilevelSwitchCCReportOptions extends CCCommandOptions { - currentValue: number; - targetValue: number; + currentValue: MaybeUnknown; + targetValue: MaybeUnknown; duration?: Duration | string; } @@ -844,17 +844,28 @@ export class MultilevelSwitchCCStartLevelChange extends MultilevelSwitchCC { @useSupervision() export class MultilevelSwitchCCStopLevelChange extends MultilevelSwitchCC {} +// @publicAPI +export interface MultilevelSwitchCCSupportedReportOptions { + switchType: SwitchType; +} + @CCCommand(MultilevelSwitchCommand.SupportedReport) export class MultilevelSwitchCCSupportedReport extends MultilevelSwitchCC { public constructor( host: ZWaveHost, - options: CommandClassDeserializationOptions, + options: + | CommandClassDeserializationOptions + | (CCCommandOptions & MultilevelSwitchCCSupportedReportOptions), ) { super(host, options); - validatePayload(this.payload.length >= 1); - this.switchType = this.payload[0] & 0b11111; - // We do not support the deprecated secondary switch type + if (gotDeserializationOptions(options)) { + validatePayload(this.payload.length >= 1); + this.switchType = this.payload[0] & 0b11111; + // We do not support the deprecated secondary switch type + } else { + this.switchType = options.switchType; + } } // This is the primary switch type. We're not supporting secondary switch types @@ -867,6 +878,11 @@ export class MultilevelSwitchCCSupportedReport extends MultilevelSwitchCC { return true; } + public serialize(): Buffer { + this.payload = Buffer.from([this.switchType & 0b11111]); + return super.serialize(); + } + public toLogEntry(host?: ZWaveValueHost): MessageOrCCLogEntry { return { ...super.toLogEntry(host), diff --git a/packages/cc/src/cc/Security2CC.ts b/packages/cc/src/cc/Security2CC.ts index 854b22f71c19..f8b460c4097f 100644 --- a/packages/cc/src/cc/Security2CC.ts +++ b/packages/cc/src/cc/Security2CC.ts @@ -1002,11 +1002,11 @@ function testCCResponseForMessageEncapsulation( } function failNoSPAN(): never { - throw validatePayload.fail(ZWaveErrorCodes.Security2CC_NoSPAN); + validatePayload.fail(ZWaveErrorCodes.Security2CC_NoSPAN); } function failNoMPAN(): never { - throw validatePayload.fail(ZWaveErrorCodes.Security2CC_NoMPAN); + validatePayload.fail(ZWaveErrorCodes.Security2CC_NoMPAN); } // @publicAPI @@ -1134,7 +1134,7 @@ export class Security2CCMessageEncapsulation extends Security2CC { || options.frameType === "broadcast" ) { if (multicastGroupId == undefined) { - throw validatePayload.fail( + validatePayload.fail( "Multicast frames without MGRP extension", ); } @@ -1158,7 +1158,7 @@ export class Security2CCMessageEncapsulation extends Security2CC { } else { this.securityManager.nextNonce(sendingNodeId); } - throw validatePayload.fail( + validatePayload.fail( "Invalid S2 extension", ); } @@ -1217,7 +1217,7 @@ export class Security2CCMessageEncapsulation extends Security2CC { ctx.groupId, { type: MPANState.OutOfSync }, ); - throw failNoMPAN(); + failNoMPAN(); } decrypt = () => @@ -1236,11 +1236,11 @@ export class Security2CCMessageEncapsulation extends Security2CC { // If we are not able to establish an SPAN yet, fail the decryption if (spanState.type === SPANState.None) { - throw failNoSPAN(); + failNoSPAN(); } else if (spanState.type === SPANState.RemoteEI) { // TODO: The specs are not clear how to handle this case // For now, do the same as if we didn't have any EI - throw failNoSPAN(); + failNoSPAN(); } decrypt = () => @@ -1296,11 +1296,11 @@ export class Security2CCMessageEncapsulation extends Security2CC { ctx.groupId, { type: MPANState.OutOfSync }, ); - throw validatePayload.fail( + validatePayload.fail( ZWaveErrorCodes.Security2CC_CannotDecodeMulticast, ); } else { - throw validatePayload.fail( + validatePayload.fail( ZWaveErrorCodes.Security2CC_CannotDecode, ); } @@ -1320,7 +1320,7 @@ export class Security2CCMessageEncapsulation extends Security2CC { // Before we can continue, check if the command must be discarded if (mustDiscardCommand) { - throw validatePayload.fail("Invalid extension"); + validatePayload.fail("Invalid extension"); } // If the MPAN extension was received, store the MPAN @@ -1782,7 +1782,7 @@ export class Security2CCMessageEncapsulation extends Security2CC { // We've sent the other our receiver's EI and received its sender's EI, // meaning we can now establish an SPAN const senderEI = this.getSenderEI(); - if (!senderEI) throw failNoSPAN(); + if (!senderEI) failNoSPAN(); const receiverEI = spanState.receiverEI; // How we do this depends on whether we know the security class of the other node diff --git a/packages/cc/src/cc/SecurityCC.ts b/packages/cc/src/cc/SecurityCC.ts index 75bbe5c173d6..c3757a36b13a 100644 --- a/packages/cc/src/cc/SecurityCC.ts +++ b/packages/cc/src/cc/SecurityCC.ts @@ -656,6 +656,11 @@ export class SecurityCCCommandEncapsulation extends SecurityCC { this.secondFrame = !!(frameControl & 0b10_0000); this.decryptedCCBytes = frameControlAndDecryptedCC.subarray(1); + + // Remember for debugging purposes + this.authData = authData; + this.authCode = authCode; + this.iv = iv; } else { this.encapsulated = options.encapsulated; options.encapsulated.encapsulatingCC = this as any; @@ -687,6 +692,12 @@ export class SecurityCCCommandEncapsulation extends SecurityCC { } public nonce: Buffer | undefined; + // Only used testing/for debugging purposes + private iv?: Buffer; + private authData?: Buffer; + private authCode?: Buffer; + private ciphertext?: Buffer; + public getPartialCCSessionId(): Record | undefined { if (this.sequenced) { return { @@ -750,6 +761,12 @@ export class SecurityCCCommandEncapsulation extends SecurityCC { ); const authCode = computeMAC(authData, this.authKey); + // Remember for debugging purposes + this.iv = iv; + this.authData = authData; + this.authCode = authCode; + this.ciphertext = ciphertext; + this.payload = Buffer.concat([ senderNonce, ciphertext, @@ -780,6 +797,26 @@ export class SecurityCCCommandEncapsulation extends SecurityCC { } } } + // Log the plaintext in integration tests and development mode + if ( + process.env.NODE_ENV === "test" + || process.env.NODE_ENV === "development" + ) { + if (this.iv) { + message.IV = buffer2hex(this.iv); + } + if (this.ciphertext) { + message.ciphertext = buffer2hex(this.ciphertext); + } else if (this.decryptedCCBytes) { + message.plaintext = buffer2hex(this.decryptedCCBytes); + } + if (this.authData) { + message["auth data"] = buffer2hex(this.authData); + } + if (this.authCode) { + message["auth code"] = buffer2hex(this.authCode); + } + } return { ...super.toLogEntry(host), message, diff --git a/packages/cc/src/cc/SoundSwitchCC.ts b/packages/cc/src/cc/SoundSwitchCC.ts index 22e257341eb4..91419b2b92e3 100644 --- a/packages/cc/src/cc/SoundSwitchCC.ts +++ b/packages/cc/src/cc/SoundSwitchCC.ts @@ -89,7 +89,7 @@ export const SoundSwitchCCValues = Object.freeze({ "defaultToneId", { ...ValueMetadata.Number, - min: 0, + min: 1, max: 254, label: "Default tone ID", } as const, @@ -632,11 +632,9 @@ export class SoundSwitchCCConfigurationSet extends SoundSwitchCC { ) { super(host, options); if (gotDeserializationOptions(options)) { - // TODO: Deserialize payload - throw new ZWaveError( - `${this.constructor.name}: deserialization not implemented`, - ZWaveErrorCodes.Deserialization_NotImplemented, - ); + validatePayload(this.payload.length >= 2); + this.defaultVolume = this.payload[0]; + this.defaultToneId = this.payload[1]; } else { this.defaultVolume = options.defaultVolume; this.defaultToneId = options.defaultToneId; @@ -663,9 +661,7 @@ export class SoundSwitchCCConfigurationSet extends SoundSwitchCC { } // @publicAPI -export interface SoundSwitchCCConfigurationReportOptions - extends CCCommandOptions -{ +export interface SoundSwitchCCConfigurationReportOptions { defaultVolume: number; defaultToneId: number; } @@ -676,7 +672,7 @@ export class SoundSwitchCCConfigurationReport extends SoundSwitchCC { host: ZWaveHost, options: | CommandClassDeserializationOptions - | SoundSwitchCCConfigurationReportOptions, + | (CCCommandOptions & SoundSwitchCCConfigurationReportOptions), ) { super(host, options); if (gotDeserializationOptions(options)) { @@ -716,7 +712,7 @@ export class SoundSwitchCCConfigurationReport extends SoundSwitchCC { export class SoundSwitchCCConfigurationGet extends SoundSwitchCC {} // @publicAPI -export interface SoundSwitchCCTonePlaySetOptions extends CCCommandOptions { +export interface SoundSwitchCCTonePlaySetOptions { toneId: ToneId | number; // V2+ volume?: number; @@ -729,15 +725,15 @@ export class SoundSwitchCCTonePlaySet extends SoundSwitchCC { host: ZWaveHost, options: | CommandClassDeserializationOptions - | SoundSwitchCCTonePlaySetOptions, + | (CCCommandOptions & SoundSwitchCCTonePlaySetOptions), ) { super(host, options); if (gotDeserializationOptions(options)) { - // TODO: Deserialize payload - throw new ZWaveError( - `${this.constructor.name}: deserialization not implemented`, - ZWaveErrorCodes.Deserialization_NotImplemented, - ); + validatePayload(this.payload.length >= 1); + this.toneId = this.payload[0]; + if (this.toneId !== 0 && this.payload.length >= 2) { + this.volume = this.payload[1]; + } } else { this.toneId = options.toneId; this.volume = options.volume; @@ -766,17 +762,31 @@ export class SoundSwitchCCTonePlaySet extends SoundSwitchCC { } } +// @publicAPI +export interface SoundSwitchCCTonePlayReportOptions { + toneId: ToneId | number; + // V2+ + volume?: number; +} + @CCCommand(SoundSwitchCommand.TonePlayReport) export class SoundSwitchCCTonePlayReport extends SoundSwitchCC { public constructor( host: ZWaveHost, - options: CommandClassDeserializationOptions, + options: + | CommandClassDeserializationOptions + | (CCCommandOptions & SoundSwitchCCTonePlayReportOptions), ) { super(host, options); - validatePayload(this.payload.length >= 1); - this.toneId = this.payload[0]; - if (this.toneId !== 0 && this.payload.length >= 2) { - this.volume = this.payload[1]; + if (gotDeserializationOptions(options)) { + validatePayload(this.payload.length >= 1); + this.toneId = this.payload[0]; + if (this.toneId !== 0 && this.payload.length >= 2) { + this.volume = this.payload[1]; + } + } else { + this.toneId = options.toneId; + this.volume = options.volume; } } @@ -786,6 +796,11 @@ export class SoundSwitchCCTonePlayReport extends SoundSwitchCC { @ccValue(SoundSwitchCCValues.volume) public volume?: number; + public serialize(): Buffer { + this.payload = Buffer.from([this.toneId, this.volume ?? 0]); + return super.serialize(); + } + public toLogEntry(host?: ZWaveValueHost): MessageOrCCLogEntry { const message: MessageRecord = { "tone id": this.toneId, diff --git a/packages/cc/src/cc/ThermostatSetbackCC.ts b/packages/cc/src/cc/ThermostatSetbackCC.ts index 29860dee9d43..244049055f49 100644 --- a/packages/cc/src/cc/ThermostatSetbackCC.ts +++ b/packages/cc/src/cc/ThermostatSetbackCC.ts @@ -6,9 +6,6 @@ import { CommandClasses, type MaybeNotKnown, MessagePriority, - ValueMetadata, - ZWaveError, - ZWaveErrorCodes, validatePayload, } from "@zwave-js/core/safe"; import type { @@ -33,14 +30,11 @@ import { import { API, CCCommand, - ccValue, - ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from "../lib/CommandClassDecorators"; -import { V } from "../lib/Values"; import { type SetbackState, SetbackType, @@ -48,29 +42,6 @@ import { } from "../lib/_Types"; import { decodeSetbackState, encodeSetbackState } from "../lib/serializers"; -export const ThermostatSetbackCCValues = Object.freeze({ - ...V.defineStaticCCValues(CommandClasses["Thermostat Setback"], { - ...V.staticProperty( - "setbackType", - { - // TODO: This should be a value list - ...ValueMetadata.Any, - label: "Setback type", - } as const, - ), - - ...V.staticProperty( - "setbackState", - { - ...ValueMetadata.Int8, - min: -12.8, - max: 12, - label: "Setback state", - } as const, - ), - }), -}); - // @noSetValueAPI // The setback state consist of two values that must be set together @@ -145,7 +116,6 @@ export class ThermostatSetbackCCAPI extends CCAPI { @commandClass(CommandClasses["Thermostat Setback"]) @implementedVersion(1) -@ccValues(ThermostatSetbackCCValues) export class ThermostatSetbackCC extends CommandClass { declare ccCommand: ThermostatSetbackCommand; @@ -212,11 +182,12 @@ export class ThermostatSetbackCCSet extends ThermostatSetbackCC { ) { super(host, options); if (gotDeserializationOptions(options)) { - // TODO: Deserialize payload - throw new ZWaveError( - `${this.constructor.name}: deserialization not implemented`, - ZWaveErrorCodes.Deserialization_NotImplemented, - ); + validatePayload(this.payload.length >= 2); + this.setbackType = this.payload[0] & 0b11; + // If we receive an unknown setback state, return the raw value + const rawSetbackState = this.payload.readInt8(1); + this.setbackState = decodeSetbackState(rawSetbackState) + || rawSetbackState; } else { this.setbackType = options.setbackType; this.setbackState = options.setbackState; @@ -243,34 +214,55 @@ export class ThermostatSetbackCCSet extends ThermostatSetbackCC { SetbackType, this.setbackType, ), - "setback state": this.setbackState, + "setback state": typeof this.setbackState === "number" + ? `${this.setbackState} K` + : this.setbackState, }, }; } } +// @publicAPI +export interface ThermostatSetbackCCReportOptions { + setbackType: SetbackType; + setbackState: SetbackState; +} + @CCCommand(ThermostatSetbackCommand.Report) export class ThermostatSetbackCCReport extends ThermostatSetbackCC { public constructor( host: ZWaveHost, - options: CommandClassDeserializationOptions, + options: + | CommandClassDeserializationOptions + | (CCCommandOptions & ThermostatSetbackCCReportOptions), ) { super(host, options); - validatePayload(this.payload.length >= 2); - this.setbackType = this.payload[0] & 0b11; - // If we receive an unknown setback state, return the raw value - this.setbackState = decodeSetbackState(this.payload[1]) - || this.payload[1]; + if (gotDeserializationOptions(options)) { + validatePayload(this.payload.length >= 2); + this.setbackType = this.payload[0] & 0b11; + // If we receive an unknown setback state, return the raw value + const rawSetbackState = this.payload.readInt8(1); + this.setbackState = decodeSetbackState(rawSetbackState) + || rawSetbackState; + } else { + this.setbackType = options.setbackType; + this.setbackState = options.setbackState; + } } - @ccValue(ThermostatSetbackCCValues.setbackType) public readonly setbackType: SetbackType; - - @ccValue(ThermostatSetbackCCValues.setbackState) /** The offset from the setpoint in 0.1 Kelvin or a special mode */ public readonly setbackState: SetbackState; + public serialize(): Buffer { + this.payload = Buffer.from([ + this.setbackType & 0b11, + encodeSetbackState(this.setbackState), + ]); + return super.serialize(); + } + public toLogEntry(host?: ZWaveValueHost): MessageOrCCLogEntry { return { ...super.toLogEntry(host), @@ -279,7 +271,9 @@ export class ThermostatSetbackCCReport extends ThermostatSetbackCC { SetbackType, this.setbackType, ), - "setback state": this.setbackState, + "setback state": typeof this.setbackState === "number" + ? `${this.setbackState} K` + : this.setbackState, }, }; } diff --git a/packages/cc/src/cc/WindowCoveringCC.ts b/packages/cc/src/cc/WindowCoveringCC.ts index 623f494b2088..aafdaff85b75 100644 --- a/packages/cc/src/cc/WindowCoveringCC.ts +++ b/packages/cc/src/cc/WindowCoveringCC.ts @@ -955,8 +955,7 @@ export class WindowCoveringCCStartLevelChange extends WindowCoveringCC { super(host, options); if (gotDeserializationOptions(options)) { validatePayload(this.payload.length >= 2); - const direction = (this.payload[0] & 0b0100_0000) >>> 6; - this.direction = direction ? "down" : "up"; + this.direction = !!(this.payload[0] & 0b0100_0000) ? "down" : "up"; this.parameter = this.payload[1]; if (this.payload.length >= 3) { this.duration = Duration.parseSet(this.payload[2]); @@ -974,7 +973,7 @@ export class WindowCoveringCCStartLevelChange extends WindowCoveringCC { public serialize(): Buffer { this.payload = Buffer.from([ - this.direction === "up" ? 0b0100_0000 : 0b0000_0000, + this.direction === "down" ? 0b0100_0000 : 0b0000_0000, this.parameter, (this.duration ?? Duration.default()).serializeSet(), ]); diff --git a/packages/cc/src/cc/ZWaveProtocolCC.ts b/packages/cc/src/cc/ZWaveProtocolCC.ts index dc697ae572c2..12d48da99957 100644 --- a/packages/cc/src/cc/ZWaveProtocolCC.ts +++ b/packages/cc/src/cc/ZWaveProtocolCC.ts @@ -207,7 +207,7 @@ export class ZWaveProtocolCCFindNodesInRange extends ZWaveProtocolCC { this.wakeUpTime = parseWakeUpTime(rest[0]); this.dataRate = rest[1] & 0b111; } else { - throw validatePayload.fail("Invalid payload length"); + validatePayload.fail("Invalid payload length"); } } else if (rest.length >= 1) { this.wakeUpTime = parseWakeUpTime(rest[0]); @@ -1001,7 +1001,7 @@ export class ZWaveProtocolCCNOPPower extends ZWaveProtocolCC { ].indexOf(this.payload[0]); if (this.powerDampening === -1) this.powerDampening = 0; } else { - throw validatePayload.fail("Invalid payload length!"); + validatePayload.fail("Invalid payload length!"); } } else { if (options.powerDampening < 0 || options.powerDampening > 14) { diff --git a/packages/cc/src/cc/index.ts b/packages/cc/src/cc/index.ts index 2dca55ba19b5..1499572ca55b 100644 --- a/packages/cc/src/cc/index.ts +++ b/packages/cc/src/cc/index.ts @@ -472,6 +472,7 @@ export type { MultilevelSwitchCCReportOptions, MultilevelSwitchCCSetOptions, MultilevelSwitchCCStartLevelChangeOptions, + MultilevelSwitchCCSupportedReportOptions, } from "./MultilevelSwitchCC"; export { MultilevelSwitchCC, @@ -672,6 +673,7 @@ export type { SoundSwitchCCConfigurationSetOptions, SoundSwitchCCToneInfoGetOptions, SoundSwitchCCToneInfoReportOptions, + SoundSwitchCCTonePlayReportOptions, SoundSwitchCCTonePlaySetOptions, SoundSwitchCCTonesNumberReportOptions, } from "./SoundSwitchCC"; @@ -735,13 +737,15 @@ export { ThermostatOperatingStateCCReport, ThermostatOperatingStateCCValues, } from "./ThermostatOperatingStateCC"; -export type { ThermostatSetbackCCSetOptions } from "./ThermostatSetbackCC"; +export type { + ThermostatSetbackCCReportOptions, + ThermostatSetbackCCSetOptions, +} from "./ThermostatSetbackCC"; export { ThermostatSetbackCC, ThermostatSetbackCCGet, ThermostatSetbackCCReport, ThermostatSetbackCCSet, - ThermostatSetbackCCValues, } from "./ThermostatSetbackCC"; export type { ThermostatSetpointCCCapabilitiesGetOptions, diff --git a/packages/cc/src/lib/Values.ts b/packages/cc/src/lib/Values.ts index 9b38ca8cd2fe..e83952b480d6 100644 --- a/packages/cc/src/lib/Values.ts +++ b/packages/cc/src/lib/Values.ts @@ -5,6 +5,11 @@ import { ValueMetadata, } from "@zwave-js/core"; import type { ZWaveApplicationHost } from "@zwave-js/host"; +import { + type FnOrStatic, + type ReturnTypeOrStatic, + evalOrStatic, +} from "@zwave-js/shared/safe"; import type { Overwrite } from "alcalzone-shared/types"; import type { ValueIDProperties } from "./API"; @@ -128,12 +133,6 @@ type ToDynamicCCValues< } >; -type FnOrStatic = - | ((...args: TArgs) => TReturn) - | TReturn; - -type ReturnTypeOrStatic = T extends (...args: any[]) => infer R ? R : T; - type InferArgs[]> = T extends [ (...args: infer A) => any, ...any, @@ -141,10 +140,6 @@ type InferArgs[]> = T extends [ : T extends [any, ...infer R] ? InferArgs : []; -function evalOrStatic(fnOrConst: T, ...args: any[]): ReturnTypeOrStatic { - return typeof fnOrConst === "function" ? fnOrConst(...args) : fnOrConst; -} - /** Defines a single static CC values that belong to a CC */ function defineStaticCCValue< TCommandClass extends CommandClasses, @@ -399,7 +394,7 @@ export const V = { property: TProp, is: PartialCCValuePredicate, meta?: TMeta, - options?: TOptions | undefined, + options?: TOptions, ): { [K in TName]: { (...args: InferArgs<[TProp, TMeta]>): { @@ -434,7 +429,7 @@ export const V = { propertyKey: TKey, is: PartialCCValuePredicate, meta?: TMeta, - options?: TOptions | undefined, + options?: TOptions, ): { [K in TName]: { (...args: InferArgs<[TProp, TKey, TMeta]>): { @@ -648,8 +643,6 @@ export interface CCValues { typeof import("../cc/ThermostatModeCC").ThermostatModeCCValues; "Thermostat Operating State": typeof import("../cc/ThermostatOperatingStateCC").ThermostatOperatingStateCCValues; - "Thermostat Setback": - typeof import("../cc/ThermostatSetbackCC").ThermostatSetbackCCValues; "Thermostat Setpoint": typeof import("../cc/ThermostatSetpointCC").ThermostatSetpointCCValues; "Time Parameters": diff --git a/packages/cc/src/lib/utils.ts b/packages/cc/src/lib/utils.ts index a95baddef20f..3ed1b4ada4a6 100644 --- a/packages/cc/src/lib/utils.ts +++ b/packages/cc/src/lib/utils.ts @@ -70,11 +70,11 @@ export function getAssociations( // Eliminate potential duplicates ...assocs.filter( (a1) => - normalAssociations.findIndex( + !normalAssociations.some( (a2) => a1.nodeId === a2.nodeId && a1.endpoint === a2.endpoint, - ) === -1, + ), ), ]); } else { diff --git a/packages/config/config/.dprint.jsonc b/packages/config/config/.dprint.jsonc index 838d24863992..95ad8f48c32f 100644 --- a/packages/config/config/.dprint.jsonc +++ b/packages/config/config/.dprint.jsonc @@ -9,5 +9,5 @@ "includes": ["*.json", "devices/**/*.json"], - "plugins": ["https://plugins.dprint.dev/json-0.19.2.wasm"] + "plugins": ["https://plugins.dprint.dev/json-0.19.3.wasm"] } diff --git a/packages/config/config/.eslintrc.js b/packages/config/config/.eslintrc.js deleted file mode 100644 index 38b0b3138cbb..000000000000 --- a/packages/config/config/.eslintrc.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Custom ESLint rules for device config files - */ - -module.exports = { - root: true, - parser: "jsonc-eslint-parser", - plugins: [ - "@zwave-js", - ], - extends: "plugin:@zwave-js/config-files" -}; diff --git a/packages/config/config/devices/0x0000/700_800_series_controller.json b/packages/config/config/devices/0x0000/700_800_series_controller.json index 924af101b3f8..9e4904072a1a 100644 --- a/packages/config/config/devices/0x0000/700_800_series_controller.json +++ b/packages/config/config/devices/0x0000/700_800_series_controller.json @@ -22,12 +22,14 @@ "$import": "~/templates/master_template.json#7xx_firmware_bug_pre_7_17_2" }, { - "$if": "firmwareVersion === 7.19.1", - "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_1" + // Not sure if this is a 700 or 800 series controller. Show the generic warning + "$if": "firmwareVersion >= 7.19.1 && firmwareVersion <= 7.21.3", + "$import": "~/templates/master_template.json#7xx_8xx_firmware_bug_7_19_to_7_21_3_or_7_22_1" }, { - "$if": "firmwareVersion === 7.19.3", - "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_3" + // 7.22.x is limited to 800 series + "$if": "firmwareVersion === 7.22.0", + "$import": "~/templates/master_template.json#8xx_firmware_bug_pre_7_22_1" } ] } diff --git a/packages/config/config/devices/0x0002/lc-13.json b/packages/config/config/devices/0x0002/lc-13.json index fd8066e156f6..8bbf3e28e6b7 100644 --- a/packages/config/config/devices/0x0002/lc-13.json +++ b/packages/config/config/devices/0x0002/lc-13.json @@ -36,5 +36,9 @@ ["Battery", "get"], ["Thermostat Setpoint", "get", 1] ] + }, + "metadata": { + "reset": "a) Remove the battery cover and take out one battery.\nb) Press and hold the (o) button for about 10 secs while reinserting the battery.", + "manual": "https://manuals-backend.z-wave.info/make.php?lang=en&sku=DAN_LC-13" } } diff --git a/packages/config/config/devices/0x0090/templates/kwikset_template.json b/packages/config/config/devices/0x0090/templates/kwikset_template.json index 1a3f5e948399..389aafdff3d1 100644 --- a/packages/config/config/devices/0x0090/templates/kwikset_template.json +++ b/packages/config/config/devices/0x0090/templates/kwikset_template.json @@ -227,17 +227,19 @@ "label": "SKU Number (First 4 Bytes)", "valueSize": 4, "minValue": 0, - "maxValue": 0, + "maxValue": 4294967295, "defaultValue": 0, - "unsigned": true + "unsigned": true, + "readOnly": true }, "dipswitch_sku_lastfour": { "label": "SKU Number (Last 4 Bytes)", "valueSize": 4, "minValue": 0, - "maxValue": 0, + "maxValue": 4294967295, "defaultValue": 0, - "unsigned": true + "unsigned": true, + "readOnly": true }, "reset": { "label": "Reset to Default", diff --git a/packages/config/config/devices/0x0115/zme_uzb1.json b/packages/config/config/devices/0x0115/zme_uzb1.json index d73706dcd028..03036a0f2b13 100644 --- a/packages/config/config/devices/0x0115/zme_uzb1.json +++ b/packages/config/config/devices/0x0115/zme_uzb1.json @@ -15,7 +15,12 @@ "max": "255.255" }, "metadata": { - "reset": "n/a", - "manual": "https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1147/ZME_UZB1_Manual.pdf" + "manual": "https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1147/ZME_UZB1_Manual.pdf", + "comments": [ + { + "level": "warning", + "text": "This controller has a bug in its USB implementation, which can cause issues with newer Linux kernel versions. Using a powered USB hub MAY help to work around the issue, but migrating to a different controller is recommended." + } + ] } } diff --git a/packages/config/config/devices/0x026e/vcz1.json b/packages/config/config/devices/0x026e/vcz1.json index 00f250d68001..2af85c40477f 100644 --- a/packages/config/config/devices/0x026e/vcz1.json +++ b/packages/config/config/devices/0x026e/vcz1.json @@ -15,7 +15,21 @@ "max": "255.255" }, "metadata": { - "reset": "Press and hold the button on the control for approximately 15 seconds (the LED will stop flashing when complete.\n\n\"Please use this procedure only when the network primary controller is missing or otherwise inoperable.\"", + "inclusion": "Press and hold the programming button until the LED light bar begins to flash green then release the button.", + "exclusion": "Press and hold the programming button until the LED light bar begins to flash green then release the button.", + "reset": "Press and hold the programming button until the LEDs stop blinking. LEDs will blink green, amber, red, and then finally turn off (about 15 seconds). Local Reset must be performed on both the controllers and motors and should only be used if the primary controller is no longer available.", + "wakeup": "Press and release the programming button one time.", "manual": "https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/1786/Graber%20Virtual%20Cord%20Owner's%20Manual.pdf" + }, + "compat": { + // The device reports version 0 for the Central Scene command class + "commandClasses": { + "add": { + "Central Scene": { + "isSupported": true, + "version": 1 + } + } + } } } diff --git a/packages/config/config/devices/0x027a/zac93.json b/packages/config/config/devices/0x027a/zac93.json index f83309112da5..0f6393e2d44b 100644 --- a/packages/config/config/devices/0x027a/zac93.json +++ b/packages/config/config/devices/0x027a/zac93.json @@ -17,13 +17,10 @@ // 700/800 series firmware bugs that affect multiple controllers "comments": [ // https://www.support.getzooz.com/kb/article/1158-zooz-ota-firmware-files/ - // These controllers started shipping with 7.18.1: - // 1.1 = 7.18.1 - // (1.3 = 1.4 = 1.10) = 7.18.3 - // 1.20 = 7.19.3 + // 1.40 = SDK 7.22.0. No fixed version available yet. { - "$if": "firmwareVersion === 1.20", - "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_3" + "$if": "firmwareVersion <= 1.40", + "$import": "~/templates/master_template.json#8xx_firmware_bug_pre_7_22_1" } ] } diff --git a/packages/config/config/devices/0x027a/zen14.json b/packages/config/config/devices/0x027a/zen14.json index 8a7f5314affb..4ed70ca087d2 100644 --- a/packages/config/config/devices/0x027a/zen14.json +++ b/packages/config/config/devices/0x027a/zen14.json @@ -1,8 +1,9 @@ +// 800 series (LR) starting with firmware 2.0 { "manufacturer": "Zooz", "manufacturerId": "0x027a", "label": "ZEN14", - "description": "700 Series Outdoor Double Plug", + "description": "Outdoor Double Plug", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zen30.json b/packages/config/config/devices/0x027a/zen30.json index 543abcfa507a..ea3d0795362c 100644 --- a/packages/config/config/devices/0x027a/zen30.json +++ b/packages/config/config/devices/0x027a/zen30.json @@ -14,14 +14,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "firmwareVersion >= 4.10", - "value": "ZEN30 800LR" - }, - "ZEN30" - ], - "description": "Dimmer & Dry Contact Relay", + "label": "ZEN30", + "description": "Double Switch", "devices": [ { "productType": "0xa000", @@ -316,7 +310,7 @@ { // This device exposes a Multilevel Switch (Dimmer) on endpoint 0, and a Binary Switch (Relay) on endpoint 1 // Our heuristic currently detects endpoint 1 as unnecessary and hides it from the user. - // This problem is fixed in firmare 3.20 and higher + // This problem is fixed in firmware 3.20 and higher "$if": "firmwareVersion < 3.20", "preserveEndpoints": "*", "preserveRootApplicationCCValueIDs": true diff --git a/packages/config/config/devices/0x027a/zen32.json b/packages/config/config/devices/0x027a/zen32.json index 5c434aeedc5e..ea07a5e56108 100644 --- a/packages/config/config/devices/0x027a/zen32.json +++ b/packages/config/config/devices/0x027a/zen32.json @@ -12,13 +12,7 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "firmwareVersion >= 2.10 && firmwareVersion < 10.0", - "value": "ZEN32 800LR" - }, - "ZEN32" - ], + "label": "ZEN32", "description": "Scene Controller", "devices": [ { diff --git a/packages/config/config/devices/0x027a/zen34.json b/packages/config/config/devices/0x027a/zen34.json index 2208d270e45f..228bf8226d97 100644 --- a/packages/config/config/devices/0x027a/zen34.json +++ b/packages/config/config/devices/0x027a/zen34.json @@ -1,8 +1,9 @@ +// 800 series (LR) starting with firmware 2.0 { "manufacturer": "Zooz", "manufacturerId": "0x027a", "label": "ZEN34", - "description": "Z-Wave Plus 700 Series Remote Switch", + "description": "Remote Switch", "devices": [ { "productType": "0x0004", diff --git a/packages/config/config/devices/0x027a/zen51.json b/packages/config/config/devices/0x027a/zen51.json index 3f1f33ae40d6..91ef286abf60 100644 --- a/packages/config/config/devices/0x027a/zen51.json +++ b/packages/config/config/devices/0x027a/zen51.json @@ -1,14 +1,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "productType === 0x0904", - "value": "ZEN51 LR" - }, - "ZEN51" - ], - "description": "700 Series Dry Contact Relay", + "label": "ZEN51", + "description": "Dry Contact Relay", "devices": [ { // Regular Z-Wave version: @@ -17,7 +11,7 @@ "zwaveAllianceId": 4610 }, { - // Long Range capable version: + // Long Range capable version (firmware 1.50+): "productType": "0x0904", "productId": "0x0201" } diff --git a/packages/config/config/devices/0x027a/zen52.json b/packages/config/config/devices/0x027a/zen52.json index 9515bc6aeed4..4965de3eaad2 100644 --- a/packages/config/config/devices/0x027a/zen52.json +++ b/packages/config/config/devices/0x027a/zen52.json @@ -1,14 +1,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "productType === 0x0904", - "value": "ZEN52 LR" - }, - "ZEN52" - ], - "description": "700 Series Double Relay", + "label": "ZEN52", + "description": "Double Relay", "devices": [ { // Regular Z-Wave version: @@ -17,7 +11,7 @@ "zwaveAllianceId": 4609 }, { - // Long Range capable version: + // Long Range capable version (firmware 1.50+): "productType": "0x0904", "productId": "0x0202" } diff --git a/packages/config/config/devices/0x027a/zen71.json b/packages/config/config/devices/0x027a/zen71.json index 6efdaf4901d2..2a7e41e72d71 100644 --- a/packages/config/config/devices/0x027a/zen71.json +++ b/packages/config/config/devices/0x027a/zen71.json @@ -12,14 +12,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "firmwareVersion >= 3.10 && firmwareVersion < 10.0", - "value": "ZEN71 800LR" - }, - "ZEN71" - ], - "description": "ON/OFF Switch", + "label": "ZEN71", + "description": "On/Off Switch", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zen72.json b/packages/config/config/devices/0x027a/zen72.json index 09f92812ad37..5c41051ea8e2 100644 --- a/packages/config/config/devices/0x027a/zen72.json +++ b/packages/config/config/devices/0x027a/zen72.json @@ -11,14 +11,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "firmwareVersion >= 3.10 && firmwareVersion < 10.0", - "value": "ZEN72 800LR" - }, - "ZEN72" - ], - "description": "Dimmer Switch", + "label": "ZEN72", + "description": "Dimmer", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zen73.json b/packages/config/config/devices/0x027a/zen73.json index 870419eec725..0eea34def0ab 100644 --- a/packages/config/config/devices/0x027a/zen73.json +++ b/packages/config/config/devices/0x027a/zen73.json @@ -1,8 +1,9 @@ +// 800 series (LR) starting with firmware 2.10 { "manufacturer": "Zooz", "manufacturerId": "0x027a", "label": "ZEN73", - "description": "700 Toggle Switch", + "description": "Toggle Switch", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zen74.json b/packages/config/config/devices/0x027a/zen74.json index 990e65421c30..98ebdf98dc9b 100644 --- a/packages/config/config/devices/0x027a/zen74.json +++ b/packages/config/config/devices/0x027a/zen74.json @@ -1,8 +1,9 @@ +// 800 series (LR) starting with firmware 2.10 { "manufacturer": "Zooz", "manufacturerId": "0x027a", "label": "ZEN74", - "description": "700 Toggle Dimmer", + "description": "Toggle Dimmer", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zen76.json b/packages/config/config/devices/0x027a/zen76.json index b3ae7068fdee..c21e3330d17a 100644 --- a/packages/config/config/devices/0x027a/zen76.json +++ b/packages/config/config/devices/0x027a/zen76.json @@ -8,14 +8,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "firmwareVersion >= 3.10 && firmwareVersion < 10.0", - "value": "ZEN76 800LR" - }, - "ZEN76" - ], - "description": "S2 ON/OFF Switch", + "label": "ZEN76", + "description": "S2 On/Off Switch", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zen77.json b/packages/config/config/devices/0x027a/zen77.json index 031af09f9278..08055624a7a3 100644 --- a/packages/config/config/devices/0x027a/zen77.json +++ b/packages/config/config/devices/0x027a/zen77.json @@ -14,14 +14,8 @@ { "manufacturer": "Zooz", "manufacturerId": "0x027a", - "label": [ - { - "$if": "firmwareVersion >= 4.10 && firmwareVersion < 10.0", - "value": "ZEN77 800LR" - }, - "ZEN77" - ], - "description": "S2 Dimmer Switch", + "label": "ZEN77", + "description": "S2 Dimmer", "devices": [ { "productType": "0x7000", diff --git a/packages/config/config/devices/0x027a/zse11.json b/packages/config/config/devices/0x027a/zse11.json index 311fd3dd90f1..5cf22f9c3f8c 100644 --- a/packages/config/config/devices/0x027a/zse11.json +++ b/packages/config/config/devices/0x027a/zse11.json @@ -1,3 +1,4 @@ +// 800 series (LR) starting with firmware 2.0 { "manufacturer": "Zooz", "manufacturerId": "0x027a", @@ -133,16 +134,20 @@ ] } ], - "compat": { - "commandClasses": { - "remove": { - // The wakeup destination cannot be set using Supervision, resulting in missing wakeup reports - "Supervision": { - "endpoints": "*" + "compat": [ + { + // On the 500 series version of this device, the wakeup destination + // cannot be set using Supervision, resulting in missing wakeup reports + "$if": "firmwareVersion < 2.0", + "commandClasses": { + "remove": { + "Supervision": { + "endpoints": "*" + } } } } - }, + ], "metadata": { "inclusion": "Put your Z-Wave hub into inclusion mode and click the Z-Wave button 3 times as quickly as possible. The LED indicator will start blinking to confirm inclusion mode and turn off once inclusion is completed. The sensor will automatically pair as a repeater if connected to USB power, no special button sequence required", "exclusion": "1. Bring the sensor within direct range of your Z-Wave gateway (hub).\n2. Put the Z-Wave hub into exclusion mode (not sure how to do that? ask@getzooz.com).\n3. Press and release the Z-Wave button 3 times quickly.\n4. Your hub will confirm exclusion and the sensor will disappear from your controller's device list", diff --git a/packages/config/config/devices/0x027a/zse18.json b/packages/config/config/devices/0x027a/zse18.json index 87a7438f6b8e..f975c90a1382 100644 --- a/packages/config/config/devices/0x027a/zse18.json +++ b/packages/config/config/devices/0x027a/zse18.json @@ -1,8 +1,9 @@ +// 800 series (LR) starting with firmware 2.0 { "manufacturer": "Zooz", "manufacturerId": "0x027a", "label": "ZSE18", - "description": "Motion and Vibration Sensor", + "description": "Motion Sensor", "devices": [ { "productType": "0x0301", diff --git a/packages/config/config/devices/0x027a/zst10_700.json b/packages/config/config/devices/0x027a/zst10_700.json index ecfbcd2b375b..954c46baf073 100644 --- a/packages/config/config/devices/0x027a/zst10_700.json +++ b/packages/config/config/devices/0x027a/zst10_700.json @@ -21,12 +21,8 @@ "$import": "~/templates/master_template.json#7xx_firmware_bug_pre_7_17_2" }, { - "$if": "firmwareVersion === 7.19.1", - "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_1" - }, - { - "$if": "firmwareVersion === 7.19.3", - "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_3" + "$if": "firmwareVersion >= 7.19.1 && firmwareVersion <= 7.21.3", + "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_to_7_21_3" } ] } diff --git a/packages/config/config/devices/0x027a/zst39lr.json b/packages/config/config/devices/0x027a/zst39lr.json index b1cc638e48aa..fc5b5bb53f03 100644 --- a/packages/config/config/devices/0x027a/zst39lr.json +++ b/packages/config/config/devices/0x027a/zst39lr.json @@ -17,13 +17,10 @@ // 700/800 series firmware bugs that affect multiple controllers "comments": [ // https://www.support.getzooz.com/kb/article/1352-zst39-800-long-range-z-wave-stick-change-log/ - // These controllers started shipping with 7.18.1: - // 1.1 = 7.18.1 - // (1.3 = 1.4 = 1.10) = 7.18.3 - // 1.20 = 7.19.3 + // 1.50 = SDK 7.22.1 { - "$if": "firmwareVersion === 1.20", - "$import": "~/templates/master_template.json#7xx_firmware_bug_7_19_3" + "$if": "firmwareVersion < 1.50", + "$import": "~/templates/master_template.json#8xx_firmware_bug_pre_7_22_1" } ] } diff --git a/packages/config/config/devices/0x0312/mp24z_800.json b/packages/config/config/devices/0x0312/mp24z_800.json new file mode 100644 index 000000000000..ebbd3152137b --- /dev/null +++ b/packages/config/config/devices/0x0312/mp24z_800.json @@ -0,0 +1,51 @@ +{ + "manufacturer": "Minoston", + "manufacturerId": "0x0312", + "label": "MP24Z", + "description": "Outdoor Smart Plug - 2 Outlet (800S)", + "devices": [ + { + "productType": "0xff01", + "productId": "0xff97", + "zwaveAllianceId": 3719 + } + ], + "firmwareVersion": { + "min": "0.0", + "max": "255.255" + }, + "paramInformation": [ + { + "#": "1", + "$import": "~/templates/master_template.json#led_indicator_three_options_inverted" + }, + { + "#": "2", + "$import": "templates/minoston_template.json#auto_off_timer", + "label": "Outlet 1 (Left): Auto Off Timer" + }, + { + "#": "3", + "$import": "templates/minoston_template.json#auto_off_timer", + "label": "Outlet 2 (Right): Auto Off Timer" + }, + { + "#": "4", + "$import": "templates/minoston_template.json#auto_on_timer", + "label": "Outlet 1 (Left): Auto On Timer" + }, + { + "#": "5", + "$import": "templates/minoston_template.json#auto_on_timer", + "label": "Outlet 2 (Right): Auto On Timer" + }, + { + "#": "6", + "$import": "~/templates/master_template.json#state_after_power_failure_off_on_prev" + }, + { + "#": "7", + "$import": "templates/minoston_template.json#led_indicator_brightness" + } + ] +} diff --git a/packages/config/config/devices/0x0371/zwa024.json b/packages/config/config/devices/0x0371/zwa024.json index c235ff50864a..83c6223b225f 100644 --- a/packages/config/config/devices/0x0371/zwa024.json +++ b/packages/config/config/devices/0x0371/zwa024.json @@ -8,6 +8,10 @@ "productType": "0x0202", "productId": "0x0018" }, + { + "productType": "0x1c02", + "productId": "0x0018" + }, { "productType": "0x0102", "productId": "0x0018", diff --git a/packages/config/config/devices/0x0438/4512746.json b/packages/config/config/devices/0x0438/4512746.json index 7ce830056195..bdbc8560818a 100644 --- a/packages/config/config/devices/0x0438/4512746.json +++ b/packages/config/config/devices/0x0438/4512746.json @@ -7,6 +7,10 @@ { "productType": "0x0004", "productId": "0xd019" + }, + { + "productType": "0x0200", + "productId": "0xd006" } ], "firmwareVersion": { diff --git a/packages/config/config/devices/0x045a/zw881.json b/packages/config/config/devices/0x045a/zw881.json new file mode 100644 index 000000000000..44c6f4c7a3c8 --- /dev/null +++ b/packages/config/config/devices/0x045a/zw881.json @@ -0,0 +1,16 @@ +{ + "manufacturer": "ZVIDAR", + "manufacturerId": "0x045a", + "label": "ZW881", + "description": "Multi-Protocol Gateway", + "devices": [ + { + "productType": "0x0004", + "productId": "0x0371" + } + ], + "firmwareVersion": { + "min": "0.0", + "max": "255.255" + } +} diff --git a/packages/config/config/devices/0x5254/zxt-800.json b/packages/config/config/devices/0x5254/zxt-800.json index 0880a19e8374..8d89a5bf5fa9 100644 --- a/packages/config/config/devices/0x5254/zxt-800.json +++ b/packages/config/config/devices/0x5254/zxt-800.json @@ -6,7 +6,11 @@ "devices": [ { "productType": "0x0004", - "productId": "0x8492", + "productId": "0x8492" + }, + { + "productType": "0x0100", + "productId": "0x8493", "zwaveAllianceId": 4788 } ], diff --git a/packages/config/config/devices/templates/master_template.json b/packages/config/config/devices/templates/master_template.json index e265113193bb..1da3c2049a0e 100644 --- a/packages/config/config/devices/templates/master_template.json +++ b/packages/config/config/devices/templates/master_template.json @@ -661,14 +661,19 @@ "level": "warning", "text": "Early 700 series firmware revisions had a bug that could cause the mesh to be flooded on some networks and the controller to become unresponsive. It appears that this bug is largely, if not completely, resolved as of SDK version 7.17.2.\nDirections for upgrading the firmware can be found at https://zwave-js.github.io/node-zwave-js/#/troubleshooting/otw-upgrade" }, - "7xx_firmware_bug_7_19_1": { + "7xx_firmware_bug_7_19_to_7_21_3": { "level": "warning", - "text": "Controller firmwares based on Z-Wave SDK 7.19.1 have a bug that causes the controller to randomly restart. It is strongly recommended to update to a firmware based on version 7.19.2, but not later since those firmwares have another bug causing the controller to become unresponsive." + "text": "700 series controller firmwares based on Z-Wave SDKs 7.19 through 7.21.3 are plagued by a variety of bugs causing instability of the controller and/or the mesh. It is strongly recommended to update to a firmware based on version 7.21.4 or later." }, - "7xx_firmware_bug_7_19_3": { + "8xx_firmware_bug_pre_7_22_1": { "level": "warning", - "text": "Controller firmwares based on Z-Wave SDK 7.19.3 have a bug that causes the controller to randomly hang during transmission until it is restarted. It is currently unclear if this bug is fixed in a later firmware version." + "text": "800 series controller firmwares based on Z-Wave SDKs before 7.22.1 are plagued by a variety of bugs causing instability of the controller and/or the mesh. It is strongly recommended to update to a firmware based on version 7.22.1 or later." }, + "7xx_8xx_firmware_bug_7_19_to_7_21_3_or_7_22_1": { + "level": "warning", + "text": "Controller firmwares based on Z-Wave SDKs 7.19 through 7.21.3 (700 series) or 7.22.0 (800 series) are plagued by a variety of bugs causing instability of the controller and/or the mesh. For 700 series controllers, it is strongly recommended to update to a firmware based on version 7.21.4 or later. For 800 series controllers, it is strongly recommended to update to a firmware based on version 7.22.1 or later." + }, + "500_series_controller_compat_flags": { // It seems that all 500 series controllers have a firmware bug: diff --git a/packages/config/config/eslint.config.mjs b/packages/config/config/eslint.config.mjs new file mode 100644 index 000000000000..3129255e7053 --- /dev/null +++ b/packages/config/config/eslint.config.mjs @@ -0,0 +1,47 @@ +/* + Note to future self: + + If ESLint is ever extremely slow again, check if there are .js and/or .map files in the source directories + and delete them: + + ```bash + find . -type f -name "*.map" | grep ./packages | grep /src/ | xargs -n1 rm + find . -type f -name "*.js" | grep ./packages | grep /src/ | xargs -n1 rm + ``` + + Running `TIMING=1 DEBUG=eslint:cli-engine yarn run lint:ts` helps detect the problem +*/ + +// @ts-check + +import zjs from "@zwave-js/eslint-plugin"; +import jsonc from "jsonc-eslint-parser"; +import { dirname, join, relative } from "node:path"; +import { fileURLToPath } from "node:url"; + +// Figure out the files glob depending on where ESLint is executed from +const __dirname = dirname(fileURLToPath(import.meta.url)); +const rel = relative(process.cwd(), __dirname); +const glob = join(rel, "devices/**/*.json"); + +export default { + files: [glob], + plugins: { + "@zwave-js": zjs, + }, + languageOptions: { + parser: jsonc, + }, + rules: { + "@zwave-js/auto-unsigned": "error", + "@zwave-js/consistent-config-string-case": "error", + "@zwave-js/consistent-device-config-property-order": "error", + "@zwave-js/consistent-param-units": "error", + "@zwave-js/no-misspelled-names": "error", + "@zwave-js/no-surrounding-whitespace": "error", + "@zwave-js/no-unnecessary-min-max-value": "error", + "@zwave-js/no-useless-description": "error", + "@zwave-js/no-value-in-option-label": "error", + "@zwave-js/prefer-defaultvalue": "error", + }, +}; diff --git a/packages/config/maintenance/codegen.ts b/packages/config/maintenance/codegen.ts index dd7ad84e0fd9..94a0a9542f5e 100644 --- a/packages/config/maintenance/codegen.ts +++ b/packages/config/maintenance/codegen.ts @@ -1,17 +1,14 @@ -// eslint-disable-next-line @typescript-eslint/triple-slash-reference -/// - import { formatWithDprint } from "@zwave-js/maintenance"; -import * as fs from "fs"; -import * as path from "path"; -import pegjs from "pegjs"; +import * as fs from "node:fs"; +import * as path from "node:path"; +import peggy from "peggy"; import pegts from "ts-pegjs"; const sourceDir = path.join(__dirname, "../src"); const grammarFilename = path.join(sourceDir, "logic.pegjs"); const grammar = fs.readFileSync(grammarFilename, "utf8"); -const parserCode = pegjs.generate(grammar, { +const parserCode = peggy.generate(grammar, { output: "source", plugins: [pegts], }) as any as string; diff --git a/packages/config/maintenance/ts-pegjs.d.ts b/packages/config/maintenance/ts-pegjs.d.ts deleted file mode 100644 index 06c7df59a8aa..000000000000 --- a/packages/config/maintenance/ts-pegjs.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module "ts-pegjs"; diff --git a/packages/config/package.json b/packages/config/package.json index b25a88ae6341..5e6ba0a5a57b 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/config", - "version": "13.3.1", + "version": "13.9.0", "description": "zwave-js: configuration files", "publishConfig": { "access": "public" @@ -48,9 +48,9 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:zwave": "yarn ts maintenance/lintConfigFiles.ts && eslint --cache --cache-location .eslintcache/config --ext .json \"config/devices/**/*.json\"", + "lint:zwave": "yarn ts maintenance/lintConfigFiles.ts && eslint --cache --cache-location .eslintcache/config -c config/eslint.config.mjs", "ts": "node -r esbuild-register --conditions=@@dev", - "lint:ts": "eslint --cache --cache-location .eslintcache/ts --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache --cache-location .eslintcache/ts \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" @@ -61,34 +61,33 @@ "alcalzone-shared": "^4.0.8", "ansi-colors": "^4.1.3", "fs-extra": "^11.2.0", - "json-logic-js": "^2.0.2", + "json-logic-js": "^2.0.5", "json5": "^2.2.3", - "semver": "^7.6.2", - "winston": "^3.13.0" + "semver": "^7.6.3", + "winston": "^3.15.0" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", + "@microsoft/api-extractor": "^7.47.9", "@types/fs-extra": "^11.0.4", "@types/js-levenshtein": "^1.1.3", "@types/json-logic-js": "^2.0.7", - "@types/node": "^18.19.42", - "@types/pegjs": "^0.10.6", + "@types/node": "^18.19.55", "@types/semver": "^7.5.8", "@types/sinon": "^17.0.3", "@types/xml2js": "^0.4.14", - "@types/yargs": "^17.0.32", + "@types/yargs": "^17.0.33", "@zwave-js/maintenance": "workspace:*", "ava": "^6.1.3", - "comment-json": "^4.2.3", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", + "comment-json": "^4.2.5", + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", "got": "^13.0.0", "js-levenshtein": "^1.1.6", - "pegjs": "^0.10.0", - "sinon": "^17.0.1", - "ts-pegjs": "^0.3.1", - "typescript": "5.5.3", + "peggy": "^3.0.2", + "sinon": "^19.0.2", + "ts-pegjs": "^4.2.1", + "typescript": "5.6.2", "xml2js": "^0.6.2", "yargs": "^17.7.2" } diff --git a/packages/config/src/ConfigManager.test.ts b/packages/config/src/ConfigManager.test.ts index 84199edc843d..5cee553b93b3 100644 --- a/packages/config/src/ConfigManager.test.ts +++ b/packages/config/src/ConfigManager.test.ts @@ -16,7 +16,7 @@ interface TestContext { const test = ava as TestFn; -// eslint-disable-next-line @typescript-eslint/no-var-requires +// eslint-disable-next-line @typescript-eslint/no-require-imports const ownVersion = require("../package.json").version; test.before(async (t) => { diff --git a/packages/config/src/ConfigManager.ts b/packages/config/src/ConfigManager.ts index 6042073cdab1..023e6afd0a56 100644 --- a/packages/config/src/ConfigManager.ts +++ b/packages/config/src/ConfigManager.ts @@ -43,7 +43,7 @@ export class ConfigManager { ); this.deviceConfigPriorityDir = options.deviceConfigPriorityDir; this._configVersion = - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-require-imports require("@zwave-js/config/package.json").version; } diff --git a/packages/config/src/Logic.ts b/packages/config/src/Logic.ts index 8b5492753f9c..b24fb08cc89b 100644 --- a/packages/config/src/Logic.ts +++ b/packages/config/src/Logic.ts @@ -39,7 +39,8 @@ add_operation( export function parseLogic(logic: string): RulesLogic { try { - return parse(logic); + // The generated types for the version comparisons are not compatible with the RulesLogic type + return parse(logic) as unknown as RulesLogic; } catch (e: any) { throw new Error(`Invalid logic: ${logic}\n${e.message}`); } diff --git a/packages/config/src/LogicParser.ts b/packages/config/src/LogicParser.ts index 8767e42b9a3b..93ddb51354e1 100644 --- a/packages/config/src/LogicParser.ts +++ b/packages/config/src/LogicParser.ts @@ -2,1527 +2,2521 @@ /* eslint-disable */ // @ts-nocheck -// Generated by PEG.js v. 0.10.0 (ts-pegjs plugin v. 0.3.1 ) -// -// https://pegjs.org/ https://github.com/metadevpro/ts-pegjs - -export interface IFilePosition { - offset: number; - line: number; - column: number; -} - -export interface IFileRange { - start: IFilePosition; - end: IFilePosition; -} - -export interface ILiteralExpectation { - type: "literal"; - text: string; - ignoreCase: boolean; -} - -export interface IClassParts extends Array {} - -export interface IClassExpectation { - type: "class"; - parts: IClassParts; - inverted: boolean; - ignoreCase: boolean; -} - -export interface IAnyExpectation { - type: "any"; -} - -export interface IEndExpectation { - type: "end"; -} - -export interface IOtherExpectation { - type: "other"; - description: string; -} +/* eslint-disable */ -export type Expectation = - | ILiteralExpectation - | IClassExpectation - | IAnyExpectation - | IEndExpectation - | IOtherExpectation; - -export class SyntaxError extends Error { - public static buildMessage(expected: Expectation[], found: string | null) { - function hex(ch: string): string { - return ch.charCodeAt(0).toString(16).toUpperCase(); +const peggyParser: { parse: any; SyntaxError: any; DefaultTracer?: any } = // Generated by Peggy 3.0.2. + // + // https://peggyjs.org/ + // @ts-ignore + (function() { + // @ts-ignore + "use strict"; + + // @ts-ignore + function peg$subclass(child, parent) { + // @ts-ignore + function C() { + this.constructor = child; + } + // @ts-ignore + C.prototype = parent.prototype; + // @ts-ignore + child.prototype = new C(); } - function literalEscape(s: string): string { - return s - .replace(/\\/g, "\\\\") - .replace(/"/g, "\\\"") - .replace(/\0/g, "\\0") - .replace(/\t/g, "\\t") - .replace(/\n/g, "\\n") - .replace(/\r/g, "\\r") - .replace(/[\x00-\x0F]/g, (ch) => "\\x0" + hex(ch)) - .replace(/[\x10-\x1F\x7F-\x9F]/g, (ch) => "\\x" + hex(ch)); + // @ts-ignore + function peg$SyntaxError(message, expected, found, location) { + // @ts-ignore + var self = Error.call(this, message); + // istanbul ignore next Check is a necessary evil to support older environments + // @ts-ignore + if (Object.setPrototypeOf) { + // @ts-ignore + Object.setPrototypeOf(self, peg$SyntaxError.prototype); + } + // @ts-ignore + self.expected = expected; + // @ts-ignore + self.found = found; + // @ts-ignore + self.location = location; + // @ts-ignore + self.name = "SyntaxError"; + // @ts-ignore + return self; } - function classEscape(s: string): string { - return s - .replace(/\\/g, "\\\\") - .replace(/\]/g, "\\]") - .replace(/\^/g, "\\^") - .replace(/-/g, "\\-") - .replace(/\0/g, "\\0") - .replace(/\t/g, "\\t") - .replace(/\n/g, "\\n") - .replace(/\r/g, "\\r") - .replace(/[\x00-\x0F]/g, (ch) => "\\x0" + hex(ch)) - .replace(/[\x10-\x1F\x7F-\x9F]/g, (ch) => "\\x" + hex(ch)); + // @ts-ignore + peg$subclass(peg$SyntaxError, Error); + + // @ts-ignore + function peg$padEnd(str, targetLength, padString) { + // @ts-ignore + padString = padString || " "; + // @ts-ignore + if (str.length > targetLength) return str; + // @ts-ignore + targetLength -= str.length; + // @ts-ignore + padString += padString.repeat(targetLength); + // @ts-ignore + return str + padString.slice(0, targetLength); } - function describeExpectation(expectation: Expectation) { - switch (expectation.type) { - case "literal": + // @ts-ignore + peg$SyntaxError.prototype.format = function(sources) { + // @ts-ignore + var str = "Error: " + this.message; + // @ts-ignore + if (this.location) { + // @ts-ignore + var src = null; + // @ts-ignore + var k; + // @ts-ignore + for (k = 0; k < sources.length; k++) { + // @ts-ignore + if (sources[k].source === this.location.source) { + // @ts-ignore + src = sources[k].text.split(/\r\n|\n|\r/g); + // @ts-ignore + break; + } + } + // @ts-ignore + var s = this.location.start; + // @ts-ignore + var offset_s = (this.location.source + && (typeof this.location.source.offset + === "function")) + // @ts-ignore + ? this.location.source.offset(s) + // @ts-ignore + : s; + // @ts-ignore + var loc = this.location.source + + ":" + + offset_s.line + + ":" + + offset_s.column; + // @ts-ignore + if (src) { + // @ts-ignore + var e = this.location.end; + // @ts-ignore + var filler = peg$padEnd( + "", + offset_s.line.toString().length, + " ", + ); + // @ts-ignore + var line = src[s.line - 1]; + // @ts-ignore + var last = s.line === e.line ? e.column : line.length + 1; + // @ts-ignore + var hatLen = (last - s.column) || 1; + // @ts-ignore + str += "\n --> " + + loc + + "\n" // @ts-ignore + + filler + + " |\n" // @ts-ignore + + offset_s.line + + " | " + + line + + "\n" // @ts-ignore + + filler + + " | " + + peg$padEnd("", s.column - 1, " ") // @ts-ignore + + peg$padEnd("", hatLen, "^"); + // @ts-ignore + } else { + // @ts-ignore + str += "\n at " + loc; + } + } + // @ts-ignore + return str; + }; + + // @ts-ignore + peg$SyntaxError.buildMessage = function(expected, found) { + // @ts-ignore + var DESCRIBE_EXPECTATION_FNS = { + // @ts-ignore + literal: function(expectation) { + // @ts-ignore return "\"" + literalEscape(expectation.text) + "\""; - case "class": - const escapedParts = expectation.parts.map((part) => { + }, + + // @ts-ignore + class: function(expectation) { + // @ts-ignore + var escapedParts = expectation.parts.map(function(part) { + // @ts-ignore return Array.isArray(part) - ? classEscape(part[0] as string) - + "-" - + classEscape(part[1] as string) + // @ts-ignore + ? classEscape(part[0]) + "-" + classEscape(part[1]) + // @ts-ignore : classEscape(part); }); + // @ts-ignore return "[" + (expectation.inverted ? "^" : "") - + escapedParts + + escapedParts.join("") + "]"; - case "any": + }, + + // @ts-ignore + any: function() { + // @ts-ignore return "any character"; - case "end": + }, + + // @ts-ignore + end: function() { + // @ts-ignore return "end of input"; - case "other": + }, + + // @ts-ignore + other: function(expectation) { + // @ts-ignore return expectation.description; + }, + }; + + // @ts-ignore + function hex(ch) { + // @ts-ignore + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + // @ts-ignore + function literalEscape(s) { + // @ts-ignore + return s + // @ts-ignore + .replace(/\\/g, "\\\\") + // @ts-ignore + .replace(/"/g, "\\\"") + // @ts-ignore + .replace(/\0/g, "\\0") + // @ts-ignore + .replace(/\t/g, "\\t") + // @ts-ignore + .replace(/\n/g, "\\n") + // @ts-ignore + .replace(/\r/g, "\\r") + // @ts-ignore + .replace(/[\x00-\x0F]/g, function(ch) { + return "\\x0" + hex(ch); + }) + // @ts-ignore + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { + return "\\x" + hex(ch); + }); } - } - function describeExpected(expected1: Expectation[]) { - const descriptions = expected1.map(describeExpectation); - let i: number; - let j: number; + // @ts-ignore + function classEscape(s) { + // @ts-ignore + return s + // @ts-ignore + .replace(/\\/g, "\\\\") + // @ts-ignore + .replace(/\]/g, "\\]") + // @ts-ignore + .replace(/\^/g, "\\^") + // @ts-ignore + .replace(/-/g, "\\-") + // @ts-ignore + .replace(/\0/g, "\\0") + // @ts-ignore + .replace(/\t/g, "\\t") + // @ts-ignore + .replace(/\n/g, "\\n") + // @ts-ignore + .replace(/\r/g, "\\r") + // @ts-ignore + .replace(/[\x00-\x0F]/g, function(ch) { + return "\\x0" + hex(ch); + }) + // @ts-ignore + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { + return "\\x" + hex(ch); + }); + } - descriptions.sort(); + // @ts-ignore + function describeExpectation(expectation) { + // @ts-ignore + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } - if (descriptions.length > 0) { - for (i = 1, j = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; + // @ts-ignore + function describeExpected(expected) { + // @ts-ignore + var descriptions = expected.map(describeExpectation); + // @ts-ignore + var i, j; + + // @ts-ignore + descriptions.sort(); + + // @ts-ignore + if (descriptions.length > 0) { + // @ts-ignore + for (i = 1, j = 1; i < descriptions.length; i++) { + // @ts-ignore + if (descriptions[i - 1] !== descriptions[i]) { + // @ts-ignore + descriptions[j] = descriptions[i]; + // @ts-ignore + j++; + } } + // @ts-ignore + descriptions.length = j; + } + + // @ts-ignore + switch (descriptions.length) { + // @ts-ignore + case 1: + // @ts-ignore + return descriptions[0]; + + // @ts-ignore + case 2: + // @ts-ignore + return descriptions[0] + " or " + descriptions[1]; + + // @ts-ignore + default: + // @ts-ignore + return descriptions.slice(0, -1).join(", ") + // @ts-ignore + + ", or " + // @ts-ignore + + descriptions[descriptions.length - 1]; } - descriptions.length = j; } - switch (descriptions.length) { - case 1: - return descriptions[0]; + // @ts-ignore + function describeFound(found) { + // @ts-ignore + return found + ? "\"" + literalEscape(found) + "\"" + : "end of input"; + } + + // @ts-ignore + return "Expected " + + describeExpected(expected) + + " but " + + describeFound(found) + + " found."; + }; - case 2: - return descriptions[0] + " or " + descriptions[1]; + // @ts-ignore + function peg$parse(input, options) { + // @ts-ignore + options = options !== undefined ? options : {}; + + // @ts-ignore + var peg$FAILED = {}; + // @ts-ignore + var peg$source = options.grammarSource; + + // @ts-ignore + var peg$startRuleFunctions = { start: peg$parsestart }; + // @ts-ignore + var peg$startRuleFunction = peg$parsestart; + + // @ts-ignore + var peg$c0 = "("; + var peg$c1 = ")"; + var peg$c2 = "||"; + var peg$c3 = "&&"; + var peg$c4 = ">="; + var peg$c5 = ">"; + var peg$c6 = "<="; + var peg$c7 = "<"; + var peg$c8 = "==="; + var peg$c9 = "-"; + var peg$c10 = "0x"; + var peg$c11 = "."; + var peg$c12 = "\""; + var peg$c13 = "'"; + + var peg$r0 = /^[a-zA-Z]/; + var peg$r1 = /^[a-zA-Z0-9]/; + var peg$r2 = /^[0-9]/; + var peg$r3 = /^[0-9a-f]/i; + var peg$r4 = /^[^"]/; + var peg$r5 = /^[^']/; + var peg$r6 = /^[ \t\n\r]/; + + var peg$e0 = peg$otherExpectation("grouped expression"); + var peg$e1 = peg$literalExpectation("(", false); + var peg$e2 = peg$literalExpectation(")", false); + var peg$e3 = peg$otherExpectation("logical OR"); + var peg$e4 = peg$literalExpectation("||", false); + var peg$e5 = peg$otherExpectation("logical AND"); + var peg$e6 = peg$literalExpectation("&&", false); + var peg$e7 = peg$otherExpectation("numeric comparison"); + var peg$e8 = peg$literalExpectation(">=", false); + var peg$e9 = peg$literalExpectation(">", false); + var peg$e10 = peg$literalExpectation("<=", false); + var peg$e11 = peg$literalExpectation("<", false); + var peg$e12 = peg$literalExpectation("===", false); + var peg$e13 = peg$otherExpectation("version comparison"); + var peg$e14 = peg$otherExpectation("variable"); + var peg$e15 = peg$classExpectation( + [["a", "z"], ["A", "Z"]], + false, + false, + ); + var peg$e16 = peg$classExpectation( + [["a", "z"], ["A", "Z"], ["0", "9"]], + false, + false, + ); + var peg$e17 = peg$otherExpectation("number"); + var peg$e18 = peg$literalExpectation("-", false); + var peg$e19 = peg$classExpectation([["0", "9"]], false, false); + var peg$e20 = peg$otherExpectation("hex number"); + var peg$e21 = peg$literalExpectation("0x", false); + var peg$e22 = peg$classExpectation( + [["0", "9"], ["a", "f"]], + false, + true, + ); + var peg$e23 = peg$otherExpectation("version string"); + var peg$e24 = peg$literalExpectation(".", false); + var peg$e25 = peg$otherExpectation("string"); + var peg$e26 = peg$literalExpectation("\"", false); + var peg$e27 = peg$classExpectation(["\""], true, false); + var peg$e28 = peg$literalExpectation("'", false); + var peg$e29 = peg$classExpectation(["'"], true, false); + var peg$e30 = peg$otherExpectation("whitespace"); + var peg$e31 = peg$classExpectation( + [" ", "\t", "\n", "\r"], + false, + false, + ); + // @ts-ignore + + var peg$f0 = function(group) { // @ts-ignore + return group; + }; // @ts-ignore + + var peg$f1 = function(head, tails) { + // @ts-ignore + return { or: [head, ...tails] }; + }; // @ts-ignore + + var peg$f2 = function(tail) { // @ts-ignore + return tail; + }; // @ts-ignore + + var peg$f3 = function(head, tails) { + // @ts-ignore + return { and: [head, ...tails] }; + }; // @ts-ignore + + var peg$f4 = function(tail) { // @ts-ignore + return tail; + }; // @ts-ignore + + var peg$f5 = function(head, expr, tail) { + // @ts-ignore + return { [expr]: [head, tail] }; + }; // @ts-ignore + + var peg$f6 = function(head, expr, tail) { + // @ts-ignore + return { ["ver " + expr]: [head, tail] }; + }; // @ts-ignore + + var peg$f7 = function(variable) { // @ts-ignore + return { var: variable[1].join("") }; + }; // @ts-ignore + + var peg$f8 = function() { // @ts-ignore + return parseInt(text(), 10); + }; // @ts-ignore + + var peg$f9 = function() { // @ts-ignore + return parseInt(text(), 16); + }; // @ts-ignore + + var peg$f10 = function(version) { // @ts-ignore + return text(); + }; // @ts-ignore + + var peg$f11 = function() { // @ts-ignore + return text(); + }; // @ts-ignore + + var peg$f12 = function() { // @ts-ignore + return text(); + }; + // @ts-ignore + var peg$currPos = 0; + // @ts-ignore + var peg$savedPos = 0; + // @ts-ignore + var peg$posDetailsCache = [{ line: 1, column: 1 }]; + // @ts-ignore + var peg$maxFailPos = 0; + // @ts-ignore + var peg$maxFailExpected = []; + // @ts-ignore + var peg$silentFails = 0; + + // @ts-ignore + var peg$result; + + // @ts-ignore + if ("startRule" in options) { + // @ts-ignore + if (!(options.startRule in peg$startRuleFunctions)) { + // @ts-ignore + throw new Error( + "Can't start parsing from rule \"" + + options.startRule + + "\".", + ); + } - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + // @ts-ignore + peg$startRuleFunction = + peg$startRuleFunctions[options.startRule]; } - } - function describeFound(found1: string | null) { - return found1 - ? "\"" + literalEscape(found1) + "\"" - : "end of input"; - } + // @ts-ignore + function text() { + // @ts-ignore + return input.substring(peg$savedPos, peg$currPos); + } - return "Expected " - + describeExpected(expected) - + " but " - + describeFound(found) - + " found."; - } + // @ts-ignore + function offset() { + // @ts-ignore + return peg$savedPos; + } - public message: string; - public expected: Expectation[]; - public found: string | null; - public location: IFileRange; - public name: string; + // @ts-ignore + function range() { + // @ts-ignore + return { + // @ts-ignore + source: peg$source, + // @ts-ignore + start: peg$savedPos, + // @ts-ignore + end: peg$currPos, + }; + } - constructor( - message: string, - expected: Expectation[], - found: string | null, - location: IFileRange, - ) { - super(); - this.message = message; - this.expected = expected; - this.found = found; - this.location = location; - this.name = "SyntaxError"; - - if (typeof (Error as any).captureStackTrace === "function") { - (Error as any).captureStackTrace(this, SyntaxError); - } - } -} + // @ts-ignore + function location() { + // @ts-ignore + return peg$computeLocation(peg$savedPos, peg$currPos); + } -function peg$parse(input: string, options?: IParseOptions) { - options = options !== undefined ? options : {}; - - const peg$FAILED: Readonly = {}; - - const peg$startRuleFunctions: { [id: string]: any } = { - start: peg$parsestart, - }; - let peg$startRuleFunction: () => any = peg$parsestart; - - const peg$c0 = peg$otherExpectation("grouped expression"); - const peg$c1 = "("; - const peg$c2 = peg$literalExpectation("(", false); - const peg$c3 = ")"; - const peg$c4 = peg$literalExpectation(")", false); - const peg$c5 = function(group: any): any { - return group; - }; - const peg$c6 = peg$otherExpectation("logical OR"); - const peg$c7 = function(head: any, tails: any): any { - return { or: [head, ...tails] }; - }; - const peg$c8 = "||"; - const peg$c9 = peg$literalExpectation("||", false); - const peg$c10 = function(tail: any): any { - return tail; - }; - const peg$c11 = peg$otherExpectation("logical AND"); - const peg$c12 = function(head: any, tails: any): any { - return { and: [head, ...tails] }; - }; - const peg$c13 = "&&"; - const peg$c14 = peg$literalExpectation("&&", false); - const peg$c15 = peg$otherExpectation("numeric comparison"); - const peg$c16 = ">="; - const peg$c17 = peg$literalExpectation(">=", false); - const peg$c18 = ">"; - const peg$c19 = peg$literalExpectation(">", false); - const peg$c20 = "<="; - const peg$c21 = peg$literalExpectation("<=", false); - const peg$c22 = "<"; - const peg$c23 = peg$literalExpectation("<", false); - const peg$c24 = "==="; - const peg$c25 = peg$literalExpectation("===", false); - const peg$c26 = function(head: any, expr: any, tail: any): any { - return { [expr]: [head, tail] }; - }; - const peg$c27 = peg$otherExpectation("version comparison"); - const peg$c28 = function(head: any, expr: any, tail: any): any { - return { ["ver " + expr]: [head, tail] }; - }; - const peg$c29 = peg$otherExpectation("variable"); - const peg$c30 = /^[a-zA-Z]/; - const peg$c31 = peg$classExpectation( - [["a", "z"], ["A", "Z"]], - false, - false, - ); - const peg$c32 = /^[a-zA-Z0-9]/; - const peg$c33 = peg$classExpectation( - [["a", "z"], ["A", "Z"], ["0", "9"]], - false, - false, - ); - const peg$c34 = function(variable: any): any { - return { var: variable[1].join("") }; - }; - const peg$c35 = peg$otherExpectation("number"); - const peg$c36 = "-"; - const peg$c37 = peg$literalExpectation("-", false); - const peg$c38 = /^[0-9]/; - const peg$c39 = peg$classExpectation([["0", "9"]], false, false); - const peg$c40 = function(): any { - return parseInt(text(), 10); - }; - const peg$c41 = peg$otherExpectation("hex number"); - const peg$c42 = "0x"; - const peg$c43 = peg$literalExpectation("0x", false); - const peg$c44 = /^[0-9a-f]/i; - const peg$c45 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true); - const peg$c46 = function(): any { - return parseInt(text(), 16); - }; - const peg$c47 = peg$otherExpectation("version string"); - const peg$c48 = "."; - const peg$c49 = peg$literalExpectation(".", false); - const peg$c50 = function(version: any): any { - return text(); - }; - const peg$c51 = peg$otherExpectation("string"); - const peg$c52 = "\""; - const peg$c53 = peg$literalExpectation("\"", false); - const peg$c54 = /^[^"]/; - const peg$c55 = peg$classExpectation(["\""], true, false); - const peg$c56 = function(): any { - return text(); - }; - const peg$c57 = "'"; - const peg$c58 = peg$literalExpectation("'", false); - const peg$c59 = /^[^']/; - const peg$c60 = peg$classExpectation(["'"], true, false); - const peg$c61 = peg$otherExpectation("whitespace"); - const peg$c62 = /^[ \t\n\r]/; - const peg$c63 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); - - let peg$currPos = 0; - let peg$savedPos = 0; - const peg$posDetailsCache = [{ line: 1, column: 1 }]; - let peg$maxFailPos = 0; - let peg$maxFailExpected: Expectation[] = []; - let peg$silentFails = 0; - - let peg$result; - - if (options.startRule !== undefined) { - if (!(options.startRule in peg$startRuleFunctions)) { - throw new Error( - "Can't start parsing from rule \"" + options.startRule + "\".", - ); - } + // @ts-ignore + function expected(description, location) { + // @ts-ignore + location = location !== undefined + // @ts-ignore + ? location + // @ts-ignore + : peg$computeLocation(peg$savedPos, peg$currPos); + + // @ts-ignore + throw peg$buildStructuredError( + // @ts-ignore + [peg$otherExpectation(description)], + // @ts-ignore + input.substring(peg$savedPos, peg$currPos), + // @ts-ignore + location, + ); + } - peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; - } - - function text(): string { - return input.substring(peg$savedPos, peg$currPos); - } - - function location(): IFileRange { - return peg$computeLocation(peg$savedPos, peg$currPos); - } - - function expected(description: string, location1?: IFileRange) { - location1 = location1 !== undefined - ? location1 - : peg$computeLocation(peg$savedPos, peg$currPos); - - throw peg$buildStructuredError( - [peg$otherExpectation(description)], - input.substring(peg$savedPos, peg$currPos), - location1, - ); - } - - function error(message: string, location1?: IFileRange) { - location1 = location1 !== undefined - ? location1 - : peg$computeLocation(peg$savedPos, peg$currPos); - - throw peg$buildSimpleError(message, location1); - } - - function peg$literalExpectation( - text1: string, - ignoreCase: boolean, - ): ILiteralExpectation { - return { type: "literal", text: text1, ignoreCase: ignoreCase }; - } - - function peg$classExpectation( - parts: IClassParts, - inverted: boolean, - ignoreCase: boolean, - ): IClassExpectation { - return { - type: "class", - parts: parts, - inverted: inverted, - ignoreCase: ignoreCase, - }; - } - - function peg$anyExpectation(): IAnyExpectation { - return { type: "any" }; - } - - function peg$endExpectation(): IEndExpectation { - return { type: "end" }; - } - - function peg$otherExpectation(description: string): IOtherExpectation { - return { type: "other", description: description }; - } - - function peg$computePosDetails(pos: number) { - let details = peg$posDetailsCache[pos]; - let p; - - if (details) { - return details; - } else { - p = pos - 1; - while (!peg$posDetailsCache[p]) { - p--; + // @ts-ignore + function error(message, location) { + // @ts-ignore + location = location !== undefined + // @ts-ignore + ? location + // @ts-ignore + : peg$computeLocation(peg$savedPos, peg$currPos); + + // @ts-ignore + throw peg$buildSimpleError(message, location); } - details = peg$posDetailsCache[p]; - details = { - line: details.line, - column: details.column, - }; + // @ts-ignore + function peg$literalExpectation(text, ignoreCase) { + // @ts-ignore + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } - while (p < pos) { - if (input.charCodeAt(p) === 10) { - details.line++; - details.column = 1; - } else { - details.column++; - } + // @ts-ignore + function peg$classExpectation(parts, inverted, ignoreCase) { + // @ts-ignore + return { + type: "class", + parts: parts, + inverted: inverted, + ignoreCase: ignoreCase, + }; + } - p++; + // @ts-ignore + function peg$anyExpectation() { + // @ts-ignore + return { type: "any" }; } - peg$posDetailsCache[pos] = details; + // @ts-ignore + function peg$endExpectation() { + // @ts-ignore + return { type: "end" }; + } - return details; - } - } + // @ts-ignore + function peg$otherExpectation(description) { + // @ts-ignore + return { type: "other", description: description }; + } - function peg$computeLocation(startPos: number, endPos: number): IFileRange { - const startPosDetails = peg$computePosDetails(startPos); - const endPosDetails = peg$computePosDetails(endPos); + // @ts-ignore + function peg$computePosDetails(pos) { + // @ts-ignore + var details = peg$posDetailsCache[pos]; + // @ts-ignore + var p; + + // @ts-ignore + if (details) { + // @ts-ignore + return details; + // @ts-ignore + } else { + // @ts-ignore + p = pos - 1; + // @ts-ignore + while (!peg$posDetailsCache[p]) { + // @ts-ignore + p--; + } - return { - start: { - offset: startPos, - line: startPosDetails.line, - column: startPosDetails.column, - }, - end: { - offset: endPos, - line: endPosDetails.line, - column: endPosDetails.column, - }, - }; - } + // @ts-ignore + details = peg$posDetailsCache[p]; + // @ts-ignore + details = { + // @ts-ignore + line: details.line, + // @ts-ignore + column: details.column, + }; + + // @ts-ignore + while (p < pos) { + // @ts-ignore + if (input.charCodeAt(p) === 10) { + // @ts-ignore + details.line++; + // @ts-ignore + details.column = 1; + // @ts-ignore + } else { + // @ts-ignore + details.column++; + } - function peg$fail(expected1: Expectation) { - if (peg$currPos < peg$maxFailPos) return; + // @ts-ignore + p++; + } - if (peg$currPos > peg$maxFailPos) { - peg$maxFailPos = peg$currPos; - peg$maxFailExpected = []; - } + // @ts-ignore + peg$posDetailsCache[pos] = details; - peg$maxFailExpected.push(expected1); - } + // @ts-ignore + return details; + } + } - function peg$buildSimpleError(message: string, location1: IFileRange) { - return new SyntaxError(message, [], "", location1); - } + // @ts-ignore + function peg$computeLocation(startPos, endPos, offset) { + // @ts-ignore + var startPosDetails = peg$computePosDetails(startPos); + // @ts-ignore + var endPosDetails = peg$computePosDetails(endPos); + + // @ts-ignore + var res = { + // @ts-ignore + source: peg$source, + // @ts-ignore + start: { + // @ts-ignore + offset: startPos, + // @ts-ignore + line: startPosDetails.line, + // @ts-ignore + column: startPosDetails.column, + }, + // @ts-ignore + end: { + // @ts-ignore + offset: endPos, + // @ts-ignore + line: endPosDetails.line, + // @ts-ignore + column: endPosDetails.column, + }, + }; + // @ts-ignore + if ( + offset + && peg$source + && (typeof peg$source.offset === "function") + ) { + // @ts-ignore + res.start = peg$source.offset(res.start); + // @ts-ignore + res.end = peg$source.offset(res.end); + } + // @ts-ignore + return res; + } - function peg$buildStructuredError( - expected1: Expectation[], - found: string | null, - location1: IFileRange, - ) { - return new SyntaxError( - SyntaxError.buildMessage(expected1, found), - expected1, - found, - location1, - ); - } - - function peg$parsestart(): any { - let s0; - - s0 = peg$parsegroup(); - if (s0 === peg$FAILED) { - s0 = peg$parseor(); - if (s0 === peg$FAILED) { - s0 = peg$parseand(); - if (s0 === peg$FAILED) { - s0 = peg$parsecomparison(); + // @ts-ignore + function peg$fail(expected) { + // @ts-ignore + if (peg$currPos < peg$maxFailPos) return; + + // @ts-ignore + if (peg$currPos > peg$maxFailPos) { + // @ts-ignore + peg$maxFailPos = peg$currPos; + // @ts-ignore + peg$maxFailExpected = []; } + + // @ts-ignore + peg$maxFailExpected.push(expected); + } + + // @ts-ignore + function peg$buildSimpleError(message, location) { + // @ts-ignore + return new peg$SyntaxError(message, null, null, location); } - } - return s0; - } + // @ts-ignore + function peg$buildStructuredError(expected, found, location) { + // @ts-ignore + return new peg$SyntaxError( + // @ts-ignore + peg$SyntaxError.buildMessage(expected, found), + // @ts-ignore + expected, + // @ts-ignore + found, + // @ts-ignore + location, + ); + } - function peg$parsegroup(): any { - let s0, s1, s2, s3, s4, s5, s6; + // @ts-ignore + function // @ts-ignore + peg$parsestart() { + // @ts-ignore + var s0; - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 40) { - s2 = peg$c1; - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c2); + // @ts-ignore + s0 = peg$parsegroup(); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$parseor(); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$parseand(); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$parsecomparison(); + } + } + } + + // @ts-ignore + return s0; } - if (s2 !== peg$FAILED) { - s3 = peg$parse_(); - if (s3 !== peg$FAILED) { + + // @ts-ignore + function // @ts-ignore + peg$parsegroup() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5, s6; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 40) { + // @ts-ignore + s2 = peg$c0; + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s2 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e1); + } + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = peg$parse_(); + // @ts-ignore s4 = peg$parseor(); + // @ts-ignore if (s4 !== peg$FAILED) { + // @ts-ignore s5 = peg$parse_(); - if (s5 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 41) { - s6 = peg$c3; - peg$currPos++; - } else { - s6 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c4); - } - if (s6 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c5(s4); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 41) { + // @ts-ignore + s6 = peg$c1; + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s6 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e2); + } + // @ts-ignore + if (s6 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f0(s4); + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c0); - } - - return s0; - } - - function peg$parseor(): any { - let s0, s1, s2, s3, s4; + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e0); + } - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$parseand(); - if (s2 === peg$FAILED) { - s2 = peg$parsecomparison(); + // @ts-ignore + return s0; } - if (s2 !== peg$FAILED) { - s3 = []; - s4 = peg$parseor_tails(); - if (s4 !== peg$FAILED) { - while (s4 !== peg$FAILED) { - s3.push(s4); - s4 = peg$parseor_tails(); - } - } else { - s3 = peg$FAILED; + + // @ts-ignore + function // @ts-ignore + peg$parseor() { + // @ts-ignore + var s0, s1, s2, s3, s4; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$parseand(); + // @ts-ignore + if (s2 === peg$FAILED) { + // @ts-ignore + s2 = peg$parsecomparison(); } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c7(s2, s3); - s0 = s1; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = []; + // @ts-ignore + s4 = peg$parseor_tails(); + // @ts-ignore + if (s4 !== peg$FAILED) { + // @ts-ignore + while (s4 !== peg$FAILED) { + // @ts-ignore + s3.push(s4); + // @ts-ignore + s4 = peg$parseor_tails(); + } + // @ts-ignore + } else { + // @ts-ignore + s3 = peg$FAILED; + } + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f1(s2, s3); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c6); - } - - return s0; - } - - function peg$parseor_tails(): any { - let s0, s1, s2, s3, s4; + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e3); + } - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c8) { - s2 = peg$c8; - peg$currPos += 2; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c9); + // @ts-ignore + return s0; } - if (s2 !== peg$FAILED) { - s3 = peg$parse_(); - if (s3 !== peg$FAILED) { + + // @ts-ignore + function // @ts-ignore + peg$parseor_tails() { + // @ts-ignore + var s0, s1, s2, s3, s4; + + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c2) { + // @ts-ignore + s2 = peg$c2; + // @ts-ignore + peg$currPos += 2; + // @ts-ignore + } else { + // @ts-ignore + s2 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e4); + } + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = peg$parse_(); + // @ts-ignore s4 = peg$parseand(); + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore s4 = peg$parsecomparison(); } + // @ts-ignore if (s4 !== peg$FAILED) { + // @ts-ignore peg$savedPos = s0; - s1 = peg$c10(s4); - s0 = s1; + // @ts-ignore + s0 = peg$f2(s4); + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - function peg$parseand(): any { - let s0, s1, s2, s3, s4; - - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$parsegroup(); - if (s2 === peg$FAILED) { - s2 = peg$parsecomparison(); + // @ts-ignore + return s0; } - if (s2 !== peg$FAILED) { - s3 = []; - s4 = peg$parseand_tails(); - if (s4 !== peg$FAILED) { - while (s4 !== peg$FAILED) { - s3.push(s4); - s4 = peg$parseand_tails(); - } - } else { - s3 = peg$FAILED; + + // @ts-ignore + function // @ts-ignore + peg$parseand() { + // @ts-ignore + var s0, s1, s2, s3, s4; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$parsegroup(); + // @ts-ignore + if (s2 === peg$FAILED) { + // @ts-ignore + s2 = peg$parsecomparison(); } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c12(s2, s3); - s0 = s1; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = []; + // @ts-ignore + s4 = peg$parseand_tails(); + // @ts-ignore + if (s4 !== peg$FAILED) { + // @ts-ignore + while (s4 !== peg$FAILED) { + // @ts-ignore + s3.push(s4); + // @ts-ignore + s4 = peg$parseand_tails(); + } + // @ts-ignore + } else { + // @ts-ignore + s3 = peg$FAILED; + } + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f3(s2, s3); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c11); - } - - return s0; - } - - function peg$parseand_tails(): any { - let s0, s1, s2, s3, s4; + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e5); + } - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c13) { - s2 = peg$c13; - peg$currPos += 2; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c14); + // @ts-ignore + return s0; } - if (s2 !== peg$FAILED) { - s3 = peg$parse_(); - if (s3 !== peg$FAILED) { + + // @ts-ignore + function // @ts-ignore + peg$parseand_tails() { + // @ts-ignore + var s0, s1, s2, s3, s4; + + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c3) { + // @ts-ignore + s2 = peg$c3; + // @ts-ignore + peg$currPos += 2; + // @ts-ignore + } else { + // @ts-ignore + s2 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e6); + } + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = peg$parse_(); + // @ts-ignore s4 = peg$parsegroup(); + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore s4 = peg$parsecomparison(); } + // @ts-ignore if (s4 !== peg$FAILED) { + // @ts-ignore peg$savedPos = s0; - s1 = peg$c10(s4); - s0 = s1; + // @ts-ignore + s0 = peg$f4(s4); + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - function peg$parsecomparison(): any { - let s0; + // @ts-ignore + return s0; + } - s0 = peg$parsever_comparison(); - if (s0 === peg$FAILED) { - s0 = peg$parseint_comparison(); - } + // @ts-ignore + function // @ts-ignore + peg$parsecomparison() { + // @ts-ignore + var s0; - return s0; - } + // @ts-ignore + s0 = peg$parsever_comparison(); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$parseint_comparison(); + } - function peg$parseint_comparison(): any { - let s0, s1, s2, s3, s4, s5, s6, s7; + // @ts-ignore + return s0; + } - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$parseterm(); - if (s2 !== peg$FAILED) { - s3 = peg$parse_(); - if (s3 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c16) { - s4 = peg$c16; + // @ts-ignore + function // @ts-ignore + peg$parseint_comparison() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5, s6, s7; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$parseterm(); + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = peg$parse_(); + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c4) { + // @ts-ignore + s4 = peg$c4; + // @ts-ignore peg$currPos += 2; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c17); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e8); } + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore if (input.charCodeAt(peg$currPos) === 62) { - s4 = peg$c18; + // @ts-ignore + s4 = peg$c5; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c19); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e9); } + // @ts-ignore if (s4 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c20) { - s4 = peg$c20; + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c6) { + // @ts-ignore + s4 = peg$c6; + // @ts-ignore peg$currPos += 2; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c21); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e10); } + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore if (input.charCodeAt(peg$currPos) === 60) { - s4 = peg$c22; + // @ts-ignore + s4 = peg$c7; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; + // @ts-ignore if (peg$silentFails === 0) { - peg$fail(peg$c23); + peg$fail(peg$e11); } } + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore if ( - input.substr(peg$currPos, 3) === peg$c24 + input.substr(peg$currPos, 3) === peg$c8 ) { - s4 = peg$c24; + // @ts-ignore + s4 = peg$c8; + // @ts-ignore peg$currPos += 3; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; + // @ts-ignore if (peg$silentFails === 0) { - peg$fail(peg$c25); + peg$fail(peg$e12); } } } } } } + // @ts-ignore if (s4 !== peg$FAILED) { + // @ts-ignore s5 = peg$parse_(); - if (s5 !== peg$FAILED) { - s6 = peg$parseterm(); - if (s6 !== peg$FAILED) { - s7 = peg$parse_(); - if (s7 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c26(s2, s4, s6); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + // @ts-ignore + s6 = peg$parseterm(); + // @ts-ignore + if (s6 !== peg$FAILED) { + // @ts-ignore + s7 = peg$parse_(); + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f5(s2, s4, s6); + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c15); - } - - return s0; - } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e7); + } - function peg$parsever_comparison(): any { - let s0, s1, s2, s3, s4, s5, s6, s7; + // @ts-ignore + return s0; + } - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$parseterm(); - if (s2 !== peg$FAILED) { - s3 = peg$parse_(); - if (s3 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c16) { - s4 = peg$c16; + // @ts-ignore + function // @ts-ignore + peg$parsever_comparison() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5, s6, s7; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$parseterm(); + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + s3 = peg$parse_(); + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c4) { + // @ts-ignore + s4 = peg$c4; + // @ts-ignore peg$currPos += 2; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c17); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e8); } + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore if (input.charCodeAt(peg$currPos) === 62) { - s4 = peg$c18; + // @ts-ignore + s4 = peg$c5; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c19); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e9); } + // @ts-ignore if (s4 === peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c20) { - s4 = peg$c20; + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c6) { + // @ts-ignore + s4 = peg$c6; + // @ts-ignore peg$currPos += 2; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c21); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e10); } + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore if (input.charCodeAt(peg$currPos) === 60) { - s4 = peg$c22; + // @ts-ignore + s4 = peg$c7; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; + // @ts-ignore if (peg$silentFails === 0) { - peg$fail(peg$c23); + peg$fail(peg$e11); } } + // @ts-ignore if (s4 === peg$FAILED) { + // @ts-ignore if ( - input.substr(peg$currPos, 3) === peg$c24 + input.substr(peg$currPos, 3) === peg$c8 ) { - s4 = peg$c24; + // @ts-ignore + s4 = peg$c8; + // @ts-ignore peg$currPos += 3; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; + // @ts-ignore if (peg$silentFails === 0) { - peg$fail(peg$c25); + peg$fail(peg$e12); } } } } } } + // @ts-ignore if (s4 !== peg$FAILED) { + // @ts-ignore s5 = peg$parse_(); - if (s5 !== peg$FAILED) { - s6 = peg$parseversion(); - if (s6 !== peg$FAILED) { - s7 = peg$parse_(); - if (s7 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c28(s2, s4, s6); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + // @ts-ignore + s6 = peg$parseversion(); + // @ts-ignore + if (s6 !== peg$FAILED) { + // @ts-ignore + s7 = peg$parse_(); + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f6(s2, s4, s6); + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s0; + // @ts-ignore s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c27); - } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e13); + } - return s0; - } + // @ts-ignore + return s0; + } - function peg$parseterm(): any { - let s0; + // @ts-ignore + function // @ts-ignore + peg$parseterm() { + // @ts-ignore + var s0; - s0 = peg$parseconst(); - if (s0 === peg$FAILED) { - s0 = peg$parsestring(); - if (s0 === peg$FAILED) { - s0 = peg$parsehex(); + // @ts-ignore + s0 = peg$parseconst(); + // @ts-ignore if (s0 === peg$FAILED) { - s0 = peg$parseinteger(); + // @ts-ignore + s0 = peg$parsestring(); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$parsehex(); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$parseinteger(); + } + } } - } - } - return s0; - } - - function peg$parseconst(): any { - let s0, s1, s2, s3, s4, s5; - - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - s3 = peg$currPos; - peg$silentFails++; - if (peg$c30.test(input.charAt(peg$currPos))) { - s4 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c31); + // @ts-ignore + return s0; } - peg$silentFails--; - if (s4 !== peg$FAILED) { - peg$currPos = s3; - s3 = undefined; - } else { - s3 = peg$FAILED; - } - if (s3 !== peg$FAILED) { - s4 = []; - if (peg$c32.test(input.charAt(peg$currPos))) { - s5 = input.charAt(peg$currPos); + + // @ts-ignore + function // @ts-ignore + peg$parseconst() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$currPos; + // @ts-ignore + s3 = peg$currPos; + // @ts-ignore + peg$silentFails++; + // @ts-ignore + if (peg$r0.test(input.charAt(peg$currPos))) { + // @ts-ignore + s4 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c33); - } - if (s5 !== peg$FAILED) { - while (s5 !== peg$FAILED) { - s4.push(s5); - if (peg$c32.test(input.charAt(peg$currPos))) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c33); - } - } - } else { + // @ts-ignore s4 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e15); } + // @ts-ignore + peg$silentFails--; + // @ts-ignore if (s4 !== peg$FAILED) { - s3 = [s3, s4]; - s2 = s3; + // @ts-ignore + peg$currPos = s3; + // @ts-ignore + s3 = undefined; + // @ts-ignore } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c34(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c29); - } - - return s0; - } - - function peg$parseinteger(): any { - let s0, s1, s2, s3, s4, s5; - - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 45) { - s3 = peg$c36; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c37); - } - if (s3 === peg$FAILED) { - s3 = null; - } - if (s3 !== peg$FAILED) { - s4 = []; - if (peg$c38.test(input.charAt(peg$currPos))) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); + // @ts-ignore + s3 = peg$FAILED; } - if (s5 !== peg$FAILED) { - while (s5 !== peg$FAILED) { - s4.push(s5); - if (peg$c38.test(input.charAt(peg$currPos))) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + s4 = []; + // @ts-ignore + if (peg$r1.test(input.charAt(peg$currPos))) { + // @ts-ignore + s5 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e16); + } + // @ts-ignore + if (s5 !== peg$FAILED) { + // @ts-ignore + while (s5 !== peg$FAILED) { + // @ts-ignore + s4.push(s5); + // @ts-ignore + if (peg$r1.test(input.charAt(peg$currPos))) { + // @ts-ignore + s5 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e16); + } } + // @ts-ignore + } else { + // @ts-ignore + s4 = peg$FAILED; } + // @ts-ignore + if (s4 !== peg$FAILED) { + // @ts-ignore + s3 = [s3, s4]; + // @ts-ignore + s2 = s3; + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s2; + // @ts-ignore + s2 = peg$FAILED; + } + // @ts-ignore } else { - s4 = peg$FAILED; - } - if (s4 !== peg$FAILED) { - s3 = [s3, s4]; - s2 = s3; - } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c40(); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c35); - } - - return s0; - } - - function peg$parsehex(): any { - let s0, s1, s2, s3, s4, s5; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f7(s2); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e14); + } - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c42) { - s3 = peg$c42; - peg$currPos += 2; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c43); + // @ts-ignore + return s0; } - if (s3 !== peg$FAILED) { + + // @ts-ignore + function // @ts-ignore + peg$parseinteger() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$currPos; + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 45) { + // @ts-ignore + s3 = peg$c9; + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s3 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e18); + } + // @ts-ignore + if (s3 === peg$FAILED) { + // @ts-ignore + s3 = null; + } + // @ts-ignore s4 = []; - if (peg$c44.test(input.charAt(peg$currPos))) { + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore s5 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c45); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e19); } + // @ts-ignore if (s5 !== peg$FAILED) { + // @ts-ignore while (s5 !== peg$FAILED) { + // @ts-ignore s4.push(s5); - if (peg$c44.test(input.charAt(peg$currPos))) { + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore s5 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c45); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e19); } } + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; } + // @ts-ignore if (s4 !== peg$FAILED) { + // @ts-ignore s3 = [s3, s4]; + // @ts-ignore s2 = s3; + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c46(); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c41); - } + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f8(); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e17); + } - return s0; - } - - function peg$parseversion(): any { - let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - s3 = []; - if (peg$c38.test(input.charAt(peg$currPos))) { - s4 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); + // @ts-ignore + return s0; } - if (s4 !== peg$FAILED) { - while (s4 !== peg$FAILED) { - s3.push(s4); - if (peg$c38.test(input.charAt(peg$currPos))) { - s4 = input.charAt(peg$currPos); + + // @ts-ignore + function // @ts-ignore + peg$parsehex() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$currPos; + // @ts-ignore + if (input.substr(peg$currPos, 2) === peg$c10) { + // @ts-ignore + s3 = peg$c10; + // @ts-ignore + peg$currPos += 2; + // @ts-ignore + } else { + // @ts-ignore + s3 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e21); + } + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + s4 = []; + // @ts-ignore + if (peg$r3.test(input.charAt(peg$currPos))) { + // @ts-ignore + s5 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e22); + } + // @ts-ignore + if (s5 !== peg$FAILED) { + // @ts-ignore + while (s5 !== peg$FAILED) { + // @ts-ignore + s4.push(s5); + // @ts-ignore + if (peg$r3.test(input.charAt(peg$currPos))) { + // @ts-ignore + s5 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e22); + } + } + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); } + // @ts-ignore + if (s4 !== peg$FAILED) { + // @ts-ignore + s3 = [s3, s4]; + // @ts-ignore + s2 = s3; + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s2; + // @ts-ignore + s2 = peg$FAILED; + } + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s2; + // @ts-ignore + s2 = peg$FAILED; } - } else { - s3 = peg$FAILED; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f9(); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e20); + } + + // @ts-ignore + return s0; } - if (s3 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 46) { - s4 = peg$c48; + + // @ts-ignore + function // @ts-ignore + peg$parseversion() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$currPos; + // @ts-ignore + s3 = []; + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore + s4 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s4 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c49); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e19); } + // @ts-ignore if (s4 !== peg$FAILED) { - s5 = []; - if (peg$c38.test(input.charAt(peg$currPos))) { - s6 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s6 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); - } - if (s6 !== peg$FAILED) { - while (s6 !== peg$FAILED) { - s5.push(s6); - if (peg$c38.test(input.charAt(peg$currPos))) { - s6 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s6 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); - } + // @ts-ignore + while (s4 !== peg$FAILED) { + // @ts-ignore + s3.push(s4); + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore + s4 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s4 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e19); } + } + // @ts-ignore + } else { + // @ts-ignore + s3 = peg$FAILED; + } + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 46) { + // @ts-ignore + s4 = peg$c11; + // @ts-ignore + peg$currPos++; + // @ts-ignore } else { - s5 = peg$FAILED; + // @ts-ignore + s4 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e24); } - if (s5 !== peg$FAILED) { - s6 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 46) { - s7 = peg$c48; + // @ts-ignore + if (s4 !== peg$FAILED) { + // @ts-ignore + s5 = []; + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore + s6 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { - s7 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c49); + // @ts-ignore + s6 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e19); } - if (s7 !== peg$FAILED) { - s8 = []; - if (peg$c38.test(input.charAt(peg$currPos))) { - s9 = input.charAt(peg$currPos); + // @ts-ignore + if (s6 !== peg$FAILED) { + // @ts-ignore + while (s6 !== peg$FAILED) { + // @ts-ignore + s5.push(s6); + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore + s6 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s6 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) { + peg$fail(peg$e19); + } + } + } + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + } + // @ts-ignore + if (s5 !== peg$FAILED) { + // @ts-ignore + s6 = peg$currPos; + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 46) { + // @ts-ignore + s7 = peg$c11; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { - s9 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c39); + // @ts-ignore + s7 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e24); } - if (s9 !== peg$FAILED) { - while (s9 !== peg$FAILED) { - s8.push(s9); - if ( - peg$c38.test(input.charAt(peg$currPos)) - ) { - s9 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s9 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c39); + // @ts-ignore + if (s7 !== peg$FAILED) { + // @ts-ignore + s8 = []; + // @ts-ignore + if (peg$r2.test(input.charAt(peg$currPos))) { + // @ts-ignore + s9 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s9 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) { + peg$fail(peg$e19); + } + } + // @ts-ignore + if (s9 !== peg$FAILED) { + // @ts-ignore + while (s9 !== peg$FAILED) { + // @ts-ignore + s8.push(s9); + // @ts-ignore + if ( + peg$r2.test( + input.charAt(peg$currPos), + ) + ) { + // @ts-ignore + s9 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s9 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) { + peg$fail(peg$e19); + } } } + // @ts-ignore + } else { + // @ts-ignore + s8 = peg$FAILED; } + // @ts-ignore + if (s8 !== peg$FAILED) { + // @ts-ignore + s7 = [s7, s8]; + // @ts-ignore + s6 = s7; + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s6; + // @ts-ignore + s6 = peg$FAILED; + } + // @ts-ignore } else { - s8 = peg$FAILED; - } - if (s8 !== peg$FAILED) { - s7 = [s7, s8]; - s6 = s7; - } else { + // @ts-ignore peg$currPos = s6; + // @ts-ignore s6 = peg$FAILED; } - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 === peg$FAILED) { - s6 = null; - } - if (s6 !== peg$FAILED) { + // @ts-ignore + if (s6 === peg$FAILED) { + // @ts-ignore + s6 = null; + } + // @ts-ignore s3 = [s3, s4, s5, s6]; + // @ts-ignore s2 = s3; + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c50(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c47); - } - - return s0; - } - - function peg$parsestring(): any { - let s0, s1, s2, s3, s4, s5; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f10(s2); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e23); + } - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c52; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c53); + // @ts-ignore + return s0; } - if (s3 !== peg$FAILED) { - s4 = []; - if (peg$c54.test(input.charAt(peg$currPos))) { - s5 = input.charAt(peg$currPos); + + // @ts-ignore + function // @ts-ignore + peg$parsestring() { + // @ts-ignore + var s0, s1, s2, s3, s4, s5; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$currPos; + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 34) { + // @ts-ignore + s3 = peg$c12; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c55); + // @ts-ignore + s3 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e26); } - while (s5 !== peg$FAILED) { - s4.push(s5); - if (peg$c54.test(input.charAt(peg$currPos))) { + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + s4 = []; + // @ts-ignore + if (peg$r4.test(input.charAt(peg$currPos))) { + // @ts-ignore s5 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c55); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e27); } - } - if (s4 !== peg$FAILED) { + // @ts-ignore + while (s5 !== peg$FAILED) { + // @ts-ignore + s4.push(s5); + // @ts-ignore + if (peg$r4.test(input.charAt(peg$currPos))) { + // @ts-ignore + s5 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e27); + } + } + // @ts-ignore if (input.charCodeAt(peg$currPos) === 34) { - s5 = peg$c52; + // @ts-ignore + s5 = peg$c12; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c53); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e26); } + // @ts-ignore if (s5 !== peg$FAILED) { + // @ts-ignore s3 = [s3, s4, s5]; + // @ts-ignore s2 = s3; + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c56(); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parse_(); - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c57; - peg$currPos++; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f11(); + // @ts-ignore } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c58); + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; } - if (s3 !== peg$FAILED) { - s4 = []; - if (peg$c59.test(input.charAt(peg$currPos))) { - s5 = input.charAt(peg$currPos); + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s0 = peg$currPos; + // @ts-ignore + s1 = peg$parse_(); + // @ts-ignore + s2 = peg$currPos; + // @ts-ignore + if (input.charCodeAt(peg$currPos) === 39) { + // @ts-ignore + s3 = peg$c13; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c60); + // @ts-ignore + s3 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e28); } - while (s5 !== peg$FAILED) { - s4.push(s5); - if (peg$c59.test(input.charAt(peg$currPos))) { + // @ts-ignore + if (s3 !== peg$FAILED) { + // @ts-ignore + s4 = []; + // @ts-ignore + if (peg$r5.test(input.charAt(peg$currPos))) { + // @ts-ignore s5 = input.charAt(peg$currPos); + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c60); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e29); } - } - if (s4 !== peg$FAILED) { + // @ts-ignore + while (s5 !== peg$FAILED) { + // @ts-ignore + s4.push(s5); + // @ts-ignore + if (peg$r5.test(input.charAt(peg$currPos))) { + // @ts-ignore + s5 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s5 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e29); + } + } + // @ts-ignore if (input.charCodeAt(peg$currPos) === 39) { - s5 = peg$c57; + // @ts-ignore + s5 = peg$c13; + // @ts-ignore peg$currPos++; + // @ts-ignore } else { + // @ts-ignore s5 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c58); + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e28); } + // @ts-ignore if (s5 !== peg$FAILED) { + // @ts-ignore s3 = [s3, s4, s5]; + // @ts-ignore s2 = s3; + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } + // @ts-ignore } else { + // @ts-ignore peg$currPos = s2; + // @ts-ignore s2 = peg$FAILED; } - } else { - peg$currPos = s2; - s2 = peg$FAILED; + // @ts-ignore + if (s2 !== peg$FAILED) { + // @ts-ignore + peg$savedPos = s0; + // @ts-ignore + s0 = peg$f12(); + // @ts-ignore + } else { + // @ts-ignore + peg$currPos = s0; + // @ts-ignore + s0 = peg$FAILED; + } } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c56(); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; + // @ts-ignore + peg$silentFails--; + // @ts-ignore + if (s0 === peg$FAILED) { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e25); } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + + // @ts-ignore + return s0; } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c51); - } - return s0; - } + // @ts-ignore + function // @ts-ignore + peg$parse_() { + // @ts-ignore + var s0, s1; + + // @ts-ignore + peg$silentFails++; + // @ts-ignore + s0 = []; + // @ts-ignore + if (peg$r6.test(input.charAt(peg$currPos))) { + // @ts-ignore + s1 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e31); + } + // @ts-ignore + while (s1 !== peg$FAILED) { + // @ts-ignore + s0.push(s1); + // @ts-ignore + if (peg$r6.test(input.charAt(peg$currPos))) { + // @ts-ignore + s1 = input.charAt(peg$currPos); + // @ts-ignore + peg$currPos++; + // @ts-ignore + } else { + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e31); + } + } + // @ts-ignore + peg$silentFails--; + // @ts-ignore + s1 = peg$FAILED; + // @ts-ignore + if (peg$silentFails === 0) peg$fail(peg$e30); + + // @ts-ignore + return s0; + } - function peg$parse_(): any { - let s0, s1; + // @ts-ignore + peg$result = peg$startRuleFunction(); - peg$silentFails++; - s0 = []; - if (peg$c62.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c63); - } - while (s1 !== peg$FAILED) { - s0.push(s1); - if (peg$c62.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; + // @ts-ignore + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + // @ts-ignore + return peg$result; + // @ts-ignore } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c63); + // @ts-ignore + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + // @ts-ignore + peg$fail(peg$endExpectation()); + } + + // @ts-ignore + throw peg$buildStructuredError( + // @ts-ignore + peg$maxFailExpected, + // @ts-ignore + peg$maxFailPos < input.length + ? input.charAt(peg$maxFailPos) + : null, + // @ts-ignore + peg$maxFailPos < input.length + // @ts-ignore + ? peg$computeLocation( + peg$maxFailPos, + peg$maxFailPos + 1, + ) + // @ts-ignore + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos), + ); } } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) peg$fail(peg$c61); - } - return s0; - } + // @ts-ignore + return { + SyntaxError: peg$SyntaxError, + parse: peg$parse, + }; + })(); + +export interface FilePosition { + offset: number; + line: number; + column: number; +} - peg$result = peg$startRuleFunction(); +export interface FileRange { + start: FilePosition; + end: FilePosition; + source: string; +} - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { - if (peg$result !== peg$FAILED && peg$currPos < input.length) { - peg$fail(peg$endExpectation()); - } +export interface LiteralExpectation { + type: "literal"; + text: string; + ignoreCase: boolean; +} + +export interface ClassParts extends Array {} + +export interface ClassExpectation { + type: "class"; + parts: ClassParts; + inverted: boolean; + ignoreCase: boolean; +} + +export interface AnyExpectation { + type: "any"; +} + +export interface EndExpectation { + type: "end"; +} + +export interface OtherExpectation { + type: "other"; + description: string; +} + +export type Expectation = + | LiteralExpectation + | ClassExpectation + | AnyExpectation + | EndExpectation + | OtherExpectation; + +declare class _PeggySyntaxError extends Error { + public static buildMessage( + expected: Expectation[], + found: string | null, + ): string; + public message: string; + public expected: Expectation[]; + public found: string | null; + public location: FileRange; + public name: string; + constructor( + message: string, + expected: Expectation[], + found: string | null, + location: FileRange, + ); + format(sources: { + source?: any; + text: string; + }[]): string; +} - throw peg$buildStructuredError( - peg$maxFailExpected, - peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, - peg$maxFailPos < input.length - ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) - : peg$computeLocation(peg$maxFailPos, peg$maxFailPos), - ); - } +export interface TraceEvent { + type: string; + rule: string; + result?: any; + location: FileRange; } -export interface IParseOptions { +declare class _DefaultTracer { + private indentLevel: number; + public trace(event: TraceEvent): void; +} + +peggyParser.SyntaxError.prototype.name = "PeggySyntaxError"; + +export interface ParseOptions { filename?: string; - startRule?: string; + startRule?: "start"; tracer?: any; [key: string]: any; } -export type ParseFunction = (input: string, options?: IParseOptions) => any; -export const parse: ParseFunction = peg$parse; +export type ParseFunction = ( + input: string, + options?: Options, +) => Options extends { startRule: infer StartRule } + ? StartRule extends "start" ? Start : Start + : Start; +export const parse: ParseFunction = peggyParser.parse; + +export const PeggySyntaxError = peggyParser + .SyntaxError as typeof _PeggySyntaxError; + +export type PeggySyntaxError = _PeggySyntaxError; + +// These types were autogenerated by ts-pegjs +export type Start = Group | Or | And | Comparison; +export type Group = Or; +export type Or = { or: [And | Comparison, ...OrTails[]] }; +export type OrTails = And | Comparison; +export type And = { and: [Group | Comparison, ...AndTails[]] }; +export type AndTails = Group | Comparison; +export type Comparison = VerComparison | IntComparison; +export type IntComparison = { [x: string]: [Term, Term] }; +export type VerComparison = { [x: string]: [Term, Version] }; +export type Term = Const | String_1 | Hex | Integer; +export type Const = { var: string }; +export type Integer = number; +export type Hex = number; +export type Version = string; +export type String_1 = string; +export type _ = string[]; diff --git a/packages/config/src/devices/ConditionalItem.ts b/packages/config/src/devices/ConditionalItem.ts index 5462138b39a5..dc4ad601e535 100644 --- a/packages/config/src/devices/ConditionalItem.ts +++ b/packages/config/src/devices/ConditionalItem.ts @@ -38,7 +38,7 @@ export function conditionApplies( try { return !!evaluate(self.condition, deviceId); - } catch (e) { + } catch { throw new ZWaveError( `Invalid condition "${self.condition}"!`, ZWaveErrorCodes.Config_Invalid, diff --git a/packages/config/src/devices/ParamInformation.ts b/packages/config/src/devices/ParamInformation.ts index 2737c9372fa5..7d26dc676d08 100644 --- a/packages/config/src/devices/ParamInformation.ts +++ b/packages/config/src/devices/ParamInformation.ts @@ -232,7 +232,7 @@ Parameter #${parameterNumber}: options is malformed!`, if (ret.allowManualEntry === false && ret.options.length > 0) { ret.minValue = Math.min(...ret.options.map((o) => o.value)); } else { - throw throwInvalidConfig( + throwInvalidConfig( "devices", `packages/config/config/devices/${this.parent.filename}: Parameter #${this.parameterNumber} is missing required property "minValue"!`, @@ -243,7 +243,7 @@ Parameter #${this.parameterNumber} is missing required property "minValue"!`, if (ret.allowManualEntry === false && ret.options.length > 0) { ret.maxValue = Math.max(...ret.options.map((o) => o.value)); } else { - throw throwInvalidConfig( + throwInvalidConfig( "devices", `packages/config/config/devices/${this.parent.filename}: Parameter #${this.parameterNumber} is missing required property "maxValue"!`, diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 42b755dee6ee..5e79f82c4f3c 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ export * from "./ConfigManager"; export * from "./Logger_safe"; export * from "./Manufacturers"; diff --git a/packages/core/core.api.md b/packages/core/core.api.md index c601343cf2ac..95ac25d9f992 100644 --- a/packages/core/core.api.md +++ b/packages/core/core.api.md @@ -4,6 +4,7 @@ ```ts +import * as crypto from 'node:crypto'; import type { ExecutionContext } from 'ava'; import type { Format } from 'logform'; import type { JsonlDB } from '@alcalzone/jsonl-db'; @@ -521,20 +522,38 @@ export const CONTROL_CHAR_WIDTH = 2; // @public (undocumented) export const CONTROLLER_LABEL = "CNTRLR"; +// Warning: (ae-missing-release-tag) "ControllerCapabilities" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ControllerCapabilities { + // (undocumented) + isSecondary: boolean; + // (undocumented) + isSISPresent: boolean; + // (undocumented) + isSUC: boolean; + // (undocumented) + isUsingHomeIdFromOtherNetwork: boolean; + // (undocumented) + noNodesIncluded: boolean; + // (undocumented) + wasRealPrimary: boolean; +} + // Warning: (ae-missing-release-tag) "ControllerCapabilityFlags" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export enum ControllerCapabilityFlags { // (undocumented) - NoNodesIncluded = 32,// Controller is a secondary + NoNodesIncluded = 32, // (undocumented) - OnOtherNetwork = 2,// Controller is using a home ID from another network + OnOtherNetwork = 2, // (undocumented) - Secondary = 1,// There's a SUC id server (SIS) on the network + Secondary = 1, // (undocumented) - SISPresent = 4,// Before the SIS was added, the controller was the primary + SISPresent = 4, // (undocumented) - SUC = 16,// Controller is a static update controller (SUC) + SUC = 16, // (undocumented) WasRealPrimary = 8 } @@ -584,6 +603,15 @@ export type ControllerNodeLogContext = LogContext<"controller"> & NodeLogContext direction: string; }; +// Warning: (ae-missing-release-tag) "ControllerRole" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum ControllerRole { + Inclusion = 2, + Primary = 0, + Secondary = 1 +} + // Warning: (ae-missing-release-tag) "ControllerSelfLogContext" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -633,12 +661,12 @@ export function createLogMessagePrinter(shortTimestamps: boolean): Format; // Warning: (ae-missing-release-tag) "createReflectionDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function createReflectionDecorator = Constructor>({ name, valueFromArgs, constructorLookupKey, }: CreateReflectionDecoratorOptions): ReflectionDecorator; +export function createReflectionDecorator = Constructor>({ name, valueFromArgs, constructorLookupKey, }: CreateReflectionDecoratorOptions): ReflectionDecorator; // Warning: (ae-missing-release-tag) "CreateReflectionDecoratorOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface CreateReflectionDecoratorOptions = Constructor> { +export interface CreateReflectionDecoratorOptions = Constructor> { constructorLookupKey?: false | ((target: TConstructor, ...args: TArgs) => string); name: string; valueFromArgs: (...args: TArgs) => TValue; @@ -647,7 +675,7 @@ export interface CreateReflectionDecoratorOptions = Constructor>({ superName, subName, }: CreateReflectionDecoratorPairOptions): ReflectionDecoratorPair; +export function createReflectionDecoratorPair = Constructor>({ superName, subName, }: CreateReflectionDecoratorPairOptions): ReflectionDecoratorPair; // Warning: (ae-missing-release-tag) "CreateReflectionDecoratorPairOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -660,7 +688,7 @@ export interface CreateReflectionDecoratorPairOptions { // Warning: (ae-missing-release-tag) "createSimpleReflectionDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function createSimpleReflectionDecorator = Constructor>({ name, }: CreateSimpleReflectionDecoratorOptions): SimpleReflectionDecorator; +export function createSimpleReflectionDecorator = Constructor>({ name, }: CreateSimpleReflectionDecoratorOptions): SimpleReflectionDecorator; // Warning: (ae-missing-release-tag) "CreateSimpleReflectionDecoratorOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -672,7 +700,7 @@ export interface CreateSimpleReflectionDecoratorOptions { // Warning: (ae-missing-release-tag) "createValuelessReflectionDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function createValuelessReflectionDecorator({ name, }: CreateValuelessReflectionDecoratorOptions): ValuelessReflectionDecorator; +export function createValuelessReflectionDecorator({ name, }: CreateValuelessReflectionDecoratorOptions): ValuelessReflectionDecorator; // Warning: (ae-missing-release-tag) "CreateValuelessReflectionDecoratorOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -978,6 +1006,16 @@ export function enumValuesToMetadataStates>(enumer // @public export function extractFirmware(rawData: Buffer, format: FirmwareFileFormat): Firmware; +// Warning: (ae-missing-release-tag) "extractRawECDHPrivateKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function extractRawECDHPrivateKey(privateKey: crypto.KeyObject): Buffer; + +// Warning: (ae-missing-release-tag) "extractRawECDHPublicKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function extractRawECDHPublicKey(publicKey: crypto.KeyObject): Buffer; + // Warning: (ae-missing-release-tag) "Firmware" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1031,6 +1069,11 @@ export type FrameType = "singlecast" | "broadcast" | "multicast"; // @public export function generateAuthKey(networkKey: Buffer): Buffer; +// Warning: (ae-missing-release-tag) "generateECDHKeyPair" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function generateECDHKeyPair(): KeyPair; + // Warning: (ae-missing-release-tag) "generateEncryptionKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1330,6 +1373,16 @@ export interface ICommandClass { serialize(): Buffer; } +// Warning: (ae-missing-release-tag) "importRawECDHPrivateKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function importRawECDHPrivateKey(privateKey: Buffer): crypto.KeyObject; + +// Warning: (ae-missing-release-tag) "importRawECDHPublicKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function importRawECDHPublicKey(publicKey: Buffer): crypto.KeyObject; + // Warning: (ae-missing-release-tag) "indexDBsByNode" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public @@ -1867,6 +1920,21 @@ export interface IZWaveNode extends IZWaveEndpoint, SecurityClassOwner { readonly status: NodeStatus; } +// Warning: (ae-missing-release-tag) "KeyPair" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KeyPair { + // (undocumented) + privateKey: crypto.KeyObject; + // (undocumented) + publicKey: crypto.KeyObject; +} + +// Warning: (ae-missing-release-tag) "keyPairFromRawECDHPrivateKey" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function keyPairFromRawECDHPrivateKey(privateKey: Buffer): KeyPair; + // Warning: (ae-missing-release-tag) "LOG_PREFIX_WIDTH" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public @@ -2822,7 +2890,7 @@ export type QRProvisioningInformation = { // Warning: (ae-missing-release-tag) "ReflectionDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface ReflectionDecorator = Constructor> { +export interface ReflectionDecorator = Constructor> { decorator: (...args: TArgs) => TypedClassDecorator; lookupConstructorByKey: (key: string) => TConstructor | undefined; lookupConstructorByValue: (value: TValue) => TConstructor | undefined; @@ -2833,7 +2901,7 @@ export interface ReflectionDecorator = Constructor> { +export interface ReflectionDecoratorPair = Constructor> { lookupSubConstructor: (...args: [...TSuperArgs, ...TSubArgs]) => TConstructor | undefined; lookupSubValue: (target: TBase) => TSubArgs[0] | undefined; lookupSubValueStatic: (constr: Function) => TSubArgs[0] | undefined; @@ -2858,6 +2926,8 @@ export enum RFRegion { // (undocumented) "Default (EU)" = 255, // (undocumented) + "Europe (Long Range)" = 11, + // (undocumented) "Hong Kong" = 3, // (undocumented) "USA (Long Range)" = 9, @@ -2881,6 +2951,20 @@ export enum RFRegion { "USA" = 1 } +// Warning: (ae-missing-release-tag) "RFRegionInfo" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface RFRegionInfo { + // (undocumented) + includesRegion?: RFRegion; + // (undocumented) + region: RFRegion; + // (undocumented) + supportsLongRange: boolean; + // (undocumented) + supportsZWave: boolean; +} + // Warning: (ae-missing-release-tag) "Route" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -3168,7 +3252,7 @@ export type SendCommandReturnType = // // @public (undocumented) export type SendCommandSecurityS2Options = { - s2OverrideSecurityClass?: S2SecurityClass; + s2OverrideSecurityClass?: SecurityClass; s2VerifyDelivery?: boolean; s2MulticastOutOfSync?: boolean; s2MulticastGroupId?: number; @@ -3222,6 +3306,26 @@ export interface SensorDefinition { // @public (undocumented) export type Sensors = typeof sensors; +// Warning: (ae-missing-release-tag) "SerialApiInitData" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface SerialApiInitData { + // (undocumented) + isPrimary: boolean; + // (undocumented) + isSIS: boolean; + // (undocumented) + nodeIds: number[]; + // (undocumented) + nodeType: NodeType; + // (undocumented) + supportsTimers: boolean; + // (undocumented) + zwaveApiVersion: ZWaveApiVersion; + // (undocumented) + zwaveChipType?: string | UnknownZWaveChipType; +} + // Warning: (ae-missing-release-tag) "SerializableTXReport" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public @@ -3259,7 +3363,7 @@ export interface SetValueOptions { // Warning: (ae-missing-release-tag) "SimpleReflectionDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface SimpleReflectionDecorator = Constructor> { +export interface SimpleReflectionDecorator = Constructor> { decorator: (...args: TArgs) => TypedClassDecorator; lookupConstructor: (...args: TArgs) => TConstructor | undefined; lookupValue: (target: TBase) => TArgs[0] | undefined; @@ -3654,7 +3758,7 @@ export function valueIdToString(valueID: ValueID): string; // Warning: (ae-missing-release-tag) "ValuelessReflectionDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface ValuelessReflectionDecorator { +export interface ValuelessReflectionDecorator { decorator: () => TypedClassDecorator; isDecorated: (target: TBase) => boolean; isDecoratedStatic: (constr: Function) => boolean; @@ -4114,6 +4218,8 @@ export enum ZnifferRegion { // (undocumented) "Default (EU)" = 255, // (undocumented) + "Europe (Long Range)" = 11, + // (undocumented) "Hong Kong" = 3, // (undocumented) "USA (Long Range)" = 9, @@ -4316,6 +4422,7 @@ export enum ZWaveErrorCodes { Driver_NotSupported = 105, // (undocumented) Driver_Reset = 101, + Driver_TaskRemoved = 112, FirmwareUpdateCC_Busy = 1500, FirmwareUpdateCC_FailedToAbort = 1504, FirmwareUpdateCC_FailedToStart = 1503, @@ -4334,6 +4441,7 @@ export enum ZWaveErrorCodes { NVM_InvalidFormat = 283, NVM_InvalidJSON = 281, NVM_NoSpace = 284, + NVM_NotOpen = 285, NVM_NotSupported = 280, NVM_ObjectNotFound = 282, OTW_Update_Busy = 380, diff --git a/packages/core/package.json b/packages/core/package.json index 3ea49d856daa..cbafa3c49dea 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/core", - "version": "13.3.0", + "version": "13.6.0", "description": "zwave-js: core components", "keywords": [], "publishConfig": { @@ -51,7 +51,7 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" @@ -61,25 +61,25 @@ "@zwave-js/shared": "workspace:*", "alcalzone-shared": "^4.0.8", "ansi-colors": "^4.1.3", - "dayjs": "^1.11.10", - "logform": "^2.6.0", + "dayjs": "^1.11.13", + "logform": "^2.6.1", "nrf-intel-hex": "^1.4.0", "reflect-metadata": "^0.2.2", "triple-beam": "*", - "winston": "^3.13.0", + "winston": "^3.15.0", "winston-daily-rotate-file": "^5.0.0", - "winston-transport": "^4.7.1" + "winston-transport": "^4.8.0" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", - "@types/node": "^18.19.42", + "@microsoft/api-extractor": "^7.47.9", + "@types/node": "^18.19.55", "@types/sinon": "^17.0.3", "@types/triple-beam": "^1.3.5", "ava": "^6.1.3", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", - "sinon": "^17.0.1", - "typescript": "5.5.3" + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", + "sinon": "^19.0.2", + "typescript": "5.6.2" } } diff --git a/packages/core/src/error/ZWaveError.ts b/packages/core/src/error/ZWaveError.ts index ebcea83ad516..22eea51f4171 100644 --- a/packages/core/src/error/ZWaveError.ts +++ b/packages/core/src/error/ZWaveError.ts @@ -27,6 +27,9 @@ export enum ZWaveErrorCodes { Driver_NoErrorHandler, Driver_FeatureDisabled, + /** The task was removed from the task queue */ + Driver_TaskRemoved, + /** There was a timeout while waiting for a message from the controller */ Controller_Timeout = 200, /** There was a timeout while waiting for a response from a node */ @@ -87,6 +90,8 @@ export enum ZWaveErrorCodes { NVM_InvalidFormat, /** Not enough space in the NVM */ NVM_NoSpace, + /** The NVM hasn't been opened yet */ + NVM_NotOpen, CC_Invalid = 300, CC_NoNodeID, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 0bc3b4d6875d..6afee8722c97 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ export * from "./abstractions/ICommandClass"; export * from "./abstractions/IZWaveEndpoint"; export * from "./abstractions/IZWaveNode"; diff --git a/packages/core/src/index_safe.ts b/packages/core/src/index_safe.ts index 1a846539f8a6..c241edf8958f 100644 --- a/packages/core/src/index_safe.ts +++ b/packages/core/src/index_safe.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ /* @forbiddenImports external */ export * from "./abstractions/ICommandClass"; diff --git a/packages/core/src/security/Manager.test.ts b/packages/core/src/security/Manager.test.ts index 1c314c8f390f..f376635e20be 100644 --- a/packages/core/src/security/Manager.test.ts +++ b/packages/core/src/security/Manager.test.ts @@ -76,7 +76,7 @@ test("generateNonce() -> should ensure that no collisions happen", (t) => { .returns(buf2); sinon.replace(crypto, "randomBytes", fakeRandomBytes); - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-require-imports const SM: typeof SecurityManager = require("./Manager").SecurityManager; const man = new SM(options); diff --git a/packages/core/src/security/crypto.ts b/packages/core/src/security/crypto.ts index c9df18dee227..d03bb98852ba 100644 --- a/packages/core/src/security/crypto.ts +++ b/packages/core/src/security/crypto.ts @@ -344,7 +344,7 @@ export function decryptAES128CCM( try { decipher.final(); authOK = true; - } catch (e) { + } catch { /* nothing to do */ } return { plaintext, authOK }; diff --git a/packages/core/src/util/decorators.ts b/packages/core/src/util/decorators.ts index b26b31620b6e..c4a56cb9bb40 100644 --- a/packages/core/src/util/decorators.ts +++ b/packages/core/src/util/decorators.ts @@ -1,11 +1,11 @@ +/* eslint-disable @typescript-eslint/no-unsafe-function-type */ import type { TypedClassDecorator } from "@zwave-js/shared"; import "reflect-metadata"; type Constructor = new (...args: any[]) => T; export interface ReflectionDecorator< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TArgs extends any[], TValue, TConstructor extends Constructor = Constructor, @@ -17,7 +17,6 @@ export interface ReflectionDecorator< /** Looks up the value which was assigned to the target class by the decorator, using a class instance */ lookupValue: (target: TBase) => TValue | undefined; /** Looks up the value which was assigned to the target class by the decorator, using the class itself */ - // eslint-disable-next-line @typescript-eslint/ban-types lookupValueStatic: (constr: Function) => TValue | undefined; /** Looks up the class constructor for a given value. This can only be used if the value does not need to be transformed using `constructorLookupKey`. */ lookupConstructorByValue: (value: TValue) => TConstructor | undefined; @@ -26,8 +25,7 @@ export interface ReflectionDecorator< } export interface CreateReflectionDecoratorOptions< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TArgs extends any[], TValue, TConstructor extends Constructor = Constructor, @@ -47,8 +45,7 @@ export interface CreateReflectionDecoratorOptions< /** Creates a reflection decorator and corresponding methods for reverse lookup of values and constructors */ export function createReflectionDecorator< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TArgs extends any[], TValue, TConstructor extends Constructor = Constructor, @@ -147,8 +144,7 @@ export function createReflectionDecorator< } export interface SimpleReflectionDecorator< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TArgs extends [any], TConstructor extends Constructor = Constructor, > { @@ -161,7 +157,6 @@ export interface SimpleReflectionDecorator< lookupValue: (target: TBase) => TArgs[0] | undefined; /** Looks up the value which was assigned to the target class by the decorator, using the class itself */ - // eslint-disable-next-line @typescript-eslint/ban-types lookupValueStatic: (constr: Function) => TArgs[0] | undefined; /** Looks up the super class constructor for a given value. */ @@ -177,8 +172,7 @@ export interface CreateSimpleReflectionDecoratorOptions { * Like {@link createReflectionDecorator}, but for single-value decorators. This has the advantage that the returned functions can be reused easier with named args. */ export function createSimpleReflectionDecorator< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TArgs extends [any], TConstructor extends Constructor = Constructor, >({ @@ -209,8 +203,7 @@ export function createSimpleReflectionDecorator< } export interface ValuelessReflectionDecorator< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, > { /** The decorator which is used to decorate the super class */ decorator: () => TypedClassDecorator; @@ -219,7 +212,6 @@ export interface ValuelessReflectionDecorator< isDecorated: (target: TBase) => boolean; /** Checks if the target class was decorated by this decorator, using the class itself */ - // eslint-disable-next-line @typescript-eslint/ban-types isDecoratedStatic: (constr: Function) => boolean; } @@ -232,8 +224,7 @@ export interface CreateValuelessReflectionDecoratorOptions { * Like {@link createReflectionDecorator}, but for valueless decorators. */ export function createValuelessReflectionDecorator< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, >({ name, }: CreateValuelessReflectionDecoratorOptions): ValuelessReflectionDecorator< @@ -247,7 +238,6 @@ export function createValuelessReflectionDecorator< const ret: ValuelessReflectionDecorator = { decorator: decorator.decorator, isDecorated: (target: TBase) => !!decorator.lookupValue(target), - // eslint-disable-next-line @typescript-eslint/ban-types isDecoratedStatic: (constr: Function) => !!decorator.lookupValueStatic(constr), }; @@ -256,8 +246,7 @@ export function createValuelessReflectionDecorator< } export interface ReflectionDecoratorPair< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TSuperArgs extends [any], TSubArgs extends [any], TConstructor extends Constructor = Constructor, @@ -278,10 +267,8 @@ export interface ReflectionDecoratorPair< lookupSubValue: (target: TBase) => TSubArgs[0] | undefined; /** Looks up the value which was assigned to the target super class by the decorator, using the class itself */ - // eslint-disable-next-line @typescript-eslint/ban-types lookupSuperValueStatic: (constr: Function) => TSuperArgs[0] | undefined; /** Looks up the value which was assigned to the target sub class by the decorator, using the class itself */ - // eslint-disable-next-line @typescript-eslint/ban-types lookupSubValueStatic: (constr: Function) => TSubArgs[0] | undefined; /** Looks up the super class constructor for a given value. */ @@ -304,8 +291,7 @@ export interface CreateReflectionDecoratorPairOptions { * This pair is meant to decorate a super class and several of its subclasses */ export function createReflectionDecoratorPair< - // eslint-disable-next-line @typescript-eslint/ban-types - TBase extends Object, + TBase extends object, TSuperArgs extends [any], TSubArgs extends [any], TConstructor extends Constructor = Constructor, @@ -370,8 +356,7 @@ export function createReflectionDecoratorPair< } // export interface PropertyReflectionDecorator< -// // eslint-disable-next-line @typescript-eslint/ban-types -// TTarget extends Object, +// // TTarget extends object, // TArgs extends any[], // TValue, // > { @@ -393,8 +378,7 @@ export function createReflectionDecoratorPair< // /** Creates a reflection decorator for a class property and the corresponding method for reverse lookup of defined values */ // export function createPropertyReflectionDecorator< -// // eslint-disable-next-line @typescript-eslint/ban-types -// TTarget extends Object, +// // TTarget extends object, // TArgs extends any[], // TValue, // >({ diff --git a/packages/core/src/util/misc.ts b/packages/core/src/util/misc.ts index 48712026f0db..a369fe9ef3de 100644 --- a/packages/core/src/util/misc.ts +++ b/packages/core/src/util/misc.ts @@ -48,7 +48,7 @@ function validatePayloadInternal( } // Export and augment the validatePayload method with a reason -export const validatePayload = validatePayloadInternal.bind( +export const validatePayload: ValidatePayload = validatePayloadInternal.bind( undefined, undefined, ) as ValidatePayload; diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 17e1e1d81cd9..775025743180 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,10 +1,12 @@ { "name": "@zwave-js/eslint-plugin", - "version": "13.3.0", + "version": "13.6.0", "description": "zwave-js: custom ESLint rules", "private": true, "keywords": [], + "type": "module", "main": "build/index.js", + "module": "build/index.js", "files": [ "build/**/*.js" ], @@ -31,14 +33,16 @@ "build": "tsc -b tsconfig.build.json --pretty", "bootstrap": "yarn build", "clean": "del-cli build/ \"*.tsbuildinfo\"", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix" }, "devDependencies": { - "@types/eslint": "^8.56.7", - "@typescript-eslint/utils": "^7.13.0", + "@types/eslint": "^9.6.1", + "@typescript-eslint/utils": "^8.8.1", "@zwave-js/core": "workspace:*", - "eslint": "^8.57.0", - "typescript": "5.5.3" + "eslint": "^9.12.0", + "eslint-compat-utils": "^0.5.1", + "eslint-plugin-jsonc": "^2.16.0", + "typescript": "5.6.2" } } diff --git a/packages/eslint-plugin/src/configs/configFiles.ts b/packages/eslint-plugin/src/configs/configFiles.ts deleted file mode 100644 index d9aa048a5960..000000000000 --- a/packages/eslint-plugin/src/configs/configFiles.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { type ESLint } from "eslint"; - -export const configFiles: ESLint.ConfigData = { - parser: "jsonc-eslint-parser", - plugins: [ - "@zwave-js", - ], - rules: { - "@zwave-js/auto-unsigned": "error", - "@zwave-js/consistent-config-string-case": "error", - "@zwave-js/consistent-device-config-property-order": "error", - "@zwave-js/consistent-param-units": "error", - "@zwave-js/no-misspelled-names": "error", - "@zwave-js/no-surrounding-whitespace": "error", - "@zwave-js/no-unnecessary-min-max-value": "error", - "@zwave-js/no-useless-description": "error", - "@zwave-js/no-value-in-option-label": "error", - "@zwave-js/prefer-defaultvalue": "error", - }, -}; diff --git a/packages/eslint-plugin/src/index.ts b/packages/eslint-plugin/src/index.ts index 1a4bf1c4634f..394bea336b54 100644 --- a/packages/eslint-plugin/src/index.ts +++ b/packages/eslint-plugin/src/index.ts @@ -6,6 +6,7 @@ import { consistentDeviceConfigPropertyOrder } from "./rules/consistent-device-c import { consistentParamUnits } from "./rules/consistent-param-units.js"; import { noDebugInTests } from "./rules/no-debug-in-tests.js"; import { noForbiddenImports } from "./rules/no-forbidden-imports.js"; +import { noInternalCCTypes } from "./rules/no-internal-cc-types.js"; import { noMisspelledNames } from "./rules/no-misspelled-names.js"; import { noSurroundingWhitespace } from "./rules/no-surrounding-whitespace.js"; import { noUnnecessaryMinMaxValue } from "./rules/no-unnecessary-min-max-value.js"; @@ -13,10 +14,7 @@ import { noUselessDescription } from "./rules/no-useless-description.js"; import { noValueInOptionLabel } from "./rules/no-value-in-option-label.js"; import { preferDefaultValue } from "./rules/prefer-defaultvalue.js"; -import { configFiles as configFilesConfig } from "./configs/configFiles.js"; -import { noInternalCCTypes } from "./rules/no-internal-cc-types.js"; - -module.exports = { +export default { rules: { "auto-unsigned": autoUnsigned, "ccapi-validate-args": ccAPIValidateArgs, @@ -35,7 +33,4 @@ module.exports = { "prefer-defaultvalue": preferDefaultValue, "no-internal-cc-types": noInternalCCTypes, }, - configs: { - "config-files": configFilesConfig, - }, }; diff --git a/packages/eslint-plugin/src/rules/auto-unsigned.ts b/packages/eslint-plugin/src/rules/auto-unsigned.ts index 689b35932d41..d186497d1a3b 100644 --- a/packages/eslint-plugin/src/rules/auto-unsigned.ts +++ b/packages/eslint-plugin/src/rules/auto-unsigned.ts @@ -9,13 +9,13 @@ import { insertBeforeJSONProperty, paramInfoPropertyOrder, removeJSONProperty, -} from "../utils"; +} from "../utils.js"; export const autoUnsigned: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } function suggestUnsigned( parent: AST.JSONObjectExpression, @@ -256,13 +256,14 @@ export const autoUnsigned: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Ensures that "unsigned = true" is used when necessary and omitted when not.`, }, fixable: "code", hasSuggestions: true, - schema: [], + schema: false, messages: { "invalid-value-size": "Value size {{valueSize}} is invalid!", "incompatible-size": diff --git a/packages/eslint-plugin/src/rules/ccapi-validate-args.ts b/packages/eslint-plugin/src/rules/ccapi-validate-args.ts index e3a9e0414891..3e37935947f6 100644 --- a/packages/eslint-plugin/src/rules/ccapi-validate-args.ts +++ b/packages/eslint-plugin/src/rules/ccapi-validate-args.ts @@ -4,14 +4,13 @@ import { ESLintUtils, } from "@typescript-eslint/utils"; import { - type Rule, findDecoratorContainingCCId, getCCNameFromDecorator, -} from "../utils"; +} from "../utils.js"; const isFixMode = process.argv.some((arg) => arg.startsWith("--fix")); -export const ccAPIValidateArgs: Rule = ESLintUtils.RuleCreator.withoutDocs({ +export const ccAPIValidateArgs = ESLintUtils.RuleCreator.withoutDocs({ create(context) { let currentAPIClassCCName: string | undefined; let validateArgsImport: string | undefined; diff --git a/packages/eslint-plugin/src/rules/consistent-cc-classes.ts b/packages/eslint-plugin/src/rules/consistent-cc-classes.ts index e4b889b73f70..2db8230635ae 100644 --- a/packages/eslint-plugin/src/rules/consistent-cc-classes.ts +++ b/packages/eslint-plugin/src/rules/consistent-cc-classes.ts @@ -11,7 +11,7 @@ import { findDecoratorContainingCCId, getCCIdFromDecorator, getCCIdFromExpression, -} from "../utils"; +} from "../utils.js"; const apiBaseClasses = new Set(["CCAPI", "PhysicalCCAPI"]); diff --git a/packages/eslint-plugin/src/rules/consistent-config-string-case.ts b/packages/eslint-plugin/src/rules/consistent-config-string-case.ts index 6cce4f82faae..c7009374304c 100644 --- a/packages/eslint-plugin/src/rules/consistent-config-string-case.ts +++ b/packages/eslint-plugin/src/rules/consistent-config-string-case.ts @@ -1,20 +1,20 @@ import { type AST } from "jsonc-eslint-parser"; -import { CONFIG_OPTION, CONFIG_PARAM, ROOT } from "../jsonSelectors"; +import { CONFIG_OPTION, CONFIG_PARAM, ROOT } from "../jsonSelectors.js"; import { type JSONCRule, insertAfterJSONProperty, insertBeforeJSONProperty, -} from "../utils"; -import { toSentenceCase, toTitleCase } from "../utils/titleAndSentenceCase"; +} from "../utils.js"; +import { toSentenceCase, toTitleCase } from "../utils/titleAndSentenceCase.js"; // TODO: Avoid Enable/Disable in param labels // remove Z-Wave and all its variants export const consistentConfigStringCase: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Enforce title case for device descriptions @@ -143,16 +143,18 @@ export const consistentConfigStringCase: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Ensures that the casing of labels in configuration files follows the style guide`, }, fixable: "code", hasSuggestions: true, - schema: [], + schema: false, messages: { "must-be-title-case": "{{what}} must be in Title Case", - "must-be-sentence-case": "{{what}} must be in Sentence case", + "must-be-sentence-case": + "{{what}} must be in Sentence case, except for Command Class names", "change-to-fixed": `Change to "{{fixed}}"`, "disable-for-all-options": `Disable for all options of this parameter`, diff --git a/packages/eslint-plugin/src/rules/consistent-device-config-property-order.ts b/packages/eslint-plugin/src/rules/consistent-device-config-property-order.ts index e712034e4400..b36f21d0ba0f 100644 --- a/packages/eslint-plugin/src/rules/consistent-device-config-property-order.ts +++ b/packages/eslint-plugin/src/rules/consistent-device-config-property-order.ts @@ -1,12 +1,12 @@ import { type AST as ESLintAST } from "eslint"; import type { AST } from "jsonc-eslint-parser"; -import { type JSONCRule, paramInfoPropertyOrder } from "../utils"; +import { type JSONCRule, paramInfoPropertyOrder } from "../utils.js"; export const consistentDeviceConfigPropertyOrder: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Ensure consistent ordering of properties in configuration parameters "JSONProperty[key.value='paramInformation'] > JSONArrayExpression > JSONObjectExpression"( @@ -29,9 +29,14 @@ export const consistentDeviceConfigPropertyOrder: JSONCRule.RuleModule = { if (isSomePropertyOutOfOrder) { const propsWithComments = properties.map(([index, p]) => { - const comments = context.sourceCode.getComments( - p as any, - ); + const comments = { + leading: context.sourceCode.getCommentsBefore( + p as any, + ), + trailing: context.sourceCode.getCommentsAfter( + p as any, + ), + }; return { index, property: p, @@ -153,12 +158,13 @@ export const consistentDeviceConfigPropertyOrder: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: "Ensures consistent ordering of properties in configuration parameter definitions", }, fixable: "code", - schema: [], + schema: false, messages: { "parameter-ordering": `For consistency, config param properties should follow the order ${ diff --git a/packages/eslint-plugin/src/rules/consistent-param-units.ts b/packages/eslint-plugin/src/rules/consistent-param-units.ts index 4cc95add12ee..821b42bcc8db 100644 --- a/packages/eslint-plugin/src/rules/consistent-param-units.ts +++ b/packages/eslint-plugin/src/rules/consistent-param-units.ts @@ -1,6 +1,6 @@ import type { AST } from "jsonc-eslint-parser"; -import { CONFIG_PARAM } from "../jsonSelectors"; -import { type JSONCRule } from "../utils"; +import { CONFIG_PARAM } from "../jsonSelectors.js"; +import { type JSONCRule } from "../utils.js"; interface FixableUnit { wrong: string[]; @@ -34,9 +34,9 @@ fixableUnits.forEach(({ correct }) => export const consistentParamUnits: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Ensure consistent ordering of properties in configuration parameters [`${CONFIG_PARAM} > JSONProperty[key.value='unit']`]( @@ -82,12 +82,13 @@ export const consistentParamUnits: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: "Ensures that no forbidden units are used in config parameters.", }, fixable: "code", - schema: [], + schema: false, messages: { "forbidden-unit": `The unit "{{unit}}" is not allowed. Use "{{correct}}" instead.`, diff --git a/packages/eslint-plugin/src/rules/no-debug-in-tests.ts b/packages/eslint-plugin/src/rules/no-debug-in-tests.ts index 3079cdd2d23b..ea0b7578fc20 100644 --- a/packages/eslint-plugin/src/rules/no-debug-in-tests.ts +++ b/packages/eslint-plugin/src/rules/no-debug-in-tests.ts @@ -1,6 +1,6 @@ import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils"; import path from "node:path"; -import { type Rule, repoRoot } from "../utils.js"; +import { repoRoot } from "../utils.js"; const isFixMode = process.argv.some((arg) => arg.startsWith("--fix")); @@ -20,7 +20,7 @@ const integrationTestExportNames = new Set([ "integrationTest", ]); -export const noDebugInTests: Rule = ESLintUtils.RuleCreator.withoutDocs({ +export const noDebugInTests = ESLintUtils.RuleCreator.withoutDocs({ create(context) { const integrationTestMethodNames = new Set(); diff --git a/packages/eslint-plugin/src/rules/no-forbidden-imports.ts b/packages/eslint-plugin/src/rules/no-forbidden-imports.ts index b5d659edd169..36c64dab8144 100644 --- a/packages/eslint-plugin/src/rules/no-forbidden-imports.ts +++ b/packages/eslint-plugin/src/rules/no-forbidden-imports.ts @@ -2,7 +2,6 @@ import { ESLintUtils, type TSESTree } from "@typescript-eslint/utils"; import fs from "node:fs"; import path from "node:path"; import ts from "typescript"; -import { type Rule } from "../utils"; // Whitelist some imports that are known not to import forbidden modules const whitelistedImports = [ @@ -186,7 +185,7 @@ function resolveSourceFileFromDefinition( const forbiddenImportsRegex = /^@forbiddenImports (?.*?)$/; -export const noForbiddenImports: Rule = ESLintUtils.RuleCreator.withoutDocs({ +export const noForbiddenImports = ESLintUtils.RuleCreator.withoutDocs({ create(context) { // And only those with at least one /* @forbiddenImports ... */ comment const comments = context.sourceCode.getAllComments() diff --git a/packages/eslint-plugin/src/rules/no-internal-cc-types.ts b/packages/eslint-plugin/src/rules/no-internal-cc-types.ts index f11840c74799..0a148b853903 100644 --- a/packages/eslint-plugin/src/rules/no-internal-cc-types.ts +++ b/packages/eslint-plugin/src/rules/no-internal-cc-types.ts @@ -4,11 +4,10 @@ import { ESLintUtils, type TSESTree, } from "@typescript-eslint/utils"; -import { type Rule } from "../utils"; // const isFixMode = process.argv.some((arg) => arg.startsWith("--fix")); -export const noInternalCCTypes: Rule = ESLintUtils.RuleCreator.withoutDocs({ +export const noInternalCCTypes = ESLintUtils.RuleCreator.withoutDocs({ create(context) { const localTypeNodes = new Map< string, diff --git a/packages/eslint-plugin/src/rules/no-misspelled-names.ts b/packages/eslint-plugin/src/rules/no-misspelled-names.ts index 8446e3f98861..fd4846a53ea8 100644 --- a/packages/eslint-plugin/src/rules/no-misspelled-names.ts +++ b/packages/eslint-plugin/src/rules/no-misspelled-names.ts @@ -1,5 +1,5 @@ import { type AST } from "jsonc-eslint-parser"; -import { type JSONCRule } from "../utils"; +import { type JSONCRule } from "../utils.js"; interface CommonError { pattern: string | RegExp; @@ -25,9 +25,9 @@ function fixCommonErrors(str: string): string { export const noMisspelledNames: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Fix some common misspellings in labels and descriptions @@ -54,12 +54,13 @@ export const noMisspelledNames: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Prevents some common misspellings in labels and descriptions`, }, fixable: "code", - schema: [], + schema: false, messages: { "change-to-fixed": `Change to "{{fixed}}"`, }, diff --git a/packages/eslint-plugin/src/rules/no-surrounding-whitespace.ts b/packages/eslint-plugin/src/rules/no-surrounding-whitespace.ts index 802212dd2455..dcb24a26cbac 100644 --- a/packages/eslint-plugin/src/rules/no-surrounding-whitespace.ts +++ b/packages/eslint-plugin/src/rules/no-surrounding-whitespace.ts @@ -1,5 +1,5 @@ import { type AST } from "jsonc-eslint-parser"; -import { type JSONCRule } from "../utils"; +import { type JSONCRule } from "../utils.js"; function isSurroundedByWhitespace(str: string) { return /^\s/.test(str) || /\s$/.test(str); @@ -7,9 +7,9 @@ function isSurroundedByWhitespace(str: string) { export const noSurroundingWhitespace: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Disallow surrounding whitespace @@ -30,12 +30,13 @@ export const noSurroundingWhitespace: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Prevents strings in configuration files to be surrounded by whitespace`, }, fixable: "code", - schema: [], + schema: false, messages: { "no-surrounding-whitespace": "Leading and trailing whitespace is not allowed", diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-min-max-value.ts b/packages/eslint-plugin/src/rules/no-unnecessary-min-max-value.ts index 4d373e54031d..37203a74831a 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-min-max-value.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-min-max-value.ts @@ -1,11 +1,11 @@ import type { AST } from "jsonc-eslint-parser"; -import { type JSONCRule, removeJSONProperty } from "../utils"; +import { type JSONCRule, removeJSONProperty } from "../utils.js"; export const noUnnecessaryMinMaxValue: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Avoid unnecessary min/max value in parameters with predefined options "JSONProperty[key.value='paramInformation'] > JSONArrayExpression > JSONObjectExpression"( @@ -61,11 +61,12 @@ export const noUnnecessaryMinMaxValue: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: "Ensures that min/maxValue are not used unnecessarily", }, fixable: "code", - schema: [], + schema: false, messages: { "no-min-value": `For parameters with "allowManualEntry = false" and predefined options, "minValue" is unnecessary and should not be specified.`, diff --git a/packages/eslint-plugin/src/rules/no-useless-description.ts b/packages/eslint-plugin/src/rules/no-useless-description.ts index 813dad5004bd..75e8012d175e 100644 --- a/packages/eslint-plugin/src/rules/no-useless-description.ts +++ b/packages/eslint-plugin/src/rules/no-useless-description.ts @@ -1,12 +1,12 @@ import { type AST } from "jsonc-eslint-parser"; -import { CONFIG_PARAM } from "../jsonSelectors"; -import { type JSONCRule, removeJSONProperty } from "../utils"; +import { CONFIG_PARAM } from "../jsonSelectors.js"; +import { type JSONCRule, removeJSONProperty } from "../utils.js"; export const noUselessDescription: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Disallow "empty" param descriptions @@ -39,11 +39,12 @@ export const noUselessDescription: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Disallows "empty" and useless descriptions`, }, fixable: "code", - schema: [], + schema: false, messages: { "no-useless-description": "The description {{what}} is not allowed", }, diff --git a/packages/eslint-plugin/src/rules/no-value-in-option-label.ts b/packages/eslint-plugin/src/rules/no-value-in-option-label.ts index 53f5732b2dbe..d5e084ff8d30 100644 --- a/packages/eslint-plugin/src/rules/no-value-in-option-label.ts +++ b/packages/eslint-plugin/src/rules/no-value-in-option-label.ts @@ -1,6 +1,6 @@ import { type AST } from "jsonc-eslint-parser"; -import { CONFIG_OPTION } from "../jsonSelectors"; -import { type JSONCRule, getJSONNumber } from "../utils"; +import { CONFIG_OPTION } from "../jsonSelectors.js"; +import { type JSONCRule, getJSONNumber } from "../utils.js"; const startsWithNumber = /^\d(?![\/-])/; // allow - and / as the next chars const isNumberWithUnit = /^\d+(\.\d+)?\s?[°\w%µ]+/; @@ -8,9 +8,9 @@ const isOnlyNumeric = /^\d+(\.\d+)?$/; export const noValueInOptionLabel: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Disallow options labels that start with their value @@ -43,11 +43,12 @@ export const noValueInOptionLabel: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Prevents option labels which start with their value`, }, fixable: "code", - schema: [], + schema: false, messages: { "no-numeric-option": "Option labels must not start with their value. Use the 'value' property instead.", diff --git a/packages/eslint-plugin/src/rules/prefer-defaultvalue.ts b/packages/eslint-plugin/src/rules/prefer-defaultvalue.ts index 5cd29d6d35a8..3f9ae9dd1723 100644 --- a/packages/eslint-plugin/src/rules/prefer-defaultvalue.ts +++ b/packages/eslint-plugin/src/rules/prefer-defaultvalue.ts @@ -1,11 +1,11 @@ import { type AST } from "jsonc-eslint-parser"; -import { type JSONCRule } from "../utils"; +import { type JSONCRule } from "../utils.js"; export const preferDefaultValue: JSONCRule.RuleModule = { create(context) { - if (!context.parserServices.isJSON) { - return {}; - } + // if (!context.parserServices.isJSON) { + // return {}; + // } return { // Disallow "(default)" in labels and descriptions @@ -41,12 +41,13 @@ export const preferDefaultValue: JSONCRule.RuleModule = { }; }, meta: { + // @ts-expect-error Something is off about the rule types docs: { description: `Ensures that the defaultValue property is used instead of mentioning in text that an option/value is the default`, }, fixable: "code", - schema: [], + schema: false, messages: { "no-default": "Do not use '(default)' in labels or descriptions. Use the 'defaultValue' property instead.", diff --git a/packages/eslint-plugin/src/utils.ts b/packages/eslint-plugin/src/utils.ts index 144892335ee2..199774fd83f3 100644 --- a/packages/eslint-plugin/src/utils.ts +++ b/packages/eslint-plugin/src/utils.ts @@ -5,9 +5,14 @@ import { } from "@typescript-eslint/utils"; import { CommandClasses } from "@zwave-js/core"; import { type Rule as ESLintRule } from "eslint"; -import { type AST as JSONC_AST } from "jsonc-eslint-parser"; +import { type AST as JSONC_AST, type RuleListener } from "jsonc-eslint-parser"; import path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + export type ReportFixGenerator = ( fixer: ESLintRule.RuleFixer, ) => Generator; @@ -106,13 +111,67 @@ export namespace JSONCRule { // Special ESLint rule type for JSONC files // AST viewer at https://ota-meshi.github.io/jsonc-eslint-parser/ - export interface RuleListener { - [key: string]: ((node: never) => void) | undefined; - } export interface RuleModule { + meta: RuleMetaData; + jsoncDefineRule: PartialRuleModule; create(context: ESLintRule.RuleContext): RuleListener; - meta?: ESLintRule.RuleMetaData | undefined; - schema?: ESLintRule.RuleMetaData["schema"]; + } + + export interface RuleMetaData { + docs: { + description: string; + recommended: ("json" | "jsonc" | "json5")[] | null; + url: string; + ruleId: string; + ruleName: string; + default?: "error" | "warn"; + extensionRule: + | boolean + | string + | { + plugin: string; + url: string; + }; + layout: boolean; + }; + messages: { [messageId: string]: string }; + fixable?: "code" | "whitespace"; + hasSuggestions?: boolean; + schema: false /*| JSONSchema4 | JSONSchema4[]*/; + deprecated?: boolean; + replacedBy?: []; + type: "problem" | "suggestion" | "layout"; + } + + export interface PartialRuleModule { + meta: PartialRuleMetaData; + create( + context: ESLintRule.RuleContext, + params: { customBlock: boolean }, + ): RuleListener; + } + + export interface PartialRuleMetaData { + docs: { + description: string; + recommended: ("json" | "jsonc" | "json5")[] | null; + default?: "error" | "warn"; + extensionRule: + | boolean + | string + | { + plugin: string; + url: string; + }; + layout: boolean; + }; + messages: { [messageId: string]: string }; + fixable?: "code" | "whitespace"; + hasSuggestions?: boolean; + schema: false; /* | JSONSchema4 | JSONSchema4[]*/ + deprecated?: boolean; + replacedBy?: []; + type: "problem" | "suggestion" | "layout"; } } diff --git a/packages/eslint-plugin/src/utils/titleAndSentenceCase.ts b/packages/eslint-plugin/src/utils/titleAndSentenceCase.ts index badfcf4ecf94..321249f4d3b0 100644 --- a/packages/eslint-plugin/src/utils/titleAndSentenceCase.ts +++ b/packages/eslint-plugin/src/utils/titleAndSentenceCase.ts @@ -5,7 +5,7 @@ import { isHyphenatedWord, joinWords, splitIntoWords, -} from "./wordsAndNames"; +} from "./wordsAndNames.js"; const titleCaseExceptions = [ "with", diff --git a/packages/flash/package.json b/packages/flash/package.json index d1a724502b72..1be920ff56af 100644 --- a/packages/flash/package.json +++ b/packages/flash/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/flash", - "version": "13.3.1", + "version": "13.10.0", "description": "zwave-js: firmware flash utility", "keywords": [], "publishConfig": { @@ -41,14 +41,14 @@ "scripts": { "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix" }, "devDependencies": { "@types/fs-extra": "^11.0.4", - "@types/node": "^18.19.42", - "@types/yargs": "^17.0.32", - "del-cli": "^5.1.0", - "typescript": "5.5.3" + "@types/node": "^18.19.55", + "@types/yargs": "^17.0.33", + "del-cli": "^6.0.0", + "typescript": "5.6.2" } } diff --git a/packages/host/package.json b/packages/host/package.json index f5c92a335150..a2b6d79a43bb 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/host", - "version": "13.3.1", + "version": "13.9.0", "description": "zwave-js: Host abstractions", "keywords": [], "publishConfig": { @@ -46,7 +46,7 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix" }, "dependencies": { @@ -56,9 +56,9 @@ "alcalzone-shared": "^4.0.8" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", - "@types/node": "^18.19.42", - "del-cli": "^5.1.0", - "typescript": "5.5.3" + "@microsoft/api-extractor": "^7.47.9", + "@types/node": "^18.19.55", + "del-cli": "^6.0.0", + "typescript": "5.6.2" } } diff --git a/packages/host/src/index.ts b/packages/host/src/index.ts index 8b9a9d5d4fe9..c4a7340a2742 100644 --- a/packages/host/src/index.ts +++ b/packages/host/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ export * from "./FileSystem"; export * from "./ZWaveHost"; export * from "./ZWaveHostOptions"; diff --git a/packages/host/src/index_safe.ts b/packages/host/src/index_safe.ts index 7cc47ce565a2..a08ef095ba6a 100644 --- a/packages/host/src/index_safe.ts +++ b/packages/host/src/index_safe.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ /* @forbiddenImports external */ export * from "./FileSystem"; diff --git a/packages/maintenance/package.json b/packages/maintenance/package.json index 3b5f65bec555..a1ace8ddac09 100644 --- a/packages/maintenance/package.json +++ b/packages/maintenance/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/maintenance", - "version": "13.3.0", + "version": "13.6.0", "description": "zwave-js: maintenance scripts", "private": true, "keywords": [], @@ -32,35 +32,35 @@ "ts": "node -r esbuild-register --conditions=@@dev", "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix" }, "devDependencies": { - "@dprint/formatter": "^0.3.0", + "@dprint/formatter": "^0.4.1", "@dprint/json": "^0.19.3", - "@dprint/markdown": "^0.17.2", - "@dprint/typescript": "^0.91.1", + "@dprint/markdown": "^0.17.8", + "@dprint/typescript": "^0.93.0", "@types/fs-extra": "^11.0.4", "@types/globrex": "^0.1.4", - "@types/node": "^18.19.42", - "@types/yargs": "^17.0.32", + "@types/node": "^18.19.55", + "@types/yargs": "^17.0.33", "@zwave-js/core": "workspace:*", - "@zwave-js/fmt": "^1.0.1", + "@zwave-js/fmt": "^1.0.2", "@zwave-js/shared": "workspace:*", "ansi-colors": "^4.1.3", "cli-highlight": "^2.1.11", - "del-cli": "^5.1.0", + "del-cli": "^6.0.0", "dprint": "^0.47.2", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", "execa": "^5.1.1", "fs-extra": "^11.2.0", "globrex": "^0.1.2", "json5": "^2.2.3", - "piscina": "^4.4.0", + "piscina": "^4.7.0", "reflect-metadata": "^0.2.2", - "ts-morph": "^23.0.0", - "typescript": "5.5.3", + "ts-morph": "^24.0.0", + "typescript": "5.6.2", "yargs": "^17.7.2" } } diff --git a/packages/maintenance/src/implementedCCs.ts b/packages/maintenance/src/implementedCCs.ts index 7118206b99c4..5094c518aa06 100644 --- a/packages/maintenance/src/implementedCCs.ts +++ b/packages/maintenance/src/implementedCCs.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-floating-promises */ -require("reflect-metadata"); +import "reflect-metadata"; + import { CommandClasses } from "@zwave-js/core"; import { num2hex } from "@zwave-js/shared"; import * as c from "ansi-colors"; diff --git a/packages/nvmedit/nvmedit.api.md b/packages/nvmedit/nvmedit.api.md index 0c30ac08fc2c..4c6af2fa4a77 100644 --- a/packages/nvmedit/nvmedit.api.md +++ b/packages/nvmedit/nvmedit.api.md @@ -4,13 +4,107 @@ ```ts +import { AllOrNone } from '@zwave-js/shared/safe'; import { CommandClasses } from '@zwave-js/core/safe'; +import { CommandClasses as CommandClasses_2 } from '@zwave-js/core'; +import { Expand } from '@zwave-js/shared'; import { FLiRS } from '@zwave-js/core/safe'; import { NodeIDType } from '@zwave-js/core/safe'; import { NodeProtocolInfo } from '@zwave-js/core/safe'; import { RFRegion } from '@zwave-js/core/safe'; import { RouteProtocolDataRate } from '@zwave-js/core/safe'; +// Warning: (ae-missing-release-tag) "BufferedNVMReader" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class BufferedNVMReader implements NVMIO { + constructor(inner: NVMIO); + // (undocumented) + get accessMode(): NVMAccess; + // (undocumented) + close(): Promise; + // (undocumented) + determineChunkSize(): Promise; + // (undocumented) + open(access: NVMAccess.Read | NVMAccess.Write): Promise; + // (undocumented) + read(offset: number, length: number): Promise<{ + buffer: Buffer; + endOfFile: boolean; + }>; + // (undocumented) + get size(): number; + // (undocumented) + write(offset: number, data: Buffer): Promise<{ + bytesWritten: number; + endOfFile: boolean; + }>; +} + +// Warning: (ae-missing-release-tag) "ControllerInfoFile" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ControllerInfoFile extends NVMFile { + // Warning: (ae-forgotten-export) The symbol "NVMFileDeserializationOptions" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "ControllerInfoFileOptions" needs to be exported by the entry point index.d.ts + constructor(options: NVMFileDeserializationOptions | ControllerInfoFileOptions); + // (undocumented) + controllerConfiguration: number; + // (undocumented) + dcdcConfig?: number; + // (undocumented) + homeId: Buffer; + // (undocumented) + lastNodeId: number; + // (undocumented) + lastNodeIdLR?: number; + // (undocumented) + maxNodeId: number; + // (undocumented) + maxNodeIdLR?: number; + // (undocumented) + nodeId: number; + // (undocumented) + primaryLongRangeChannelId?: number; + // (undocumented) + reservedId: number; + // (undocumented) + reservedIdLR?: number; + // (undocumented) + serialize(): NVM3Object & { + data: Buffer; + }; + // (undocumented) + staticControllerNodeId: number; + // (undocumented) + sucAwarenessPushNeeded?: number; + // (undocumented) + sucLastIndex: number; + // (undocumented) + systemState: number; + // (undocumented) + toJSON(): Record; +} + +// Warning: (ae-missing-release-tag) "ControllerInfoFileID" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ControllerInfoFileID = 327684; + +// Warning: (ae-missing-release-tag) "ControllerNVMProperty" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ControllerNVMProperty = { + domain: "controller"; + type: keyof ControllerNVMPropertyTypes; + nodeId?: undefined; +}; + +// Warning: (ae-missing-release-tag) "ControllerNVMPropertyToDataType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ControllerNVMPropertyToDataType

= ControllerNVMPropertyTypes[P["type"]]; + // Warning: (ae-missing-release-tag) "FragmentType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -37,18 +131,247 @@ export function json700To500(json: NVMJSON): NVM500JSON; // Warning: (ae-missing-release-tag) "jsonToNVM" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public -export function jsonToNVM(json: Required, targetSDKVersion: string): Buffer; +// @public (undocumented) +export function jsonToNVM(json: NVMJSON, targetSDKVersion: string): Promise; // Warning: (ae-missing-release-tag) "jsonToNVM500" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function jsonToNVM500(json: Required, protocolVersion: string): Buffer; +export function jsonToNVM500(json: Required, protocolVersion: string): Promise; + +// Warning: (ae-missing-release-tag) "LRNodeNVMProperty" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type LRNodeNVMProperty = { + domain: "lrnode"; + type: keyof LRNodeNVMPropertyTypes; + nodeId: number; +}; + +// Warning: (ae-missing-release-tag) "LRNodeNVMPropertyToDataType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type LRNodeNVMPropertyToDataType

= P["type"] extends keyof LRNodeNVMPropertyTypes ? LRNodeNVMPropertyTypes[P["type"]] : never; // Warning: (ae-missing-release-tag) "migrateNVM" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer; +export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Promise; + +// Warning: (ae-missing-release-tag) "NodeNVMProperty" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type NodeNVMProperty = { + domain: "node"; + type: keyof NodeNVMPropertyTypes; + nodeId: number; +}; + +// Warning: (ae-missing-release-tag) "NodeNVMPropertyToDataType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type NodeNVMPropertyToDataType

= P["type"] extends keyof NodeNVMPropertyTypes ? NodeNVMPropertyTypes[P["type"]] : never; + +// Warning: (ae-missing-release-tag) "NVM" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface NVM { + delete(property: ID): Promise; + get(property: ID): Promise; + has(property: ID): Promise; + set(property: ID, value: Data): Promise; +} + +// Warning: (ae-missing-release-tag) "NVM3" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class NVM3 implements NVM { + constructor(io: NVMIO); + // (undocumented) + delete(property: number): Promise; + // (undocumented) + erase(options?: NVM3EraseOptions): Promise; + // (undocumented) + get(fileId: number): Promise; + // (undocumented) + has(fileId: number): Promise; + // Warning: (ae-forgotten-export) The symbol "NVM3FileSystemInfo" needs to be exported by the entry point index.d.ts + // + // (undocumented) + get info(): NVM3FileSystemInfo | undefined; + // (undocumented) + init(): Promise; + // Warning: (ae-forgotten-export) The symbol "NVM3ObjectHeader" needs to be exported by the entry point index.d.ts + // + // (undocumented) + readObjectData(object: NVM3ObjectHeader): Promise; + // (undocumented) + set(property: number, value: Buffer): Promise; + setMany(values: [number, Buffer | null | undefined][]): Promise; +} + +// Warning: (ae-missing-release-tag) "NVM3Adapter" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class NVM3Adapter implements NVMAdapter { + constructor(nvm: NVM3); + // (undocumented) + commit(): Promise; + // (undocumented) + delete(property: NVMProperty): Promise; + // (undocumented) + get(property: T, required?: R): Promise : (NVMPropertyToDataType | undefined)>; + // (undocumented) + getFile(fileId: number, required: true): Promise; + // (undocumented) + getFile(fileId: number, required?: false): Promise; + // (undocumented) + hasFile(fileId: number): Promise; + // (undocumented) + hasPendingChanges(): boolean; + // (undocumented) + set(property: T, value: NVMPropertyToDataType): Promise; + setFile(file: NVMFile): void; +} + +// Warning: (ae-missing-release-tag) "NVM3EraseOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type NVM3EraseOptions = Partial; + +// Warning: (ae-missing-release-tag) "NVM3Meta" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface NVM3Meta { + // (undocumented) + deviceFamily: number; + // (undocumented) + memoryMapped: boolean; + // (undocumented) + pageSize: number; + // (undocumented) + sharedFileSystem: boolean; + // (undocumented) + writeSize: PageWriteSize; +} + +// Warning: (ae-missing-release-tag) "NVM3Object" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface NVM3Object { + // (undocumented) + data?: Buffer; + // (undocumented) + fragmentType: FragmentType; + // (undocumented) + key: number; + // (undocumented) + type: ObjectType; +} + +// Warning: (ae-missing-release-tag) "NVM3Page" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface NVM3Page { + // (undocumented) + header: NVM3PageHeader; + // (undocumented) + objects: NVM3Object[]; +} + +// Warning: (ae-missing-release-tag) "NVM3PageHeader" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface NVM3PageHeader { + // (undocumented) + deviceFamily: number; + // (undocumented) + encrypted: boolean; + // (undocumented) + eraseCount: number; + // (undocumented) + memoryMapped: boolean; + // (undocumented) + offset: number; + // (undocumented) + pageSize: number; + // (undocumented) + status: PageStatus; + // (undocumented) + version: number; + // (undocumented) + writeSize: PageWriteSize; +} + +// Warning: (ae-forgotten-export) The symbol "NVMEntryName" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "NVMData" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "NVM500" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class NVM500 implements NVM { + constructor(io: NVMIO); + // (undocumented) + delete(_property: NVMEntryName): Promise; + // (undocumented) + erase(options: NVM500EraseOptions): Promise; + // (undocumented) + get(property: NVMEntryName): Promise; + // (undocumented) + getSingle(property: NVMEntryName, index: number): Promise; + // (undocumented) + has(property: NVMEntryName): Promise; + // (undocumented) + get info(): NVM500Info | undefined; + // (undocumented) + init(): Promise; + // (undocumented) + set(property: NVMEntryName, value: NVMData[]): Promise; + // (undocumented) + setSingle(property: NVMEntryName, index: number, value: NVMData): Promise; +} + +// Warning: (ae-missing-release-tag) "NVM500Adapter" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class NVM500Adapter implements NVMAdapter { + constructor(nvm: NVM500); + // (undocumented) + commit(): Promise; + // (undocumented) + delete(_property: NVMProperty): Promise; + // (undocumented) + get(property: T, required?: R): Promise> : (NVMPropertyToDataType | undefined)>; + // (undocumented) + hasPendingChanges(): boolean; + // (undocumented) + set(property: T, value: NVMPropertyToDataType): Promise; +} + +// Warning: (ae-missing-release-tag) "NVM500EraseOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type NVM500EraseOptions = { + layout: ResolvedNVMLayout; + nvmSize: number; + library: NVM500Impl["library"]; + nvmDescriptor: NVMDescriptor; +}; + +// Warning: (ae-missing-release-tag) "NVM500Info" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface NVM500Info { + // (undocumented) + layout: ResolvedNVMLayout; + // (undocumented) + library: NVM500Impl["library"]; + // Warning: (ae-forgotten-export) The symbol "NVMModuleDescriptor" needs to be exported by the entry point index.d.ts + // + // (undocumented) + moduleDescriptors: Map; + // (undocumented) + nvmDescriptor: NVMDescriptor; +} // Warning: (ae-missing-release-tag) "NVM500JSON" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -170,10 +493,8 @@ export interface NVM500JSONVirtualNode { export interface NVM500Meta { // (undocumented) firmwareID: number; - // Warning: (ae-forgotten-export) The symbol "NVM500Details" needs to be exported by the entry point index.d.ts - // // (undocumented) - library: NVM500Details["library"]; + library: NVM500Impl["library"]; // (undocumented) manufacturerID: number; // (undocumented) @@ -185,12 +506,105 @@ export interface NVM500Meta { // Warning: (ae-missing-release-tag) "nvm500ToJSON" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function nvm500ToJSON(buffer: Buffer): Required; +export function nvm500ToJSON(buffer: Buffer): Promise>; + +// Warning: (ae-missing-release-tag) "NVMAccess" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum NVMAccess { + // (undocumented) + None = 0, + // (undocumented) + Read = 1, + // (undocumented) + ReadWrite = 3, + // (undocumented) + Write = 2 +} + +// Warning: (ae-missing-release-tag) "NVMAdapter" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface NVMAdapter { + commit(): Promise; + delete(property: NVMProperty): Promise; + get(property: T, required?: R): Promise : (NVMPropertyToDataType | undefined)>; + hasPendingChanges(): boolean; + set(property: T, value: NVMPropertyToDataType): Promise; +} + +// Warning: (ae-missing-release-tag) "NVMFile" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class NVMFile { + // Warning: (ae-forgotten-export) The symbol "NVMFileOptions" needs to be exported by the entry point index.d.ts + constructor(options: NVMFileOptions); + // (undocumented) + fileId: number; + // (undocumented) + fileVersion: string; + static from(fileId: number, data: Buffer, fileVersion: string): NVMFile; + // (undocumented) + protected payload: Buffer; + serialize(): NVM3Object & { + data: Buffer; + }; + // (undocumented) + toJSON(): Record; +} + +// Warning: (ae-missing-release-tag) "NVMFileIO" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export class NVMFileIO implements NVMIO { + constructor(path: string); + // (undocumented) + get accessMode(): NVMAccess; + // (undocumented) + close(): Promise; + // (undocumented) + determineChunkSize(): Promise; + // (undocumented) + open(access: NVMAccess): Promise; + // (undocumented) + read(offset: number, length: number): Promise<{ + buffer: Buffer; + endOfFile: boolean; + }>; + // (undocumented) + get size(): number; + // (undocumented) + write(offset: number, data: Buffer): Promise<{ + bytesWritten: number; + endOfFile: boolean; + }>; +} + +// Warning: (ae-missing-release-tag) "NVMIO" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface NVMIO { + get accessMode(): NVMAccess; + close(): Promise; + determineChunkSize(): Promise; + open(access: NVMAccess.Read | NVMAccess.Write): Promise; + read(offset: number, length: number): Promise<{ + buffer: Buffer; + endOfFile: boolean; + }>; + get size(): number; + write(offset: number, data: Buffer): Promise<{ + bytesWritten: number; + endOfFile: boolean; + }>; +} // Warning: (ae-missing-release-tag) "NVMJSON" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export interface NVMJSON { + // (undocumented) + applicationFileFormat?: number; // (undocumented) controller: NVMJSONController; // (undocumented) @@ -200,7 +614,7 @@ export interface NVMJSON { // (undocumented) lrNodes?: Record; // (undocumented) - meta?: NVMMeta; + meta?: NVM3Meta; // (undocumented) nodes: Record; } @@ -328,50 +742,21 @@ export interface NVMJSONVirtualNode { isVirtual: true; } -// Warning: (ae-missing-release-tag) "NVMMeta" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// Warning: (ae-missing-release-tag) "NVMProperty" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface NVMMeta { - // (undocumented) - deviceFamily: number; - // (undocumented) - memoryMapped: boolean; - // (undocumented) - pageSize: number; - // (undocumented) - sharedFileSystem: boolean; - // (undocumented) - writeSize: PageWriteSize; -} - -// Warning: (ae-missing-release-tag) "NVM3Object" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface NVMObject { - // (undocumented) - data?: Buffer; - // (undocumented) - fragmentType: FragmentType; - // (undocumented) - key: number; - // (undocumented) - type: ObjectType; -} +export type NVMProperty = ControllerNVMProperty | NodeNVMProperty | LRNodeNVMProperty; -// Warning: (ae-missing-release-tag) "NVM3Page" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// Warning: (ae-missing-release-tag) "NVMPropertyToDataType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface NVMPage { - // (undocumented) - header: PageHeader; - // (undocumented) - objects: NVMObject[]; -} +export type NVMPropertyToDataType

= P extends ControllerNVMProperty ? ControllerNVMPropertyToDataType

: P extends NodeNVMProperty ? NodeNVMPropertyToDataType

: P extends LRNodeNVMProperty ? LRNodeNVMPropertyToDataType

: never; +// Warning: (ae-forgotten-export) The symbol "NVMJSONWithMeta" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "nvmToJSON" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function nvmToJSON(buffer: Buffer, debugLogs?: boolean): Required; +export function nvmToJSON(buffer: Buffer, debugLogs?: boolean): Promise; // Warning: (ae-missing-release-tag) "ObjectType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -389,30 +774,6 @@ export enum ObjectType { Deleted = 3 } -// Warning: (ae-missing-release-tag) "NVM3PageHeader" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface PageHeader { - // (undocumented) - deviceFamily: number; - // (undocumented) - encrypted: boolean; - // (undocumented) - eraseCount: number; - // (undocumented) - memoryMapped: boolean; - // (undocumented) - offset: number; - // (undocumented) - pageSize: number; - // (undocumented) - status: PageStatus; - // (undocumented) - version: number; - // (undocumented) - writeSize: PageWriteSize; -} - // Warning: (ae-missing-release-tag) "PageStatus" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -437,6 +798,15 @@ export enum PageWriteSize { WRITE_SIZE_32 = 0 } +// Warnings were encountered during analysis: +// +// src/lib/NVM500.ts:51:2 - (ae-forgotten-export) The symbol "ResolvedNVMLayout" needs to be exported by the entry point index.d.ts +// src/lib/NVM500.ts:53:2 - (ae-forgotten-export) The symbol "NVM500Impl" needs to be exported by the entry point index.d.ts +// src/lib/NVM500.ts:54:2 - (ae-forgotten-export) The symbol "NVMDescriptor" needs to be exported by the entry point index.d.ts +// src/lib/common/definitions.ts:208:2 - (ae-forgotten-export) The symbol "ControllerNVMPropertyTypes" needs to be exported by the entry point index.d.ts +// src/lib/common/definitions.ts:217:2 - (ae-forgotten-export) The symbol "NodeNVMPropertyTypes" needs to be exported by the entry point index.d.ts +// src/lib/common/definitions.ts:228:2 - (ae-forgotten-export) The symbol "LRNodeNVMPropertyTypes" needs to be exported by the entry point index.d.ts + // (No @packageDocumentation comment for this package) ``` diff --git a/packages/nvmedit/package.json b/packages/nvmedit/package.json index 508962cb56fd..9622a3c0faaa 100644 --- a/packages/nvmedit/package.json +++ b/packages/nvmedit/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/nvmedit", - "version": "13.3.0", + "version": "13.6.0", "description": "zwave-js: library to edit NVM backups", "keywords": [], "publishConfig": { @@ -50,28 +50,28 @@ "alcalzone-shared": "^4.0.8", "fs-extra": "^11.2.0", "reflect-metadata": "^0.2.2", - "semver": "^7.6.2", + "semver": "^7.6.3", "yargs": "^17.7.2" }, "scripts": { "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", + "@microsoft/api-extractor": "^7.47.9", "@types/fs-extra": "^11.0.4", - "@types/node": "^18.19.42", + "@types/node": "^18.19.55", "@types/semver": "^7.5.8", - "@types/yargs": "^17.0.32", + "@types/yargs": "^17.0.33", "ava": "^6.1.3", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", - "typescript": "5.5.3" + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", + "typescript": "5.6.2" } } diff --git a/packages/nvmedit/src/cli.ts b/packages/nvmedit/src/cli.ts index d83631604f0e..1993368df88c 100644 --- a/packages/nvmedit/src/cli.ts +++ b/packages/nvmedit/src/cli.ts @@ -47,11 +47,11 @@ void yargs const buffer = await fs.readFile(argv.in); let json: any; try { - json = nvmToJSON(buffer, argv.verbose); + json = await nvmToJSON(buffer, argv.verbose); } catch (e) { try { - json = nvm500ToJSON(buffer); - } catch (ee) { + json = await nvm500ToJSON(buffer); + } catch { console.error(e); process.exit(1); } @@ -118,8 +118,8 @@ Create a backup of the target stick, use the nvm2json command to convert it to J } const nvm = versionIs500 - ? jsonToNVM500(json, protocolVersion) - : jsonToNVM(json, protocolVersion); + ? await jsonToNVM500(json, protocolVersion) + : await jsonToNVM(json, protocolVersion); await fs.writeFile(argv.out, nvm); console.error(`NVM (binary) written to ${argv.out}`); @@ -217,7 +217,7 @@ Create a backup of the target stick, use the nvm2json command to convert it to J async (argv) => { const source = await fs.readFile(argv.source); const target = await fs.readFile(argv.target); - const output = migrateNVM(source, target); + const output = await migrateNVM(source, target); await fs.writeFile(argv.out, output); console.error(`Converted NVM written to ${argv.out}`); diff --git a/packages/nvmedit/src/convert.test.ts b/packages/nvmedit/src/convert.test.ts index e36ab7fba065..ad3dfd6b8e93 100644 --- a/packages/nvmedit/src/convert.test.ts +++ b/packages/nvmedit/src/convert.test.ts @@ -22,7 +22,7 @@ import type { NVM500JSON } from "./nvm500/NVMParser"; for (const file of files) { test(`${suite} -> ${file}`, async (t) => { const data = await fs.readFile(path.join(fixturesDir, file)); - const json = nvmToJSON(data); + const json = await nvmToJSON(data); t.snapshot(json); }); } @@ -36,14 +36,14 @@ import type { NVM500JSON } from "./nvm500/NVMParser"; for (const file of files) { test(`${suite} -> ${file}`, async (t) => { - const jsonInput: Required = await fs.readJson( + const jsonInput: NVMJSON = await fs.readJson( path.join(fixturesDir, file), ); - const nvm = jsonToNVM( + const nvm = await jsonToNVM( jsonInput, jsonInput.controller.applicationVersion, ); - const jsonOutput = nvmToJSON(nvm); + const jsonOutput = await nvmToJSON(nvm); // @ts-expect-error if (!("meta" in jsonInput)) delete jsonOutput.meta; @@ -66,8 +66,8 @@ import type { NVM500JSON } from "./nvm500/NVMParser"; const nvmIn = await fs.readFile(path.join(fixturesDir, file)); const version = /_(\d+\.\d+\.\d+)[_.]/.exec(file)![1]; - const json = nvmToJSON(nvmIn); - const nvmOut = jsonToNVM(json, version); + const json = await nvmToJSON(nvmIn); + const nvmOut = await jsonToNVM(json, version); t.deepEqual(nvmOut, nvmIn); }); @@ -83,7 +83,7 @@ import type { NVM500JSON } from "./nvm500/NVMParser"; for (const file of files) { test(`${suite} -> ${file}`, async (t) => { const data = await fs.readFile(path.join(fixturesDir, file)); - const json = nvm500ToJSON(data); + const json = await nvm500ToJSON(data); t.snapshot(json); }); } @@ -119,8 +119,11 @@ import type { NVM500JSON } from "./nvm500/NVMParser"; const nvmIn = await fs.readFile(path.join(fixturesDir, file)); // const lib = /_(static|bridge)_/.exec(file)![1]; - const json = nvm500ToJSON(nvmIn); - const nvmOut = jsonToNVM500(json, json.controller.protocolVersion); + const json = await nvm500ToJSON(nvmIn); + const nvmOut = await jsonToNVM500( + json, + json.controller.protocolVersion, + ); t.deepEqual(nvmOut, nvmIn); }); @@ -190,7 +193,7 @@ test("700 to 700 migration shortcut", async (t) => { const nvmTarget = await fs.readFile( path.join(fixturesDir, "ctrlr_backup_700_7.16_1.bin"), ); - const converted = migrateNVM(nvmSource, nvmTarget); + const converted = await migrateNVM(nvmSource, nvmTarget); t.deepEqual(converted, nvmSource); }); diff --git a/packages/nvmedit/src/convert.test.ts.md b/packages/nvmedit/src/convert.test.ts.md index a4c27259f56a..826824858ac9 100644 --- a/packages/nvmedit/src/convert.test.ts.md +++ b/packages/nvmedit/src/convert.test.ts.md @@ -6984,6 +6984,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { + applicationFileFormat: 4, controller: { applicationData: 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', applicationName: null, diff --git a/packages/nvmedit/src/convert.test.ts.snap b/packages/nvmedit/src/convert.test.ts.snap index 4a6b6a846e10..ed38022ea374 100644 Binary files a/packages/nvmedit/src/convert.test.ts.snap and b/packages/nvmedit/src/convert.test.ts.snap differ diff --git a/packages/nvmedit/src/convert.ts b/packages/nvmedit/src/convert.ts index 4b0167d66079..d051ae6183a5 100644 --- a/packages/nvmedit/src/convert.ts +++ b/packages/nvmedit/src/convert.ts @@ -1,6 +1,7 @@ import { type CommandClasses, ControllerCapabilityFlags, + MAX_NODES, NodeIDType, type NodeProtocolInfo, NodeType, @@ -14,10 +15,25 @@ import { cloneDeep, num2hex, pick } from "@zwave-js/shared/safe"; import { isObject } from "alcalzone-shared/typeguards"; import semver from "semver"; import { MAX_PROTOCOL_FILE_FORMAT, SUC_MAX_UPDATES } from "./consts"; +import { NVM3, type NVM3Meta } from "./lib/NVM3"; +import { NVM500 } from "./lib/NVM500"; +import { + type Route, + type RouteCache, + getEmptyRoute, +} from "./lib/common/routeCache"; +import { type SUCUpdateEntry } from "./lib/common/sucUpdateEntry"; +import { NVMMemoryIO } from "./lib/io/NVMMemoryIO"; +import { NVM3Adapter } from "./lib/nvm3/adapter"; +import { + ZWAVE_APPLICATION_NVM_SIZE, + ZWAVE_PROTOCOL_NVM_SIZE, + ZWAVE_SHARED_NVM_SIZE, +} from "./lib/nvm3/consts"; import { ApplicationCCsFile, ApplicationCCsFileID, - ApplicationDataFile, + type ApplicationDataFile, ApplicationDataFileID, ApplicationRFConfigFile, ApplicationRFConfigFileID, @@ -31,77 +47,71 @@ import { ControllerInfoFileID, type ControllerInfoFileOptions, type LRNodeInfo, - LRNodeInfoFileV5, + type LRNodeInfoFileV5, NVMFile, type NodeInfo, - NodeInfoFileV0, - NodeInfoFileV1, - ProtocolAppRouteLockNodeMaskFile, + type NodeInfoFileV0, + type NodeInfoFileV1, + type ProtocolAppRouteLockNodeMaskFile, ProtocolAppRouteLockNodeMaskFileID, - ProtocolLRNodeListFile, + type ProtocolLRNodeListFile, ProtocolLRNodeListFileID, - ProtocolNodeListFile, + type ProtocolNodeListFile, ProtocolNodeListFileID, - ProtocolPendingDiscoveryNodeMaskFile, + type ProtocolPendingDiscoveryNodeMaskFile, ProtocolPendingDiscoveryNodeMaskFileID, - ProtocolPreferredRepeatersFile, + type ProtocolPreferredRepeatersFile, ProtocolPreferredRepeatersFileID, ProtocolRouteCacheExistsNodeMaskFile, ProtocolRouteCacheExistsNodeMaskFileID, - ProtocolRouteSlaveSUCNodeMaskFile, + type ProtocolRouteSlaveSUCNodeMaskFile, ProtocolRouteSlaveSUCNodeMaskFileID, - ProtocolSUCPendingUpdateNodeMaskFile, + type ProtocolSUCPendingUpdateNodeMaskFile, ProtocolSUCPendingUpdateNodeMaskFileID, ProtocolVersionFile, ProtocolVersionFileID, - ProtocolVirtualNodeMaskFile, + type ProtocolVirtualNodeMaskFile, ProtocolVirtualNodeMaskFileID, - type Route, - type RouteCache, - RouteCacheFileV0, - RouteCacheFileV1, + type RouteCacheFileV0, + type RouteCacheFileV1, SUCUpdateEntriesFileIDV0, - SUCUpdateEntriesFileV0, - SUCUpdateEntriesFileV5, - type SUCUpdateEntry, + type SUCUpdateEntriesFileV0, + type SUCUpdateEntriesFileV5, SUC_UPDATES_PER_FILE_V5, - getEmptyRoute, nodeIdToLRNodeInfoFileIDV5, nodeIdToNodeInfoFileIDV0, nodeIdToNodeInfoFileIDV1, nodeIdToRouteCacheFileIDV0, nodeIdToRouteCacheFileIDV1, sucUpdateIndexToSUCUpdateEntriesFileIDV5, -} from "./files"; +} from "./lib/nvm3/files"; import { - ApplicationNameFile, + type ApplicationNameFile, ApplicationNameFileID, -} from "./files/ApplicationNameFile"; -import { - type NVM3Objects, - type NVM3Pages, - type NVMMeta, - encodeNVM, - getNVMMeta, - parseNVM, -} from "./nvm3/nvm"; -import type { NVM3Object } from "./nvm3/object"; -import { mapToObject } from "./nvm3/utils"; +} from "./lib/nvm3/files/ApplicationNameFile"; +import type { NVM3Object } from "./lib/nvm3/object"; +import { dumpNVM, mapToObject } from "./lib/nvm3/utils"; +import { NVM500Adapter } from "./lib/nvm500/adapter"; +import { nvm500Impls } from "./lib/nvm500/impls"; +import { resolveLayout } from "./lib/nvm500/shared"; import { type NVM500JSON, - NVMSerializer, - createParser as createNVM500Parser, - nmvDetails500, + type NVM500JSONController, + type NVM500JSONNode, + type NVM500Meta, } from "./nvm500/NVMParser"; export interface NVMJSON { - format: number; - meta?: NVMMeta; + format: number; // protocol file format + applicationFileFormat?: number; + meta?: NVM3Meta; controller: NVMJSONController; nodes: Record; lrNodes?: Record; } +export type NVMJSONWithMeta = NVMJSON & { meta: NVM3Meta }; + export interface NVMJSONController { protocolVersion: string; applicationVersion: string; @@ -188,7 +198,7 @@ type ParsedNVM = } | { type: 700; - json: Required; + json: NVMJSONWithMeta; } | { type: "unknown"; @@ -285,7 +295,7 @@ export function nvmObjectsToJSON( fileVersion: string, ): T => { const obj = getObjectOrThrow(id); - return NVMFile.from(obj, fileVersion) as T; + return NVMFile.from(obj.key, obj.data!, fileVersion) as T; }; const getFile = ( @@ -293,8 +303,8 @@ export function nvmObjectsToJSON( fileVersion: string, ): T | undefined => { const obj = getObject(id); - if (!obj) return undefined; - return NVMFile.from(obj, fileVersion) as T; + if (!obj || !obj.data) return undefined; + return NVMFile.from(obj.key, obj.data, fileVersion) as T; }; // === Protocol NVM files === @@ -571,7 +581,8 @@ export function nvmObjectsToJSON( } : {}), sucUpdateEntries, - applicationData: applicationDataFile?.data.toString("hex") ?? null, + applicationData: applicationDataFile?.applicationData.toString("hex") + ?? null, applicationName: applicationNameFile?.name ?? null, }; @@ -685,293 +696,544 @@ function nvmJSONControllerToFileOptions( return ret; } -function serializeCommonApplicationObjects(nvm: NVMJSON): NVM3Object[] { - const ret: NVM3Object[] = []; - const applTypeFile = new ApplicationTypeFile({ - ...pick(nvm.controller, [ - "isListening", - "optionalFunctionality", - "genericDeviceClass", - "specificDeviceClass", - ]), - fileVersion: nvm.controller.applicationVersion, - }); - ret.push(applTypeFile.serialize()); +/** Reads an NVM buffer of a 700+ series stick and returns its JSON representation */ +export async function nvmToJSON( + buffer: Buffer, + debugLogs: boolean = false, +): Promise { + const io = new NVMMemoryIO(buffer); + const nvm3 = new NVM3(io); + const info = await nvm3.init(); - const applCCsFile = new ApplicationCCsFile({ - ...pick(nvm.controller.commandClasses, [ - "includedInsecurely", - "includedSecurelyInsecureCCs", - "includedSecurelySecureCCs", - ]), - fileVersion: nvm.controller.applicationVersion, - }); - ret.push(applCCsFile.serialize()); - - if (nvm.controller.rfConfig) { - const applRFConfigFile = new ApplicationRFConfigFile({ - ...pick(nvm.controller.rfConfig, [ - "rfRegion", - "txPower", - "measured0dBm", - ]), - enablePTI: nvm.controller.rfConfig.enablePTI ?? undefined, - maxTXPower: nvm.controller.rfConfig.maxTXPower ?? undefined, - nodeIdType: nvm.controller.rfConfig.nodeIdType ?? undefined, - fileVersion: nvm.controller.applicationVersion, - }); - ret.push(applRFConfigFile.serialize()); - } + const adapter = new NVM3Adapter(nvm3); - if (nvm.controller.applicationData) { - // TODO: ensure this is 512 bytes long - const applDataFile = new ApplicationDataFile({ - data: Buffer.from(nvm.controller.applicationData, "hex"), - fileVersion: nvm.controller.applicationVersion, - }); - ret.push(applDataFile.serialize()); + if (debugLogs) { + // Dump all pages, all raw objects in each page, and each object in its final state + await dumpNVM(nvm3); } - if (nvm.controller.applicationName && nvm.meta?.sharedFileSystem) { - // The application name only seems to be used with the shared file system - const applNameFile = new ApplicationNameFile({ - name: nvm.controller.applicationName, - fileVersion: nvm.controller.applicationVersion, - }); - ret.push(applNameFile.serialize()); - } - - return ret; -} + const firstPageHeader = info.isSharedFileSystem + ? info.sections.all.pages[0] + : info.sections.protocol.pages[0]; + + const meta: NVM3Meta = { + sharedFileSystem: info.isSharedFileSystem, + ...pick(firstPageHeader, [ + "pageSize", + "writeSize", + "memoryMapped", + "deviceFamily", + ]), + }; -function serializeCommonProtocolObjects(nvm: NVMJSON): NVM3Object[] { - const ret: NVM3Object[] = []; + const nodes = new Map(); + const getNode = (id: number): NVMJSONNode => { + if (!nodes.has(id)) nodes.set(id, createEmptyPhysicalNode()); + return nodes.get(id)!; + }; - const appRouteLock = new Set(); - const routeSlaveSUC = new Set(); - const sucPendingUpdate = new Set(); - const isVirtual = new Set(); - const pendingDiscovery = new Set(); + const lrNodes = new Map(); + const getLRNode = (id: number): NVMJSONLRNode => { + if (!lrNodes.has(id)) lrNodes.set(id, createEmptyLRNode()); + return lrNodes.get(id)!; + }; - for (const [id, node] of Object.entries(nvm.nodes)) { - const nodeId = parseInt(id); - if (!nodeHasInfo(node)) { - isVirtual.add(nodeId); - continue; - } else { - if (node.isVirtual) isVirtual.add(nodeId); - if (node.appRouteLock) appRouteLock.add(nodeId); - if (node.routeSlaveSUC) routeSlaveSUC.add(nodeId); - if (node.sucPendingUpdate) sucPendingUpdate.add(nodeId); - if (node.pendingDiscovery) pendingDiscovery.add(nodeId); - } - } + const protocolFileFormat = await adapter.get({ + domain: "controller", + type: "protocolFileFormat", + }, true); - ret.push( - new ControllerInfoFile( - nvmJSONControllerToFileOptions(nvm.controller), - ).serialize(), - ); - - ret.push( - new ProtocolAppRouteLockNodeMaskFile({ - nodeIds: [...appRouteLock], - fileVersion: nvm.controller.protocolVersion, - }).serialize(), - ); - ret.push( - new ProtocolRouteSlaveSUCNodeMaskFile({ - nodeIds: [...routeSlaveSUC], - fileVersion: nvm.controller.protocolVersion, - }).serialize(), - ); - ret.push( - new ProtocolSUCPendingUpdateNodeMaskFile({ - nodeIds: [...sucPendingUpdate], - fileVersion: nvm.controller.protocolVersion, - }).serialize(), - ); - ret.push( - new ProtocolVirtualNodeMaskFile({ - nodeIds: [...isVirtual], - fileVersion: nvm.controller.protocolVersion, - }).serialize(), - ); - ret.push( - new ProtocolPendingDiscoveryNodeMaskFile({ - nodeIds: [...pendingDiscovery], - fileVersion: nvm.controller.protocolVersion, - }).serialize(), - ); - - // TODO: format >= 2: { .key = FILE_ID_LRANGE_NODE_EXIST, .size = FILE_SIZE_LRANGE_NODE_EXIST, .name = "LRANGE_NODE_EXIST"}, - - if (nvm.controller.preferredRepeaters?.length) { - ret.push( - new ProtocolPreferredRepeatersFile({ - nodeIds: nvm.controller.preferredRepeaters, - fileVersion: nvm.controller.protocolVersion, - }).serialize(), + // Bail early if the NVM uses a protocol file format that's newer than we support + if (protocolFileFormat > MAX_PROTOCOL_FILE_FORMAT) { + throw new ZWaveError( + `Unsupported protocol file format: ${protocolFileFormat}`, + ZWaveErrorCodes.NVM_NotSupported, + { protocolFileFormat }, ); } - if (nvm.format < 5) { - ret.push( - new SUCUpdateEntriesFileV0({ - updateEntries: nvm.controller.sucUpdateEntries, - fileVersion: nvm.controller.protocolVersion, - }).serialize(), - ); - } else { - // V5 has split the SUC update entries into multiple files - for ( - let index = 0; - index < SUC_MAX_UPDATES; - index += SUC_UPDATES_PER_FILE_V5 - ) { - const slice = nvm.controller.sucUpdateEntries.slice( - index, - index + SUC_UPDATES_PER_FILE_V5, - ); - if (slice.length === 0) break; - const file = new SUCUpdateEntriesFileV5({ - updateEntries: slice, - fileVersion: nvm.controller.protocolVersion, - }); - file.fileId = sucUpdateIndexToSUCUpdateEntriesFileIDV5(index); - ret.push(file.serialize()); - } - } + const protocolVersion = await adapter.get({ + domain: "controller", + type: "protocolVersion", + }, true); - return ret; -} + // Read all flags for all nodes + const appRouteLock = new Set( + await adapter.get({ + domain: "controller", + type: "appRouteLock", + }, true), + ); + const routeSlaveSUC = new Set( + await adapter.get({ + domain: "controller", + type: "routeSlaveSUC", + }, true), + ); + const sucPendingUpdate = new Set( + await adapter.get({ + domain: "controller", + type: "sucPendingUpdate", + }, true), + ); + const virtualNodeIds = new Set( + await adapter.get({ + domain: "controller", + type: "virtualNodeIds", + }, true), + ); + const pendingDiscovery = new Set( + await adapter.get({ + domain: "controller", + type: "pendingDiscovery", + }, true), + ); -export function jsonToNVMObjects_v7_0_0( - json: NVMJSON, - targetSDKVersion: semver.SemVer, -): NVM3Objects { - const target = cloneDeep(json); + // Figure out which nodes exist + const nodeIds = await adapter.get({ + domain: "controller", + type: "nodeIds", + }, true); - target.controller.protocolVersion = "7.0.0"; - target.format = 0; - target.controller.applicationVersion = targetSDKVersion.format(); + // And create each node entry, including virtual ones + for (const id of nodeIds) { + const node = getNode(id) as NVMJSONNodeWithInfo; - const applicationObjects = new Map(); - const protocolObjects = new Map(); + // Find node info + const nodeInfo = await adapter.get({ + domain: "node", + nodeId: id, + type: "info", + }, true); - const addApplicationObjects = (...objects: NVM3Object[]) => { - for (const o of objects) { - applicationObjects.set(o.key, o); - } - }; - const addProtocolObjects = (...objects: NVM3Object[]) => { - for (const o of objects) { - protocolObjects.set(o.key, o); + Object.assign(node, nodeInfo); + + // Evaluate flags + node.isVirtual = virtualNodeIds.has(id); + node.appRouteLock = appRouteLock.has(id); + node.routeSlaveSUC = routeSlaveSUC.has(id); + node.sucPendingUpdate = sucPendingUpdate.has(id); + node.pendingDiscovery = pendingDiscovery.has(id); + + const routes = await adapter.get({ + domain: "node", + nodeId: id, + type: "routes", + }); + if (routes) { + node.lwr = routes.lwr; + node.nlwr = routes.nlwr; } - }; - // Application files - const applVersionFile = new ApplicationVersionFile({ - // The SDK compares 4-byte values where the format is set to 0 to determine whether a migration is needed - format: 0, - major: targetSDKVersion.major, - minor: targetSDKVersion.minor, - patch: targetSDKVersion.patch, - fileVersion: target.controller.applicationVersion, // does not matter for this file + // @ts-expect-error Some fields include a nodeId, but we don't need it + delete node.nodeId; + } + + // If they exist, read info about LR nodes + const lrNodeIds = await adapter.get({ + domain: "controller", + type: "lrNodeIds", }); - addApplicationObjects(applVersionFile.serialize()); + if (lrNodeIds) { + for (const id of lrNodeIds) { + const node = getLRNode(id); - addApplicationObjects(...serializeCommonApplicationObjects(target)); + // Find node info + const nodeInfo = await adapter.get({ + domain: "lrnode", + nodeId: id, + type: "info", + }, true); - // Protocol files + Object.assign(node, nodeInfo); + } + } - const protocolVersionFile = new ProtocolVersionFile({ - format: target.format, - major: 7, - minor: 0, - patch: 0, - fileVersion: target.controller.protocolVersion, // does not matter for this file + // Read info about the controller + const sucUpdateEntries = await adapter.get({ + domain: "controller", + type: "sucUpdateEntries", + }, true); + + const applicationVersion = await adapter.get({ + domain: "controller", + type: "applicationVersion", + }, true); + + const applicationFileFormat = await adapter.get({ + domain: "controller", + type: "applicationFileFormat", + }, true); + + const applicationData = await adapter.get({ + domain: "controller", + type: "applicationData", }); - addProtocolObjects(protocolVersionFile.serialize()); - const nodeInfoFiles = new Map(); - const routeCacheFiles = new Map(); - const nodeInfoExists = new Set(); - const routeCacheExists = new Set(); + const applicationName = await adapter.get({ + domain: "controller", + type: "applicationName", + }); - for (const [id, node] of Object.entries(target.nodes)) { - const nodeId = parseInt(id); - if (!nodeHasInfo(node)) continue; - - nodeInfoExists.add(nodeId); - - // Create/update node info file - const nodeInfoFileIndex = nodeIdToNodeInfoFileIDV0(nodeId); - nodeInfoFiles.set( - nodeInfoFileIndex, - new NodeInfoFileV0({ - nodeInfo: nvmJSONNodeToNodeInfo(nodeId, node), - fileVersion: target.controller.protocolVersion, - }), - ); + const preferredRepeaters = await adapter.get({ + domain: "controller", + type: "preferredRepeaters", + }); - // Create/update route cache file (if there is a route) - if (node.lwr || node.nlwr) { - routeCacheExists.add(nodeId); - - const routeCacheFileIndex = nodeIdToRouteCacheFileIDV0(nodeId); - routeCacheFiles.set( - routeCacheFileIndex, - new RouteCacheFileV0({ - routeCache: { - nodeId, - lwr: node.lwr ?? getEmptyRoute(), - nlwr: node.nlwr ?? getEmptyRoute(), - }, - fileVersion: target.controller.protocolVersion, - }), - ); - } + // The following are a bit awkward to read one by one, so we just take the files + const controllerInfoFile = await adapter.getFile( + ControllerInfoFileID, + true, + ); + const rfConfigFile = await adapter.getFile( + ApplicationRFConfigFileID, + ); + const applicationCCsFile = await adapter.getFile( + ApplicationCCsFileID, + true, + ); + const applicationTypeFile = await adapter.getFile( + ApplicationTypeFileID, + true, + ); + + const controller: NVMJSONController = { + protocolVersion, + applicationVersion, + homeId: `0x${controllerInfoFile.homeId.toString("hex")}`, + ...pick(controllerInfoFile, [ + "nodeId", + "lastNodeId", + "staticControllerNodeId", + "sucLastIndex", + "controllerConfiguration", + "sucAwarenessPushNeeded", + "maxNodeId", + "reservedId", + "systemState", + "lastNodeIdLR", + "maxNodeIdLR", + "reservedIdLR", + "primaryLongRangeChannelId", + "dcdcConfig", + ]), + ...pick(applicationTypeFile, [ + "isListening", + "optionalFunctionality", + "genericDeviceClass", + "specificDeviceClass", + ]), + commandClasses: pick(applicationCCsFile, [ + "includedInsecurely", + "includedSecurelyInsecureCCs", + "includedSecurelySecureCCs", + ]), + preferredRepeaters, + ...(rfConfigFile + ? { + rfConfig: { + rfRegion: rfConfigFile.rfRegion, + txPower: rfConfigFile.txPower, + measured0dBm: rfConfigFile.measured0dBm, + enablePTI: rfConfigFile.enablePTI ?? null, + maxTXPower: rfConfigFile.maxTXPower ?? null, + nodeIdType: rfConfigFile.nodeIdType ?? null, + }, + } + : {}), + sucUpdateEntries, + applicationData: applicationData?.toString("hex") ?? null, + applicationName: applicationName ?? null, + }; + + // Make sure all props are defined + const optionalControllerProps = [ + "sucAwarenessPushNeeded", + "lastNodeIdLR", + "maxNodeIdLR", + "reservedIdLR", + "primaryLongRangeChannelId", + "dcdcConfig", + "rfConfig", + "preferredRepeaters", + "applicationData", + ] as const; + for (const prop of optionalControllerProps) { + if (controller[prop] === undefined) controller[prop] = null; + } + + const ret: NVMJSONWithMeta = { + format: protocolFileFormat, + controller, + nodes: mapToObject(nodes), + meta, + }; + if (applicationFileFormat !== 0) { + ret.applicationFileFormat = applicationFileFormat; + } + if (lrNodes.size > 0) { + ret.lrNodes = mapToObject(lrNodes); } + return ret; +} - addProtocolObjects(...serializeCommonProtocolObjects(target)); +/** Reads an NVM buffer of a 500-series stick and returns its JSON representation */ +export async function nvm500ToJSON( + buffer: Buffer, +): Promise> { + const io = new NVMMemoryIO(buffer); + const nvm = new NVM500(io); + + const info = await nvm.init(); + const meta: NVM500Meta = { + library: info.library, + ...pick(info.nvmDescriptor, [ + "manufacturerID", + "firmwareID", + "productType", + "productID", + ]), + }; - addProtocolObjects( - new ProtocolNodeListFile({ - nodeIds: [...nodeInfoExists], - fileVersion: target.controller.protocolVersion, - }).serialize(), + const adapter = new NVM500Adapter(nvm); + + // Read all flags for all nodes + const appRouteLock = new Set( + await adapter.get({ + domain: "controller", + type: "appRouteLock", + }, true), ); - addProtocolObjects( - new ProtocolRouteCacheExistsNodeMaskFile({ - nodeIds: [...routeCacheExists], - fileVersion: target.controller.protocolVersion, - }).serialize(), + const routeSlaveSUC = new Set( + await adapter.get({ + domain: "controller", + type: "routeSlaveSUC", + }, true), + ); + const sucPendingUpdate = new Set( + await adapter.get({ + domain: "controller", + type: "sucPendingUpdate", + }, true), + ); + const virtualNodeIds = new Set( + await adapter.get({ + domain: "controller", + type: "virtualNodeIds", + }) ?? [], + ); + const pendingDiscovery = new Set( + await adapter.get({ + domain: "controller", + type: "pendingDiscovery", + }, true), ); - if (nodeInfoFiles.size > 0) { - addProtocolObjects( - ...[...nodeInfoFiles.values()].map((f) => f.serialize()), - ); + // Figure out which nodes exist along with their info + const nodes: Record = {}; + for (let nodeId = 1; nodeId <= MAX_NODES; nodeId++) { + const nodeInfo = await adapter.get({ + domain: "node", + nodeId, + type: "info", + }); + const isVirtual = virtualNodeIds.has(nodeId); + if (!nodeInfo) { + if (isVirtual) { + nodes[nodeId] = { isVirtual: true }; + } + continue; + } + + const routes = await adapter.get({ + domain: "node", + nodeId, + type: "routes", + }); + + // @ts-expect-error Some fields include a nodeId, but we don't need it + delete nodeInfo.nodeId; + + nodes[nodeId] = { + ...nodeInfo, + specificDeviceClass: nodeInfo.specificDeviceClass ?? null, + isVirtual, + + appRouteLock: appRouteLock.has(nodeId), + routeSlaveSUC: routeSlaveSUC.has(nodeId), + sucPendingUpdate: sucPendingUpdate.has(nodeId), + pendingDiscovery: pendingDiscovery.has(nodeId), + + lwr: routes?.lwr ?? null, + nlwr: routes?.nlwr ?? null, + }; } - if (routeCacheFiles.size > 0) { - addProtocolObjects( - ...[...routeCacheFiles.values()].map((f) => f.serialize()), - ); + + // Read info about the controller + const ownNodeId = await adapter.get({ + domain: "controller", + type: "nodeId", + }, true); + + const ownHomeId = await adapter.get({ + domain: "controller", + type: "homeId", + }, true); + + let learnedHomeId = await adapter.get({ + domain: "controller", + type: "learnedHomeId", + }); + if (learnedHomeId?.equals(Buffer.alloc(4, 0))) { + learnedHomeId = undefined; } + const lastNodeId = await adapter.get({ + domain: "controller", + type: "lastNodeId", + }, true); + + const maxNodeId = await adapter.get({ + domain: "controller", + type: "maxNodeId", + }, true); + + const reservedId = await adapter.get({ + domain: "controller", + type: "reservedId", + }, true); + + const staticControllerNodeId = await adapter.get({ + domain: "controller", + type: "staticControllerNodeId", + }, true); + + const sucLastIndex = await adapter.get({ + domain: "controller", + type: "sucLastIndex", + }, true); + + const controllerConfiguration = await adapter.get({ + domain: "controller", + type: "controllerConfiguration", + }, true); + + const commandClasses = await adapter.get({ + domain: "controller", + type: "commandClasses", + }, true); + + const sucUpdateEntries = await adapter.get({ + domain: "controller", + type: "sucUpdateEntries", + }, true); + + const applicationData = await adapter.get({ + domain: "controller", + type: "applicationData", + }); + + const preferredRepeaters = await adapter.get({ + domain: "controller", + type: "preferredRepeaters", + }, true); + + const systemState = await adapter.get({ + domain: "controller", + type: "systemState", + }, true); + + const watchdogStarted = await adapter.get({ + domain: "controller", + type: "watchdogStarted", + }, true); + + const powerLevelNormal = await adapter.get({ + domain: "controller", + type: "powerLevelNormal", + }, true); + const powerLevelLow = await adapter.get({ + domain: "controller", + type: "powerLevelLow", + }, true); + const powerMode = await adapter.get({ + domain: "controller", + type: "powerMode", + }, true); + const powerModeExtintEnable = await adapter.get({ + domain: "controller", + type: "powerModeExtintEnable", + }, true); + const powerModeWutTimeout = await adapter.get({ + domain: "controller", + type: "powerModeWutTimeout", + }, true); + + const controller: NVM500JSONController = { + protocolVersion: info.nvmDescriptor.protocolVersion, + applicationVersion: info.nvmDescriptor.firmwareVersion, + ownHomeId: `0x${ownHomeId.toString("hex")}`, + learnedHomeId: learnedHomeId + ? `0x${learnedHomeId.toString("hex")}` + : null, + nodeId: ownNodeId, + lastNodeId, + staticControllerNodeId, + sucLastIndex, + controllerConfiguration, + sucUpdateEntries, + maxNodeId, + reservedId, + systemState, + watchdogStarted, + rfConfig: { + powerLevelNormal, + powerLevelLow, + powerMode, + powerModeExtintEnable, + powerModeWutTimeout, + }, + preferredRepeaters, + commandClasses, + applicationData: applicationData?.toString("hex") ?? null, + }; + return { - applicationObjects, - protocolObjects, + format: 500, + meta, + controller, + nodes, }; } -export function jsonToNVMObjects_v7_11_0( +export async function jsonToNVM( json: NVMJSON, - targetSDKVersion: semver.SemVer, -): NVM3Objects { - const target = cloneDeep(json); + targetSDKVersion: string, +): Promise { + const parsedVersion = semver.parse(targetSDKVersion); + if (!parsedVersion) { + throw new ZWaveError( + `Invalid SDK version: ${targetSDKVersion}`, + ZWaveErrorCodes.Argument_Invalid, + ); + } + + // Erase the NVM + const sharedFileSystem = json.meta?.sharedFileSystem; + const nvmSize = sharedFileSystem + ? ZWAVE_SHARED_NVM_SIZE + : (ZWAVE_APPLICATION_NVM_SIZE + ZWAVE_PROTOCOL_NVM_SIZE); + const ret = Buffer.allocUnsafe(nvmSize); + const io = new NVMMemoryIO(ret); + const nvm3 = new NVM3(io); + await nvm3.erase(json.meta); + + const serializeFile = async (file: NVMFile) => { + const { key, data } = file.serialize(); + await nvm3.set(key, data); + }; + // Figure out which SDK version we are targeting let targetApplicationVersion: semver.SemVer; let targetProtocolVersion: semver.SemVer; let targetProtocolFormat: number; @@ -999,43 +1261,72 @@ export function jsonToNVMObjects_v7_11_0( } else if (semver.gte(targetSDKVersion, "7.12.0")) { targetProtocolVersion = semver.parse("7.12.0")!; targetProtocolFormat = 2; - } else { - // All versions below 7.11.0 are handled in the _v7_0_0 method + } else if (semver.gte(targetSDKVersion, "7.11.0")) { targetProtocolVersion = semver.parse("7.11.0")!; targetProtocolFormat = 1; + } else { + targetProtocolVersion = semver.parse("7.0.0")!; + targetProtocolFormat = 0; } - target.format = targetProtocolFormat; - target.controller.applicationVersion = targetApplicationVersion.format(); + const target = cloneDeep(json); target.controller.protocolVersion = targetProtocolVersion.format(); + target.format = targetProtocolFormat; + target.controller.applicationVersion = parsedVersion.format(); - const applicationObjects = new Map(); - const protocolObjects = new Map(); - - const addApplicationObjects = (...objects: NVM3Object[]) => { - for (const o of objects) { - applicationObjects.set(o.key, o); - } - }; - const addProtocolObjects = (...objects: NVM3Object[]) => { - for (const o of objects) { - protocolObjects.set(o.key, o); - } - }; - - // Application files - const ApplicationVersionConstructor = json.meta?.sharedFileSystem + // Write application and protocol version files, because they are required + // for the NVM3 adapter to work. + const ApplicationVersionConstructor = sharedFileSystem ? ApplicationVersionFile800 : ApplicationVersionFile; const applVersionFile = new ApplicationVersionConstructor({ - // The SDK compares 4-byte values where the format is set to 0 to determine whether a migration is needed format: 0, major: targetApplicationVersion.major, minor: targetApplicationVersion.minor, patch: targetApplicationVersion.patch, - fileVersion: target.controller.applicationVersion, // does not matter for this file + fileVersion: targetProtocolVersion.format(), // does not matter for this file }); - addApplicationObjects(applVersionFile.serialize()); + await serializeFile(applVersionFile); + + const protocolVersionFile = new ProtocolVersionFile({ + format: targetProtocolFormat, + major: targetProtocolVersion.major, + minor: targetProtocolVersion.minor, + patch: targetProtocolVersion.patch, + fileVersion: targetProtocolVersion.format(), // does not matter for this file + }); + await serializeFile(protocolVersionFile); + { + const { key, data } = protocolVersionFile.serialize(); + await nvm3.set(key, data); + } + + // Now use the adapter where possible. Some properties have to be set together though, + // so we set the files directly + const adapter = new NVM3Adapter(nvm3); + + // Start with the application data + + const applTypeFile = new ApplicationTypeFile({ + ...pick(target.controller, [ + "isListening", + "optionalFunctionality", + "genericDeviceClass", + "specificDeviceClass", + ]), + fileVersion: target.controller.applicationVersion, + }); + adapter.setFile(applTypeFile); + + const applCCsFile = new ApplicationCCsFile({ + ...pick(target.controller.commandClasses, [ + "includedInsecurely", + "includedSecurelyInsecureCCs", + "includedSecurelySecureCCs", + ]), + fileVersion: target.controller.applicationVersion, + }); + adapter.setFile(applCCsFile); // When converting it can be that the rfConfig doesn't exist. Make sure // that it is initialized with proper defaults. @@ -1058,93 +1349,104 @@ export function jsonToNVMObjects_v7_11_0( target.controller.rfConfig.nodeIdType ??= NodeIDType.Short; } - addApplicationObjects(...serializeCommonApplicationObjects(target)); + const applRFConfigFile = new ApplicationRFConfigFile({ + ...pick(target.controller.rfConfig, [ + "rfRegion", + "txPower", + "measured0dBm", + ]), + enablePTI: target.controller.rfConfig.enablePTI ?? undefined, + maxTXPower: target.controller.rfConfig.maxTXPower ?? undefined, + nodeIdType: target.controller.rfConfig.nodeIdType ?? undefined, + fileVersion: target.controller.applicationVersion, + }); + adapter.setFile(applRFConfigFile); - // Protocol files + if (target.controller.applicationData) { + await adapter.set( + { domain: "controller", type: "applicationData" }, + Buffer.from(target.controller.applicationData, "hex"), + ); + } - const protocolVersionFile = new ProtocolVersionFile({ - format: targetProtocolFormat, - major: targetProtocolVersion.major, - minor: targetProtocolVersion.minor, - patch: targetProtocolVersion.patch, - fileVersion: target.controller.protocolVersion, // does not matter for this file - }); - addProtocolObjects(protocolVersionFile.serialize()); + // The application name only seems to be used on 800 series with the shared file system + if (target.controller.applicationName && target.meta?.sharedFileSystem) { + await adapter.set( + { domain: "controller", type: "applicationName" }, + target.controller.applicationName, + ); + } + + // Now the protocol data - const nodeInfoFiles = new Map(); - const lrNodeInfoFiles = new Map(); - const routeCacheFiles = new Map(); + // TODO: node IDs and LR node IDs should probably be handled by the NVM adapter when + // setting the node info. But then we need to make sure here that the files are guaranteed to exist const nodeInfoExists = new Set(); const lrNodeInfoExists = new Set(); - const routeCacheExists = new Set(); + const virtualNodeIds = new Set(); + + const appRouteLock = new Set(); + const routeSlaveSUC = new Set(); + const sucPendingUpdate = new Set(); + const pendingDiscovery = new Set(); + + // Ensure that the route cache exists nodemask is written, even when no routes exist + adapter.setFile( + new ProtocolRouteCacheExistsNodeMaskFile({ + nodeIds: [], + fileVersion: target.controller.protocolVersion, + }), + ); for (const [id, node] of Object.entries(target.nodes)) { const nodeId = parseInt(id); - if (!nodeHasInfo(node)) continue; - - nodeInfoExists.add(nodeId); - - // Create/update node info file - const nodeInfoFileIndex = nodeIdToNodeInfoFileIDV1(nodeId); - if (!nodeInfoFiles.has(nodeInfoFileIndex)) { - nodeInfoFiles.set( - nodeInfoFileIndex, - new NodeInfoFileV1({ - nodeInfos: [], - fileVersion: target.controller.protocolVersion, - }), - ); + if (!nodeHasInfo(node)) { + virtualNodeIds.add(nodeId); + continue; + } else { + nodeInfoExists.add(nodeId); + if (node.isVirtual) virtualNodeIds.add(nodeId); + if (node.appRouteLock) appRouteLock.add(nodeId); + if (node.routeSlaveSUC) routeSlaveSUC.add(nodeId); + if (node.sucPendingUpdate) sucPendingUpdate.add(nodeId); + if (node.pendingDiscovery) pendingDiscovery.add(nodeId); } - const nodeInfoFile = nodeInfoFiles.get(nodeInfoFileIndex)!; - nodeInfoFile.nodeInfos.push(nvmJSONNodeToNodeInfo(nodeId, node)); + await adapter.set( + { domain: "node", nodeId, type: "info" }, + nvmJSONNodeToNodeInfo(nodeId, node), + ); - // Create/update route cache file (if there is a route) if (node.lwr || node.nlwr) { - routeCacheExists.add(nodeId); - const routeCacheFileIndex = nodeIdToRouteCacheFileIDV1(nodeId); - if (!routeCacheFiles.has(routeCacheFileIndex)) { - routeCacheFiles.set( - routeCacheFileIndex, - new RouteCacheFileV1({ - routeCaches: [], - fileVersion: target.controller.protocolVersion, - }), - ); - } - const routeCacheFile = routeCacheFiles.get(routeCacheFileIndex)!; - routeCacheFile.routeCaches.push({ - nodeId, - lwr: node.lwr ?? getEmptyRoute(), - nlwr: node.nlwr ?? getEmptyRoute(), - }); + await adapter.set( + { domain: "node", nodeId, type: "routes" }, + { + lwr: node.lwr ?? getEmptyRoute(), + nlwr: node.nlwr ?? getEmptyRoute(), + }, + ); } } + await adapter.set( + { domain: "controller", type: "nodeIds" }, + [...nodeInfoExists], + ); if (target.lrNodes) { for (const [id, node] of Object.entries(target.lrNodes)) { const nodeId = parseInt(id); - lrNodeInfoExists.add(nodeId); - // Create/update node info file - const nodeInfoFileIndex = nodeIdToLRNodeInfoFileIDV5(nodeId); - if (!lrNodeInfoFiles.has(nodeInfoFileIndex)) { - lrNodeInfoFiles.set( - nodeInfoFileIndex, - new LRNodeInfoFileV5({ - nodeInfos: [], - fileVersion: target.controller.protocolVersion, - }), - ); - } - const nodeInfoFile = lrNodeInfoFiles.get(nodeInfoFileIndex)!; - - nodeInfoFile.nodeInfos.push( + await adapter.set( + { domain: "lrnode", nodeId, type: "info" }, nvmJSONLRNodeToLRNodeInfo(nodeId, node), ); } } + await adapter.set( + { domain: "controller", type: "lrNodeIds" }, + [...lrNodeInfoExists], + ); // For v3+ targets, the ControllerInfoFile must contain the LongRange properties // or the controller will ignore the file and not have a home ID @@ -1155,129 +1457,57 @@ export function jsonToNVMObjects_v7_11_0( target.controller.primaryLongRangeChannelId ??= 0; target.controller.dcdcConfig ??= 255; } + adapter.setFile( + new ControllerInfoFile( + nvmJSONControllerToFileOptions(target.controller), + ), + ); - addProtocolObjects(...serializeCommonProtocolObjects(target)); - - addProtocolObjects( - new ProtocolNodeListFile({ - nodeIds: [...nodeInfoExists], - fileVersion: target.controller.protocolVersion, - }).serialize(), + await adapter.set( + { domain: "controller", type: "appRouteLock" }, + [...appRouteLock], ); - addProtocolObjects( - new ProtocolRouteCacheExistsNodeMaskFile({ - nodeIds: [...routeCacheExists], - fileVersion: target.controller.protocolVersion, - }).serialize(), + await adapter.set( + { domain: "controller", type: "routeSlaveSUC" }, + [...routeSlaveSUC], + ); + await adapter.set( + { domain: "controller", type: "sucPendingUpdate" }, + [...sucPendingUpdate], + ); + await adapter.set( + { domain: "controller", type: "virtualNodeIds" }, + [...virtualNodeIds], + ); + await adapter.set( + { domain: "controller", type: "pendingDiscovery" }, + [...pendingDiscovery], ); - if (nodeInfoFiles.size > 0) { - addProtocolObjects( - ...[...nodeInfoFiles.values()].map((f) => f.serialize()), - ); - } - if (routeCacheFiles.size > 0) { - addProtocolObjects( - ...[...routeCacheFiles.values()].map((f) => f.serialize()), - ); - } - - if (lrNodeInfoFiles.size > 0) { - addProtocolObjects( - new ProtocolLRNodeListFile({ - nodeIds: [...lrNodeInfoExists], - fileVersion: target.controller.protocolVersion, - }).serialize(), - ); - addProtocolObjects( - ...[...lrNodeInfoFiles.values()].map((f) => f.serialize()), - ); - } - - return { - applicationObjects, - protocolObjects, - }; -} - -/** Reads an NVM buffer and returns its JSON representation */ -export function nvmToJSON( - buffer: Buffer, - debugLogs: boolean = false, -): Required { - const nvm = parseNVM(buffer, debugLogs); - return parsedNVMToJSON(nvm); -} - -function parsedNVMToJSON( - nvm: NVM3Pages & NVM3Objects, -): Required { - const objects = new Map([ - ...nvm.applicationObjects, - ...nvm.protocolObjects, - ]); - // 800 series doesn't distinguish between the storage for application and protocol objects - const sharedFileSystem = nvm.applicationObjects.size > 0 - && nvm.protocolObjects.size === 0; - const ret = nvmObjectsToJSON(objects); - const firstPage = sharedFileSystem - ? nvm.applicationPages[0] - : nvm.protocolPages[0]; - ret.meta = getNVMMeta(firstPage, sharedFileSystem); - return ret as Required; -} - -/** Reads an NVM buffer of a 500-series stick and returns its JSON representation */ -export function nvm500ToJSON(buffer: Buffer): Required { - const parser = createNVM500Parser(buffer); - if (!parser) { - throw new ZWaveError( - "Did not find a matching NVM 500 parser implementation! Make sure that the NVM data belongs to a controller with Z-Wave SDK 6.61 or higher.", - ZWaveErrorCodes.NVM_NotSupported, - ); - } - return parser.toJSON(); -} - -/** Takes a JSON represented NVM and converts it to binary */ -export function jsonToNVM( - json: Required, - targetSDKVersion: string, -): Buffer { - const parsedVersion = semver.parse(targetSDKVersion); - if (!parsedVersion) { - throw new ZWaveError( - `Invalid SDK version: ${targetSDKVersion}`, - ZWaveErrorCodes.Argument_Invalid, - ); - } - - let objects: NVM3Objects; - if (semver.gte(parsedVersion, "7.11.0")) { - objects = jsonToNVMObjects_v7_11_0(json, parsedVersion); - } else if (semver.gte(parsedVersion, "7.0.0")) { - objects = jsonToNVMObjects_v7_0_0(json, parsedVersion); - } else { - throw new ZWaveError( - "jsonToNVM cannot convert to a pre-7.0 NVM version. Use jsonToNVM500 instead.", - ZWaveErrorCodes.Argument_Invalid, + if (target.controller.preferredRepeaters?.length) { + await adapter.set( + { domain: "controller", type: "preferredRepeaters" }, + target.controller.preferredRepeaters, ); } - return encodeNVM( - objects.applicationObjects, - objects.protocolObjects, - json.meta, + await adapter.set( + { domain: "controller", type: "sucUpdateEntries" }, + target.controller.sucUpdateEntries, ); + + await adapter.commit(); + await io.close(); + return ret; } /** Takes a JSON represented 500 series NVM and converts it to binary */ -export function jsonToNVM500( +export async function jsonToNVM500( json: Required, protocolVersion: string, -): Buffer { +): Promise { // Try to find a matching implementation - const impl = nmvDetails500.find( + const impl = nvm500Impls.find( (p) => p.protocolVersions.includes(protocolVersion) && p.name.toLowerCase().startsWith(json.meta.library), @@ -1290,9 +1520,190 @@ export function jsonToNVM500( ); } - const serializer = new NVMSerializer(impl); - serializer.parseJSON(json, protocolVersion); - return serializer.serialize(); + const { layout, nvmSize } = resolveLayout(impl.layout); + + // Erase the NVM and set some basic information + const ret = Buffer.allocUnsafe(nvmSize); + const io = new NVMMemoryIO(ret); + const nvm = new NVM500(io); + await nvm.erase({ + layout, + nvmSize, + library: impl.library, + nvmDescriptor: { + ...pick(json.meta, [ + "manufacturerID", + "productType", + "productID", + "firmwareID", + ]), + // Override the protocol version with the specified one + protocolVersion, + firmwareVersion: json.controller.applicationVersion, + }, + }); + + const adapter = new NVM500Adapter(nvm); + + // Set controller infos + const c = json.controller; + + await adapter.set( + { domain: "controller", type: "homeId" }, + Buffer.from(c.ownHomeId.replace(/^0x/, ""), "hex"), + ); + await adapter.set( + { domain: "controller", type: "learnedHomeId" }, + c.learnedHomeId + ? Buffer.from(c.learnedHomeId.replace(/^0x/, ""), "hex") + : undefined, + ); + + await adapter.set( + { domain: "controller", type: "nodeId" }, + c.nodeId, + ); + await adapter.set( + { domain: "controller", type: "lastNodeId" }, + c.lastNodeId, + ); + await adapter.set( + { domain: "controller", type: "maxNodeId" }, + c.maxNodeId, + ); + await adapter.set( + { domain: "controller", type: "reservedId" }, + c.reservedId, + ); + await adapter.set( + { domain: "controller", type: "staticControllerNodeId" }, + c.staticControllerNodeId, + ); + + await adapter.set( + { domain: "controller", type: "controllerConfiguration" }, + c.controllerConfiguration, + ); + + await adapter.set( + { domain: "controller", type: "sucUpdateEntries" }, + c.sucUpdateEntries, + ); + + await adapter.set( + { domain: "controller", type: "sucLastIndex" }, + c.sucLastIndex, + ); + + await adapter.set( + { domain: "controller", type: "systemState" }, + c.systemState, + ); + + await adapter.set( + { domain: "controller", type: "watchdogStarted" }, + c.watchdogStarted, + ); + + await adapter.set( + { domain: "controller", type: "powerLevelNormal" }, + c.rfConfig.powerLevelNormal, + ); + await adapter.set( + { domain: "controller", type: "powerLevelLow" }, + c.rfConfig.powerLevelLow, + ); + await adapter.set( + { domain: "controller", type: "powerMode" }, + c.rfConfig.powerMode, + ); + await adapter.set( + { domain: "controller", type: "powerModeExtintEnable" }, + c.rfConfig.powerModeExtintEnable, + ); + await adapter.set( + { domain: "controller", type: "powerModeWutTimeout" }, + c.rfConfig.powerModeWutTimeout, + ); + + await adapter.set( + { domain: "controller", type: "preferredRepeaters" }, + c.preferredRepeaters, + ); + + await adapter.set( + { domain: "controller", type: "commandClasses" }, + c.commandClasses, + ); + + if (c.applicationData) { + await adapter.set( + { domain: "controller", type: "applicationData" }, + Buffer.from(c.applicationData, "hex"), + ); + } + + // Set node infos + const appRouteLock: number[] = []; + const routeSlaveSUC: number[] = []; + const pendingDiscovery: number[] = []; + const sucPendingUpdate: number[] = []; + const virtualNodeIds: number[] = []; + + for (const [id, node] of Object.entries(json.nodes)) { + const nodeId = parseInt(id); + if (!nodeHasInfo(node)) { + virtualNodeIds.push(nodeId); + continue; + } + if (node.appRouteLock) appRouteLock.push(nodeId); + if (node.routeSlaveSUC) routeSlaveSUC.push(nodeId); + if (node.pendingDiscovery) pendingDiscovery.push(nodeId); + if (node.sucPendingUpdate) sucPendingUpdate.push(nodeId); + + await adapter.set( + { domain: "node", nodeId, type: "info" }, + { + nodeId, + ...node, + }, + ); + + if (node.lwr || node.nlwr) { + await adapter.set( + { domain: "node", nodeId, type: "routes" }, + { + lwr: node.lwr ?? undefined, + nlwr: node.nlwr ?? undefined, + }, + ); + } + } + + await adapter.set( + { domain: "controller", type: "appRouteLock" }, + [...appRouteLock], + ); + await adapter.set( + { domain: "controller", type: "routeSlaveSUC" }, + [...routeSlaveSUC], + ); + await adapter.set( + { domain: "controller", type: "sucPendingUpdate" }, + [...sucPendingUpdate], + ); + await adapter.set( + { domain: "controller", type: "virtualNodeIds" }, + [...virtualNodeIds], + ); + await adapter.set( + { domain: "controller", type: "pendingDiscovery" }, + [...pendingDiscovery], + ); + + await adapter.commit(); + await io.close(); + return ret; } export function json500To700( @@ -1487,30 +1898,27 @@ export function json700To500(json: NVMJSON): NVM500JSON { } /** Converts the given source NVM into a format that is compatible with the given target NVM */ -export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { +export async function migrateNVM( + sourceNVM: Buffer, + targetNVM: Buffer, +): Promise { let source: ParsedNVM; let target: ParsedNVM; - let sourceObjects: Map | undefined; let sourceProtocolFileFormat: number | undefined; let targetProtocolFileFormat: number | undefined; try { - const nvm = parseNVM(sourceNVM); source = { type: 700, - json: parsedNVMToJSON(nvm), + json: await nvmToJSON(sourceNVM), }; sourceProtocolFileFormat = source.json.format; - sourceObjects = new Map([ - ...nvm.applicationObjects, - ...nvm.protocolObjects, - ]); } catch (e) { if (isZWaveError(e) && e.code === ZWaveErrorCodes.NVM_InvalidFormat) { // This is not a 700 series NVM, maybe it is a 500 series one? source = { type: 500, - json: nvm500ToJSON(sourceNVM), + json: await nvm500ToJSON(sourceNVM), }; } else if ( isZWaveError(e) @@ -1529,7 +1937,7 @@ export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { try { target = { type: 700, - json: nvmToJSON(targetNVM), + json: await nvmToJSON(targetNVM), }; targetProtocolFileFormat = target.json.format; } catch (e) { @@ -1537,7 +1945,7 @@ export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { // This is not a 700 series NVM, maybe it is a 500 series one? target = { type: 500, - json: nvm500ToJSON(targetNVM), + json: await nvm500ToJSON(targetNVM), }; } else if ( isZWaveError(e) @@ -1597,7 +2005,7 @@ export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { && semver.lt(sourceApplicationVersion, "255.0.0") && semver.lt(targetApplicationVersion, "255.0.0") // and avoid restoring a backup with a shifted 800 series application version file - && (!sourceObjects || !hasShiftedAppVersion800File(sourceObjects)) + && (!hasShiftedAppVersion800File(source.json)) ) { return sourceNVM; } @@ -1647,7 +2055,7 @@ export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { return jsonToNVM500(json, target.json.controller.protocolVersion); } else if (source.type === 500 && target.type === 700) { // We need to upgrade the source to 700 series - const json: Required = { + const json: NVMJSONWithMeta = { lrNodes: {}, ...json500To700(source.json, true), meta: target.json.meta, @@ -1667,9 +2075,9 @@ export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { return jsonToNVM500(json, target.json.controller.protocolVersion); } else { // Both are 700, so we just need to update the metadata to match the target - const json: Required = { - ...(source.json as Required), - meta: (target.json as Required).meta, + const json: NVMJSONWithMeta = { + ...(source.json as NVMJSONWithMeta), + meta: (target.json as NVMJSONWithMeta).meta, }; // 700 series distinguishes the NVM format by the application version return jsonToNVM(json, target.json.controller.applicationVersion); @@ -1680,53 +2088,25 @@ export function migrateNVM(sourceNVM: Buffer, targetNVM: Buffer): Buffer { * Detects whether the app version file on a 800 series controller is shifted by 1 byte */ function hasShiftedAppVersion800File( - objects: Map, + json: NVMJSONWithMeta, ): boolean { - const getObject = ( - id: number | ((id: number) => boolean), - ): NVM3Object | undefined => { - if (typeof id === "number") { - return objects.get(id); - } else { - for (const [key, obj] of objects) { - if (id(key)) return obj; - } - } - }; + // We can only detect this on 800 series controllers with the shared FS + if (!json.meta.sharedFileSystem) return false; - const getFile = ( - id: number | ((id: number) => boolean), - fileVersion: string, - ): T | undefined => { - const obj = getObject(id); - if (!obj) return undefined; - return NVMFile.from(obj, fileVersion) as T; - }; - - const protocolVersionFile = getFile( - ProtocolVersionFileID, - "7.0.0", // We don't know the version here yet - ); - // File not found, cannot fix anything - if (!protocolVersionFile) return false; - - const protocolVersion = - `${protocolVersionFile.major}.${protocolVersionFile.minor}.${protocolVersionFile.patch}`; - - const applVersionFile800 = getFile( - ApplicationVersionFile800ID, - protocolVersion, - ); + const protocolVersion = semver.parse(json.controller.protocolVersion); + // Invalid protocol version, cannot fix anything + if (!protocolVersion) return false; - // File not found, cannot fix anything - if (!applVersionFile800) return false; + const applicationVersion = semver.parse(json.controller.applicationVersion); + // Invalid application version, cannot fix anything + if (!applicationVersion) return false; // We consider the version shifted if: // - the app version format is the major protocol version // - the app version major is the minor protocol version +/- 3 - if (applVersionFile800.format !== protocolVersionFile.major) return false; - if (Math.abs(applVersionFile800.major - protocolVersionFile.minor) > 3) { + if (json.applicationFileFormat !== protocolVersion.major) return false; + if (Math.abs(applicationVersion.major - protocolVersion.minor) > 3) { return false; } diff --git a/packages/nvmedit/src/files/ProtocolNodeMaskFiles.ts b/packages/nvmedit/src/files/ProtocolNodeMaskFiles.ts deleted file mode 100644 index 7c9b385b9604..000000000000 --- a/packages/nvmedit/src/files/ProtocolNodeMaskFiles.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { NODE_ID_MAX, encodeBitMask, parseBitMask } from "@zwave-js/core/safe"; -import type { NVM3Object } from "../nvm3/object"; -import { - NVMFile, - type NVMFileCreationOptions, - type NVMFileDeserializationOptions, - getNVMFileIDStatic, - gotDeserializationOptions, - nvmFileID, -} from "./NVMFile"; - -export interface ProtocolNodeMaskFileOptions extends NVMFileCreationOptions { - nodeIds: number[]; -} - -export class ProtocolNodeMaskFile extends NVMFile { - public constructor( - options: NVMFileDeserializationOptions | ProtocolNodeMaskFileOptions, - ) { - super(options); - if (gotDeserializationOptions(options)) { - this.nodeIds = parseBitMask(this.payload); - } else { - this.nodeIds = options.nodeIds; - } - } - - public nodeIds: number[]; - - public serialize(): NVM3Object { - this.payload = encodeBitMask(this.nodeIds, NODE_ID_MAX); - return super.serialize(); - } - - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types - public toJSON() { - return { - ...super.toJSON(), - "node IDs": this.nodeIds.join(", "), - }; - } -} - -@nvmFileID(0x50002) -export class ProtocolPreferredRepeatersFile extends ProtocolNodeMaskFile {} -export const ProtocolPreferredRepeatersFileID = getNVMFileIDStatic( - ProtocolPreferredRepeatersFile, -); - -@nvmFileID(0x50005) -export class ProtocolNodeListFile extends ProtocolNodeMaskFile {} -export const ProtocolNodeListFileID = getNVMFileIDStatic(ProtocolNodeListFile); - -@nvmFileID(0x50006) -export class ProtocolAppRouteLockNodeMaskFile extends ProtocolNodeMaskFile {} -export const ProtocolAppRouteLockNodeMaskFileID = getNVMFileIDStatic( - ProtocolAppRouteLockNodeMaskFile, -); - -@nvmFileID(0x50007) -export class ProtocolRouteSlaveSUCNodeMaskFile extends ProtocolNodeMaskFile {} -export const ProtocolRouteSlaveSUCNodeMaskFileID = getNVMFileIDStatic( - ProtocolRouteSlaveSUCNodeMaskFile, -); - -@nvmFileID(0x50008) -export class ProtocolSUCPendingUpdateNodeMaskFile - extends ProtocolNodeMaskFile -{} -export const ProtocolSUCPendingUpdateNodeMaskFileID = getNVMFileIDStatic( - ProtocolSUCPendingUpdateNodeMaskFile, -); - -@nvmFileID(0x50009) -export class ProtocolVirtualNodeMaskFile extends ProtocolNodeMaskFile {} -export const ProtocolVirtualNodeMaskFileID = getNVMFileIDStatic( - ProtocolVirtualNodeMaskFile, -); - -@nvmFileID(0x5000a) -export class ProtocolPendingDiscoveryNodeMaskFile - extends ProtocolNodeMaskFile -{} -export const ProtocolPendingDiscoveryNodeMaskFileID = getNVMFileIDStatic( - ProtocolPendingDiscoveryNodeMaskFile, -); - -@nvmFileID(0x5000b) -export class ProtocolRouteCacheExistsNodeMaskFile - extends ProtocolNodeMaskFile -{} -export const ProtocolRouteCacheExistsNodeMaskFileID = getNVMFileIDStatic( - ProtocolRouteCacheExistsNodeMaskFile, -); - -@nvmFileID(0x5000c) -export class ProtocolLRNodeListFile extends NVMFile { - public constructor( - options: NVMFileDeserializationOptions | ProtocolNodeMaskFileOptions, - ) { - super(options); - if (gotDeserializationOptions(options)) { - this.nodeIds = parseBitMask(this.payload, 256); - } else { - this.nodeIds = options.nodeIds; - } - } - - public nodeIds: number[]; - - public serialize(): NVM3Object { - // There are only 128 bytes for the bitmask, so the LR node IDs only go up to 1279 - this.payload = encodeBitMask(this.nodeIds, 1279, 256); - return super.serialize(); - } - - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types - public toJSON() { - return { - ...super.toJSON(), - payload: this.payload.toString("hex"), - "node IDs": this.nodeIds.join(", "), - }; - } -} -export const ProtocolLRNodeListFileID = getNVMFileIDStatic( - ProtocolLRNodeListFile, -); diff --git a/packages/nvmedit/src/index.ts b/packages/nvmedit/src/index.ts index 733263ae845d..5b92de7b5d99 100644 --- a/packages/nvmedit/src/index.ts +++ b/packages/nvmedit/src/index.ts @@ -17,18 +17,39 @@ export type { NVMJSONNodeWithInfo, NVMJSONVirtualNode, } from "./convert"; +export { NVM3, type NVM3EraseOptions, type NVM3Meta } from "./lib/NVM3"; +export { NVM500, type NVM500EraseOptions, type NVM500Info } from "./lib/NVM500"; +export { NVMAccess } from "./lib/common/definitions"; +export type { + ControllerNVMProperty, + ControllerNVMPropertyToDataType, + LRNodeNVMProperty, + LRNodeNVMPropertyToDataType, + NVM, + NVMAdapter, + NVMIO, + NVMProperty, + NVMPropertyToDataType, + NodeNVMProperty, + NodeNVMPropertyToDataType, +} from "./lib/common/definitions"; +export { BufferedNVMReader } from "./lib/io/BufferedNVMReader"; +export { NVMFileIO } from "./lib/io/NVMFileIO"; +export { NVM3Adapter } from "./lib/nvm3/adapter"; export { FragmentType, ObjectType, PageStatus, PageWriteSize, -} from "./nvm3/consts"; -export type { NVMMeta } from "./nvm3/nvm"; -export type { NVM3Object as NVMObject } from "./nvm3/object"; -export type { - NVM3Page as NVMPage, - NVM3PageHeader as PageHeader, -} from "./nvm3/page"; +} from "./lib/nvm3/consts"; +export { + ControllerInfoFile, + ControllerInfoFileID, + NVMFile, +} from "./lib/nvm3/files"; +export type { NVM3Object } from "./lib/nvm3/object"; +export type { NVM3Page, NVM3PageHeader } from "./lib/nvm3/page"; +export { NVM500Adapter } from "./lib/nvm500/adapter"; export type { NVM500JSON, NVM500JSONController, diff --git a/packages/nvmedit/src/index_safe.ts b/packages/nvmedit/src/index_safe.ts index 9abfad738f4b..fcd7e330e671 100644 --- a/packages/nvmedit/src/index_safe.ts +++ b/packages/nvmedit/src/index_safe.ts @@ -10,18 +10,30 @@ export type { NVMJSONNodeWithInfo, NVMJSONVirtualNode, } from "./convert"; +export type { NVM3EraseOptions, NVM3Meta } from "./lib/NVM3"; +export type { NVM500EraseOptions, NVM500Info } from "./lib/NVM500"; +export { NVMAccess } from "./lib/common/definitions"; +export type { + ControllerNVMProperty, + ControllerNVMPropertyToDataType, + LRNodeNVMProperty, + LRNodeNVMPropertyToDataType, + NVM, + NVMAdapter, + NVMIO, + NVMProperty, + NVMPropertyToDataType, + NodeNVMProperty, + NodeNVMPropertyToDataType, +} from "./lib/common/definitions"; export { FragmentType, ObjectType, PageStatus, PageWriteSize, -} from "./nvm3/consts"; -export type { NVMMeta } from "./nvm3/nvm"; -export type { NVM3Object as NVMObject } from "./nvm3/object"; -export type { - NVM3Page as NVMPage, - NVM3PageHeader as PageHeader, -} from "./nvm3/page"; +} from "./lib/nvm3/consts"; +export type { NVM3Object } from "./lib/nvm3/object"; +export type { NVM3Page, NVM3PageHeader } from "./lib/nvm3/page"; export type { NVM500JSON, NVM500JSONController, diff --git a/packages/nvmedit/src/lib/NVM3.ts b/packages/nvmedit/src/lib/NVM3.ts new file mode 100644 index 000000000000..bb675ab15029 --- /dev/null +++ b/packages/nvmedit/src/lib/NVM3.ts @@ -0,0 +1,891 @@ +import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core"; +import { getEnumMemberName, num2hex } from "@zwave-js/shared"; +import { type NVM, NVMAccess, type NVMIO } from "./common/definitions"; +import { nvmReadBuffer, nvmReadUInt32LE, nvmWriteBuffer } from "./common/utils"; +import { + FLASH_MAX_PAGE_SIZE_700, + FLASH_MAX_PAGE_SIZE_800, + FragmentType, + NVM3_CODE_LARGE_SHIFT, + NVM3_CODE_SMALL_SHIFT, + NVM3_COUNTER_SIZE, + NVM3_MAX_OBJ_SIZE_SMALL, + NVM3_OBJ_FRAGTYPE_MASK, + NVM3_OBJ_FRAGTYPE_SHIFT, + NVM3_OBJ_HEADER_SIZE_LARGE, + NVM3_OBJ_KEY_MASK, + NVM3_OBJ_KEY_SHIFT, + NVM3_OBJ_LARGE_LEN_MASK, + NVM3_OBJ_TYPE_MASK, + NVM3_PAGE_COUNTER_MASK, + NVM3_PAGE_COUNTER_SIZE, + NVM3_PAGE_HEADER_SIZE, + NVM3_PAGE_MAGIC, + ObjectType, + PageStatus, + PageWriteSize, + ZWAVE_APPLICATION_NVM_SIZE, +} from "./nvm3/consts"; +import { + ApplicationVersionFile800ID, + type NVMSection, + getNVMSectionByFileID, +} from "./nvm3/files"; +import { + type NVM3Object, + type NVM3ObjectHeader, + fragmentLargeObject, + getAlignedSize, + getObjectHeader, + getRequiredSpace, + serializeObject, +} from "./nvm3/object"; +import { + type NVM3PageHeader, + pageSizeFromBits, + serializePageHeader, +} from "./nvm3/page"; +import { validateBergerCode, validateBergerCodeMulti } from "./nvm3/utils"; + +// TODO: Possible optimizations: +// Investigate if there is a better way to determine whether the NVM +// uses a shared FS or not. The current implementation scans all objects +// to find the 800 series application version file. +// Alternatively, we could simply check if each page starts with an object header. +// If yes, read the objects lazily when needed. If not, remember that the page is empty. + +export type NVM3PageInfo = NVM3PageHeader & { + objects: NVM3ObjectHeader[]; +}; + +export interface NVM3SectionInfo { + pages: NVM3PageInfo[]; + /** The index of the current page */ + currentPage: number; + /** The next byte to write in the current page */ + offsetInPage: number; + /** A map of file IDs and page indizes in which their last copy resides */ + objectLocations: Map; +} + +export type NVM3FileSystemInfo = { + isSharedFileSystem: true; + sections: Record<"all", NVM3SectionInfo>; +} | { + isSharedFileSystem: false; + sections: Record; +}; + +export interface NVM3Meta { + sharedFileSystem: boolean; + pageSize: number; + deviceFamily: number; + writeSize: PageWriteSize; + memoryMapped: boolean; +} + +export type NVM3EraseOptions = Partial; + +export class NVM3 implements NVM { + public constructor(io: NVMIO) { + this._io = io; + } + + private _io: NVMIO; + private _access: NVMAccess = NVMAccess.None; + + private _info: NVM3FileSystemInfo | undefined; + public get info(): NVM3FileSystemInfo | undefined { + return this._info; + } + + private async ensureReadable(): Promise { + if ( + this._access === NVMAccess.Read + || this._access === NVMAccess.ReadWrite + ) { + return; + } + if (this._access === NVMAccess.Write) { + await this._io.close(); + } + this._access = await this._io.open(NVMAccess.Read); + } + + private async ensureWritable(): Promise { + if ( + this._access === NVMAccess.Write + || this._access === NVMAccess.ReadWrite + ) { + return; + } + if (this._access === NVMAccess.Read) { + await this._io.close(); + } + this._access = await this._io.open(NVMAccess.Write); + } + + public async init(): Promise { + await this.ensureReadable(); + + let pageOffset = 0; + // Determine NVM size, scan pages + const pages: NVM3PageInfo[] = []; + let isSharedFileSystem = false; + while (pageOffset < this._io.size) { + // console.debug( + // `NVM3 init() - reading page header at offset ${ + // num2hex(pageOffset) + // }`, + // ); + const header = await readPageHeader(this._io, pageOffset); + pages.push({ + ...header, + objects: [], + }); + pageOffset += header.pageSize; + } + + // Scan each page for objects + for (const page of pages) { + // Scan objects in this page + let objectOffset = page.offset + NVM3_PAGE_HEADER_SIZE; + const nextPageOffset = page.offset + page.pageSize; + while (objectOffset < nextPageOffset) { + // console.debug( + // `NVM3 init() - reading object header. page offset ${ + // num2hex(page.offset) + // }, object offset ${num2hex(objectOffset)}`, + // ); + const objectHeader = await readObjectHeader( + this._io, + objectOffset, + ); + if (objectHeader) { + page.objects.push(objectHeader); + objectOffset += objectHeader.alignedSize; + + // Detect the 800 series shared protocol & application NVM file system + // by looking for the 800 series application version file + if (objectHeader.key === ApplicationVersionFile800ID) { + isSharedFileSystem = true; + } + } else { + // Reached the end of the data in this page + break; + } + } + } + + // By convention, we only use the applicationPages in that case + let applicationPages: NVM3PageInfo[]; + let protocolPages: NVM3PageInfo[]; + + if (isSharedFileSystem) { + applicationPages = pages; + protocolPages = []; + } else { + applicationPages = pages.filter( + (p) => p.offset < ZWAVE_APPLICATION_NVM_SIZE, + ); + protocolPages = pages.filter( + (p) => p.offset >= ZWAVE_APPLICATION_NVM_SIZE, + ); + } + + // NVM3 layouts pages in a ring buffer. Pages are written from front to back, then occupied pages + // are erased and overwritten. Pages at the start of the memory section may have an erase count that's 1 higher + // than the pages at the end. + const pageInfoToSectionInfo = ( + pages: NVM3PageInfo[], + ): NVM3SectionInfo => { + // Find the current page, which is either: + // - The last page with the high erase count that contains an object + const maxEraseCount = Math.max(...pages.map((p) => p.eraseCount)); + let currentPageIndex = pages.findLastIndex((p) => + p.eraseCount === maxEraseCount && p.objects.length > 0 + ); + // - or if there is none, the last page with the lower erase count that contains an object + if (currentPageIndex === -1) { + currentPageIndex = pages.findLastIndex((p) => + p.objects.length > 0 + ); + } + // - Or if no objects exist at all, the beginning of the section + if (currentPageIndex === -1) currentPageIndex = 0; + + // Find the next free byte of the current page + const currentPage = pages[currentPageIndex]; + let offset = NVM3_PAGE_HEADER_SIZE; + for (const object of currentPage.objects) { + offset += object.alignedSize; + } + + const objectLocations = new Map(); + for (let i = 0; i < pages.length; i++) { + const page = pages[i]; + for (const object of page.objects) { + const location = objectLocations.get(object.key); + if (location == undefined) { + // Object seen for the first time, remember the page it is in + objectLocations.set(object.key, i); + } else if ( + (object.fragmentType === FragmentType.None + || object.fragmentType === FragmentType.First) + && (page.eraseCount >= pages[location].eraseCount) + ) { + // Object was seen before. Only remember it if it is the only + // or first fragment and the object appears in a later location + // of the ring buffer + objectLocations.set(object.key, i); + } + } + } + + return { + pages, + offsetInPage: offset, + currentPage: currentPageIndex, + objectLocations, + }; + }; + + if (isSharedFileSystem) { + this._info = { + isSharedFileSystem: true, + sections: { + all: pageInfoToSectionInfo(applicationPages), + }, + }; + } else { + this._info = { + isSharedFileSystem: false, + sections: { + application: pageInfoToSectionInfo(applicationPages), + protocol: pageInfoToSectionInfo(protocolPages), + }, + }; + } + + return this._info; + } + + private getNVMSectionForFile(fileId: number): NVM3SectionInfo { + // Determine which ring buffer to read in + return this._info!.isSharedFileSystem + ? this._info!.sections.all + : this._info!.sections[getNVMSectionByFileID(fileId)]; + } + + public async has(fileId: number): Promise { + this._info ??= await this.init(); + + // Determine which ring buffer to read in + const section = this.getNVMSectionForFile(fileId); + + return section.objectLocations.has(fileId); + } + + public readObjectData(object: NVM3ObjectHeader): Promise { + return nvmReadBuffer( + this._io, + object.offset + object.headerSize, + object.fragmentSize, + ); + } + + public async get(fileId: number): Promise { + this._info ??= await this.init(); + + // Determine which ring buffer to read in + const section = this.getNVMSectionForFile(fileId); + + const pages = section.pages; + + // TODO: There should be no need for scanning, since we know the object locations after init(). + + // Start scanning backwards through the pages ring buffer, starting with the current page + let parts: Buffer[] | undefined; + let complete = false; + let objType: ObjectType | undefined; + const resetFragments = () => { + // if (parts?.length) { + // console.debug("Resetting fragmented object"); + // } + parts = undefined; + complete = false; + }; + pages: for (let offset = 0; offset < pages.length; offset++) { + const index = (section.currentPage - offset + pages.length) + % pages.length; + const page = pages[index]; + // console.debug( + // `NVM3.get(${fileId}): scanning page ${index} at offset ${ + // num2hex(page.offset) + // }`, + // ); + // Scan objects in this page, read backwards. + // The last non-deleted object wins + objects: for (let j = page.objects.length - 1; j >= 0; j--) { + const object = page.objects[j]; + + const readObject = () => this.readObjectData(object); + + if (object.key !== fileId) { + // Reset any fragmented objects when encountering a different key + resetFragments(); + continue objects; + } + + if (object.type === ObjectType.Deleted) { + // Last action for this object was a deletion. There is no data. + return; + } else if (object.fragmentType === FragmentType.None) { + // console.debug( + // `NVM3.get(${fileId}): found complete object - header offset ${ + // num2hex(object.offset) + // }, content offset ${ + // num2hex(object.offset + object.headerSize) + // }, length ${object.fragmentSize}`, + // ); + // This is a complete object + parts = [await readObject()]; + objType = object.type; + complete = true; + break pages; + } else if (object.fragmentType === FragmentType.Last) { + // console.debug( + // `NVM3.get(${fileId}): found LAST fragment - header offset ${ + // num2hex(object.offset) + // }, content offset ${ + // num2hex(object.offset + object.headerSize) + // }, length ${object.fragmentSize}`, + // ); + parts = [await readObject()]; + objType = object.type; + complete = false; + } else if (object.fragmentType === FragmentType.Next) { + if (parts?.length && objType === object.type) { + // console.debug( + // `NVM3.get(${fileId}): found NEXT fragment - header offset ${ + // num2hex(object.offset) + // }, content offset ${ + // num2hex(object.offset + object.headerSize) + // }, length ${object.fragmentSize}`, + // ); + parts.unshift(await readObject()); + } else { + // This shouldn't be here + resetFragments(); + } + } else if (object.fragmentType === FragmentType.First) { + if (parts?.length && objType === object.type) { + // console.debug( + // `NVM3.get(${fileId}): found FIRST fragment - header offset ${ + // num2hex(object.offset) + // }, content offset ${ + // num2hex(object.offset + object.headerSize) + // }, length ${object.fragmentSize}`, + // ); + parts.unshift(await readObject()); + complete = true; + break pages; + } else { + // This shouldn't be here + resetFragments(); + } + } + } + } + + if (!parts?.length || !complete || objType == undefined) return; + + return Buffer.concat(parts); + } + + private async writeObjects(objects: NVM3Object[]): Promise { + const section = this.getNVMSectionForFile(objects[0].key); + + let page = section.pages[section.currentPage]; + let remainingSpace = page.pageSize + - NVM3_PAGE_HEADER_SIZE + - section.offsetInPage; + + // TODO: See if we can avoid double writes on a page change + + /** Moves to the next page and erases it if necessary */ + const nextPage = async () => { + section.currentPage = (section.currentPage + 1) + % section.pages.length; + page = section.pages[section.currentPage]; + + // Find headers of objects that need to be preserved + const toPreserve = [...section.objectLocations].filter(( + [, pageIndex], + ) => pageIndex === section.currentPage) + .map(([fileID]) => + page.objects.findLast((h) => h.key === fileID) + ) + .filter((h) => h != undefined) + .filter((h) => h.type !== ObjectType.Deleted); + // And add the objects to the TODO list + for (const header of toPreserve) { + const data = await this.get(header.key); + console.error(`Need to preserve object ${num2hex(header.key)} + page index: ${section.currentPage} + object type: ${getEnumMemberName(ObjectType, header.type)} + data: ${data != undefined ? `${data.length} bytes` : "(no data)"}`); + objects.push({ + key: header.key, + type: header.type, + fragmentType: FragmentType.None, + data, + }); + } + + if (page.objects.length > 0) { + // The page needs to be erased + page.eraseCount++; + page.objects = []; + + const pageHeaderBuffer = serializePageHeader(page); + const pageBuffer = Buffer.alloc(page.pageSize, 0xff); + pageHeaderBuffer.copy(pageBuffer, 0); + + await nvmWriteBuffer(this._io, page.offset, pageBuffer); + } + + section.offsetInPage = NVM3_PAGE_HEADER_SIZE; + remainingSpace = page.pageSize - NVM3_PAGE_HEADER_SIZE; + }; + + // Go through the list of objects and write all of them to the NVM + for (const object of objects) { + const isLargeObject = object.type === ObjectType.DataLarge + || object.type === ObjectType.CounterLarge; + + let fragments: NVM3Object[] | undefined; + + if (isLargeObject) { + // Large objects may be fragmented + + // We need to start a new page, if the remaining space is not enough for + // the object header plus additional data + if (remainingSpace <= NVM3_OBJ_HEADER_SIZE_LARGE) { + await nextPage(); + } + + fragments = fragmentLargeObject( + object as any, + remainingSpace, + page.pageSize - NVM3_PAGE_HEADER_SIZE, + ); + } else { + // Small objects cannot be fragmented. If they don't fit, + // they need to go on the next page. + const requiredSpace = getRequiredSpace(object); + if (requiredSpace > remainingSpace) { + await nextPage(); + } + fragments = [object]; + } + + // Write each fragment to the NVM. If there are multiple fragments, + // each one but the first needs to be written at the beginning of a new page + for (let i = 0; i < fragments.length; i++) { + if (i > 0) await nextPage(); + const fragment = fragments[i]; + + const objBuffer = serializeObject(fragment); + const objOffset = page.offset + section.offsetInPage; + await this._io.write(objOffset, objBuffer); + const requiredSpace = getRequiredSpace(fragment); + section.offsetInPage += requiredSpace; + remainingSpace -= requiredSpace; + + // Remember which objects exist in this page + page.objects.push(getObjectHeader(object, objOffset)); + + // And remember where this object lives + if (object.type === ObjectType.Deleted) { + section.objectLocations.delete(object.key); + } else if ( + fragment.fragmentType === FragmentType.None + || fragment.fragmentType === FragmentType.First + ) { + section.objectLocations.set( + fragment.key, + section.currentPage, + ); + } + } + } + } + + public async set(property: number, value: Buffer): Promise { + if (!this._info) await this.init(); + await this.ensureWritable(); + + await this.writeObjects([{ + key: property, + type: value.length <= NVM3_MAX_OBJ_SIZE_SMALL + ? ObjectType.DataSmall + : ObjectType.DataLarge, + // writeObject deals with fragmentation + fragmentType: FragmentType.None, + data: value, + }]); + } + + /** Writes multiple values to the NVM at once. `null` / `undefined` cause the value to be deleted */ + public async setMany( + values: [number, Buffer | null | undefined][], + ): Promise { + if (!this._info) await this.init(); + await this.ensureWritable(); + + // Group objects by their NVM section + const objectsBySection = new Map< + number, /* offset */ + [number, Buffer | null | undefined][] + >(); + for (const [key, value] of values) { + const sectionOffset = + this.getNVMSectionForFile(key).pages[0].offset; + if (!objectsBySection.has(sectionOffset)) { + objectsBySection.set(sectionOffset, []); + } + objectsBySection.get(sectionOffset)!.push([key, value]); + } + + // And call writeObjects for each group + for (const objectGroups of objectsBySection.values()) { + await this.writeObjects( + objectGroups.map(([key, value]) => (value + ? { + key, + type: value.length <= NVM3_MAX_OBJ_SIZE_SMALL + ? ObjectType.DataSmall + : ObjectType.DataLarge, + // writeObject deals with fragmentation + fragmentType: FragmentType.None, + data: value, + } + : { + key, + type: ObjectType.Deleted, + fragmentType: FragmentType.None, + }) + ), + ); + } + } + + public async delete(property: number): Promise { + if (!this._info) await this.init(); + await this.ensureWritable(); + + await this.writeObjects([{ + key: property, + type: ObjectType.Deleted, + fragmentType: FragmentType.None, + }]); + } + + public async erase(options?: NVM3EraseOptions): Promise { + const { + deviceFamily = 2047, + writeSize = PageWriteSize.WRITE_SIZE_16, + memoryMapped = true, + sharedFileSystem = false, + } = options ?? {}; + const maxPageSize = sharedFileSystem + ? FLASH_MAX_PAGE_SIZE_800 + : FLASH_MAX_PAGE_SIZE_700; + const pageSize = Math.min( + options?.pageSize ?? maxPageSize, + maxPageSize, + ); + + // Make sure we won't be writing incomplete pages + if (this._io.size % pageSize !== 0) { + throw new ZWaveError( + `Invalid page size. NVM size ${this._io.size} must be a multiple of the page size ${pageSize}.`, + ZWaveErrorCodes.Argument_Invalid, + ); + } else if ( + !sharedFileSystem && ZWAVE_APPLICATION_NVM_SIZE % pageSize !== 0 + ) { + throw new ZWaveError( + `Invalid page size. The application NVM size ${ZWAVE_APPLICATION_NVM_SIZE} must be a multiple of the page size ${pageSize}.`, + ZWaveErrorCodes.Argument_Invalid, + ); + } else if ( + !sharedFileSystem + && (this._io.size - ZWAVE_APPLICATION_NVM_SIZE) % pageSize !== 0 + ) { + throw new ZWaveError( + `Invalid page size. The protocol NVM size ${ + this._io.size + - ZWAVE_APPLICATION_NVM_SIZE + } must be a multiple of the page size ${pageSize}.`, + ZWaveErrorCodes.Argument_Invalid, + ); + } + + await this.ensureWritable(); + + // Create empty pages, write them to the NVM + const applicationPages: NVM3PageInfo[] = []; + const protocolPages: NVM3PageInfo[] = []; + + const numPages = this._io.size / pageSize; + for (let i = 0; i < numPages; i++) { + const offset = i * pageSize; + const pageBuffer = Buffer.alloc(pageSize, 0xff); + const pageHeader: NVM3PageHeader = { + offset, + version: 0x01, + eraseCount: 0, + encrypted: false, + deviceFamily, + memoryMapped, + pageSize, + status: PageStatus.OK, + writeSize, + }; + serializePageHeader(pageHeader).copy(pageBuffer, 0); + await nvmWriteBuffer(this._io, offset, pageBuffer); + + if (sharedFileSystem || offset < ZWAVE_APPLICATION_NVM_SIZE) { + applicationPages.push({ ...pageHeader, objects: [] }); + } else { + protocolPages.push({ ...pageHeader, objects: [] }); + } + } + + // Remember the pages we just created for further use + this._info = sharedFileSystem + ? { + isSharedFileSystem: true, + sections: { + all: { + currentPage: 0, + objectLocations: new Map(), + offsetInPage: NVM3_PAGE_HEADER_SIZE, + pages: applicationPages, + }, + }, + } + : { + isSharedFileSystem: false, + sections: { + application: { + currentPage: 0, + objectLocations: new Map(), + offsetInPage: NVM3_PAGE_HEADER_SIZE, + pages: applicationPages, + }, + protocol: { + currentPage: 0, + objectLocations: new Map(), + offsetInPage: NVM3_PAGE_HEADER_SIZE, + pages: protocolPages, + }, + }, + }; + } +} + +async function readPageHeader( + io: NVMIO, + offset: number, +): Promise { + if (offset > io.size - NVM3_PAGE_HEADER_SIZE) { + throw new ZWaveError( + "Incomplete page in buffer!", + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + const buffer = (await io.read(offset, NVM3_PAGE_HEADER_SIZE)).buffer; + + const { version, eraseCount } = tryGetVersionAndEraseCount(buffer); + + // Page status + const status = buffer.readUInt32LE(12); + + const devInfo = buffer.readUInt16LE(16); + const deviceFamily = devInfo & 0x7ff; + const writeSize = (devInfo >> 11) & 0b1; + const memoryMapped = !!((devInfo >> 12) & 0b1); + let pageSize = pageSizeFromBits((devInfo >> 13) & 0b111); + + if (pageSize > 0xffff) { + // Some controllers have no valid info in the page size bits, resulting + // in an impossibly large page size. To try and figure out the actual page + // size without knowing the hardware, we scan the buffer for the next valid + // page start. + for (let exponent = 0; exponent < 0b111; exponent++) { + const testPageSize = pageSizeFromBits(exponent); + const nextOffset = offset + testPageSize; + if ( + // exactly end of NVM OR + io.size === nextOffset + // next page + || await isValidPageHeaderAtOffset(io, nextOffset) + ) { + pageSize = testPageSize; + break; + } + } + } + if (pageSize > 0xffff) { + throw new ZWaveError( + "Could not determine page size!", + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + if (io.size < offset + pageSize) { + throw new ZWaveError( + `NVM contains incomplete page at offset ${num2hex(offset)}!`, + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + const formatInfo = buffer.readUInt16LE(18); + const encrypted = !(formatInfo & 0b1); + + return { + offset, + version, + eraseCount, + status, + encrypted, + pageSize, + writeSize, + memoryMapped, + deviceFamily, + }; +} + +function tryGetVersionAndEraseCount( + header: Buffer, +): { version: number; eraseCount: number } { + const version = header.readUInt16LE(0); + const magic = header.readUInt16LE(2); + if (magic !== NVM3_PAGE_MAGIC) { + throw new ZWaveError( + "Not a valid NVM3 page!", + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + if (version !== 0x01) { + throw new ZWaveError( + `Unsupported NVM3 page version: ${version}`, + ZWaveErrorCodes.NVM_NotSupported, + ); + } + + // The erase counter is saved twice, once normally, once inverted + let eraseCount = header.readUInt32LE(4); + const eraseCountCode = eraseCount >>> NVM3_PAGE_COUNTER_SIZE; + eraseCount &= NVM3_PAGE_COUNTER_MASK; + validateBergerCode(eraseCount, eraseCountCode, NVM3_PAGE_COUNTER_SIZE); + + let eraseCountInv = header.readUInt32LE(8); + const eraseCountInvCode = eraseCountInv >>> NVM3_PAGE_COUNTER_SIZE; + eraseCountInv &= NVM3_PAGE_COUNTER_MASK; + validateBergerCode( + eraseCountInv, + eraseCountInvCode, + NVM3_PAGE_COUNTER_SIZE, + ); + + if (eraseCount !== (~eraseCountInv & NVM3_PAGE_COUNTER_MASK)) { + throw new ZWaveError( + "Invalid erase count!", + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + return { version, eraseCount }; +} + +async function isValidPageHeaderAtOffset( + io: NVMIO, + offset: number, +): Promise { + if (offset > io.size - NVM3_PAGE_HEADER_SIZE) { + return false; + } + + const { buffer } = await io.read(offset, NVM3_PAGE_HEADER_SIZE); + + try { + tryGetVersionAndEraseCount(buffer); + return true; + } catch { + return false; + } +} + +async function readObjectHeader( + io: NVMIO, + offset: number, +): Promise { + let headerSize = 4; + const hdr1 = await nvmReadUInt32LE(io, offset); + + // Skip over blank page areas + if (hdr1 === 0xffffffff) return; + + const key = (hdr1 >> NVM3_OBJ_KEY_SHIFT) & NVM3_OBJ_KEY_MASK; + let objType: ObjectType = hdr1 & NVM3_OBJ_TYPE_MASK; + let fragmentSize = 0; + let hdr2: number | undefined; + const isLarge = objType === ObjectType.DataLarge + || objType === ObjectType.CounterLarge; + if (isLarge) { + hdr2 = await nvmReadUInt32LE(io, offset + 4); + headerSize += 4; + fragmentSize = hdr2 & NVM3_OBJ_LARGE_LEN_MASK; + } else if (objType > ObjectType.DataSmall) { + // In small objects with data, the length and object type are stored in the same value + fragmentSize = objType - ObjectType.DataSmall; + objType = ObjectType.DataSmall; + } else if (objType === ObjectType.CounterSmall) { + fragmentSize = NVM3_COUNTER_SIZE; + } + + const fragmentType: FragmentType = isLarge + ? (hdr1 >>> NVM3_OBJ_FRAGTYPE_SHIFT) & NVM3_OBJ_FRAGTYPE_MASK + : FragmentType.None; + + if (isLarge) { + validateBergerCodeMulti([hdr1, hdr2!], 32 + NVM3_CODE_LARGE_SHIFT); + } else { + validateBergerCodeMulti([hdr1], NVM3_CODE_SMALL_SHIFT); + } + + if (io.size < offset + headerSize + fragmentSize) { + throw new ZWaveError( + `NVM contains incomplete object at offset ${num2hex(offset)}!`, + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + const alignedFragmentSize = getAlignedSize(fragmentSize); + const alignedSize = headerSize + alignedFragmentSize; + + return { + key, + offset, + type: objType, + fragmentType, + headerSize, + fragmentSize, + alignedSize, + }; +} diff --git a/packages/nvmedit/src/lib/NVM500.ts b/packages/nvmedit/src/lib/NVM500.ts new file mode 100644 index 000000000000..23b6905f6371 --- /dev/null +++ b/packages/nvmedit/src/lib/NVM500.ts @@ -0,0 +1,612 @@ +import { + MAX_NODES, + ZWaveError, + ZWaveErrorCodes, + encodeBitMask, + parseBitMask, +} from "@zwave-js/core"; +import { type NVM, NVMAccess, type NVMIO } from "./common/definitions"; +import { type Route, encodeRoute, parseRoute } from "./common/routeCache"; +import { + type SUCUpdateEntry, + encodeSUCUpdateEntry, + parseSUCUpdateEntry, +} from "./common/sucUpdateEntry"; +import { nvmReadBuffer, nvmReadUInt16BE, nvmWriteBuffer } from "./common/utils"; +import { + type NVM500NodeInfo, + type NVMDescriptor, + type NVMModuleDescriptor, + encodeNVM500NodeInfo, + encodeNVMDescriptor, + encodeNVMModuleDescriptor, + parseNVM500NodeInfo, + parseNVMDescriptor, + parseNVMModuleDescriptor, +} from "./nvm500/EntryParsers"; +import { nvm500Impls } from "./nvm500/impls"; +import { + CONFIGURATION_VALID_0, + CONFIGURATION_VALID_1, + MAGIC_VALUE, + type NVM500Impl, + type NVMData, + type NVMEntryName, + NVMEntrySizes, + NVMEntryType, + NVMModuleType, + ROUTECACHE_VALID, + type ResolvedNVMEntry, + type ResolvedNVMLayout, +} from "./nvm500/shared"; + +export interface NVM500Info { + layout: ResolvedNVMLayout; + library: NVM500Impl["library"]; + moduleDescriptors: Map; + nvmDescriptor: NVMDescriptor; +} + +export type NVM500EraseOptions = { + layout: ResolvedNVMLayout; + nvmSize: number; + library: NVM500Impl["library"]; + nvmDescriptor: NVMDescriptor; +}; + +export class NVM500 implements NVM { + public constructor(io: NVMIO) { + this._io = io; + } + + private _io: NVMIO; + private _access: NVMAccess = NVMAccess.None; + + private _info: NVM500Info | undefined; + public get info(): NVM500Info | undefined { + return this._info; + } + + private async ensureReadable(): Promise { + if ( + this._access === NVMAccess.Read + || this._access === NVMAccess.ReadWrite + ) { + return; + } + if (this._access === NVMAccess.Write) { + await this._io.close(); + } + this._access = await this._io.open(NVMAccess.Read); + } + + private async ensureWritable(): Promise { + if ( + this._access === NVMAccess.Write + || this._access === NVMAccess.ReadWrite + ) { + return; + } + if (this._access === NVMAccess.Read) { + await this._io.close(); + } + this._access = await this._io.open(NVMAccess.Write); + } + + public async init(): Promise { + await this.ensureReadable(); + + // Try the different known layouts to find one that works + for (const impl of nvm500Impls) { + try { + const info = await this.resolveLayout(impl); + if (await this.isLayoutValid(info, impl.protocolVersions)) { + this._info = info; + } + break; + } catch { + continue; + } + } + + if (!this._info) { + throw new ZWaveError( + "Did not find a matching NVM 500 parser implementation! Make sure that the NVM data belongs to a controller with Z-Wave SDK 6.61 or higher.", + ZWaveErrorCodes.NVM_NotSupported, + ); + } + + return this._info; + } + + private async resolveLayout(impl: NVM500Impl): Promise { + const resolvedLayout = new Map(); + let nvmDescriptor: NVMDescriptor | undefined; + const moduleDescriptors = new Map(); + + let offset = 0; + let moduleStart = -1; + let moduleSize = -1; + const nvmEnd = await nvmReadUInt16BE(this._io, 0); + + for (const entry of impl.layout) { + const size = entry.size ?? NVMEntrySizes[entry.type]; + + if (entry.type === NVMEntryType.NVMModuleSize) { + if (moduleStart !== -1) { + // All following NVM modules must start at the last module's end + offset = moduleStart + moduleSize; + } + + moduleStart = offset; + moduleSize = await nvmReadUInt16BE(this._io, offset); + } else if (entry.type === NVMEntryType.NVMModuleDescriptor) { + // The module descriptor is always at the end of the module + offset = moduleStart + moduleSize - size; + } + + if (entry.offset != undefined && entry.offset !== offset) { + // The entry has a defined offset but is at the wrong location + throw new ZWaveError( + `${entry.name} is at wrong location in NVM buffer!`, + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + const resolvedEntry: ResolvedNVMEntry = { + ...entry, + offset, + size, + }; + + if (entry.type === NVMEntryType.NVMDescriptor) { + const entryData = await this.readRawEntry(resolvedEntry); + // NVMDescriptor is always a single entry + nvmDescriptor = parseNVMDescriptor(entryData[0]); + } else if (entry.type === NVMEntryType.NVMModuleDescriptor) { + const entryData = await this.readRawEntry(resolvedEntry); + // NVMModuleDescriptor is always a single entry + const descriptor = parseNVMModuleDescriptor(entryData[0]); + if (descriptor.size !== moduleSize) { + throw new ZWaveError( + "NVM module descriptor size does not match module size!", + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + moduleDescriptors.set(entry.name, descriptor); + } + + resolvedLayout.set(entry.name, resolvedEntry); + + // Skip forward + offset += size * entry.count; + if (offset >= nvmEnd) break; + } + + if (!nvmDescriptor) { + throw new ZWaveError( + "NVM descriptor not found in NVM!", + ZWaveErrorCodes.NVM_InvalidFormat, + ); + } + + return { + layout: resolvedLayout, + library: impl.library, + moduleDescriptors, + nvmDescriptor, + }; + } + + private async isLayoutValid( + info: NVM500Info, + protocolVersions: string[], + ): Promise { + // Checking if an NVM is valid requires checking multiple bytes at different locations + const eeoffset_magic_entry = info.layout.get("EEOFFSET_MAGIC_far"); + if (!eeoffset_magic_entry) return false; + const eeoffset_magic = + (await this.readEntry(eeoffset_magic_entry))[0] as number; + + const configuration_valid_0_entry = info.layout.get( + "NVM_CONFIGURATION_VALID_far", + ); + if (!configuration_valid_0_entry) return false; + const configuration_valid_0 = + (await this.readEntry(configuration_valid_0_entry))[0] as number; + + const configuration_valid_1_entry = info.layout.get( + "NVM_CONFIGURATION_REALLYVALID_far", + ); + if (!configuration_valid_1_entry) return false; + const configuration_valid_1 = + (await this.readEntry(configuration_valid_1_entry))[0] as number; + + const routecache_valid_entry = info.layout.get( + "EX_NVM_ROUTECACHE_MAGIC_far", + ); + if (!routecache_valid_entry) return false; + const routecache_valid = + (await this.readEntry(routecache_valid_entry))[0] as number; + + const endMarker_entry = info.layout.get("nvmModuleSizeEndMarker"); + if (!endMarker_entry) return false; + const endMarker = (await this.readEntry(endMarker_entry))[0] as number; + + return ( + eeoffset_magic === MAGIC_VALUE + && configuration_valid_0 === CONFIGURATION_VALID_0 + && configuration_valid_1 === CONFIGURATION_VALID_1 + && routecache_valid === ROUTECACHE_VALID + && protocolVersions.includes(info.nvmDescriptor.protocolVersion) + && endMarker === 0 + ); + } + + async has(property: NVMEntryName): Promise { + this._info ??= await this.init(); + return this._info.layout.has(property); + } + + private async readSingleRawEntry( + entry: ResolvedNVMEntry, + index: number, + ): Promise { + if (index >= entry.count) { + throw new ZWaveError( + `Index out of range. Tried to read entry ${index} of ${entry.count}.`, + ZWaveErrorCodes.Argument_Invalid, + ); + } + return nvmReadBuffer( + this._io, + entry.offset + index * entry.size, + entry.size, + ); + } + + private async readRawEntry( + entry: ResolvedNVMEntry, + ): Promise { + const ret: Buffer[] = []; + const nvmData = await nvmReadBuffer( + this._io, + entry.offset, + entry.count * entry.size, + ); + for (let i = 0; i < entry.count; i++) { + ret.push( + nvmData.subarray(i * entry.size, (i + 1) * entry.size), + ); + } + return ret; + } + + private parseEntry(type: NVMEntryType, data: Buffer): NVMData { + switch (type) { + case NVMEntryType.Byte: + return data.readUInt8(0); + case NVMEntryType.Word: + case NVMEntryType.NVMModuleSize: + return data.readUInt16BE(0); + case NVMEntryType.DWord: + return data.readUInt32BE(0); + case NVMEntryType.NodeInfo: + if (data.every((byte) => byte === 0)) { + return undefined; + } + return parseNVM500NodeInfo(data, 0); + case NVMEntryType.NodeMask: + return parseBitMask(data); + case NVMEntryType.SUCUpdateEntry: + if (data.every((byte) => byte === 0)) { + return undefined; + } + return parseSUCUpdateEntry(data, 0); + case NVMEntryType.Route: + if (data.every((byte) => byte === 0)) { + return undefined; + } + return parseRoute(data, 0); + case NVMEntryType.NVMModuleDescriptor: { + return parseNVMModuleDescriptor(data); + } + case NVMEntryType.NVMDescriptor: + return parseNVMDescriptor(data); + default: + // This includes NVMEntryType.BUFFER + return data; + } + } + + private async readEntry( + entry: ResolvedNVMEntry, + ): Promise { + const data: Buffer[] = await this.readRawEntry(entry); + return data.map((buffer) => this.parseEntry(entry.type, buffer)); + } + + private async readSingleEntry( + entry: ResolvedNVMEntry, + index: number, + ): Promise { + const data: Buffer = await this.readSingleRawEntry(entry, index); + return this.parseEntry(entry.type, data); + } + + public async get(property: NVMEntryName): Promise { + this._info ??= await this.init(); + await this.ensureReadable(); + + const entry = this._info.layout.get(property); + if (!entry) return undefined; + + return this.readEntry(entry); + } + + public async getSingle( + property: NVMEntryName, + index: number, + ): Promise { + this._info ??= await this.init(); + await this.ensureReadable(); + + const entry = this._info.layout.get(property); + if (!entry) return undefined; + + return this.readSingleEntry(entry, index); + } + + private encodeEntry( + type: NVMEntryType, + data: NVMData, + entrySize?: number, + ): Buffer { + const size = entrySize ?? NVMEntrySizes[type]; + + switch (type) { + case NVMEntryType.Byte: + return Buffer.from([data as number]); + case NVMEntryType.Word: + case NVMEntryType.NVMModuleSize: { + const ret = Buffer.allocUnsafe(2); + ret.writeUInt16BE(data as number, 0); + return ret; + } + case NVMEntryType.DWord: { + const ret = Buffer.allocUnsafe(4); + ret.writeUInt32BE(data as number, 0); + return ret; + } + case NVMEntryType.NodeInfo: + return data + ? encodeNVM500NodeInfo(data as NVM500NodeInfo) + : Buffer.alloc(size, 0); + case NVMEntryType.NodeMask: { + const ret = Buffer.alloc(size, 0); + if (data) { + encodeBitMask(data as number[], MAX_NODES, 1).copy( + ret, + 0, + ); + } + return ret; + } + case NVMEntryType.SUCUpdateEntry: + return encodeSUCUpdateEntry(data as SUCUpdateEntry); + case NVMEntryType.Route: + return encodeRoute(data as Route); + case NVMEntryType.NVMModuleDescriptor: + return encodeNVMModuleDescriptor( + data as NVMModuleDescriptor, + ); + case NVMEntryType.NVMDescriptor: + return encodeNVMDescriptor(data as NVMDescriptor); + case NVMEntryType.Buffer: + return data as Buffer; + } + } + + private async writeSingleRawEntry( + entry: ResolvedNVMEntry, + index: number, + data: Buffer, + ): Promise { + if (index >= entry.count) { + throw new ZWaveError( + `Index out of range. Tried to write entry ${index} of ${entry.count}.`, + ZWaveErrorCodes.Argument_Invalid, + ); + } + return nvmWriteBuffer( + this._io, + entry.offset + index * entry.size, + data, + ); + } + + private async writeRawEntry( + entry: ResolvedNVMEntry, + data: Buffer[], + ): Promise { + await nvmWriteBuffer( + this._io, + entry.offset, + Buffer.concat(data), + ); + } + + private async writeEntry( + entry: ResolvedNVMEntry, + data: NVMData[], + ): Promise { + const buffers = data.map((d) => + this.encodeEntry(entry.type, d, entry.size) + ); + await this.writeRawEntry(entry, buffers); + } + + private async writeSingleEntry( + entry: ResolvedNVMEntry, + index: number, + data: NVMData, + ): Promise { + const buffer = this.encodeEntry(entry.type, data, entry.size); + await this.writeSingleRawEntry(entry, index, buffer); + } + + public async set(property: NVMEntryName, value: NVMData[]): Promise { + this._info ??= await this.init(); + await this.ensureWritable(); + + const entry = this._info.layout.get(property); + if (!entry) return; + + await this.writeEntry(entry, value); + } + + public async setSingle( + property: NVMEntryName, + index: number, + value: NVMData, + ): Promise { + this._info ??= await this.init(); + await this.ensureWritable(); + + const entry = this._info.layout.get(property); + if (!entry) return undefined; + + await this.writeSingleEntry(entry, index, value); + } + + private async fill(key: NVMEntryName, value: number) { + this._info ??= await this.init(); + await this.ensureWritable(); + + const entry = this._info.layout.get(key); + // Skip entries not present in this layout + if (!entry) return; + + const size = entry.size ?? NVMEntrySizes[entry.type]; + + const data: NVMData[] = []; + for (let i = 1; i <= entry.count; i++) { + switch (entry.type) { + case NVMEntryType.Byte: + case NVMEntryType.Word: + case NVMEntryType.DWord: + data.push(value); + break; + case NVMEntryType.Buffer: + data.push(Buffer.alloc(size, value)); + break; + case NVMEntryType.NodeMask: + data.push(new Array(size).fill(value)); + break; + case NVMEntryType.NodeInfo: + case NVMEntryType.Route: + data.push(undefined); + break; + default: + throw new Error( + `Cannot fill entry of type ${NVMEntryType[entry.type]}`, + ); + } + } + + await this.writeEntry(entry, data); + } + + // eslint-disable-next-line @typescript-eslint/require-await + public async delete(_property: NVMEntryName): Promise { + throw new Error( + "Deleting entries is not supported for 500 series NVMs", + ); + } + + public async erase( + options: NVM500EraseOptions, + ): Promise { + // Blank NVM with 0xff + await nvmWriteBuffer(this._io, 0, Buffer.alloc(options.nvmSize, 0xff)); + + // Compute module sizes + const layoutEntries = Array.from(options.layout.values()); + const moduleSizeEntries = layoutEntries + .filter((entry) => entry.type === NVMEntryType.NVMModuleSize); + const moduleDescriptorEntries = layoutEntries + .filter((entry) => entry.type === NVMEntryType.NVMModuleDescriptor); + const moduleDescriptors = new Map(); + // Each module starts with a size marker and ends with a descriptor + for (let i = 0; i < moduleSizeEntries.length; i++) { + const sizeEntry = moduleSizeEntries[i]; + const descriptorEntry = moduleDescriptorEntries[i]; + const size = descriptorEntry.offset + + descriptorEntry.size + - sizeEntry.offset; + + // Write each module size to their NVMModuleSize marker + await this.writeEntry(sizeEntry, [size]); + + // Write each module size, type and version to the NVMModuleDescriptor at the end + const moduleType = descriptorEntry.name === "nvmZWlibraryDescriptor" + ? NVMModuleType.ZW_LIBRARY + : descriptorEntry.name === "nvmApplicationDescriptor" + ? NVMModuleType.APPLICATION + : descriptorEntry.name === "nvmHostApplicationDescriptor" + ? NVMModuleType.HOST_APPLICATION + : descriptorEntry.name === "nvmDescriptorDescriptor" + ? NVMModuleType.NVM_DESCRIPTOR + : 0; + + const moduleDescriptor: NVMModuleDescriptor = { + size, + type: moduleType, + version: descriptorEntry.name === "nvmZWlibraryDescriptor" + ? options.nvmDescriptor.protocolVersion + : options.nvmDescriptor.firmwareVersion, + }; + moduleDescriptors.set(descriptorEntry.name, moduleDescriptor); + await this.writeEntry(descriptorEntry, [moduleDescriptor]); + } + + // Initialize this._info, so the following works + this._info = { + ...options, + moduleDescriptors, + }; + + // Write NVM size to nvmTotalEnd + // the value points to the last byte, therefore subtract 1 + await this.set("nvmTotalEnd", [options.nvmSize - 1]); + + // Set some entries that are always identical + await this.set("NVM_CONFIGURATION_VALID_far", [CONFIGURATION_VALID_0]); + await this.set("NVM_CONFIGURATION_REALLYVALID_far", [ + CONFIGURATION_VALID_1, + ]); + await this.set("EEOFFSET_MAGIC_far", [MAGIC_VALUE]); + await this.set("EX_NVM_ROUTECACHE_MAGIC_far", [ROUTECACHE_VALID]); + await this.set("nvmModuleSizeEndMarker", [0]); + + // Set NVM descriptor + await this.set("nvmDescriptor", [options.nvmDescriptor]); + + // Set dummy entries we're never going to fill + await this.fill("NVM_INTERNAL_RESERVED_1_far", 0); + await this.fill("NVM_INTERNAL_RESERVED_2_far", 0xff); + await this.fill("NVM_INTERNAL_RESERVED_3_far", 0); + await this.fill("NVM_RTC_TIMERS_far", 0); + await this.fill("EX_NVM_SUC_ACTIVE_START_far", 0); + await this.fill("EX_NVM_ZENSOR_TABLE_START_far", 0); + await this.fill("NVM_SECURITY0_KEY_far", 0); + + // And blank fields that are not supposed to be filled with 0xff + await this.fill("EX_NVM_SUC_CONTROLLER_LIST_START_far", 0xfe); + await this.fill("EX_NVM_NODE_TABLE_START_far", 0); + await this.fill("EX_NVM_ROUTING_TABLE_START_far", 0); + // For routes the value does not matter + await this.fill("EX_NVM_ROUTECACHE_START_far", 0); + await this.fill("EX_NVM_ROUTECACHE_NLWR_SR_START_far", 0); + } +} diff --git a/packages/nvmedit/src/lib/common/definitions.ts b/packages/nvmedit/src/lib/common/definitions.ts new file mode 100644 index 000000000000..ee104b5a1f0d --- /dev/null +++ b/packages/nvmedit/src/lib/common/definitions.ts @@ -0,0 +1,246 @@ +import { type CommandClasses } from "@zwave-js/core"; +import { type Expand } from "@zwave-js/shared"; +import { + type ApplicationCCsFile, + type ApplicationRFConfigFile, + type ApplicationTypeFile, + type ControllerInfoFile, + type LRNodeInfo, + type NodeInfo, +} from "../nvm3/files"; +import { type Route } from "./routeCache"; +import { type SUCUpdateEntry } from "./sucUpdateEntry"; + +export enum NVMAccess { + None, + Read, + Write, + ReadWrite, +} + +/** Provides an abstraction to access the contents of an NVM at the binary level */ +export interface NVMIO { + /** + * Opens the NVM for reading and/or writing. + * Since different NVM implementations may or may not allow reading and writing at the same time, + * the returned value indicates which access patterns are actually allowed. + */ + open(access: NVMAccess.Read | NVMAccess.Write): Promise; + + /** Returns the size of the NVM, after it has been opened */ + get size(): number; + /** Returns which access is currently allowed for this NVM implementation */ + get accessMode(): NVMAccess; + + /** + * Determines the size of the data chunks that can be used for writing. + * Requires the NVM to be readable. + */ + determineChunkSize(): Promise; + + /** + * Reads a chunk of data with the given length from the NVM. + * If the length is longer than the chunk size, or the end of the NVM is reached, + * the returned buffer will be shorter than the requested length. + */ + read( + offset: number, + length: number, + ): Promise<{ buffer: Buffer; endOfFile: boolean }>; + + /** + * Writes a chunk of data with the given length from the NVM. + * The returned value indicates how many bytes were actually written. + */ + write( + offset: number, + data: Buffer, + ): Promise<{ bytesWritten: number; endOfFile: boolean }>; + + /** Closes the NVM */ + close(): Promise; +} + +/** A specific NVM implementation */ +export interface NVM { + /** Checks if a property exists in the NVM */ + has(property: ID): Promise; + + /** Reads a property from the NVM */ + get(property: ID): Promise; + + /** Writes a property to the NVM */ + set(property: ID, value: Data): Promise; + + /** Deletes the property from the NVM */ + delete(property: ID): Promise; +} + +/** + * Provides an application-level abstraction over an NVM implementation + */ +export interface NVMAdapter { + /** Reads a property from the NVM */ + get( + property: T, + required?: R, + ): Promise< + R extends true ? NVMPropertyToDataType + : (NVMPropertyToDataType | undefined) + >; + + /** + * Changes a property to be written to the NVM later + */ + set( + property: T, + value: NVMPropertyToDataType, + ): Promise; + + /** + * Marks a property for deletion from the NVM. In some implementations, + * deleting one property may delete multiple properties that are stored together. + */ + delete(property: NVMProperty): Promise; + + /** Returns whether there are pending changes that weren't written to the NVM yet */ + hasPendingChanges(): boolean; + + /** Writes all pending changes to the NVM */ + commit(): Promise; +} + +export type ControllerNVMPropertyTypes = Expand< + & { + protocolVersion: string; + protocolFileFormat: number; + applicationVersion: string; + applicationData: Buffer; + preferredRepeaters?: number[]; + sucUpdateEntries: SUCUpdateEntry[]; + appRouteLock: number[]; + routeSlaveSUC: number[]; + sucPendingUpdate: number[]; + pendingDiscovery: number[]; + virtualNodeIds: number[]; + nodeIds: number[]; + } + // 700+ series only + & Partial<{ + applicationFileFormat: number; + applicationName: string; + lrNodeIds: number[]; + }> + // 500 series only + & Partial<{ + learnedHomeId: Buffer; + commandClasses: CommandClasses[]; + systemState: number; + watchdogStarted: number; + powerLevelNormal: number[]; + powerLevelLow: number[]; + powerMode: number; + powerModeExtintEnable: number; + powerModeWutTimeout: number; + }> + & Pick< + ControllerInfoFile, + | "homeId" + | "nodeId" + | "lastNodeId" + | "staticControllerNodeId" + | "sucLastIndex" + | "controllerConfiguration" + | "sucAwarenessPushNeeded" + | "maxNodeId" + | "reservedId" + | "systemState" + | "lastNodeIdLR" + | "maxNodeIdLR" + | "reservedIdLR" + | "primaryLongRangeChannelId" + | "dcdcConfig" + > + // 700+ series only + & Partial< + Pick< + ApplicationCCsFile, + | "includedInsecurely" + | "includedSecurelyInsecureCCs" + | "includedSecurelySecureCCs" + > + > + // 700+ series only + & Partial< + Pick< + ApplicationRFConfigFile, + | "rfRegion" + | "txPower" + | "measured0dBm" + | "enablePTI" + | "maxTXPower" + | "nodeIdType" + > + > + // 700+ series only + & Partial< + Pick< + ApplicationTypeFile, + | "isListening" + | "optionalFunctionality" + | "genericDeviceClass" + | "specificDeviceClass" + > + > +>; + +export interface NodeNVMPropertyTypes { + info: NodeInfo; + routes: { lwr?: Route; nlwr?: Route }; +} + +export interface LRNodeNVMPropertyTypes { + info: LRNodeInfo; +} + +export type ControllerNVMProperty = { + domain: "controller"; + type: keyof ControllerNVMPropertyTypes; + nodeId?: undefined; +}; + +export type ControllerNVMPropertyToDataType

= + ControllerNVMPropertyTypes[P["type"]]; + +export type NodeNVMProperty = { + domain: "node"; + type: keyof NodeNVMPropertyTypes; + nodeId: number; +}; + +export type NodeNVMPropertyToDataType

= + P["type"] extends keyof NodeNVMPropertyTypes + ? NodeNVMPropertyTypes[P["type"]] + : never; + +export type LRNodeNVMProperty = { + domain: "lrnode"; + type: keyof LRNodeNVMPropertyTypes; + nodeId: number; +}; + +export type LRNodeNVMPropertyToDataType

= + P["type"] extends keyof LRNodeNVMPropertyTypes + ? LRNodeNVMPropertyTypes[P["type"]] + : never; + +export type NVMProperty = + | ControllerNVMProperty + | NodeNVMProperty + | LRNodeNVMProperty; + +export type NVMPropertyToDataType

= P extends + ControllerNVMProperty ? ControllerNVMPropertyToDataType

+ : P extends NodeNVMProperty ? NodeNVMPropertyToDataType

+ : P extends LRNodeNVMProperty ? LRNodeNVMPropertyToDataType

+ : never; diff --git a/packages/nvmedit/src/lib/common/routeCache.ts b/packages/nvmedit/src/lib/common/routeCache.ts new file mode 100644 index 000000000000..2e78f1c62bbd --- /dev/null +++ b/packages/nvmedit/src/lib/common/routeCache.ts @@ -0,0 +1,75 @@ +import { + type FLiRS, + MAX_REPEATERS, + RouteProtocolDataRate, + protocolDataRateMask, +} from "@zwave-js/core/safe"; + +const ROUTE_SIZE = MAX_REPEATERS + 1; +export const ROUTECACHE_SIZE = 2 * ROUTE_SIZE; +export const EMPTY_ROUTECACHE_FILL = 0xff; +export const emptyRouteCache = Buffer.alloc( + ROUTECACHE_SIZE, + EMPTY_ROUTECACHE_FILL, +); + +enum Beaming { + "1000ms" = 0x40, + "250ms" = 0x20, +} + +export interface Route { + beaming: FLiRS; + protocolRate: RouteProtocolDataRate; + repeaterNodeIDs?: number[]; +} + +export interface RouteCache { + nodeId: number; + lwr: Route; + nlwr: Route; +} + +export function parseRoute(buffer: Buffer, offset: number): Route { + const routeConf = buffer[offset + MAX_REPEATERS]; + const ret: Route = { + beaming: (Beaming[routeConf & 0x60] ?? false) as FLiRS, + protocolRate: routeConf & protocolDataRateMask, + repeaterNodeIDs: [ + ...buffer.subarray(offset, offset + MAX_REPEATERS), + ].filter((id) => id !== 0), + }; + if (ret.repeaterNodeIDs![0] === 0xfe) delete ret.repeaterNodeIDs; + return ret; +} + +export function encodeRoute(route: Route | undefined): Buffer { + const ret = Buffer.alloc(ROUTE_SIZE, 0); + if (route) { + if (route.repeaterNodeIDs) { + for ( + let i = 0; + i < MAX_REPEATERS && i < route.repeaterNodeIDs.length; + i++ + ) { + ret[i] = route.repeaterNodeIDs[i]; + } + } else { + ret[0] = 0xfe; + } + let routeConf = 0; + if (route.beaming) routeConf |= Beaming[route.beaming] ?? 0; + routeConf |= route.protocolRate & protocolDataRateMask; + ret[ROUTE_SIZE - 1] = routeConf; + } + + return ret; +} + +export function getEmptyRoute(): Route { + return { + beaming: false, + protocolRate: RouteProtocolDataRate.ZWave_40k, + repeaterNodeIDs: undefined, + }; +} diff --git a/packages/nvmedit/src/lib/common/sucUpdateEntry.ts b/packages/nvmedit/src/lib/common/sucUpdateEntry.ts new file mode 100644 index 000000000000..f9ad86cce429 --- /dev/null +++ b/packages/nvmedit/src/lib/common/sucUpdateEntry.ts @@ -0,0 +1,55 @@ +import { + type CommandClasses, + ZWaveError, + ZWaveErrorCodes, + encodeCCList, + parseCCList, +} from "@zwave-js/core/safe"; +import { SUC_UPDATE_ENTRY_SIZE, SUC_UPDATE_NODEPARM_MAX } from "../../consts"; + +export interface SUCUpdateEntry { + nodeId: number; + changeType: number; // TODO: This is some kind of enum + supportedCCs: CommandClasses[]; + controlledCCs: CommandClasses[]; +} + +export function parseSUCUpdateEntry( + buffer: Buffer, + offset: number, +): SUCUpdateEntry | undefined { + const slice = buffer.subarray(offset, offset + SUC_UPDATE_ENTRY_SIZE); + if (slice.every((b) => b === 0x00 || b === 0xff)) { + return; + } + const nodeId = slice[0]; + const changeType = slice[1]; + const { supportedCCs, controlledCCs } = parseCCList( + slice.subarray(2, SUC_UPDATE_ENTRY_SIZE), + ); + return { + nodeId, + changeType, + supportedCCs: supportedCCs.filter((cc) => cc > 0), + controlledCCs: controlledCCs.filter((cc) => cc > 0), + }; +} + +export function encodeSUCUpdateEntry( + entry: SUCUpdateEntry | undefined, +): Buffer { + const ret = Buffer.alloc(SUC_UPDATE_ENTRY_SIZE, 0); + if (entry) { + ret[0] = entry.nodeId; + ret[1] = entry.changeType; + const ccList = encodeCCList(entry.supportedCCs, entry.controlledCCs); + if (ccList.length > SUC_UPDATE_NODEPARM_MAX) { + throw new ZWaveError( + "Cannot encode SUC update entry, too many CCs", + ZWaveErrorCodes.Argument_Invalid, + ); + } + ccList.copy(ret, 2); + } + return ret; +} diff --git a/packages/nvmedit/src/lib/common/utils.ts b/packages/nvmedit/src/lib/common/utils.ts new file mode 100644 index 000000000000..c1ecbf171cfa --- /dev/null +++ b/packages/nvmedit/src/lib/common/utils.ts @@ -0,0 +1,75 @@ +import type { NVMIO } from "./definitions"; + +export async function nvmReadUInt32LE( + io: NVMIO, + position: number, +): Promise { + const { buffer } = await io.read(position, 4); + return buffer.readUInt32LE(0); +} + +export async function nvmReadUInt16LE( + io: NVMIO, + position: number, +): Promise { + const { buffer } = await io.read(position, 2); + return buffer.readUInt16LE(0); +} + +export async function nvmReadUInt32BE( + io: NVMIO, + position: number, +): Promise { + const { buffer } = await io.read(position, 4); + return buffer.readUInt32BE(0); +} + +export async function nvmReadUInt16BE( + io: NVMIO, + position: number, +): Promise { + const { buffer } = await io.read(position, 2); + return buffer.readUInt16BE(0); +} + +export async function nvmReadUInt8( + io: NVMIO, + position: number, +): Promise { + const { buffer } = await io.read(position, 1); + return buffer.readUInt8(0); +} + +export async function nvmWriteBuffer( + io: NVMIO, + position: number, + buffer: Buffer, +): Promise { + const chunkSize = await io.determineChunkSize(); + let offset = 0; + while (offset < buffer.length) { + const chunk = buffer.subarray(offset, offset + chunkSize); + const { bytesWritten } = await io.write(position + offset, chunk); + offset += bytesWritten; + } +} + +export async function nvmReadBuffer( + io: NVMIO, + position: number, + length: number, +): Promise { + const ret = Buffer.allocUnsafe(length); + const chunkSize = await io.determineChunkSize(); + let offset = 0; + while (offset < length) { + const { buffer, endOfFile } = await io.read( + position + offset, + Math.min(chunkSize, length - offset), + ); + buffer.copy(ret, offset); + offset += buffer.length; + if (endOfFile) break; + } + return ret.subarray(0, offset); +} diff --git a/packages/nvmedit/src/lib/io/BufferedNVMReader.ts b/packages/nvmedit/src/lib/io/BufferedNVMReader.ts new file mode 100644 index 000000000000..84fa990773ad --- /dev/null +++ b/packages/nvmedit/src/lib/io/BufferedNVMReader.ts @@ -0,0 +1,111 @@ +import { type NVMAccess, type NVMIO } from "../common/definitions"; + +interface BufferedChunk { + offset: number; + data: Buffer; +} + +export class BufferedNVMReader implements NVMIO { + public constructor(inner: NVMIO) { + this._inner = inner; + } + + private _inner: NVMIO; + // Already-read chunks. There are a few rules to follow: + // - Offsets MUST be multiples of the chunk size + // - The size of each chunk must be exactly the chunk size + private _buffer: BufferedChunk[] = []; + + open(access: NVMAccess.Read | NVMAccess.Write): Promise { + return this._inner.open(access); + } + get size(): number { + return this._inner.size; + } + get accessMode(): NVMAccess { + return this._inner.accessMode; + } + determineChunkSize(): Promise { + return this._inner.determineChunkSize(); + } + + private async readBuffered( + alignedOffset: number, + chunkSize: number, + ): Promise { + let buffered = this._buffer.find((chunk) => + chunk.offset === alignedOffset + ); + if (!buffered) { + const { buffer: data } = await this._inner.read( + alignedOffset, + chunkSize, + ); + buffered = { data, offset: alignedOffset }; + this._buffer.push(buffered); + } + return buffered.data; + } + + async read( + offset: number, + length: number, + ): Promise<{ buffer: Buffer; endOfFile: boolean }> { + // Limit the read size to the chunk size. This ensures we have to deal with maximum 2 chunks or read requests + const chunkSize = await this.determineChunkSize(); + length = Math.min(length, chunkSize); + + // Figure out at which offsets to read + const firstChunkStart = offset - offset % chunkSize; + const secondChunkStart = (offset + length) + - (offset + length) % chunkSize; + + // Read one or two chunks, depending on how many are needed + const chunks: Buffer[] = []; + chunks.push(await this.readBuffered(firstChunkStart, chunkSize)); + if (secondChunkStart > firstChunkStart) { + chunks.push(await this.readBuffered(secondChunkStart, chunkSize)); + } + const alignedBuffer = Buffer.concat(chunks); + + // Then slice out the section we need + const endOfFile = offset + length >= this.size; + const buffer = alignedBuffer.subarray( + offset - firstChunkStart, + offset - firstChunkStart + length, + ); + + return { + buffer, + endOfFile, + }; + } + + async write( + offset: number, + data: Buffer, + ): Promise<{ bytesWritten: number; endOfFile: boolean }> { + const ret = await this._inner.write(offset, data); + + // Invalidate cached chunks + const chunkSize = await this.determineChunkSize(); + // Figure out at which offsets to read + const firstChunkStart = offset - offset % chunkSize; + const lastChunkStart = (offset + ret.bytesWritten) + - (offset + ret.bytesWritten) % chunkSize; + + // TODO: We should update existing chunks where possible + for (let i = firstChunkStart; i <= lastChunkStart; i += chunkSize) { + const index = this._buffer.findIndex((chunk) => chunk.offset === i); + if (index !== -1) { + this._buffer.splice(index, 1); + } + } + + return ret; + } + + close(): Promise { + return this._inner.close(); + } +} diff --git a/packages/nvmedit/src/lib/io/NVMFileIO.ts b/packages/nvmedit/src/lib/io/NVMFileIO.ts new file mode 100644 index 000000000000..8c683b351c64 --- /dev/null +++ b/packages/nvmedit/src/lib/io/NVMFileIO.ts @@ -0,0 +1,112 @@ +import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core"; +import fs, { type FileHandle } from "node:fs/promises"; +import { NVMAccess, type NVMIO } from "../common/definitions"; + +/** An implementation of NVMIO for the filesystem */ +export class NVMFileIO implements NVMIO { + public constructor(path: string) { + this._path = path; + this._accessMode = NVMAccess.None; + } + + private _path: string; + private _handle: FileHandle | undefined; + private _chunkSize = 16 * 1024; // We could read more, but 16 KB chunks are more than enough for reading NVM contents + + async open(access: NVMAccess): Promise { + let flags: string; + switch (access) { + case NVMAccess.Read: + flags = "r"; + break; + case NVMAccess.Write: + case NVMAccess.ReadWrite: + // Read/Write, don't create, don't truncate + flags = "r+"; + access = NVMAccess.ReadWrite; + break; + default: + throw new Error("Invalid access mode"); + } + this._handle = await fs.open(this._path, flags); + this._size = (await this._handle.stat()).size; + + this._accessMode = access; + return access; + } + + private _size: number | undefined; + get size(): number { + if (this._size == undefined) { + throw new ZWaveError( + "The NVM file is not open", + ZWaveErrorCodes.NVM_NotOpen, + ); + } + return this._size; + } + + private _accessMode: NVMAccess; + get accessMode(): NVMAccess { + return this._accessMode; + } + + determineChunkSize(): Promise { + return Promise.resolve(this._chunkSize); + } + + async read( + offset: number, + length: number, + ): Promise<{ buffer: Buffer; endOfFile: boolean }> { + if (this._handle == undefined) { + throw new ZWaveError( + "The NVM file is not open", + ZWaveErrorCodes.NVM_NotOpen, + ); + } + const readResult = await this._handle.read({ + buffer: Buffer.alloc(length), + position: offset, + }); + + const endOfFile = offset + readResult.bytesRead >= this.size; + return { + buffer: readResult.buffer.subarray(0, readResult.bytesRead), + endOfFile, + }; + } + + async write( + offset: number, + data: Buffer, + ): Promise<{ bytesWritten: number; endOfFile: boolean }> { + if (this._handle == undefined) { + throw new ZWaveError( + "The NVM file is not open", + ZWaveErrorCodes.NVM_NotOpen, + ); + } + if (offset + data.length > this.size) { + throw new ZWaveError( + "Write would exceed the NVM size", + ZWaveErrorCodes.NVM_NoSpace, + ); + } + const writeResult = await this._handle.write( + data, + 0, + data.length, + offset, + ); + const endOfFile = offset + writeResult.bytesWritten >= this.size; + return { bytesWritten: writeResult.bytesWritten, endOfFile }; + } + + async close(): Promise { + await this._handle?.close(); + this._handle = undefined; + this._accessMode = NVMAccess.None; + this._size = undefined; + } +} diff --git a/packages/nvmedit/src/lib/io/NVMMemoryIO.ts b/packages/nvmedit/src/lib/io/NVMMemoryIO.ts new file mode 100644 index 000000000000..01f34a88ada0 --- /dev/null +++ b/packages/nvmedit/src/lib/io/NVMMemoryIO.ts @@ -0,0 +1,62 @@ +import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core"; +import { NVMAccess, type NVMIO } from "../common/definitions"; + +/** An im-memory implementation of NVMIO */ +export class NVMMemoryIO implements NVMIO { + public constructor(buffer: Buffer) { + this._buffer = buffer; + } + + private _buffer: Buffer; + + open(_access: NVMAccess.Read | NVMAccess.Write): Promise { + // Nothing to do + return Promise.resolve(NVMAccess.ReadWrite); + } + + get size(): number { + return this._buffer.length; + } + + get accessMode(): NVMAccess { + return NVMAccess.ReadWrite; + } + + determineChunkSize(): Promise { + // We can read the entire buffer at once + return Promise.resolve(this._buffer.length); + } + + read( + offset: number, + length: number, + ): Promise<{ buffer: Buffer; endOfFile: boolean }> { + return Promise.resolve({ + buffer: this._buffer.subarray(offset, offset + length), + endOfFile: offset + length >= this._buffer.length, + }); + } + + write( + offset: number, + data: Buffer, + ): Promise<{ bytesWritten: number; endOfFile: boolean }> { + if (offset + data.length > this.size) { + throw new ZWaveError( + "Write would exceed the NVM size", + ZWaveErrorCodes.NVM_NoSpace, + ); + } + + data.copy(this._buffer, offset, 0, data.length); + return Promise.resolve({ + bytesWritten: data.length, + endOfFile: offset + data.length >= this._buffer.length, + }); + } + + close(): Promise { + // Nothing to do + return Promise.resolve(); + } +} diff --git a/packages/nvmedit/src/lib/nvm3/adapter.ts b/packages/nvmedit/src/lib/nvm3/adapter.ts new file mode 100644 index 000000000000..b2145b878d44 --- /dev/null +++ b/packages/nvmedit/src/lib/nvm3/adapter.ts @@ -0,0 +1,1290 @@ +import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core"; +import { num2hex } from "@zwave-js/shared"; +import { assertNever } from "alcalzone-shared/helpers"; +import { SUC_MAX_UPDATES } from "../../consts"; +import { type NVM3 } from "../NVM3"; +import { + type ControllerNVMProperty, + type LRNodeNVMProperty, + type NVMAdapter, + type NVMProperty, + type NVMPropertyToDataType, + type NodeNVMProperty, +} from "../common/definitions"; +import { type RouteCache } from "../common/routeCache"; +import { + type ApplicationCCsFile, + ApplicationCCsFileID, + ApplicationDataFile, + ApplicationDataFileID, + ApplicationNameFile, + ApplicationNameFileID, + type ApplicationRFConfigFile, + ApplicationRFConfigFileID, + type ApplicationTypeFile, + ApplicationTypeFileID, + type ApplicationVersionFile, + type ApplicationVersionFile800, + ApplicationVersionFile800ID, + ApplicationVersionFileID, + type ControllerInfoFile, + ControllerInfoFileID, + LRNodeInfoFileV5, + NVMFile, + NodeInfoFileV0, + NodeInfoFileV1, + ProtocolAppRouteLockNodeMaskFile, + ProtocolAppRouteLockNodeMaskFileID, + ProtocolLRNodeListFile, + ProtocolLRNodeListFileID, + ProtocolNodeListFile, + ProtocolNodeListFileID, + ProtocolPendingDiscoveryNodeMaskFile, + ProtocolPendingDiscoveryNodeMaskFileID, + ProtocolPreferredRepeatersFile, + ProtocolPreferredRepeatersFileID, + ProtocolRouteCacheExistsNodeMaskFile, + ProtocolRouteCacheExistsNodeMaskFileID, + ProtocolRouteSlaveSUCNodeMaskFile, + ProtocolRouteSlaveSUCNodeMaskFileID, + ProtocolSUCPendingUpdateNodeMaskFile, + ProtocolSUCPendingUpdateNodeMaskFileID, + type ProtocolVersionFile, + ProtocolVersionFileID, + ProtocolVirtualNodeMaskFile, + ProtocolVirtualNodeMaskFileID, + RouteCacheFileV0, + RouteCacheFileV1, + SUCUpdateEntriesFileIDV0, + SUCUpdateEntriesFileV0, + SUCUpdateEntriesFileV5, + SUCUpdateEntriesFileV5IDBase, + SUCUpdateEntriesFileV5IDMax, + SUC_UPDATES_PER_FILE_V5, + getNVMSectionByFileID, + nodeIdToLRNodeInfoFileIDV5, + nodeIdToNodeInfoFileIDV0, + nodeIdToNodeInfoFileIDV1, + nodeIdToRouteCacheFileIDV0, + nodeIdToRouteCacheFileIDV1, + sucUpdateIndexToSUCUpdateEntriesFileIDV5, +} from "./files"; + +const DEFAULT_FILE_VERSION = "7.0.0"; + +export class NVM3Adapter implements NVMAdapter { + public constructor(nvm: NVM3) { + this._nvm = nvm; + } + + private _nvm: NVM3; + private _initialized: boolean = false; + + private _protocolInfo: { + version: string; + format: number; + } | undefined; + private _applicationInfo: { + version: string; + format: number; + } | undefined; + + /** A list of pending changes that haven't been written to the NVM yet. `null` indicates a deleted entry. */ + private _pendingChanges: Map = new Map(); + + private getFileVersion(fileId: number): string { + if ( + fileId === ProtocolVersionFileID + || fileId === ApplicationVersionFileID + || fileId === ApplicationVersionFile800ID + ) { + return DEFAULT_FILE_VERSION; + } + const section = getNVMSectionByFileID(fileId); + if (section === "application") { + return this._applicationInfo?.version ?? DEFAULT_FILE_VERSION; + } else if (section === "protocol") { + return this._protocolInfo?.version ?? DEFAULT_FILE_VERSION; + } + + return DEFAULT_FILE_VERSION; + } + + private async init(): Promise { + if (!this._protocolInfo) { + const protocolVersionFile = await this._getFile< + ProtocolVersionFile + >( + ProtocolVersionFileID, + true, + ); + if (protocolVersionFile) { + const version = + `${protocolVersionFile.major}.${protocolVersionFile.minor}.${protocolVersionFile.patch}`; + this._protocolInfo = { + version, + format: protocolVersionFile.format, + }; + } + } + + if (!this._applicationInfo) { + const applicationVersionFile700 = await this._getFile< + ApplicationVersionFile + >(ApplicationVersionFileID, true); + const applicationVersionFile800 = await this._getFile< + ApplicationVersionFile800 + >(ApplicationVersionFile800ID, true); + const applicationVersionFile = applicationVersionFile700 + ?? applicationVersionFile800; + + if (applicationVersionFile) { + const version = + `${applicationVersionFile.major}.${applicationVersionFile.minor}.${applicationVersionFile.patch}`; + this._applicationInfo = { + version, + format: applicationVersionFile.format, + }; + } + } + + this._initialized = true; + } + + /** Adds a complete file to the list of pending changes */ + public setFile(file: NVMFile): void { + const { key, data } = file.serialize(); + this._pendingChanges.set(key, data); + } + + public async hasFile(fileId: number): Promise { + if (!this._initialized) await this.init(); + + if (this._pendingChanges.has(fileId)) { + return this._pendingChanges.get(fileId) !== null; + } else { + return this._nvm.has(fileId); + } + } + + private async _getFile( + fileId: number, + skipInit: boolean = false, + ): Promise { + if (!skipInit && !this._initialized) await this.init(); + + // Prefer pending changes over the actual NVM, so changes can be composed + let data: Buffer | null | undefined; + if (this._pendingChanges.has(fileId)) { + data = this._pendingChanges.get(fileId); + } else { + data = await this._nvm.get(fileId); + } + if (!data) return; + + const fileVersion = this.getFileVersion(fileId); + return NVMFile.from(fileId, data, fileVersion) as T; + } + + private async _expectFile( + fileId: number, + skipInit: boolean = false, + ): Promise { + const file = await this._getFile(fileId, skipInit); + if (!file) { + throw new ZWaveError( + `NVM file ${num2hex(fileId)} not found`, + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } + return file; + } + + public getFile( + fileId: number, + required: true, + ): Promise; + + public getFile( + fileId: number, + required?: false, + ): Promise; + + public getFile( + fileId: number, + required?: boolean, + ): Promise { + if (required) { + return this._expectFile(fileId) as any; + } else { + return this._getFile(fileId) as any; + } + } + + public get( + property: T, + required?: R, + ): Promise< + R extends true ? NVMPropertyToDataType + : (NVMPropertyToDataType | undefined) + > { + if (property.domain === "controller") { + return this.getControllerNVMProperty(property, !!required) as any; + } else if (property.domain === "lrnode") { + return this.getLRNodeNVMProperty(property, !!required) as any; + } else { + return this.getNodeNVMProperty(property, !!required) as any; + } + } + + private async getControllerNVMProperty( + property: ControllerNVMProperty, + required: boolean, + ): Promise { + const getFile = (fileId: number) => { + if (required) { + return this._expectFile(fileId); + } else { + return this._getFile(fileId); + } + }; + + switch (property.type) { + case "protocolVersion": { + const file = await getFile( + ProtocolVersionFileID, + ); + if (!file) return; + return `${file.major}.${file.minor}.${file.patch}`; + } + case "protocolFileFormat": { + const file = await getFile( + ProtocolVersionFileID, + ); + return file?.format; + } + case "applicationVersion": + case "applicationFileFormat": { + const file700 = await this._getFile( + ApplicationVersionFileID, + ); + const file800 = await this._getFile( + ApplicationVersionFile800ID, + ); + const file = file700 ?? file800; + + if (!file) { + if (required) { + throw new ZWaveError( + "ApplicationVersionFile not found!", + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } else { + return; + } + } + + if (property.type === "applicationVersion") { + return `${file.major}.${file.minor}.${file.patch}`; + } else if (property.type === "applicationFileFormat") { + return file?.format; + } + } + + case "applicationData": { + const file = await getFile( + ApplicationDataFileID, + ); + return file?.applicationData; + } + + case "applicationName": { + const file = await getFile( + ApplicationNameFileID, + ); + return file?.name; + } + + case "homeId": + case "nodeId": + case "lastNodeId": + case "staticControllerNodeId": + case "sucLastIndex": + case "controllerConfiguration": + case "sucAwarenessPushNeeded": + case "maxNodeId": + case "reservedId": + case "systemState": + case "lastNodeIdLR": + case "maxNodeIdLR": + case "reservedIdLR": + case "primaryLongRangeChannelId": + case "dcdcConfig": { + const file = await getFile( + ControllerInfoFileID, + ); + return file?.[property.type]; + } + + case "includedInsecurely": + case "includedSecurelyInsecureCCs": + case "includedSecurelySecureCCs": { + const file = await getFile( + ApplicationCCsFileID, + ); + return file?.[property.type]; + } + + case "rfRegion": + case "txPower": + case "measured0dBm": + case "enablePTI": + case "maxTXPower": + case "nodeIdType": { + const file = await getFile( + ApplicationRFConfigFileID, + ); + return file?.[property.type]; + } + + case "isListening": + case "optionalFunctionality": + case "genericDeviceClass": + case "specificDeviceClass": { + const file = await getFile( + ApplicationTypeFileID, + ); + return file?.[property.type]; + } + + case "preferredRepeaters": { + const file = await getFile( + ProtocolPreferredRepeatersFileID, + ); + return file?.nodeIds; + } + + case "appRouteLock": { + const file = await getFile< + ProtocolAppRouteLockNodeMaskFile + >( + ProtocolAppRouteLockNodeMaskFileID, + ); + return file?.nodeIds; + } + case "routeSlaveSUC": { + const file = await getFile< + ProtocolRouteSlaveSUCNodeMaskFile + >( + ProtocolRouteSlaveSUCNodeMaskFileID, + ); + return file?.nodeIds; + } + case "sucPendingUpdate": { + const file = await getFile< + ProtocolSUCPendingUpdateNodeMaskFile + >( + ProtocolSUCPendingUpdateNodeMaskFileID, + ); + return file?.nodeIds; + } + case "pendingDiscovery": { + const file = await getFile< + ProtocolPendingDiscoveryNodeMaskFile + >( + ProtocolPendingDiscoveryNodeMaskFileID, + ); + return file?.nodeIds; + } + + case "nodeIds": { + const file = await getFile( + ProtocolNodeListFileID, + ); + return file?.nodeIds; + } + + case "lrNodeIds": { + const file = await getFile( + ProtocolLRNodeListFileID, + ); + return file?.nodeIds; + } + + case "virtualNodeIds": { + const file = await getFile( + ProtocolVirtualNodeMaskFileID, + ); + return file?.nodeIds; + } + + case "sucUpdateEntries": { + if (this._protocolInfo!.format < 5) { + const file = await getFile( + SUCUpdateEntriesFileIDV0, + ); + return file?.updateEntries; + } else { + // V5 has split the entries into multiple files + const updateEntries = []; + for ( + let index = 0; + index < SUC_MAX_UPDATES; + index += SUC_UPDATES_PER_FILE_V5 + ) { + // None of the files are required + const file = await this._getFile< + SUCUpdateEntriesFileV5 + >( + sucUpdateIndexToSUCUpdateEntriesFileIDV5(index), + ); + if (!file) break; + updateEntries.push(...file.updateEntries); + } + return updateEntries; + } + } + + case "learnedHomeId": + case "commandClasses": + case "watchdogStarted": + case "powerLevelNormal": + case "powerLevelLow": + case "powerMode": + case "powerModeExtintEnable": + case "powerModeWutTimeout": + // 500 series only, not supported on 700+ + return; + + default: + assertNever(property.type); + } + } + + private async getNodeNVMProperty( + property: NodeNVMProperty, + required: boolean, + ): Promise { + const getFile = (fileId: number) => { + if (required) { + return this._expectFile(fileId); + } else { + return this._getFile(fileId); + } + }; + + switch (property.type) { + case "info": { + if (this._protocolInfo!.format < 1) { + const file = await getFile( + nodeIdToNodeInfoFileIDV0( + property.nodeId, + ), + ); + return file?.nodeInfo; + } else { + const file = await getFile( + nodeIdToNodeInfoFileIDV1( + property.nodeId, + ), + ); + return file?.nodeInfos.find((info) => + info.nodeId === property.nodeId + ); + } + } + + case "routes": { + // The existence of routes is stored separately + const nodeMaskFile = await this.getFile< + ProtocolRouteCacheExistsNodeMaskFile + >(ProtocolRouteCacheExistsNodeMaskFileID); + + // If the node is not marked as having routes, don't try to read them + if (!nodeMaskFile) return; + if (!nodeMaskFile.nodeIdSet.has(property.nodeId)) return; + + let routeCache: RouteCache | undefined; + if (this._protocolInfo!.format < 1) { + const file = await getFile( + nodeIdToRouteCacheFileIDV0(property.nodeId), + ); + routeCache = file?.routeCache; + } else { + const file = await getFile( + nodeIdToRouteCacheFileIDV1(property.nodeId), + ); + routeCache = file?.routeCaches.find((route) => + route.nodeId === property.nodeId + ); + } + if (!routeCache) return; + return { + lwr: routeCache.lwr, + nlwr: routeCache.nlwr, + }; + } + + default: + assertNever(property.type); + } + } + + private async getLRNodeNVMProperty( + property: LRNodeNVMProperty, + required: boolean, + ): Promise { + const getFile = (fileId: number) => { + if (required) { + return this._expectFile(fileId); + } else { + return this._getFile(fileId); + } + }; + + switch (property.type) { + case "info": { + const file = await getFile( + nodeIdToLRNodeInfoFileIDV5(property.nodeId), + ); + return file?.nodeInfos.find((info) => + info.nodeId === property.nodeId + ); + } + + default: + assertNever(property.type); + } + } + + public async set( + property: T, + value: NVMPropertyToDataType, + ): Promise { + if (!this._initialized) await this.init(); + + if (property.domain === "controller") { + return this.setControllerNVMProperty(property, value); + } else if (property.domain === "lrnode") { + return this.setLRNodeNVMProperty(property, value); + } else { + return this.setNodeNVMProperty(property, value); + } + } + + private async setControllerNVMProperty( + property: ControllerNVMProperty, + value: any, + ): Promise { + function failFileMissing(): never { + throw new ZWaveError( + "Cannot set property in NVM for non-existing file", + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } + + const expectFile = async ( + fileId: number, + ): Promise => { + const file = await this._getFile(fileId); + if (!file) failFileMissing(); + return file; + }; + + const changedFiles: NVMFile[] = []; + const deletedFiles: number[] = []; + + switch (property.type) { + case "protocolVersion": { + const file = await expectFile( + ProtocolVersionFileID, + ); + const [major, minor, patch] = (value as string).split(".") + .map((part) => parseInt(part, 10)); + file.major = major; + file.minor = minor; + file.patch = patch; + changedFiles.push(file); + break; + } + case "protocolFileFormat": { + const file = await expectFile( + ProtocolVersionFileID, + ); + file.format = value; + changedFiles.push(file); + break; + } + case "applicationVersion": { + const file700 = await this._getFile( + ApplicationVersionFileID, + ); + const file800 = await this._getFile( + ApplicationVersionFile800ID, + ); + const file = file700 ?? file800; + if (!file) { + throw new ZWaveError( + "ApplicationVersionFile not found!", + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } + + const [major, minor, patch] = (value as string).split(".") + .map((part) => parseInt(part, 10)); + file.major = major; + file.minor = minor; + file.patch = patch; + changedFiles.push(file); + break; + } + case "applicationFileFormat": { + const file = await expectFile( + ApplicationVersionFileID, + ); + file.format = value; + changedFiles.push(file); + break; + } + + case "applicationData": { + const file = new ApplicationDataFile({ + applicationData: value, + fileVersion: this.getFileVersion(ApplicationDataFileID), + }); + file.applicationData = value; + changedFiles.push(file); + break; + } + + case "applicationName": { + const file = new ApplicationNameFile({ + name: value, + fileVersion: this.getFileVersion(ApplicationNameFileID), + }); + changedFiles.push(file); + break; + } + + case "homeId": + case "nodeId": + case "lastNodeId": + case "staticControllerNodeId": + case "sucLastIndex": + case "controllerConfiguration": + case "sucAwarenessPushNeeded": + case "maxNodeId": + case "reservedId": + case "systemState": + case "lastNodeIdLR": + case "maxNodeIdLR": + case "reservedIdLR": + case "primaryLongRangeChannelId": + case "dcdcConfig": { + const file = await expectFile( + ControllerInfoFileID, + ); + file[property.type] = value; + changedFiles.push(file); + break; + } + + case "includedInsecurely": + case "includedSecurelyInsecureCCs": + case "includedSecurelySecureCCs": { + const file = await expectFile( + ApplicationCCsFileID, + ); + file[property.type] = value; + changedFiles.push(file); + break; + } + + case "rfRegion": + case "txPower": + case "measured0dBm": + case "enablePTI": + case "maxTXPower": + case "nodeIdType": { + const file = await expectFile( + ApplicationRFConfigFileID, + ); + (file as any)[property.type] = value; + changedFiles.push(file); + break; + } + + case "isListening": + case "optionalFunctionality": + case "genericDeviceClass": + case "specificDeviceClass": { + const file = await expectFile( + ApplicationTypeFileID, + ); + (file as any)[property.type] = value; + changedFiles.push(file); + break; + } + + case "nodeIds": { + const file = await this._getFile( + ProtocolNodeListFileID, + ) ?? new ProtocolNodeListFile({ + nodeIds: [], + fileVersion: this.getFileVersion(ProtocolNodeListFileID), + }); + file.nodeIds = value; + changedFiles.push(file); + break; + } + + case "lrNodeIds": { + const file = await this._getFile( + ProtocolLRNodeListFileID, + ) ?? new ProtocolLRNodeListFile({ + nodeIds: [], + fileVersion: this.getFileVersion(ProtocolLRNodeListFileID), + }); + file.nodeIds = value; + changedFiles.push(file); + break; + } + + case "virtualNodeIds": { + const file = await this._getFile( + ProtocolVirtualNodeMaskFileID, + ) ?? new ProtocolVirtualNodeMaskFile({ + nodeIds: [], + fileVersion: this.getFileVersion( + ProtocolVirtualNodeMaskFileID, + ), + }); + file.nodeIds = value; + changedFiles.push(file); + break; + } + + case "preferredRepeaters": { + const file = new ProtocolPreferredRepeatersFile({ + nodeIds: value, + fileVersion: this.getFileVersion( + ProtocolPreferredRepeatersFileID, + ), + }); + changedFiles.push(file); + break; + } + + case "appRouteLock": { + const file = new ProtocolAppRouteLockNodeMaskFile({ + nodeIds: value, + fileVersion: this.getFileVersion( + ProtocolAppRouteLockNodeMaskFileID, + ), + }); + changedFiles.push(file); + break; + } + case "routeSlaveSUC": { + const file = new ProtocolRouteSlaveSUCNodeMaskFile({ + nodeIds: value, + fileVersion: this.getFileVersion( + ProtocolRouteSlaveSUCNodeMaskFileID, + ), + }); + changedFiles.push(file); + break; + } + case "sucPendingUpdate": { + const file = new ProtocolSUCPendingUpdateNodeMaskFile({ + nodeIds: value, + fileVersion: this.getFileVersion( + ProtocolSUCPendingUpdateNodeMaskFileID, + ), + }); + changedFiles.push(file); + break; + } + case "pendingDiscovery": { + const file = new ProtocolPendingDiscoveryNodeMaskFile({ + nodeIds: value, + fileVersion: this.getFileVersion( + ProtocolPendingDiscoveryNodeMaskFileID, + ), + }); + changedFiles.push(file); + break; + } + + case "sucUpdateEntries": { + if (this._protocolInfo!.format < 5) { + const file = new SUCUpdateEntriesFileV0({ + updateEntries: value, + fileVersion: this.getFileVersion( + SUCUpdateEntriesFileIDV0, + ), + }); + changedFiles.push(file); + break; + } else { + // V5 has split the entries into multiple files + for ( + let index = 0; + index < SUC_MAX_UPDATES; + index += SUC_UPDATES_PER_FILE_V5 + ) { + const fileId = sucUpdateIndexToSUCUpdateEntriesFileIDV5( + index, + ); + const fileExists = await this.hasFile(fileId); + const fileVersion = this.getFileVersion(fileId); + const slice = value.slice( + index, + index + SUC_UPDATES_PER_FILE_V5, + ); + if (slice.length > 0) { + const file = new SUCUpdateEntriesFileV5({ + updateEntries: slice, + fileId, + fileVersion, + }); + changedFiles.push(file); + } else if (fileExists) { + deletedFiles.push(fileId); + } + } + } + break; + } + + case "learnedHomeId": + case "commandClasses": + case "watchdogStarted": + case "powerLevelNormal": + case "powerLevelLow": + case "powerMode": + case "powerModeExtintEnable": + case "powerModeWutTimeout": + // 500 series only, not supported on 700+ + return; + + default: + assertNever(property.type); + } + + for (const file of changedFiles) { + const { key, data } = file.serialize(); + this._pendingChanges.set(key, data); + } + for (const file of deletedFiles) { + this._pendingChanges.set(file, null); + } + } + + private async setLRNodeNVMProperty( + property: LRNodeNVMProperty, + value: any, + ): Promise { + const changedFiles: NVMFile[] = []; + const deletedFiles: number[] = []; + + switch (property.type) { + case "info": { + const fileId = nodeIdToLRNodeInfoFileIDV5(property.nodeId); + let file = await this._getFile( + fileId, + ); + if (value) { + // Info added or modified + file ??= new LRNodeInfoFileV5({ + nodeInfos: [], + fileVersion: this.getFileVersion(fileId), + }); + const existingIndex = file.nodeInfos.findIndex( + (info) => info.nodeId === property.nodeId, + ); + if (existingIndex !== -1) { + file.nodeInfos[existingIndex] = value; + } else { + file.nodeInfos.push(value); + } + changedFiles.push(file); + } else if (file) { + // info deleted + const existingIndex = file.nodeInfos.findIndex( + (info) => info.nodeId === property.nodeId, + ); + if (existingIndex !== -1) { + file.nodeInfos.splice(existingIndex, 1); + if (file.nodeInfos.length === 0) { + deletedFiles.push(fileId); + } else { + changedFiles.push(file); + } + } + } + + break; + } + + default: + assertNever(property.type); + } + + for (const file of changedFiles) { + const { key, data } = file.serialize(); + this._pendingChanges.set(key, data); + } + for (const file of deletedFiles) { + this._pendingChanges.set(file, null); + } + } + + private async setNodeNVMProperty( + property: NodeNVMProperty, + value: any, + ): Promise { + const changedFiles: NVMFile[] = []; + const deletedFiles: number[] = []; + + switch (property.type) { + case "info": { + if (this._protocolInfo!.format < 1) { + // V0, single node info per file + const fileId = nodeIdToNodeInfoFileIDV0(property.nodeId); + let file = await this._getFile(fileId); + if (value) { + // Info added or modified + file ??= new NodeInfoFileV0({ + nodeInfo: undefined as any, + fileVersion: this.getFileVersion(fileId), + }); + file.nodeInfo = value; + changedFiles.push(file); + } else { + // info deleted + deletedFiles.push(fileId); + } + } else { + // V1+, multiple node infos per file + const fileId = nodeIdToNodeInfoFileIDV1(property.nodeId); + let file = await this._getFile( + fileId, + ); + if (value) { + // Info added or modified + file ??= new NodeInfoFileV1({ + nodeInfos: [], + fileVersion: this.getFileVersion(fileId), + }); + const existingIndex = file.nodeInfos.findIndex( + (info) => info.nodeId === property.nodeId, + ); + if (existingIndex !== -1) { + file.nodeInfos[existingIndex] = value; + } else { + file.nodeInfos.push(value); + } + changedFiles.push(file); + } else if (file) { + // info deleted + const existingIndex = file.nodeInfos.findIndex( + (info) => info.nodeId === property.nodeId, + ); + if (existingIndex !== -1) { + file.nodeInfos.splice(existingIndex, 1); + if (file.nodeInfos.length === 0) { + deletedFiles.push(fileId); + } else { + changedFiles.push(file); + } + } + } + } + + break; + } + + case "routes": { + if (this._protocolInfo!.format < 1) { + // V0, single route per file + const fileId = nodeIdToRouteCacheFileIDV0(property.nodeId); + let file = await this._getFile(fileId); + if (value) { + // Route added or modified + file ??= new RouteCacheFileV0({ + routeCache: undefined as any, + fileVersion: this.getFileVersion(fileId), + }); + file.routeCache = { + nodeId: property.nodeId, + lwr: value.lwr, + nlwr: value.nlwr, + }; + changedFiles.push(file); + } else if (file) { + // Route deleted + deletedFiles.push(fileId); + } + } else { + // V1+, multiple routes per file + const fileId = nodeIdToRouteCacheFileIDV1(property.nodeId); + const file = await this._getFile( + fileId, + ) ?? new RouteCacheFileV1({ + routeCaches: [], + fileVersion: this.getFileVersion(fileId), + }); + const existingIndex = file.routeCaches.findIndex( + (route) => route.nodeId === property.nodeId, + ); + const newRoute: RouteCache = { + nodeId: property.nodeId, + lwr: value.lwr, + nlwr: value.nlwr, + }; + if (existingIndex !== -1) { + file.routeCaches[existingIndex] = newRoute; + } else { + file.routeCaches.push(newRoute); + } + changedFiles.push(file); + } + + // The existence of routes is stored separately + const nodeMaskFile = await this._getFile< + ProtocolRouteCacheExistsNodeMaskFile + >(ProtocolRouteCacheExistsNodeMaskFileID) + ?? new ProtocolRouteCacheExistsNodeMaskFile({ + nodeIds: [], + fileVersion: this.getFileVersion( + ProtocolRouteCacheExistsNodeMaskFileID, + ), + }); + + if (!value && nodeMaskFile.nodeIdSet.has(property.nodeId)) { + nodeMaskFile.nodeIdSet.delete(property.nodeId); + changedFiles.push(nodeMaskFile); + } else if ( + value && !nodeMaskFile.nodeIdSet.has(property.nodeId) + ) { + nodeMaskFile.nodeIdSet.add(property.nodeId); + changedFiles.push(nodeMaskFile); + } + + break; + } + + default: + assertNever(property.type); + } + + for (const file of changedFiles) { + const { key, data } = file.serialize(); + this._pendingChanges.set(key, data); + } + for (const file of deletedFiles) { + this._pendingChanges.set(file, null); + } + } + + public async delete( + property: NVMProperty, + ): Promise { + if (property.domain === "controller") { + switch (property.type) { + case "protocolVersion": + case "protocolFileFormat": { + this._pendingChanges.set(ProtocolVersionFileID, null); + return; + } + + case "applicationVersion": + case "applicationFileFormat": { + if (await this.hasFile(ApplicationVersionFileID)) { + this._pendingChanges.set( + ApplicationVersionFileID, + null, + ); + } + if (await this.hasFile(ApplicationVersionFile800ID)) { + this._pendingChanges.set( + ApplicationVersionFile800ID, + null, + ); + } + return; + } + + case "applicationData": { + this._pendingChanges.set(ApplicationDataFileID, null); + return; + } + + case "applicationName": { + this._pendingChanges.set(ApplicationNameFileID, null); + return; + } + + case "homeId": + case "nodeId": + case "lastNodeId": + case "staticControllerNodeId": + case "sucLastIndex": + case "controllerConfiguration": + case "sucAwarenessPushNeeded": + case "maxNodeId": + case "reservedId": + case "systemState": + case "lastNodeIdLR": + case "maxNodeIdLR": + case "reservedIdLR": + case "primaryLongRangeChannelId": + case "dcdcConfig": { + this._pendingChanges.set(ControllerInfoFileID, null); + return; + } + + case "includedInsecurely": + case "includedSecurelyInsecureCCs": + case "includedSecurelySecureCCs": { + this._pendingChanges.set(ApplicationCCsFileID, null); + return; + } + + case "rfRegion": + case "txPower": + case "measured0dBm": + case "enablePTI": + case "maxTXPower": + case "nodeIdType": { + this._pendingChanges.set(ApplicationRFConfigFileID, null); + return; + } + + case "isListening": + case "optionalFunctionality": + case "genericDeviceClass": + case "specificDeviceClass": { + this._pendingChanges.set(ApplicationTypeFileID, null); + return; + } + + case "nodeIds": { + this._pendingChanges.set( + ProtocolNodeListFileID, + null, + ); + return; + } + + case "lrNodeIds": { + this._pendingChanges.set( + ProtocolLRNodeListFileID, + null, + ); + return; + } + + case "virtualNodeIds": { + this._pendingChanges.set( + ProtocolVirtualNodeMaskFileID, + null, + ); + return; + } + + case "preferredRepeaters": { + this._pendingChanges.set( + ProtocolPreferredRepeatersFileID, + null, + ); + return; + } + + case "appRouteLock": { + this._pendingChanges.set( + ProtocolAppRouteLockNodeMaskFileID, + null, + ); + return; + } + case "routeSlaveSUC": { + this._pendingChanges.set( + ProtocolRouteSlaveSUCNodeMaskFileID, + null, + ); + return; + } + case "sucPendingUpdate": { + this._pendingChanges.set( + ProtocolSUCPendingUpdateNodeMaskFileID, + null, + ); + return; + } + case "pendingDiscovery": { + this._pendingChanges.set( + ProtocolPendingDiscoveryNodeMaskFileID, + null, + ); + return; + } + + case "sucUpdateEntries": { + if (this._protocolInfo!.format < 5) { + this._pendingChanges.set( + SUCUpdateEntriesFileIDV0, + null, + ); + } else { + for ( + let id = SUCUpdateEntriesFileV5IDBase; + id <= SUCUpdateEntriesFileV5IDMax; + id++ + ) { + if (await this.hasFile(id)) { + this._pendingChanges.set(id, null); + } + } + } + return; + } + + case "learnedHomeId": + case "commandClasses": + case "watchdogStarted": + case "powerLevelNormal": + case "powerLevelLow": + case "powerMode": + case "powerModeExtintEnable": + case "powerModeWutTimeout": + // 500 series only, not supported on 700+ + return; + + default: + assertNever(property); + } + } else if ( + property.domain === "lrnode" + ) { + // Node properties are handled by set(..., undefined) because + // it requires both modifying and deleting files + return this.setLRNodeNVMProperty(property, undefined); + } else if ( + property.domain === "node" + ) { + // Node properties are handled by set(..., undefined) because + // it requires both modifying and deleting files + return this.setNodeNVMProperty(property, undefined); + } + } + + public hasPendingChanges(): boolean { + return this._pendingChanges.size > 0; + } + + public async commit(): Promise { + await this._nvm.setMany([...this._pendingChanges]); + } +} diff --git a/packages/nvmedit/src/nvm3/consts.ts b/packages/nvmedit/src/lib/nvm3/consts.ts similarity index 100% rename from packages/nvmedit/src/nvm3/consts.ts rename to packages/nvmedit/src/lib/nvm3/consts.ts diff --git a/packages/nvmedit/src/files/ApplicationCCsFile.ts b/packages/nvmedit/src/lib/nvm3/files/ApplicationCCsFile.ts similarity index 91% rename from packages/nvmedit/src/files/ApplicationCCsFile.ts rename to packages/nvmedit/src/lib/nvm3/files/ApplicationCCsFile.ts index e6b8b9ac3e98..fc8cb797c5c0 100644 --- a/packages/nvmedit/src/files/ApplicationCCsFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/ApplicationCCsFile.ts @@ -1,12 +1,12 @@ import { CommandClasses } from "@zwave-js/core/safe"; -import type { NVM3Object } from "../nvm3/object"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export interface ApplicationCCsFileOptions extends NVMFileCreationOptions { @@ -17,7 +17,10 @@ export interface ApplicationCCsFileOptions extends NVMFileCreationOptions { const MAX_CCs = 35; -@nvmFileID(103) +export const ApplicationCCsFileID = 103; + +@nvmFileID(ApplicationCCsFileID) +@nvmSection("application") export class ApplicationCCsFile extends NVMFile { public constructor( options: NVMFileDeserializationOptions | ApplicationCCsFileOptions, @@ -52,7 +55,7 @@ export class ApplicationCCsFile extends NVMFile { public includedSecurelyInsecureCCs: CommandClasses[]; public includedSecurelySecureCCs: CommandClasses[]; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.payload = Buffer.alloc((1 + MAX_CCs) * 3); let offset = 0; for ( @@ -85,4 +88,3 @@ export class ApplicationCCsFile extends NVMFile { }; } } -export const ApplicationCCsFileID = getNVMFileIDStatic(ApplicationCCsFile); diff --git a/packages/nvmedit/src/files/ApplicationDataFile.ts b/packages/nvmedit/src/lib/nvm3/files/ApplicationDataFile.ts similarity index 65% rename from packages/nvmedit/src/files/ApplicationDataFile.ts rename to packages/nvmedit/src/lib/nvm3/files/ApplicationDataFile.ts index f1e5a2c52f2a..031d0c240779 100644 --- a/packages/nvmedit/src/files/ApplicationDataFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/ApplicationDataFile.ts @@ -2,32 +2,34 @@ import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export interface ApplicationDataFileOptions extends NVMFileCreationOptions { - data: Buffer; + applicationData: Buffer; } -@nvmFileID(200) +export const ApplicationDataFileID = 200; + +@nvmFileID(ApplicationDataFileID) +@nvmSection("application") export class ApplicationDataFile extends NVMFile { public constructor( options: NVMFileDeserializationOptions | ApplicationDataFileOptions, ) { super(options); if (!gotDeserializationOptions(options)) { - this.payload = options.data; + this.payload = options.applicationData; } } // Just binary data - public get data(): Buffer { + public get applicationData(): Buffer { return this.payload; } - public set data(value: Buffer) { + public set applicationData(value: Buffer) { this.payload = value; } } -export const ApplicationDataFileID = getNVMFileIDStatic(ApplicationDataFile); diff --git a/packages/nvmedit/src/files/ApplicationNameFile.ts b/packages/nvmedit/src/lib/nvm3/files/ApplicationNameFile.ts similarity index 80% rename from packages/nvmedit/src/files/ApplicationNameFile.ts rename to packages/nvmedit/src/lib/nvm3/files/ApplicationNameFile.ts index a40bcf0f855a..db5ba967aa8d 100644 --- a/packages/nvmedit/src/files/ApplicationNameFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/ApplicationNameFile.ts @@ -1,19 +1,22 @@ import { cpp2js } from "@zwave-js/shared"; -import { type NVMObject } from ".."; +import { type NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export interface ApplicationNameFileOptions extends NVMFileCreationOptions { name: string; } -@nvmFileID(0x4100c) +export const ApplicationNameFileID = 0x4100c; + +@nvmFileID(ApplicationNameFileID) +@nvmSection("application") export class ApplicationNameFile extends NVMFile { public constructor( options: NVMFileDeserializationOptions | ApplicationNameFileOptions, @@ -28,7 +31,7 @@ export class ApplicationNameFile extends NVMFile { public name: string; - public serialize(): NVMObject { + public serialize(): NVM3Object & { data: Buffer } { // Return a zero-terminated string with a fixed length of 30 bytes const nameAsString = Buffer.from(this.name, "utf8"); this.payload = Buffer.alloc(30, 0); @@ -36,4 +39,3 @@ export class ApplicationNameFile extends NVMFile { return super.serialize(); } } -export const ApplicationNameFileID = getNVMFileIDStatic(ApplicationNameFile); diff --git a/packages/nvmedit/src/files/ApplicationRFConfigFile.ts b/packages/nvmedit/src/lib/nvm3/files/ApplicationRFConfigFile.ts similarity index 94% rename from packages/nvmedit/src/files/ApplicationRFConfigFile.ts rename to packages/nvmedit/src/lib/nvm3/files/ApplicationRFConfigFile.ts index 5c824be842b4..9a096d3639cb 100644 --- a/packages/nvmedit/src/files/ApplicationRFConfigFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/ApplicationRFConfigFile.ts @@ -6,14 +6,14 @@ import { } from "@zwave-js/core/safe"; import { type AllOrNone, getEnumMemberName } from "@zwave-js/shared/safe"; import semver from "semver"; -import type { NVM3Object } from "../nvm3/object"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export type ApplicationRFConfigFileOptions = @@ -31,7 +31,10 @@ export type ApplicationRFConfigFileOptions = nodeIdType?: number; }; -@nvmFileID(104) +export const ApplicationRFConfigFileID = 104; + +@nvmFileID(ApplicationRFConfigFileID) +@nvmSection("application") export class ApplicationRFConfigFile extends NVMFile { public constructor( options: NVMFileDeserializationOptions | ApplicationRFConfigFileOptions, @@ -82,7 +85,7 @@ export class ApplicationRFConfigFile extends NVMFile { public maxTXPower?: number; public nodeIdType?: NodeIDType; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { if (semver.lt(this.fileVersion, "7.18.1")) { this.payload = Buffer.alloc( semver.gte(this.fileVersion, "7.15.3") ? 6 : 3, @@ -137,6 +140,3 @@ export class ApplicationRFConfigFile extends NVMFile { return ret; } } -export const ApplicationRFConfigFileID = getNVMFileIDStatic( - ApplicationRFConfigFile, -); diff --git a/packages/nvmedit/src/files/ApplicationTypeFile.ts b/packages/nvmedit/src/lib/nvm3/files/ApplicationTypeFile.ts similarity index 88% rename from packages/nvmedit/src/files/ApplicationTypeFile.ts rename to packages/nvmedit/src/lib/nvm3/files/ApplicationTypeFile.ts index c67da1e5c0af..112a79cedcb6 100644 --- a/packages/nvmedit/src/files/ApplicationTypeFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/ApplicationTypeFile.ts @@ -1,11 +1,11 @@ -import type { NVM3Object } from "../nvm3/object"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export interface ApplicationTypeFileOptions extends NVMFileCreationOptions { @@ -15,7 +15,10 @@ export interface ApplicationTypeFileOptions extends NVMFileCreationOptions { specificDeviceClass: number; } -@nvmFileID(102) +export const ApplicationTypeFileID = 102; + +@nvmFileID(ApplicationTypeFileID) +@nvmSection("application") export class ApplicationTypeFile extends NVMFile { public constructor( options: NVMFileDeserializationOptions | ApplicationTypeFileOptions, @@ -39,7 +42,7 @@ export class ApplicationTypeFile extends NVMFile { public genericDeviceClass: number; public specificDeviceClass: number; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.payload = Buffer.from([ (this.isListening ? 0b1 : 0) | (this.optionalFunctionality ? 0b10 : 0), @@ -60,4 +63,3 @@ export class ApplicationTypeFile extends NVMFile { }; } } -export const ApplicationTypeFileID = getNVMFileIDStatic(ApplicationTypeFile); diff --git a/packages/nvmedit/src/files/ControllerInfoFile.ts b/packages/nvmedit/src/lib/nvm3/files/ControllerInfoFile.ts similarity index 96% rename from packages/nvmedit/src/files/ControllerInfoFile.ts rename to packages/nvmedit/src/lib/nvm3/files/ControllerInfoFile.ts index e8e92e935948..c1a4bfd0b102 100644 --- a/packages/nvmedit/src/files/ControllerInfoFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/ControllerInfoFile.ts @@ -4,14 +4,14 @@ import { stripUndefined, } from "@zwave-js/core/safe"; import { buffer2hex } from "@zwave-js/shared"; -import type { NVM3Object } from "../nvm3/object"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export type ControllerInfoFileOptions = @@ -40,7 +40,10 @@ export type ControllerInfoFileOptions = } ); -@nvmFileID(0x50004) +export const ControllerInfoFileID = 0x50004; + +@nvmFileID(ControllerInfoFileID) +@nvmSection("protocol") export class ControllerInfoFile extends NVMFile { public constructor( options: NVMFileDeserializationOptions | ControllerInfoFileOptions, @@ -117,7 +120,7 @@ export class ControllerInfoFile extends NVMFile { public primaryLongRangeChannelId?: number; public dcdcConfig?: number; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { if (this.lastNodeIdLR != undefined) { this.payload = Buffer.allocUnsafe(22); this.homeId.copy(this.payload, 0); @@ -176,4 +179,3 @@ export class ControllerInfoFile extends NVMFile { }); } } -export const ControllerInfoFileID = getNVMFileIDStatic(ControllerInfoFile); diff --git a/packages/nvmedit/src/files/NVMFile.ts b/packages/nvmedit/src/lib/nvm3/files/NVMFile.ts similarity index 61% rename from packages/nvmedit/src/files/NVMFile.ts rename to packages/nvmedit/src/lib/nvm3/files/NVMFile.ts index 2db10d1a3e29..b2881c4c5e19 100644 --- a/packages/nvmedit/src/files/NVMFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/NVMFile.ts @@ -1,26 +1,25 @@ +import { createSimpleReflectionDecorator } from "@zwave-js/core"; import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core/safe"; -import type { TypedClassDecorator } from "@zwave-js/shared"; -import { - FragmentType, - NVM3_MAX_OBJ_SIZE_SMALL, - ObjectType, -} from "../nvm3/consts"; -import type { NVM3Object } from "../nvm3/object"; +import { type TypedClassDecorator, num2hex } from "@zwave-js/shared"; +import { FragmentType, NVM3_MAX_OBJ_SIZE_SMALL, ObjectType } from "../consts"; +import type { NVM3Object } from "../object"; export interface NVMFileBaseOptions { fileId?: number; fileVersion: string; } export interface NVMFileDeserializationOptions extends NVMFileBaseOptions { - object: NVM3Object; + fileId: number; + data: Buffer; } export function gotDeserializationOptions( options: NVMFileOptions, ): options is NVMFileDeserializationOptions { - return "object" in options; + return "data" in options && Buffer.isBuffer(options.data); } +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface NVMFileCreationOptions extends NVMFileBaseOptions {} export type NVMFileOptions = @@ -32,61 +31,54 @@ export class NVMFile { this.fileVersion = options.fileVersion; if (gotDeserializationOptions(options)) { - this.fileId = options.object.key; - this.object = options.object; + this.fileId = options.fileId; + this.payload = options.data; } else { - const fileId = getNVMFileID(this); + const fileId = options.fileId ?? getNVMFileID(this); if (typeof fileId === "number") { this.fileId = fileId; } - - this.object = { - key: this.fileId, - fragmentType: FragmentType.None, - type: ObjectType.DataLarge, - }; + this.payload = Buffer.allocUnsafe(0); } - - this.payload = this.object.data ?? Buffer.allocUnsafe(0); } - protected object: NVM3Object; protected payload: Buffer; public fileId: number = 0; public fileVersion: string; /** - * Creates an instance of the CC that is serialized in the given buffer + * Creates an instance of the NVM file that is contained in the given NVM object */ - public static from(object: NVM3Object, fileVersion: string): NVMFile { - // Fall back to unspecified command class in case we receive one that is not implemented - const Constructor = getNVMFileConstructor(object.key)!; + public static from( + fileId: number, + data: Buffer, + fileVersion: string, + ): NVMFile { + const Constructor = getNVMFileConstructor(fileId)!; return new Constructor({ - fileId: object.key, + fileId, fileVersion, - object, + data, }); } /** * Serializes this NVMFile into an NVM Object */ - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { if (!this.fileId) { throw new Error("The NVM file ID must be set before serializing"); } - this.object.key = this.fileId; - this.object.data = this.payload; - // We only support large and small data objects for now - if (this.payload.length <= NVM3_MAX_OBJ_SIZE_SMALL) { - this.object.type = ObjectType.DataSmall; - } else { - this.object.type = ObjectType.DataLarge; - } - // By default output unfragmented objects, they will be split later - this.object.fragmentType = FragmentType.None; - - return this.object; + return { + key: this.fileId, + data: this.payload, + // We only support large and small data objects for now + type: this.payload.length <= NVM3_MAX_OBJ_SIZE_SMALL + ? ObjectType.DataSmall + : ObjectType.DataLarge, + // By default output unfragmented objects, they will be split later + fragmentType: FragmentType.None, + }; } public toJSON(): Record { @@ -183,3 +175,38 @@ export function getNVMFileIDStatic>( } return ret; } + +export type NVMSection = "application" | "protocol"; + +const nvmSectionDecorator = createSimpleReflectionDecorator< + NVMFile, + [section: NVMSection] +>({ + name: "nvmSection", +}); + +/** Defines in which section an NVM file is stored */ +export const nvmSection = nvmSectionDecorator.decorator; + +/** Returns in which section an NVM file is stored (using an instance of the file) */ +export const getNVMSection = nvmSectionDecorator.lookupValue; + +/** Returns in which section an NVM file is stored (using the constructor of the file) */ +export const getNVMSectionStatic = nvmSectionDecorator.lookupValueStatic; + +/** Returns in which NVM section the file with the given ID resides in */ +export function getNVMSectionByFileID(fileId: number): NVMSection { + const File = getNVMFileConstructor(fileId); + let ret: NVMSection | undefined; + if (File) { + ret = getNVMSectionStatic(File); + } + if (ret) return ret; + + throw new ZWaveError( + `NVM section for file with ID ${ + num2hex(fileId) + } could not be determined`, + ZWaveErrorCodes.Argument_Invalid, + ); +} diff --git a/packages/nvmedit/src/files/NodeInfoFiles.ts b/packages/nvmedit/src/lib/nvm3/files/NodeInfoFiles.ts similarity index 97% rename from packages/nvmedit/src/files/NodeInfoFiles.ts rename to packages/nvmedit/src/lib/nvm3/files/NodeInfoFiles.ts index 7d79b8da5f94..a49d39698eb5 100644 --- a/packages/nvmedit/src/files/NodeInfoFiles.ts +++ b/packages/nvmedit/src/lib/nvm3/files/NodeInfoFiles.ts @@ -12,13 +12,14 @@ import { parseNodeProtocolInfo, } from "@zwave-js/core/safe"; import { pick } from "@zwave-js/shared/safe"; -import type { NVM3Object } from "../nvm3/object"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export const NODEINFOS_PER_FILE_V1 = 4; @@ -195,6 +196,7 @@ export function nodeIdToNodeInfoFileIDV0(nodeId: number): number { @nvmFileID( (id) => id >= NodeInfoFileV0IDBase && id < NodeInfoFileV0IDBase + MAX_NODES, ) +@nvmSection("protocol") export class NodeInfoFileV0 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | NodeInfoFileV0Options, @@ -213,7 +215,7 @@ export class NodeInfoFileV0 extends NVMFile { public nodeInfo: NodeInfo; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.fileId = nodeIdToNodeInfoFileIDV0(this.nodeInfo.nodeId); this.payload = encodeNodeInfo(this.nodeInfo); return super.serialize(); @@ -244,6 +246,7 @@ export function nodeIdToNodeInfoFileIDV1(nodeId: number): number { id >= NodeInfoFileV1IDBase && id < NodeInfoFileV1IDBase + MAX_NODES / NODEINFOS_PER_FILE_V1, ) +@nvmSection("protocol") export class NodeInfoFileV1 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | NodeInfoFileV1Options, @@ -277,7 +280,7 @@ export class NodeInfoFileV1 extends NVMFile { public nodeInfos: NodeInfo[]; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { // The infos must be sorted by node ID this.nodeInfos.sort((a, b) => a.nodeId - b.nodeId); const minNodeId = this.nodeInfos[0].nodeId; @@ -329,6 +332,7 @@ export function nodeIdToLRNodeInfoFileIDV5(nodeId: number): number { && id < LRNodeInfoFileV5IDBase + MAX_NODES_LR / LR_NODEINFOS_PER_FILE_V5, ) +@nvmSection("protocol") export class LRNodeInfoFileV5 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | LRNodeInfoFileV5Options, @@ -362,7 +366,7 @@ export class LRNodeInfoFileV5 extends NVMFile { public nodeInfos: LRNodeInfo[]; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { // The infos must be sorted by node ID this.nodeInfos.sort((a, b) => a.nodeId - b.nodeId); const minNodeId = this.nodeInfos[0].nodeId; diff --git a/packages/nvmedit/src/lib/nvm3/files/ProtocolNodeMaskFiles.ts b/packages/nvmedit/src/lib/nvm3/files/ProtocolNodeMaskFiles.ts new file mode 100644 index 000000000000..a9e0b2eee6d0 --- /dev/null +++ b/packages/nvmedit/src/lib/nvm3/files/ProtocolNodeMaskFiles.ts @@ -0,0 +1,141 @@ +import { NODE_ID_MAX, encodeBitMask, parseBitMask } from "@zwave-js/core/safe"; +import type { NVM3Object } from "../object"; +import { + NVMFile, + type NVMFileCreationOptions, + type NVMFileDeserializationOptions, + gotDeserializationOptions, + nvmFileID, + nvmSection, +} from "./NVMFile"; + +export interface ProtocolNodeMaskFileOptions extends NVMFileCreationOptions { + nodeIds: number[]; +} + +export class ProtocolNodeMaskFile extends NVMFile { + public constructor( + options: NVMFileDeserializationOptions | ProtocolNodeMaskFileOptions, + ) { + super(options); + if (gotDeserializationOptions(options)) { + this.nodeIdSet = new Set(parseBitMask(this.payload)); + } else { + this.nodeIdSet = new Set(options.nodeIds); + } + } + + public nodeIdSet: Set; + public get nodeIds(): number[] { + return [...this.nodeIdSet]; + } + public set nodeIds(value: number[]) { + this.nodeIdSet = new Set(value); + } + + public serialize(): NVM3Object & { data: Buffer } { + this.payload = encodeBitMask([...this.nodeIdSet], NODE_ID_MAX); + return super.serialize(); + } + + // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types + public toJSON() { + return { + ...super.toJSON(), + "node IDs": [...this.nodeIdSet].join(", "), + }; + } +} + +export const ProtocolPreferredRepeatersFileID = 0x50002; + +@nvmFileID(ProtocolPreferredRepeatersFileID) +@nvmSection("protocol") +export class ProtocolPreferredRepeatersFile extends ProtocolNodeMaskFile {} + +export const ProtocolNodeListFileID = 0x50005; + +@nvmFileID(ProtocolNodeListFileID) +@nvmSection("protocol") +export class ProtocolNodeListFile extends ProtocolNodeMaskFile {} + +export const ProtocolAppRouteLockNodeMaskFileID = 0x50006; + +@nvmFileID(ProtocolAppRouteLockNodeMaskFileID) +@nvmSection("protocol") +export class ProtocolAppRouteLockNodeMaskFile extends ProtocolNodeMaskFile {} + +export const ProtocolRouteSlaveSUCNodeMaskFileID = 0x50007; + +@nvmFileID(ProtocolRouteSlaveSUCNodeMaskFileID) +@nvmSection("protocol") +export class ProtocolRouteSlaveSUCNodeMaskFile extends ProtocolNodeMaskFile {} + +export const ProtocolSUCPendingUpdateNodeMaskFileID = 0x50008; + +@nvmFileID(ProtocolSUCPendingUpdateNodeMaskFileID) +@nvmSection("protocol") +export class ProtocolSUCPendingUpdateNodeMaskFile + extends ProtocolNodeMaskFile +{} + +export const ProtocolVirtualNodeMaskFileID = 0x50009; + +@nvmFileID(ProtocolVirtualNodeMaskFileID) +@nvmSection("protocol") +export class ProtocolVirtualNodeMaskFile extends ProtocolNodeMaskFile {} + +export const ProtocolPendingDiscoveryNodeMaskFileID = 0x5000a; + +@nvmFileID(ProtocolPendingDiscoveryNodeMaskFileID) +@nvmSection("protocol") +export class ProtocolPendingDiscoveryNodeMaskFile + extends ProtocolNodeMaskFile +{} + +export const ProtocolRouteCacheExistsNodeMaskFileID = 0x5000b; + +@nvmFileID(ProtocolRouteCacheExistsNodeMaskFileID) +@nvmSection("protocol") +export class ProtocolRouteCacheExistsNodeMaskFile + extends ProtocolNodeMaskFile +{} + +export const ProtocolLRNodeListFileID = 0x5000c; + +@nvmFileID(ProtocolLRNodeListFileID) +@nvmSection("protocol") +export class ProtocolLRNodeListFile extends NVMFile { + public constructor( + options: NVMFileDeserializationOptions | ProtocolNodeMaskFileOptions, + ) { + super(options); + if (gotDeserializationOptions(options)) { + this.nodeIdSet = new Set(parseBitMask(this.payload, 256)); + } else { + this.nodeIdSet = new Set(options.nodeIds); + } + } + + public nodeIdSet: Set; + public get nodeIds(): number[] { + return [...this.nodeIdSet]; + } + public set nodeIds(value: number[]) { + this.nodeIdSet = new Set(value); + } + + public serialize(): NVM3Object & { data: Buffer } { + // There are only 128 bytes for the bitmask, so the LR node IDs only go up to 1279 + this.payload = encodeBitMask([...this.nodeIdSet], 1279, 256); + return super.serialize(); + } + + // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types + public toJSON() { + return { + ...super.toJSON(), + "node IDs": [...this.nodeIdSet].join(", "), + }; + } +} diff --git a/packages/nvmedit/src/files/RouteCacheFiles.ts b/packages/nvmedit/src/lib/nvm3/files/RouteCacheFiles.ts similarity index 67% rename from packages/nvmedit/src/files/RouteCacheFiles.ts rename to packages/nvmedit/src/lib/nvm3/files/RouteCacheFiles.ts index 116c7b367c3a..cb3963258365 100644 --- a/packages/nvmedit/src/files/RouteCacheFiles.ts +++ b/packages/nvmedit/src/lib/nvm3/files/RouteCacheFiles.ts @@ -1,85 +1,23 @@ +import { MAX_NODES, MAX_REPEATERS } from "@zwave-js/core/safe"; import { - type FLiRS, - MAX_NODES, - MAX_REPEATERS, - RouteProtocolDataRate, - protocolDataRateMask, -} from "@zwave-js/core/safe"; -import type { NVM3Object } from "../nvm3/object"; + EMPTY_ROUTECACHE_FILL, + ROUTECACHE_SIZE, + type RouteCache, + emptyRouteCache, + encodeRoute, + parseRoute, +} from "../../common/routeCache"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export const ROUTECACHES_PER_FILE_V1 = 8; -const ROUTE_SIZE = MAX_REPEATERS + 1; -const ROUTECACHE_SIZE = 2 * ROUTE_SIZE; -const EMPTY_ROUTECACHE_FILL = 0xff; -const emptyRouteCache = Buffer.alloc(ROUTECACHE_SIZE, EMPTY_ROUTECACHE_FILL); - -enum Beaming { - "1000ms" = 0x40, - "250ms" = 0x20, -} - -export interface Route { - beaming: FLiRS; - protocolRate: RouteProtocolDataRate; - repeaterNodeIDs?: number[]; -} - -export interface RouteCache { - nodeId: number; - lwr: Route; - nlwr: Route; -} - -export function parseRoute(buffer: Buffer, offset: number): Route { - const routeConf = buffer[offset + MAX_REPEATERS]; - const ret: Route = { - beaming: (Beaming[routeConf & 0x60] ?? false) as FLiRS, - protocolRate: routeConf & protocolDataRateMask, - repeaterNodeIDs: [ - ...buffer.subarray(offset, offset + MAX_REPEATERS), - ].filter((id) => id !== 0), - }; - if (ret.repeaterNodeIDs![0] === 0xfe) delete ret.repeaterNodeIDs; - return ret; -} - -export function encodeRoute(route: Route | undefined): Buffer { - const ret = Buffer.alloc(ROUTE_SIZE, 0); - if (route) { - if (route.repeaterNodeIDs) { - for ( - let i = 0; - i < MAX_REPEATERS && i < route.repeaterNodeIDs.length; - i++ - ) { - ret[i] = route.repeaterNodeIDs[i]; - } - } else { - ret[0] = 0xfe; - } - let routeConf = 0; - if (route.beaming) routeConf |= Beaming[route.beaming] ?? 0; - routeConf |= route.protocolRate & protocolDataRateMask; - ret[ROUTE_SIZE - 1] = routeConf; - } - - return ret; -} - -export function getEmptyRoute(): Route { - return { - beaming: false, - protocolRate: RouteProtocolDataRate.ZWave_40k, - repeaterNodeIDs: undefined, - }; -} export interface RouteCacheFileV0Options extends NVMFileCreationOptions { routeCache: RouteCache; @@ -94,6 +32,7 @@ export function nodeIdToRouteCacheFileIDV0(nodeId: number): number { (id) => id >= RouteCacheFileV0IDBase && id < RouteCacheFileV0IDBase + MAX_NODES, ) +@nvmSection("protocol") export class RouteCacheFileV0 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | RouteCacheFileV0Options, @@ -111,7 +50,7 @@ export class RouteCacheFileV0 extends NVMFile { public routeCache: RouteCache; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.fileId = nodeIdToRouteCacheFileIDV0(this.routeCache.nodeId); this.payload = Buffer.concat([ encodeRoute(this.routeCache.lwr), @@ -146,6 +85,7 @@ export function nodeIdToRouteCacheFileIDV1(nodeId: number): number { id >= RouteCacheFileV1IDBase && id < RouteCacheFileV1IDBase + MAX_NODES / ROUTECACHES_PER_FILE_V1, ) +@nvmSection("protocol") export class RouteCacheFileV1 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | RouteCacheFileV1Options, @@ -180,7 +120,7 @@ export class RouteCacheFileV1 extends NVMFile { public routeCaches: RouteCache[]; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { // The route infos must be sorted by node ID this.routeCaches.sort((a, b) => a.nodeId - b.nodeId); const minNodeId = this.routeCaches[0].nodeId; diff --git a/packages/nvmedit/src/files/SUCUpdateEntriesFile.ts b/packages/nvmedit/src/lib/nvm3/files/SUCUpdateEntriesFile.ts similarity index 61% rename from packages/nvmedit/src/files/SUCUpdateEntriesFile.ts rename to packages/nvmedit/src/lib/nvm3/files/SUCUpdateEntriesFile.ts index 49ef6c6d3f20..07a44d7c86b6 100644 --- a/packages/nvmedit/src/files/SUCUpdateEntriesFile.ts +++ b/packages/nvmedit/src/lib/nvm3/files/SUCUpdateEntriesFile.ts @@ -1,23 +1,17 @@ +import { SUC_MAX_UPDATES, SUC_UPDATE_ENTRY_SIZE } from "../../../consts"; import { - type CommandClasses, - ZWaveError, - ZWaveErrorCodes, - encodeCCList, - parseCCList, -} from "@zwave-js/core/safe"; -import { - SUC_MAX_UPDATES, - SUC_UPDATE_ENTRY_SIZE, - SUC_UPDATE_NODEPARM_MAX, -} from "../consts"; -import type { NVM3Object } from "../nvm3/object"; + type SUCUpdateEntry, + encodeSUCUpdateEntry, + parseSUCUpdateEntry, +} from "../../common/sucUpdateEntry"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export const SUC_UPDATES_PER_FILE_V5 = 8; @@ -26,54 +20,10 @@ export interface SUCUpdateEntriesFileOptions extends NVMFileCreationOptions { updateEntries: SUCUpdateEntry[]; } -export interface SUCUpdateEntry { - nodeId: number; - changeType: number; // TODO: This is some kind of enum - supportedCCs: CommandClasses[]; - controlledCCs: CommandClasses[]; -} - -export function parseSUCUpdateEntry( - buffer: Buffer, - offset: number, -): SUCUpdateEntry | undefined { - const slice = buffer.subarray(offset, offset + SUC_UPDATE_ENTRY_SIZE); - if (slice.every((b) => b === 0x00 || b === 0xff)) { - return; - } - const nodeId = slice[0]; - const changeType = slice[1]; - const { supportedCCs, controlledCCs } = parseCCList( - slice.subarray(2, SUC_UPDATE_ENTRY_SIZE), - ); - return { - nodeId, - changeType, - supportedCCs: supportedCCs.filter((cc) => cc > 0), - controlledCCs: controlledCCs.filter((cc) => cc > 0), - }; -} +export const SUCUpdateEntriesFileIDV0 = 0x50003; -export function encodeSUCUpdateEntry( - entry: SUCUpdateEntry | undefined, -): Buffer { - const ret = Buffer.alloc(SUC_UPDATE_ENTRY_SIZE, 0); - if (entry) { - ret[0] = entry.nodeId; - ret[1] = entry.changeType; - const ccList = encodeCCList(entry.supportedCCs, entry.controlledCCs); - if (ccList.length > SUC_UPDATE_NODEPARM_MAX) { - throw new ZWaveError( - "Cannot encode SUC update entry, too many CCs", - ZWaveErrorCodes.Argument_Invalid, - ); - } - ccList.copy(ret, 2); - } - return ret; -} - -@nvmFileID(0x50003) +@nvmFileID(SUCUpdateEntriesFileIDV0) +@nvmSection("protocol") export class SUCUpdateEntriesFileV0 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | SUCUpdateEntriesFileOptions, @@ -93,7 +43,7 @@ export class SUCUpdateEntriesFileV0 extends NVMFile { public updateEntries: SUCUpdateEntry[]; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.payload = Buffer.alloc(SUC_MAX_UPDATES * SUC_UPDATE_ENTRY_SIZE, 0); for (let i = 0; i < this.updateEntries.length; i++) { const offset = i * SUC_UPDATE_ENTRY_SIZE; @@ -112,11 +62,10 @@ export class SUCUpdateEntriesFileV0 extends NVMFile { } } -export const SUCUpdateEntriesFileIDV0 = getNVMFileIDStatic( - SUCUpdateEntriesFileV0, -); - export const SUCUpdateEntriesFileV5IDBase = 0x54000; +export const SUCUpdateEntriesFileV5IDMax = SUCUpdateEntriesFileV5IDBase + + SUC_MAX_UPDATES / SUC_UPDATES_PER_FILE_V5 + - 1; export function sucUpdateIndexToSUCUpdateEntriesFileIDV5( index: number, ): number { @@ -129,10 +78,9 @@ export function sucUpdateIndexToSUCUpdateEntriesFileIDV5( @nvmFileID( (id) => id >= SUCUpdateEntriesFileV5IDBase - && id - < SUCUpdateEntriesFileV5IDBase - + SUC_MAX_UPDATES / SUC_UPDATES_PER_FILE_V5, + && id <= SUCUpdateEntriesFileV5IDMax, ) +@nvmSection("protocol") export class SUCUpdateEntriesFileV5 extends NVMFile { public constructor( options: NVMFileDeserializationOptions | SUCUpdateEntriesFileOptions, @@ -152,7 +100,7 @@ export class SUCUpdateEntriesFileV5 extends NVMFile { public updateEntries: SUCUpdateEntry[]; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.payload = Buffer.alloc( SUC_UPDATES_PER_FILE_V5 * SUC_UPDATE_ENTRY_SIZE, 0xff, diff --git a/packages/nvmedit/src/files/VersionFiles.ts b/packages/nvmedit/src/lib/nvm3/files/VersionFiles.ts similarity index 76% rename from packages/nvmedit/src/files/VersionFiles.ts rename to packages/nvmedit/src/lib/nvm3/files/VersionFiles.ts index 6ef0d0467c21..7a8d12adbb60 100644 --- a/packages/nvmedit/src/files/VersionFiles.ts +++ b/packages/nvmedit/src/lib/nvm3/files/VersionFiles.ts @@ -1,11 +1,11 @@ -import type { NVM3Object } from "../nvm3/object"; +import type { NVM3Object } from "../object"; import { NVMFile, type NVMFileCreationOptions, type NVMFileDeserializationOptions, - getNVMFileIDStatic, gotDeserializationOptions, nvmFileID, + nvmSection, } from "./NVMFile"; export interface VersionFileOptions extends NVMFileCreationOptions { @@ -38,7 +38,7 @@ export class VersionFile extends NVMFile { public minor: number; public patch: number; - public serialize(): NVM3Object { + public serialize(): NVM3Object & { data: Buffer } { this.payload = Buffer.from([ this.patch, this.minor, @@ -58,20 +58,22 @@ export class VersionFile extends NVMFile { } } -@nvmFileID(0x51000) +export const ApplicationVersionFileID = 0x51000; + +@nvmFileID(ApplicationVersionFileID) +@nvmSection("application") export class ApplicationVersionFile extends VersionFile {} -export const ApplicationVersionFileID = getNVMFileIDStatic( - ApplicationVersionFile, -); // The 800 series has a shared application/protocol file system // and uses a different ID for the application version file -@nvmFileID(0x41000) +export const ApplicationVersionFile800ID = 0x41000; + +@nvmFileID(ApplicationVersionFile800ID) +@nvmSection("application") export class ApplicationVersionFile800 extends VersionFile {} -export const ApplicationVersionFile800ID = getNVMFileIDStatic( - ApplicationVersionFile800, -); -@nvmFileID(0x50000) +export const ProtocolVersionFileID = 0x50000; + +@nvmFileID(ProtocolVersionFileID) +@nvmSection("protocol") export class ProtocolVersionFile extends VersionFile {} -export const ProtocolVersionFileID = getNVMFileIDStatic(ProtocolVersionFile); diff --git a/packages/nvmedit/src/files/index.ts b/packages/nvmedit/src/lib/nvm3/files/index.ts similarity index 91% rename from packages/nvmedit/src/files/index.ts rename to packages/nvmedit/src/lib/nvm3/files/index.ts index 510f8185d0bc..5cc62c2c61a8 100644 --- a/packages/nvmedit/src/files/index.ts +++ b/packages/nvmedit/src/lib/nvm3/files/index.ts @@ -2,6 +2,7 @@ import "reflect-metadata"; export * from "./ApplicationCCsFile"; export * from "./ApplicationDataFile"; +export * from "./ApplicationNameFile"; export * from "./ApplicationRFConfigFile"; export * from "./ApplicationTypeFile"; export * from "./ControllerInfoFile"; diff --git a/packages/nvmedit/src/lib/nvm3/object.ts b/packages/nvmedit/src/lib/nvm3/object.ts new file mode 100644 index 000000000000..3eea81b06364 --- /dev/null +++ b/packages/nvmedit/src/lib/nvm3/object.ts @@ -0,0 +1,172 @@ +import { + FragmentType, + NVM3_CODE_LARGE_SHIFT, + NVM3_CODE_SMALL_SHIFT, + NVM3_COUNTER_SIZE, + NVM3_OBJ_FRAGTYPE_MASK, + NVM3_OBJ_FRAGTYPE_SHIFT, + NVM3_OBJ_HEADER_SIZE_LARGE, + NVM3_OBJ_HEADER_SIZE_SMALL, + NVM3_OBJ_KEY_MASK, + NVM3_OBJ_KEY_SHIFT, + NVM3_OBJ_LARGE_LEN_MASK, + NVM3_OBJ_TYPE_MASK, + NVM3_WORD_SIZE, + ObjectType, +} from "./consts"; +import { computeBergerCode, computeBergerCodeMulti } from "./utils"; + +export interface NVM3ObjectHeader { + offset: number; + type: ObjectType; + key: number; + fragmentType: FragmentType; + /** The length of the header */ + headerSize: number; + /** The length of the object data */ + fragmentSize: number; + /** The total length of the object in the NVM */ + alignedSize: number; +} + +export interface NVM3Object { + type: ObjectType; + fragmentType: FragmentType; + key: number; + data?: Buffer; +} + +export function serializeObject(obj: NVM3Object): Buffer { + const isLarge = obj.type === ObjectType.DataLarge + || obj.type === ObjectType.CounterLarge; + const headerSize = isLarge + ? NVM3_OBJ_HEADER_SIZE_LARGE + : NVM3_OBJ_HEADER_SIZE_SMALL; + const dataLength = obj.data?.length ?? 0; + const ret = Buffer.allocUnsafe(dataLength + headerSize); + + // Write header + if (isLarge) { + let hdr2 = dataLength & NVM3_OBJ_LARGE_LEN_MASK; + + const hdr1 = (obj.type & NVM3_OBJ_TYPE_MASK) + | ((obj.key & NVM3_OBJ_KEY_MASK) << NVM3_OBJ_KEY_SHIFT) + | ((obj.fragmentType & NVM3_OBJ_FRAGTYPE_MASK) + << NVM3_OBJ_FRAGTYPE_SHIFT); + + const bergerCode = computeBergerCodeMulti( + [hdr1, hdr2], + 32 + NVM3_CODE_LARGE_SHIFT, + ); + hdr2 |= bergerCode << NVM3_CODE_LARGE_SHIFT; + + ret.writeInt32LE(hdr1, 0); + ret.writeInt32LE(hdr2, 4); + } else { + let typeAndLen = obj.type; + if (typeAndLen === ObjectType.DataSmall && dataLength > 0) { + typeAndLen += dataLength; + } + let hdr1 = (typeAndLen & NVM3_OBJ_TYPE_MASK) + | ((obj.key & NVM3_OBJ_KEY_MASK) << NVM3_OBJ_KEY_SHIFT); + const bergerCode = computeBergerCode(hdr1, NVM3_CODE_SMALL_SHIFT); + hdr1 |= bergerCode << NVM3_CODE_SMALL_SHIFT; + + ret.writeInt32LE(hdr1, 0); + } + + // Write data + if (obj.data) { + obj.data.copy(ret, headerSize); + } + return ret; +} + +export function fragmentLargeObject( + obj: NVM3Object & { type: ObjectType.DataLarge | ObjectType.CounterLarge }, + maxFirstFragmentSizeWithHeader: number, + maxFragmentSizeWithHeader: number, +): NVM3Object[] { + const ret: NVM3Object[] = []; + + if ( + obj.data!.length + NVM3_OBJ_HEADER_SIZE_LARGE + <= maxFirstFragmentSizeWithHeader + ) { + return [obj]; + } + + let offset = 0; + while (offset < obj.data!.length) { + const fragmentSize = offset === 0 + ? maxFirstFragmentSizeWithHeader - NVM3_OBJ_HEADER_SIZE_LARGE + : maxFragmentSizeWithHeader - NVM3_OBJ_HEADER_SIZE_LARGE; + const data = obj.data!.subarray(offset, offset + fragmentSize); + + ret.push({ + type: obj.type, + key: obj.key, + fragmentType: offset === 0 + ? FragmentType.First + : data.length + NVM3_OBJ_HEADER_SIZE_LARGE + < maxFragmentSizeWithHeader + ? FragmentType.Last + : FragmentType.Next, + data, + }); + + offset += fragmentSize; + } + + return ret; +} + +export function getAlignedSize(size: number): number { + return (size + NVM3_WORD_SIZE - 1) & ~(NVM3_WORD_SIZE - 1); +} + +export function getHeaderSize(obj: NVM3Object): number { + switch (obj.type) { + case ObjectType.Deleted: + case ObjectType.CounterSmall: + case ObjectType.DataSmall: + return NVM3_OBJ_HEADER_SIZE_SMALL; + case ObjectType.CounterLarge: + case ObjectType.DataLarge: + return NVM3_OBJ_HEADER_SIZE_LARGE; + } +} + +export function getFragmentSize(obj: NVM3Object): number { + switch (obj.type) { + case ObjectType.Deleted: + return 0; + case ObjectType.CounterSmall: + return NVM3_COUNTER_SIZE; + case ObjectType.DataSmall: + case ObjectType.DataLarge: + case ObjectType.CounterLarge: + return obj.data?.length ?? 0; + } +} + +export function getRequiredSpace(obj: NVM3Object): number { + return getHeaderSize(obj) + getAlignedSize(getFragmentSize(obj)); +} + +export function getObjectHeader( + obj: NVM3Object, + offset: number, +): NVM3ObjectHeader { + const headerSize = getHeaderSize(obj); + const fragmentSize = getFragmentSize(obj); + return { + offset, + key: obj.key, + type: obj.type, + fragmentType: obj.fragmentType, + headerSize, + fragmentSize, + alignedSize: headerSize + getAlignedSize(fragmentSize), + }; +} diff --git a/packages/nvmedit/src/lib/nvm3/page.ts b/packages/nvmedit/src/lib/nvm3/page.ts new file mode 100644 index 000000000000..21880a02521b --- /dev/null +++ b/packages/nvmedit/src/lib/nvm3/page.ts @@ -0,0 +1,75 @@ +import { + NVM3_MIN_PAGE_SIZE, + NVM3_PAGE_COUNTER_MASK, + NVM3_PAGE_COUNTER_SIZE, + NVM3_PAGE_HEADER_SIZE, + NVM3_PAGE_MAGIC, + type PageStatus, + type PageWriteSize, +} from "./consts"; +import { type NVM3Object } from "./object"; +import { computeBergerCode } from "./utils"; + +export interface NVM3PageHeader { + offset: number; + version: number; + eraseCount: number; + status: PageStatus; + encrypted: boolean; + pageSize: number; + writeSize: PageWriteSize; + memoryMapped: boolean; + deviceFamily: number; +} + +export interface NVM3Page { + header: NVM3PageHeader; + objects: NVM3Object[]; +} + +// The page size field has a value from 0 to 7 describing page sizes from 512 to 65536 bytes +export function pageSizeToBits(pageSize: number): number { + return Math.ceil(Math.log2(pageSize) - Math.log2(NVM3_MIN_PAGE_SIZE)); +} + +export function pageSizeFromBits(bits: number): number { + return NVM3_MIN_PAGE_SIZE * Math.pow(2, bits); +} + +export function serializePageHeader( + header: Omit, +): Buffer { + const ret = Buffer.alloc(NVM3_PAGE_HEADER_SIZE); + + ret.writeUInt16LE(header.version, 0); + ret.writeUInt16LE(NVM3_PAGE_MAGIC, 2); + + let eraseCount = header.eraseCount & NVM3_PAGE_COUNTER_MASK; + const eraseCountCode = computeBergerCode( + eraseCount, + NVM3_PAGE_COUNTER_SIZE, + ); + eraseCount |= eraseCountCode << NVM3_PAGE_COUNTER_SIZE; + ret.writeInt32LE(eraseCount, 4); + + let eraseCountInv = ~header.eraseCount & NVM3_PAGE_COUNTER_MASK; + const eraseCountInvCode = computeBergerCode( + eraseCountInv, + NVM3_PAGE_COUNTER_SIZE, + ); + eraseCountInv |= eraseCountInvCode << NVM3_PAGE_COUNTER_SIZE; + ret.writeInt32LE(eraseCountInv, 8); + + ret.writeUInt32LE(header.status, 12); + + const devInfo = (header.deviceFamily & 0x7ff) + | ((header.writeSize & 0b1) << 11) + | ((header.memoryMapped ? 1 : 0) << 12) + | (pageSizeToBits(header.pageSize) << 13); + ret.writeUInt16LE(devInfo, 16); + + const formatInfo = header.encrypted ? 0xfffe : 0xffff; + ret.writeUInt16LE(formatInfo, 18); + + return ret; +} diff --git a/packages/nvmedit/src/nvm3/utils.test.ts b/packages/nvmedit/src/lib/nvm3/utils.test.ts similarity index 100% rename from packages/nvmedit/src/nvm3/utils.test.ts rename to packages/nvmedit/src/lib/nvm3/utils.test.ts diff --git a/packages/nvmedit/src/nvm3/utils.ts b/packages/nvmedit/src/lib/nvm3/utils.ts similarity index 50% rename from packages/nvmedit/src/nvm3/utils.ts rename to packages/nvmedit/src/lib/nvm3/utils.ts index 0780607bfdf1..5a32fd0b3164 100644 --- a/packages/nvmedit/src/nvm3/utils.ts +++ b/packages/nvmedit/src/lib/nvm3/utils.ts @@ -1,8 +1,9 @@ import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core/safe"; -import { NVMFile } from "../files/NVMFile"; +import { num2hex } from "@zwave-js/shared"; +import { type NVM3 } from "../NVM3"; import { FragmentType, ObjectType, PageStatus } from "./consts"; +import { NVMFile } from "./files/NVMFile"; import type { NVM3Object } from "./object"; -import type { NVM3Page } from "./page"; /** Counts the number of unset bits in the given word */ export function computeBergerCode(word: number, numBits: number = 32): number { @@ -81,29 +82,23 @@ export function mapToObject>( return obj; } -export function dumpPage(page: NVM3Page, json: boolean = false): void { - console.log(` `); - console.log(`read page (offset 0x${page.header.offset.toString(16)}):`); - console.log(` version: ${page.header.version}`); - console.log(` eraseCount: ${page.header.eraseCount}`); - console.log(` status: ${PageStatus[page.header.status]}`); - console.log(` encrypted: ${page.header.encrypted}`); - console.log(` pageSize: ${page.header.pageSize}`); - console.log(` writeSize: ${page.header.writeSize}`); - console.log(` memoryMapped: ${page.header.memoryMapped}`); - console.log(` deviceFamily: ${page.header.deviceFamily}`); - console.log(""); - console.log(` objects:`); - for (const obj of page.objects) { - dumpObject(obj, json); - } -} - -export function dumpObject(obj: NVM3Object, json: boolean = false): void { +function dumpObject( + obj: NVM3Object & { offset: number }, + json: boolean = false, +): void { try { if (json) { - const file = NVMFile.from(obj, "7.0.0"); - console.log(`${JSON.stringify(file.toJSON(), null, 2)}`); + const file = NVMFile.from(obj.key, obj.data!, "7.0.0"); + console.log( + JSON.stringify( + { + offset: num2hex(obj.offset), + ...file.toJSON(), + }, + null, + 2, + ), + ); console.log(); return; } @@ -111,7 +106,8 @@ export function dumpObject(obj: NVM3Object, json: boolean = false): void { // ignore } const prefix = json ? "" : " "; - console.log(`${prefix}· key: 0x${obj.key.toString(16)}`); + console.log(`${prefix}· offset: ${num2hex(obj.offset)}`); + console.log(`${prefix} key: 0x${obj.key.toString(16)}`); console.log(`${prefix} type: ${ObjectType[obj.type]}`); console.log(`${prefix} fragment type: ${FragmentType[obj.fragmentType]}`); if (obj.data) { @@ -123,3 +119,62 @@ export function dumpObject(obj: NVM3Object, json: boolean = false): void { } console.log(); } + +export async function dumpNVM(nvm: NVM3): Promise { + for (const [name, section] of Object.entries(nvm.info!.sections)) { + console.log(`NVM section: ${name}`); + + for (const page of section.pages) { + console.log(""); + console.log(`page (offset 0x${page.offset.toString(16)}):`); + console.log(` version: ${page.version}`); + console.log(` eraseCount: ${page.eraseCount}`); + console.log(` status: ${PageStatus[page.status]}`); + console.log(` encrypted: ${page.encrypted}`); + console.log(` pageSize: ${page.pageSize}`); + console.log(` writeSize: ${page.writeSize}`); + console.log(` memoryMapped: ${page.memoryMapped}`); + console.log(` deviceFamily: ${page.deviceFamily}`); + console.log(""); + if (page.objects.length) { + console.log(` raw objects:`); + + for (const objectHeader of page.objects) { + const objectData = objectHeader.type !== ObjectType.Deleted + ? await nvm.readObjectData(objectHeader) + : undefined; + dumpObject({ + offset: objectHeader.offset, + key: objectHeader.key, + type: objectHeader.type, + fragmentType: objectHeader.fragmentType, + data: objectData, + }, false); + } + } + } + + console.log(); + console.log(); + } + + for (const [name, section] of Object.entries(nvm.info!.sections)) { + console.log(`${name} objects:`); + for (const [fileId, pageIndex] of section.objectLocations) { + const page = section.pages[pageIndex]; + const objectHeader = page.objects.findLast((o) => o.key === fileId); + if (!objectHeader) continue; + const objectData = await nvm.get(fileId); + + dumpObject({ + offset: objectHeader.offset, + key: fileId, + type: objectHeader.type, + fragmentType: FragmentType.None, + data: objectData, + }, true); + } + + console.log(); + } +} diff --git a/packages/nvmedit/src/nvm500/EntryParsers.ts b/packages/nvmedit/src/lib/nvm500/EntryParsers.ts similarity index 100% rename from packages/nvmedit/src/nvm500/EntryParsers.ts rename to packages/nvmedit/src/lib/nvm500/EntryParsers.ts diff --git a/packages/nvmedit/src/lib/nvm500/adapter.ts b/packages/nvmedit/src/lib/nvm500/adapter.ts new file mode 100644 index 000000000000..900a4109ae45 --- /dev/null +++ b/packages/nvmedit/src/lib/nvm500/adapter.ts @@ -0,0 +1,605 @@ +import { + type CommandClasses, + ZWaveError, + ZWaveErrorCodes, +} from "@zwave-js/core"; +import { assertNever } from "alcalzone-shared/helpers"; +import { SUC_MAX_UPDATES } from "../../consts"; +import { type NVM500, type NVM500Info } from "../NVM500"; +import { + type ControllerNVMProperty, + type NVMAdapter, + type NVMProperty, + type NVMPropertyToDataType, + type NodeNVMProperty, +} from "../common/definitions"; +import { type Route } from "../common/routeCache"; +import { type SUCUpdateEntry } from "../common/sucUpdateEntry"; +import { type NodeInfo } from "../nvm3/files"; +import { type NVM500NodeInfo } from "./EntryParsers"; +import { + APPL_NODEPARM_MAX, + type NVMData, + type NVMEntryName, + NVM_SERIALAPI_HOST_SIZE, +} from "./shared"; + +export class NVM500Adapter implements NVMAdapter { + public constructor(nvm: NVM500) { + this._nvm = nvm; + } + + private _nvm: NVM500; + + public async get( + property: T, + required?: R, + ): Promise< + R extends true ? NonNullable> + : (NVMPropertyToDataType | undefined) + > { + const info = this._nvm.info ?? await this._nvm.init(); + + let ret: unknown; + if (property.domain === "controller") { + ret = await this.getControllerNVMProperty(info, property); + } else if (property.domain === "lrnode") { + throw new ZWaveError( + `500 series NVM has no support for Long Range node information`, + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } else { + ret = await this.getNodeNVMProperty(property); + } + if (required && ret === undefined) { + throw new ZWaveError( + `NVM data for property ${JSON.stringify(property)} not found`, + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } + return ret as any; + } + + private async getOnly( + property: NVMEntryName, + ): Promise { + const data = await this._nvm.get(property); + return data?.[0] as T | undefined; + } + + private async getSingle( + property: NVMEntryName, + index: number, + ): Promise { + const data = await this._nvm.getSingle(property, index); + return data as T | undefined; + } + + private getAll( + property: NVMEntryName, + ): Promise { + return this._nvm.get(property) as any; + } + + private async getControllerNVMProperty( + info: NVM500Info, + property: ControllerNVMProperty, + ): Promise { + switch (property.type) { + case "protocolVersion": + return info.nvmDescriptor.protocolVersion; + case "applicationVersion": + return info.nvmDescriptor.firmwareVersion; + + case "protocolFileFormat": + case "applicationFileFormat": + // Not supported in 500 series, but we use 500 in JSON to designate a 500 series NVM + return 500; + + case "applicationData": + return this.getOnly("EEOFFSET_HOST_OFFSET_START_far"); + + case "applicationName": + // Not supported in 500 series + return; + + case "homeId": { + // 500 series stores the home ID as a number + const homeId = await this.getOnly( + "EX_NVM_HOME_ID_far", + ); + if (homeId == undefined) return; + const ret = Buffer.alloc(4, 0); + // FIXME: BE? LE? + ret.writeUInt32BE(homeId, 0); + return ret; + } + + case "learnedHomeId": { + // 500 series stores the home ID as a number + const homeId = await this.getOnly("NVM_HOMEID_far"); + if (homeId == undefined) return; + const ret = Buffer.alloc(4, 0); + // FIXME: BE? LE? + ret.writeUInt32BE(homeId, 0); + return ret; + } + + case "nodeId": + return this.getOnly("NVM_NODEID_far"); + + case "lastNodeId": + return this.getOnly( + "EX_NVM_LAST_USED_NODE_ID_START_far", + ); + + case "staticControllerNodeId": + return this.getOnly( + "EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far", + ); + case "sucLastIndex": + return this.getOnly( + "EX_NVM_SUC_LAST_INDEX_START_far", + ); + case "controllerConfiguration": + return this.getOnly( + "EX_NVM_CONTROLLER_CONFIGURATION_far", + ); + + case "maxNodeId": + return this.getOnly("EX_NVM_MAX_NODE_ID_far"); + case "reservedId": + return this.getOnly("EX_NVM_RESERVED_ID_far"); + case "systemState": + return this.getOnly("NVM_SYSTEM_STATE"); + + case "commandClasses": { + const numCCs = await this.getOnly( + "EEOFFSET_CMDCLASS_LEN_far", + ); + const ret = await this.getAll( + "EEOFFSET_CMDCLASS_far", + ); + return ret?.slice(0, numCCs); + } + + case "preferredRepeaters": + return this.getOnly("NVM_PREFERRED_REPEATERS_far"); + + case "appRouteLock": { + return this.getOnly( + "EX_NVM_ROUTECACHE_APP_LOCK_far", + ); + } + case "routeSlaveSUC": { + return this.getOnly( + "EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far", + ); + } + case "sucPendingUpdate": { + return this.getOnly("EX_NVM_PENDING_UPDATE_far"); + } + case "pendingDiscovery": { + return this.getOnly("NVM_PENDING_DISCOVERY_far"); + } + + case "nodeIds": { + const nodeInfos = await this.getAll( + "EX_NVM_NODE_TABLE_START_far", + ); + return nodeInfos + ?.map((info, index) => info ? (index + 1) : undefined) + .filter((id) => id != undefined); + } + + case "virtualNodeIds": { + const ret = await this.getOnly( + "EX_NVM_BRIDGE_NODEPOOL_START_far", + ); + return ret ?? []; + } + + case "sucUpdateEntries": { + const ret = await this.getAll( + "EX_NVM_SUC_NODE_LIST_START_far", + ); + return ret?.filter(Boolean); + } + + case "watchdogStarted": + return this.getOnly("EEOFFSET_WATCHDOG_STARTED_far"); + + case "powerLevelNormal": + return this.getAll( + "EEOFFSET_POWERLEVEL_NORMAL_far", + ); + case "powerLevelLow": + return this.getAll( + "EEOFFSET_POWERLEVEL_LOW_far", + ); + case "powerMode": + return this.getOnly( + "EEOFFSET_MODULE_POWER_MODE_far", + ); + case "powerModeExtintEnable": + return this.getOnly( + "EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far", + ); + case "powerModeWutTimeout": + return this.getOnly( + "EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far", + ); + + case "sucAwarenessPushNeeded": + case "lastNodeIdLR": + case "maxNodeIdLR": + case "reservedIdLR": + case "primaryLongRangeChannelId": + case "dcdcConfig": + case "lrNodeIds": + case "includedInsecurely": + case "includedSecurelyInsecureCCs": + case "includedSecurelySecureCCs": + case "rfRegion": + case "txPower": + case "measured0dBm": + case "enablePTI": + case "maxTXPower": + case "nodeIdType": + case "isListening": + case "optionalFunctionality": + case "genericDeviceClass": + case "specificDeviceClass": + // Not supported on 500 series, 700+ series only + return; + + default: + assertNever(property.type); + } + } + + private async getNodeNVMProperty( + property: NodeNVMProperty, + ): Promise { + switch (property.type) { + case "info": { + const nodeId = property.nodeId; + const nodeInfo = await this.getSingle( + "EX_NVM_NODE_TABLE_START_far", + nodeId - 1, + ); + const sucUpdateIndex = await this.getSingle( + "EX_NVM_SUC_CONTROLLER_LIST_START_far", + nodeId - 1, + ) ?? 0xff; + const neighbors = await this.getSingle( + "EX_NVM_ROUTING_TABLE_START_far", + nodeId - 1, + ) ?? []; + + if (!nodeInfo) return; + + return { + nodeId, + ...nodeInfo, + neighbors, + sucUpdateIndex, + } satisfies NodeInfo; + } + + case "routes": { + const lwr = await this.getSingle( + "EX_NVM_ROUTECACHE_START_far", + property.nodeId - 1, + ); + const nlwr = await this.getSingle( + "EX_NVM_ROUTECACHE_NLWR_SR_START_far", + property.nodeId - 1, + ); + return { lwr, nlwr }; + } + } + } + + private setOnly( + property: NVMEntryName, + value: NVMData, + ): Promise { + return this._nvm.set(property, [value]); + } + + private setSingle( + property: NVMEntryName, + index: number, + value: NVMData, + ): Promise { + return this._nvm.setSingle(property, index, value); + } + + private setAll( + property: NVMEntryName, + value: NVMData[], + ): Promise { + return this._nvm.set(property, value); + } + + set( + property: T, + value: NVMPropertyToDataType, + ): Promise { + if (property.domain === "controller") { + return this.setControllerNVMProperty(property, value); + } else if (property.domain === "lrnode") { + throw new ZWaveError( + `500 series NVM has no support for Long Range node information`, + ZWaveErrorCodes.NVM_ObjectNotFound, + ); + } else { + return this.setNodeNVMProperty(property, value); + } + } + + private async setControllerNVMProperty( + property: ControllerNVMProperty, + value: any, + ): Promise { + switch (property.type) { + case "protocolVersion": + case "applicationVersion": + // Only written during erase + return; + + case "protocolFileFormat": + case "applicationFileFormat": + // Cannot be written + return; + + case "applicationData": + return this.setOnly( + "EEOFFSET_HOST_OFFSET_START_far", + value ?? Buffer.alloc(NVM_SERIALAPI_HOST_SIZE, 0xff), + ); + + case "applicationName": + // Not supported in 500 series + return; + + case "homeId": { + // 500 series stores the home ID as a number + const homeId = value.readUInt32BE(0); + return this.setOnly("EX_NVM_HOME_ID_far", homeId); + } + + case "learnedHomeId": { + // 500 series stores the home ID as a number + const learnedHomeId = value?.readUInt32BE(0) ?? 0x00000000; + return this.setOnly("NVM_HOMEID_far", learnedHomeId); + } + + case "nodeId": + return this.setOnly("NVM_NODEID_far", value); + + case "lastNodeId": + return this.setOnly( + "EX_NVM_LAST_USED_NODE_ID_START_far", + value, + ); + + case "staticControllerNodeId": + return this.setOnly( + "EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far", + value, + ); + case "sucLastIndex": + return this.setOnly( + "EX_NVM_SUC_LAST_INDEX_START_far", + value, + ); + case "controllerConfiguration": + return this.setOnly( + "EX_NVM_CONTROLLER_CONFIGURATION_far", + value, + ); + + case "maxNodeId": + return this.setOnly("EX_NVM_MAX_NODE_ID_far", value); + case "reservedId": + return this.setOnly("EX_NVM_RESERVED_ID_far", value); + case "systemState": + return this.setOnly("NVM_SYSTEM_STATE", value); + + case "commandClasses": { + await this.setOnly( + "EEOFFSET_CMDCLASS_LEN_far", + value.length, + ); + const CCs = new Array(APPL_NODEPARM_MAX).fill(0xff); + for (let i = 0; i < value.length; i++) { + if (i < APPL_NODEPARM_MAX) { + CCs[i] = value[i]; + } + } + await this.setAll( + "EEOFFSET_CMDCLASS_far", + CCs, + ); + return; + } + + case "preferredRepeaters": + return this.setOnly("NVM_PREFERRED_REPEATERS_far", value); + + case "appRouteLock": { + return this.setOnly( + "EX_NVM_ROUTECACHE_APP_LOCK_far", + value, + ); + } + case "routeSlaveSUC": { + return this.setOnly( + "EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far", + value, + ); + } + case "sucPendingUpdate": { + return this.setOnly("EX_NVM_PENDING_UPDATE_far", value); + } + case "pendingDiscovery": { + return this.setOnly("NVM_PENDING_DISCOVERY_far", value); + } + + case "nodeIds": + // Cannot be written. Is implied by the node info table + return; + + case "virtualNodeIds": { + return this.setOnly( + "EX_NVM_BRIDGE_NODEPOOL_START_far", + value, + ); + } + + case "sucUpdateEntries": { + const entries = value as SUCUpdateEntry[]; + const sucUpdateEntries = new Array(SUC_MAX_UPDATES).fill( + undefined, + ); + for (let i = 0; i < entries.length; i++) { + if (i < SUC_MAX_UPDATES) { + sucUpdateEntries[i] = entries[i]; + } + } + return this.setAll( + "EX_NVM_SUC_NODE_LIST_START_far", + sucUpdateEntries, + ); + } + + case "watchdogStarted": + return this.setOnly("EEOFFSET_WATCHDOG_STARTED_far", value); + + case "powerLevelNormal": + return this.setAll( + "EEOFFSET_POWERLEVEL_NORMAL_far", + value, + ); + case "powerLevelLow": + return this.setAll( + "EEOFFSET_POWERLEVEL_LOW_far", + value, + ); + case "powerMode": + return this.setOnly( + "EEOFFSET_MODULE_POWER_MODE_far", + value, + ); + case "powerModeExtintEnable": + return this.setOnly( + "EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far", + value, + ); + case "powerModeWutTimeout": + return this.setOnly( + "EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far", + value, + ); + + case "sucAwarenessPushNeeded": + case "lastNodeIdLR": + case "maxNodeIdLR": + case "reservedIdLR": + case "primaryLongRangeChannelId": + case "dcdcConfig": + case "lrNodeIds": + case "includedInsecurely": + case "includedSecurelyInsecureCCs": + case "includedSecurelySecureCCs": + case "rfRegion": + case "txPower": + case "measured0dBm": + case "enablePTI": + case "maxTXPower": + case "nodeIdType": + case "isListening": + case "optionalFunctionality": + case "genericDeviceClass": + case "specificDeviceClass": + // Not supported on 500 series, 700+ series only + return; + + default: + assertNever(property.type); + } + } + + private async setNodeNVMProperty( + property: NodeNVMProperty, + value: any, + ): Promise { + switch (property.type) { + case "info": { + const nodeId = property.nodeId; + const node = value as NodeInfo; + await this.setSingle( + "EX_NVM_NODE_TABLE_START_far", + nodeId - 1, + node + ? { + isListening: node.isListening, + isFrequentListening: node.isFrequentListening, + isRouting: node.isRouting, + supportedDataRates: node.supportedDataRates, + protocolVersion: node.protocolVersion, + optionalFunctionality: node.optionalFunctionality, + nodeType: node.nodeType, + supportsSecurity: node.supportsSecurity, + supportsBeaming: node.supportsBeaming, + genericDeviceClass: node.genericDeviceClass, + specificDeviceClass: node.specificDeviceClass + ?? null, + } satisfies NVM500NodeInfo + : undefined, + ); + await this.setSingle( + "EX_NVM_SUC_CONTROLLER_LIST_START_far", + nodeId - 1, + node?.sucUpdateIndex ?? 0xfe, + ); + await this.setSingle( + "EX_NVM_ROUTING_TABLE_START_far", + nodeId - 1, + node?.neighbors, + ); + } + + case "routes": { + const nodeId = property.nodeId; + const routes = value as { lwr?: Route; nlwr?: Route }; + await this.setSingle( + "EX_NVM_ROUTECACHE_START_far", + nodeId - 1, + routes.lwr, + ); + await this.setSingle( + "EX_NVM_ROUTECACHE_NLWR_SR_START_far", + property.nodeId - 1, + routes.nlwr, + ); + } + } + } + + // eslint-disable-next-line @typescript-eslint/require-await + public async delete(_property: NVMProperty): Promise { + throw new Error("Method not implemented."); + } + + public hasPendingChanges(): boolean { + // We don't buffer changes + return false; + } + + public async commit(): Promise { + // We don't buffer changes at the moment + } +} diff --git a/packages/nvmedit/src/nvm500/parsers/Bridge_6_6x.ts b/packages/nvmedit/src/lib/nvm500/impls/Bridge_6_6x.ts similarity index 97% rename from packages/nvmedit/src/nvm500/parsers/Bridge_6_6x.ts rename to packages/nvmedit/src/lib/nvm500/impls/Bridge_6_6x.ts index 87ad9874e824..55a00de55c01 100644 --- a/packages/nvmedit/src/nvm500/parsers/Bridge_6_6x.ts +++ b/packages/nvmedit/src/lib/nvm500/impls/Bridge_6_6x.ts @@ -1,6 +1,6 @@ import { MAX_NODES, NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_MAX_UPDATES } from "../../consts"; -import type { NVM500Details } from "../NVMParser"; +import { SUC_MAX_UPDATES } from "../../../consts"; +import type { NVM500Impl } from "../shared"; import { APPL_NODEPARM_MAX, NVMEntryType, @@ -182,7 +182,7 @@ const NVM_Layout_Bridge_6_6x: NVMLayout = [ { name: "nvmModuleSizeEndMarker", type: NVMEntryType.Word, count: 1 }, ]; -export const Bridge_6_6x: NVM500Details = { +export const Bridge_6_6x: NVM500Impl = { name: "Bridge 6.6x", library: "bridge", protocolVersions: ["4.33", "4.62"], diff --git a/packages/nvmedit/src/nvm500/parsers/Bridge_6_7x.ts b/packages/nvmedit/src/lib/nvm500/impls/Bridge_6_7x.ts similarity index 97% rename from packages/nvmedit/src/nvm500/parsers/Bridge_6_7x.ts rename to packages/nvmedit/src/lib/nvm500/impls/Bridge_6_7x.ts index 38784e31290c..669b01aaf3dc 100644 --- a/packages/nvmedit/src/nvm500/parsers/Bridge_6_7x.ts +++ b/packages/nvmedit/src/lib/nvm500/impls/Bridge_6_7x.ts @@ -1,6 +1,6 @@ import { MAX_NODES, NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_MAX_UPDATES } from "../../consts"; -import type { NVM500Details } from "../NVMParser"; +import { SUC_MAX_UPDATES } from "../../../consts"; +import type { NVM500Impl } from "../shared"; import { APPL_NODEPARM_MAX, NVMEntryType, @@ -199,7 +199,7 @@ const NVM_Layout_Bridge_6_7x: NVMLayout = [ { name: "nvmModuleSizeEndMarker", type: NVMEntryType.Word, count: 1 }, ]; -export const Bridge_6_7x: NVM500Details = { +export const Bridge_6_7x: NVM500Impl = { name: "Bridge 6.7x", library: "bridge", protocolVersions: ["4.60", "4.61", "5.02", "5.03"], diff --git a/packages/nvmedit/src/nvm500/parsers/Bridge_6_8x.ts b/packages/nvmedit/src/lib/nvm500/impls/Bridge_6_8x.ts similarity index 97% rename from packages/nvmedit/src/nvm500/parsers/Bridge_6_8x.ts rename to packages/nvmedit/src/lib/nvm500/impls/Bridge_6_8x.ts index c99a240ff666..cd88be4698f7 100644 --- a/packages/nvmedit/src/nvm500/parsers/Bridge_6_8x.ts +++ b/packages/nvmedit/src/lib/nvm500/impls/Bridge_6_8x.ts @@ -1,6 +1,6 @@ import { MAX_NODES, NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_MAX_UPDATES } from "../../consts"; -import type { NVM500Details } from "../NVMParser"; +import { SUC_MAX_UPDATES } from "../../../consts"; +import type { NVM500Impl } from "../shared"; import { APPL_NODEPARM_MAX, NVMEntryType, @@ -215,7 +215,7 @@ const NVM_Layout_Bridge_6_8x: NVMLayout = [ { name: "nvmModuleSizeEndMarker", type: NVMEntryType.Word, count: 1 }, ]; -export const Bridge_6_8x: NVM500Details = { +export const Bridge_6_8x: NVM500Impl = { name: "Bridge 6.8x", library: "bridge", protocolVersions: [ diff --git a/packages/nvmedit/src/nvm500/parsers/Static_6_6x.ts b/packages/nvmedit/src/lib/nvm500/impls/Static_6_6x.ts similarity index 96% rename from packages/nvmedit/src/nvm500/parsers/Static_6_6x.ts rename to packages/nvmedit/src/lib/nvm500/impls/Static_6_6x.ts index 661698c5f540..1ea466a9ad85 100644 --- a/packages/nvmedit/src/nvm500/parsers/Static_6_6x.ts +++ b/packages/nvmedit/src/lib/nvm500/impls/Static_6_6x.ts @@ -1,6 +1,6 @@ import { MAX_NODES, NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_MAX_UPDATES } from "../../consts"; -import type { NVM500Details } from "../NVMParser"; +import { SUC_MAX_UPDATES } from "../../../consts"; +import type { NVM500Impl } from "../shared"; import { APPL_NODEPARM_MAX, NVMEntryType, @@ -177,7 +177,7 @@ const NVM_Layout_Static_6_6x: NVMLayout = [ { name: "nvmModuleSizeEndMarker", type: NVMEntryType.Word, count: 1 }, ]; -export const Static_6_6x: NVM500Details = { +export const Static_6_6x: NVM500Impl = { name: "Static 6.6x", library: "static", protocolVersions: ["4.33", "4.62"], diff --git a/packages/nvmedit/src/nvm500/parsers/Static_6_7x.ts b/packages/nvmedit/src/lib/nvm500/impls/Static_6_7x.ts similarity index 97% rename from packages/nvmedit/src/nvm500/parsers/Static_6_7x.ts rename to packages/nvmedit/src/lib/nvm500/impls/Static_6_7x.ts index 88d28497424f..a3343ee874c0 100644 --- a/packages/nvmedit/src/nvm500/parsers/Static_6_7x.ts +++ b/packages/nvmedit/src/lib/nvm500/impls/Static_6_7x.ts @@ -1,6 +1,6 @@ import { MAX_NODES, NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_MAX_UPDATES } from "../../consts"; -import type { NVM500Details } from "../NVMParser"; +import { SUC_MAX_UPDATES } from "../../../consts"; +import type { NVM500Impl } from "../shared"; import { APPL_NODEPARM_MAX, NVMEntryType, @@ -194,7 +194,7 @@ const NVM_Layout_Static_6_7x: NVMLayout = [ { name: "nvmModuleSizeEndMarker", type: NVMEntryType.Word, count: 1 }, ]; -export const Static_6_7x: NVM500Details = { +export const Static_6_7x: NVM500Impl = { name: "Static 6.7x", library: "static", protocolVersions: ["4.60", "4.61", "5.02", "5.03"], diff --git a/packages/nvmedit/src/nvm500/parsers/Static_6_8x.ts b/packages/nvmedit/src/lib/nvm500/impls/Static_6_8x.ts similarity index 97% rename from packages/nvmedit/src/nvm500/parsers/Static_6_8x.ts rename to packages/nvmedit/src/lib/nvm500/impls/Static_6_8x.ts index 6cdbc0e3ee35..c48db4068ed0 100644 --- a/packages/nvmedit/src/nvm500/parsers/Static_6_8x.ts +++ b/packages/nvmedit/src/lib/nvm500/impls/Static_6_8x.ts @@ -1,6 +1,6 @@ import { MAX_NODES, NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_MAX_UPDATES } from "../../consts"; -import type { NVM500Details } from "../NVMParser"; +import { SUC_MAX_UPDATES } from "../../../consts"; +import type { NVM500Impl } from "../shared"; import { APPL_NODEPARM_MAX, NVMEntryType, @@ -211,7 +211,7 @@ const NVM_Layout_Static_6_8x: NVMLayout = [ { name: "nvmModuleSizeEndMarker", type: NVMEntryType.Word, count: 1 }, ]; -export const Static_6_8x: NVM500Details = { +export const Static_6_8x: NVM500Impl = { name: "Static 6.8x", library: "static", protocolVersions: [ diff --git a/packages/nvmedit/src/lib/nvm500/impls/index.ts b/packages/nvmedit/src/lib/nvm500/impls/index.ts new file mode 100644 index 000000000000..f49192628c84 --- /dev/null +++ b/packages/nvmedit/src/lib/nvm500/impls/index.ts @@ -0,0 +1,15 @@ +import { Bridge_6_6x } from "./Bridge_6_6x"; +import { Bridge_6_7x } from "./Bridge_6_7x"; +import { Bridge_6_8x } from "./Bridge_6_8x"; +import { Static_6_6x } from "./Static_6_6x"; +import { Static_6_7x } from "./Static_6_7x"; +import { Static_6_8x } from "./Static_6_8x"; + +export const nvm500Impls = [ + Bridge_6_6x, + Bridge_6_7x, + Bridge_6_8x, + Static_6_6x, + Static_6_7x, + Static_6_8x, +] as const; diff --git a/packages/nvmedit/src/nvm500/shared.ts b/packages/nvmedit/src/lib/nvm500/shared.ts similarity index 77% rename from packages/nvmedit/src/nvm500/shared.ts rename to packages/nvmedit/src/lib/nvm500/shared.ts index b7cf0a40e527..cbea9b150c86 100644 --- a/packages/nvmedit/src/nvm500/shared.ts +++ b/packages/nvmedit/src/lib/nvm500/shared.ts @@ -1,6 +1,7 @@ import { NUM_NODEMASK_BYTES } from "@zwave-js/core/safe"; -import { SUC_UPDATE_ENTRY_SIZE } from "../consts"; -import type { Route, SUCUpdateEntry } from "../files"; +import { SUC_UPDATE_ENTRY_SIZE } from "../../consts"; +import { type Route } from "../common/routeCache"; +import { type SUCUpdateEntry } from "../common/sucUpdateEntry"; import type { NVM500NodeInfo, NVMDescriptor, @@ -91,6 +92,9 @@ export interface NVMEntry { count: number; } +/** The NVM entry as it appears in a valid layout, with all sizes and offsets resolved */ +export type ResolvedNVMEntry = Required; + export type NVMData = | Buffer | number @@ -106,7 +110,9 @@ export interface ParsedNVMEntry extends NVMEntry { data: NVMData[]; } -export type NVMLayout = NVMEntry[]; +export type NVMLayout = readonly Readonly[]; + +export type ResolvedNVMLayout = ReadonlyMap; export const NVMEntrySizes: Record = { [NVMEntryType.NVMModuleSize]: 2, // Marks the start of an NVM module @@ -150,3 +156,37 @@ export const CONFIGURATION_VALID_0 = 0x54; export const CONFIGURATION_VALID_1 = 0xa5; export const ROUTECACHE_VALID = 0x4a; export const MAGIC_VALUE = 0x42; + +export interface NVM500Impl { + name: string; + library: "static" | "bridge"; + protocolVersions: string[]; + layout: NVMLayout; +} + +export type ResolvedNVM500Impl = Omit & { + layout: ResolvedNVMLayout; +}; + +export function resolveLayout(layout: NVMLayout): { + layout: ResolvedNVMLayout; + nvmSize: number; +} { + const ret: Map> = new Map(); + let offset = 0; + for (const entry of layout) { + const size = entry.size ?? NVMEntrySizes[entry.type]; + const resolvedEntry: ResolvedNVMEntry = { + ...entry, + size, + offset: entry.offset ?? offset, + }; + ret.set(resolvedEntry.name, resolvedEntry); + offset += size * entry.count; + } + + const endMarker = ret.get("nvmModuleSizeEndMarker")!; + const nvmSize = endMarker.offset + endMarker.size; + + return { layout: ret, nvmSize }; +} diff --git a/packages/nvmedit/src/nvm3/nvm.ts b/packages/nvmedit/src/nvm3/nvm.ts deleted file mode 100644 index 8646a9e3ad05..000000000000 --- a/packages/nvmedit/src/nvm3/nvm.ts +++ /dev/null @@ -1,281 +0,0 @@ -import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core/safe"; -import { pick } from "@zwave-js/shared/safe"; -import { ApplicationVersionFile800ID } from "../files"; -import { - FLASH_MAX_PAGE_SIZE_700, - FLASH_MAX_PAGE_SIZE_800, - NVM3_COUNTER_SIZE, - NVM3_OBJ_HEADER_SIZE_LARGE, - NVM3_OBJ_HEADER_SIZE_SMALL, - NVM3_PAGE_HEADER_SIZE, - NVM3_WORD_SIZE, - ObjectType, - PageStatus, - PageWriteSize, - ZWAVE_APPLICATION_NVM_SIZE, - ZWAVE_PROTOCOL_NVM_SIZE, - ZWAVE_SHARED_NVM_SIZE, -} from "./consts"; -import { - type NVM3Object, - compressObjects, - fragmentLargeObject, - writeObject, -} from "./object"; -import { type NVM3Page, readPage, writePageHeader } from "./page"; -import { dumpObject, dumpPage } from "./utils"; - -function comparePages(p1: NVM3Page, p2: NVM3Page) { - if (p1.header.eraseCount === p2.header.eraseCount) { - return p1.header.offset - p2.header.offset; - } else { - return p1.header.eraseCount - p2.header.eraseCount; - } -} - -export interface NVMMeta { - sharedFileSystem: boolean; - pageSize: number; - deviceFamily: number; - writeSize: PageWriteSize; - memoryMapped: boolean; -} - -export interface NVM3Pages { - /** All application pages in the NVM */ - applicationPages: NVM3Page[]; - /** All application pages in the NVM */ - protocolPages: NVM3Page[]; -} - -export interface NVM3Objects { - /** A compressed map of application-level NVM objects */ - applicationObjects: Map; - /** A compressed map of protocol-level NVM objects */ - protocolObjects: Map; -} - -export function parseNVM( - buffer: Buffer, - verbose: boolean = false, -): NVM3Pages & NVM3Objects { - let offset = 0; - const pages: NVM3Page[] = []; - while (offset < buffer.length) { - const { page, bytesRead } = readPage(buffer, offset); - if (verbose) dumpPage(page); - pages.push(page); - offset += bytesRead; - } - - // 800 series has a shared NVM for protocol and application data. - // We can distinguish between the two, because the application version is stored in a different file ID - - const isSharedFileSystem = pages.some( - (p) => p.objects.some((o) => o.key === ApplicationVersionFile800ID), - ); - // By convention, we only use the applicationPages in that case - let applicationPages: NVM3Page[]; - let protocolPages: NVM3Page[]; - - if (isSharedFileSystem) { - applicationPages = pages; - protocolPages = []; - } else { - applicationPages = pages.filter( - (p) => p.header.offset < ZWAVE_APPLICATION_NVM_SIZE, - ); - protocolPages = pages.filter( - (p) => p.header.offset >= ZWAVE_APPLICATION_NVM_SIZE, - ); - } - - // The pages are written in a ring buffer, find the one with the lowest erase count and start reading from there in order - applicationPages.sort(comparePages); - protocolPages.sort(comparePages); - - // Build a compressed view of the NVM objects - const applicationObjects = compressObjects( - applicationPages.reduce( - (acc, page) => acc.concat(page.objects), - [], - ), - ); - - const protocolObjects = compressObjects( - protocolPages.reduce( - (acc, page) => acc.concat(page.objects), - [], - ), - ); - - if (verbose) { - console.log(); - console.log(); - console.log("Application objects:"); - applicationObjects.forEach((obj) => dumpObject(obj, true)); - console.log(); - console.log("Protocol objects:"); - protocolObjects.forEach((obj) => dumpObject(obj, true)); - } - - return { - applicationPages, - protocolPages, - applicationObjects, - protocolObjects, - }; -} - -export type EncodeNVMOptions = Partial; - -export function encodeNVM( - /** A compressed map of application-level NVM objects */ - applicationObjects: Map, - /** A compressed map of protocol-level NVM objects */ - protocolObjects: Map, - options?: EncodeNVMOptions, -): Buffer { - const { - deviceFamily = 2047, - writeSize = PageWriteSize.WRITE_SIZE_16, - memoryMapped = true, - } = options ?? {}; - const maxPageSize = options?.sharedFileSystem - ? FLASH_MAX_PAGE_SIZE_800 - : FLASH_MAX_PAGE_SIZE_700; - const pageSize = Math.min( - options?.pageSize ?? maxPageSize, - maxPageSize, - ); - - const createEmptyPage = (): Buffer => { - const ret = Buffer.alloc(pageSize, 0xff); - writePageHeader({ - version: 0x01, - eraseCount: 0, - encrypted: false, - deviceFamily, - memoryMapped, - pageSize, - status: PageStatus.OK, - writeSize, - }).copy(ret, 0); - return ret; - }; - - const writeObjects = ( - pages: Buffer[], - objects: Map, - ) => { - // Keep track where we are at with writing in the pages - let pageIndex = -1; - let offsetInPage = -1; - let remainingSpace = -1; - let currentPage!: Buffer; - const nextPage = () => { - pageIndex++; - if (pageIndex >= pages.length) { - throw new ZWaveError( - "Not enough pages!", - ZWaveErrorCodes.NVM_NoSpace, - ); - } - currentPage = pages[pageIndex]; - offsetInPage = NVM3_PAGE_HEADER_SIZE; - remainingSpace = pageSize - offsetInPage; - }; - const incrementOffset = (by: number) => { - const alignedDelta = (by + NVM3_WORD_SIZE - 1) - & ~(NVM3_WORD_SIZE - 1); - - offsetInPage += alignedDelta; - remainingSpace = pageSize - offsetInPage; - }; - - nextPage(); - for (const obj of objects.values()) { - let fragments: NVM3Object[] | undefined; - - if (obj.type === ObjectType.Deleted) continue; - if ( - (obj.type === ObjectType.CounterSmall - && remainingSpace - < NVM3_OBJ_HEADER_SIZE_SMALL + NVM3_COUNTER_SIZE) - || (obj.type === ObjectType.DataSmall - && remainingSpace - < NVM3_OBJ_HEADER_SIZE_SMALL + (obj.data?.length ?? 0)) - ) { - // Small objects cannot be fragmented and need to go on the next page - nextPage(); - } else if ( - obj.type === ObjectType.CounterLarge - || obj.type === ObjectType.DataLarge - ) { - // Large objects may be fragmented - - // We need to start a new page, if the remaining space is not enough for - // the object header plus additional data - if (remainingSpace <= NVM3_OBJ_HEADER_SIZE_LARGE) nextPage(); - - fragments = fragmentLargeObject( - obj as any, - remainingSpace, - pageSize - NVM3_PAGE_HEADER_SIZE, - ); - } - if (!fragments) fragments = [obj]; - - for (const fragment of fragments) { - const objBuffer = writeObject(fragment); - objBuffer.copy(currentPage, offsetInPage); - incrementOffset(objBuffer.length); - - // Each following fragment needs to be written to a different page^ - if (fragments.length > 1) nextPage(); - } - } - }; - - if (options?.sharedFileSystem) { - const pages: Buffer[] = []; - for (let i = 0; i < ZWAVE_SHARED_NVM_SIZE / pageSize; i++) { - pages.push(createEmptyPage()); - } - - const objects = new Map([ - ...applicationObjects, - ...protocolObjects, - ]); - writeObjects(pages, objects); - - return Buffer.concat(pages); - } else { - const applicationPages: Buffer[] = []; - for (let i = 0; i < ZWAVE_APPLICATION_NVM_SIZE / pageSize; i++) { - applicationPages.push(createEmptyPage()); - } - - const protocolPages: Buffer[] = []; - for (let i = 0; i < ZWAVE_PROTOCOL_NVM_SIZE / pageSize; i++) { - protocolPages.push(createEmptyPage()); - } - - writeObjects(applicationPages, applicationObjects); - writeObjects(protocolPages, protocolObjects); - - return Buffer.concat([...applicationPages, ...protocolPages]); - } -} - -export function getNVMMeta(page: NVM3Page, sharedFileSystem: boolean): NVMMeta { - return { - sharedFileSystem, - ...pick(page.header, [ - "pageSize", - "writeSize", - "memoryMapped", - "deviceFamily", - ]), - }; -} diff --git a/packages/nvmedit/src/nvm3/object.ts b/packages/nvmedit/src/nvm3/object.ts deleted file mode 100644 index 44db5245253f..000000000000 --- a/packages/nvmedit/src/nvm3/object.ts +++ /dev/null @@ -1,260 +0,0 @@ -import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core/safe"; -import { - FragmentType, - NVM3_CODE_LARGE_SHIFT, - NVM3_CODE_SMALL_SHIFT, - NVM3_COUNTER_SIZE, - NVM3_OBJ_FRAGTYPE_MASK, - NVM3_OBJ_FRAGTYPE_SHIFT, - NVM3_OBJ_HEADER_SIZE_LARGE, - NVM3_OBJ_HEADER_SIZE_SMALL, - NVM3_OBJ_KEY_MASK, - NVM3_OBJ_KEY_SHIFT, - NVM3_OBJ_LARGE_LEN_MASK, - NVM3_OBJ_TYPE_MASK, - NVM3_WORD_SIZE, - ObjectType, -} from "./consts"; -import { - computeBergerCode, - computeBergerCodeMulti, - validateBergerCodeMulti, -} from "./utils"; - -export interface NVM3Object { - type: ObjectType; - fragmentType: FragmentType; - key: number; - data?: Buffer; -} - -export function readObject( - buffer: Buffer, - offset: number, -): - | { - object: NVM3Object; - bytesRead: number; - } - | undefined -{ - let headerSize = 4; - const hdr1 = buffer.readUInt32LE(offset); - - // Skip over blank page areas - if (hdr1 === 0xffffffff) return; - - const key = (hdr1 >> NVM3_OBJ_KEY_SHIFT) & NVM3_OBJ_KEY_MASK; - let objType: ObjectType = hdr1 & NVM3_OBJ_TYPE_MASK; - let fragmentLength = 0; - let hdr2: number | undefined; - const isLarge = objType === ObjectType.DataLarge - || objType === ObjectType.CounterLarge; - if (isLarge) { - hdr2 = buffer.readUInt32LE(offset + 4); - headerSize += 4; - fragmentLength = hdr2 & NVM3_OBJ_LARGE_LEN_MASK; - } else if (objType > ObjectType.DataSmall) { - // In small objects with data, the length and object type are stored in the same value - fragmentLength = objType - ObjectType.DataSmall; - objType = ObjectType.DataSmall; - } else if (objType === ObjectType.CounterSmall) { - fragmentLength = NVM3_COUNTER_SIZE; - } - - const fragmentType: FragmentType = isLarge - ? (hdr1 >>> NVM3_OBJ_FRAGTYPE_SHIFT) & NVM3_OBJ_FRAGTYPE_MASK - : FragmentType.None; - - if (isLarge) { - validateBergerCodeMulti([hdr1, hdr2!], 32 + NVM3_CODE_LARGE_SHIFT); - } else { - validateBergerCodeMulti([hdr1], NVM3_CODE_SMALL_SHIFT); - } - - if (buffer.length < offset + headerSize + fragmentLength) { - throw new ZWaveError( - "Incomplete object in buffer!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - - let data: Buffer | undefined; - if (fragmentLength > 0) { - data = buffer.subarray( - offset + headerSize, - offset + headerSize + fragmentLength, - ); - } - - const alignedLength = (fragmentLength + NVM3_WORD_SIZE - 1) - & ~(NVM3_WORD_SIZE - 1); - const bytesRead = headerSize + alignedLength; - - const obj: NVM3Object = { - type: objType, - fragmentType, - key, - data, - }; - return { - object: obj, - bytesRead, - }; -} - -export function readObjects(buffer: Buffer): { - objects: NVM3Object[]; - bytesRead: number; -} { - let offset = 0; - const objects: NVM3Object[] = []; - while (offset < buffer.length) { - const result = readObject(buffer, offset); - if (!result) break; - - const { object, bytesRead } = result; - objects.push(object); - - offset += bytesRead; - } - - return { - objects, - bytesRead: offset, - }; -} - -export function writeObject(obj: NVM3Object): Buffer { - const isLarge = obj.type === ObjectType.DataLarge - || obj.type === ObjectType.CounterLarge; - const headerSize = isLarge - ? NVM3_OBJ_HEADER_SIZE_LARGE - : NVM3_OBJ_HEADER_SIZE_SMALL; - const dataLength = obj.data?.length ?? 0; - const ret = Buffer.allocUnsafe(dataLength + headerSize); - - // Write header - if (isLarge) { - let hdr2 = dataLength & NVM3_OBJ_LARGE_LEN_MASK; - - const hdr1 = (obj.type & NVM3_OBJ_TYPE_MASK) - | ((obj.key & NVM3_OBJ_KEY_MASK) << NVM3_OBJ_KEY_SHIFT) - | ((obj.fragmentType & NVM3_OBJ_FRAGTYPE_MASK) - << NVM3_OBJ_FRAGTYPE_SHIFT); - - const bergerCode = computeBergerCodeMulti( - [hdr1, hdr2], - 32 + NVM3_CODE_LARGE_SHIFT, - ); - hdr2 |= bergerCode << NVM3_CODE_LARGE_SHIFT; - - ret.writeInt32LE(hdr1, 0); - ret.writeInt32LE(hdr2, 4); - } else { - let typeAndLen = obj.type; - if (typeAndLen === ObjectType.DataSmall && dataLength > 0) { - typeAndLen += dataLength; - } - let hdr1 = (typeAndLen & NVM3_OBJ_TYPE_MASK) - | ((obj.key & NVM3_OBJ_KEY_MASK) << NVM3_OBJ_KEY_SHIFT); - const bergerCode = computeBergerCode(hdr1, NVM3_CODE_SMALL_SHIFT); - hdr1 |= bergerCode << NVM3_CODE_SMALL_SHIFT; - - ret.writeInt32LE(hdr1, 0); - } - - // Write data - if (obj.data) { - obj.data.copy(ret, headerSize); - } - return ret; -} - -export function fragmentLargeObject( - obj: NVM3Object & { type: ObjectType.DataLarge | ObjectType.CounterLarge }, - maxFirstFragmentSizeWithHeader: number, - maxFragmentSizeWithHeader: number, -): NVM3Object[] { - const ret: NVM3Object[] = []; - - if ( - obj.data!.length + NVM3_OBJ_HEADER_SIZE_LARGE - <= maxFirstFragmentSizeWithHeader - ) { - return [obj]; - } - - let offset = 0; - while (offset < obj.data!.length) { - const fragmentSize = offset === 0 - ? maxFirstFragmentSizeWithHeader - NVM3_OBJ_HEADER_SIZE_LARGE - : maxFragmentSizeWithHeader - NVM3_OBJ_HEADER_SIZE_LARGE; - const data = obj.data!.subarray(offset, offset + fragmentSize); - - ret.push({ - type: obj.type, - key: obj.key, - fragmentType: offset === 0 - ? FragmentType.First - : data.length + NVM3_OBJ_HEADER_SIZE_LARGE - < maxFragmentSizeWithHeader - ? FragmentType.Last - : FragmentType.Next, - data, - }); - - offset += fragmentSize; - } - - return ret; -} - -/** - * Takes the raw list of objects from the pages ring buffer and compresses - * them so that each object is only stored once. - */ -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -export function compressObjects(objects: NVM3Object[]) { - const ret = new Map(); - // Only insert valid objects. This means non-fragmented ones, non-deleted ones - // and fragmented ones in the correct and complete order - outer: for (let i = 0; i < objects.length; i++) { - const obj = objects[i]; - if (obj.type === ObjectType.Deleted) { - ret.delete(obj.key); - continue; - } else if (obj.fragmentType === FragmentType.None) { - ret.set(obj.key, obj); - continue; - } else if (obj.fragmentType !== FragmentType.First || !obj.data) { - // This is the broken rest of an overwritten object, skip it - continue; - } - - // We're looking at the first fragment of a fragmented object - const parts: Buffer[] = [obj.data]; - for (let j = i + 1; j < objects.length; j++) { - // The next objects must have the same key and either be the - // next or the last fragment with data - const next = objects[j]; - if (next.key !== obj.key || !next.data) { - // Invalid object, skipping - continue outer; - } else if (next.fragmentType === FragmentType.Next) { - parts.push(next.data); - } else if (next.fragmentType === FragmentType.Last) { - parts.push(next.data); - break; - } - } - // Combine all fragments into a single readable object - ret.set(obj.key, { - key: obj.key, - fragmentType: FragmentType.None, - type: obj.type, - data: Buffer.concat(parts), - }); - } - return ret; -} diff --git a/packages/nvmedit/src/nvm3/page.ts b/packages/nvmedit/src/nvm3/page.ts deleted file mode 100644 index 4e967f1b80a6..000000000000 --- a/packages/nvmedit/src/nvm3/page.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core/safe"; -import { - NVM3_MIN_PAGE_SIZE, - NVM3_PAGE_COUNTER_MASK, - NVM3_PAGE_COUNTER_SIZE, - NVM3_PAGE_HEADER_SIZE, - NVM3_PAGE_MAGIC, - type PageStatus, - type PageWriteSize, -} from "./consts"; -import { type NVM3Object, readObjects } from "./object"; -import { computeBergerCode, validateBergerCode } from "./utils"; - -export interface NVM3PageHeader { - offset: number; - version: number; - eraseCount: number; - status: PageStatus; - encrypted: boolean; - pageSize: number; - writeSize: PageWriteSize; - memoryMapped: boolean; - deviceFamily: number; -} - -export interface NVM3Page { - header: NVM3PageHeader; - objects: NVM3Object[]; -} - -// The page size field has a value from 0 to 7 describing page sizes from 512 to 65536 bytes -export function pageSizeToBits(pageSize: number): number { - return Math.ceil(Math.log2(pageSize) - Math.log2(NVM3_MIN_PAGE_SIZE)); -} - -export function pageSizeFromBits(bits: number): number { - return NVM3_MIN_PAGE_SIZE * Math.pow(2, bits); -} - -export function readPage( - buffer: Buffer, - offset: number, -): { page: NVM3Page; bytesRead: number } { - const { version, eraseCount } = tryGetVersionAndEraseCount(buffer, offset); - - // Page status - const status = buffer.readUInt32LE(offset + 12); - - const devInfo = buffer.readUInt16LE(offset + 16); - const deviceFamily = devInfo & 0x7ff; - const writeSize = (devInfo >> 11) & 0b1; - const memoryMapped = !!((devInfo >> 12) & 0b1); - let pageSize = pageSizeFromBits((devInfo >> 13) & 0b111); - - if (pageSize > 0xffff) { - // Some controllers have no valid info in the page size bits, resulting - // in an impossibly large page size. To try and figure out the actual page - // size without knowing the hardware, we scan the buffer for the next valid - // page start. - for (let exponent = 0; exponent < 0b111; exponent++) { - const testPageSize = pageSizeFromBits(exponent); - const nextOffset = offset + testPageSize; - if ( - // exactly end of NVM OR - buffer.length === nextOffset - // next page - || isValidPageHeaderAtOffset(buffer, nextOffset) - ) { - pageSize = testPageSize; - break; - } - } - } - if (pageSize > 0xffff) { - throw new ZWaveError( - "Could not determine page size!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - - if (buffer.length < offset + pageSize) { - throw new ZWaveError( - "Incomplete page in buffer!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - - const formatInfo = buffer.readUInt16LE(offset + 18); - - const encrypted = !(formatInfo & 0b1); - - const header: NVM3PageHeader = { - offset, - version, - eraseCount, - status, - encrypted, - pageSize, - writeSize, - memoryMapped, - deviceFamily, - }; - const bytesRead = pageSize; - const data = buffer.subarray(offset + 20, offset + bytesRead); - - const { objects } = readObjects(data); - - return { - page: { header, objects }, - bytesRead, - }; -} - -function tryGetVersionAndEraseCount( - buffer: Buffer, - offset: number, -): { version: number; eraseCount: number } { - if (offset > buffer.length - NVM3_PAGE_HEADER_SIZE) { - throw new ZWaveError( - "Incomplete page in buffer!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - - const version = buffer.readUInt16LE(offset); - const magic = buffer.readUInt16LE(offset + 2); - if (magic !== NVM3_PAGE_MAGIC) { - throw new ZWaveError( - "Not a valid NVM3 page!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - if (version !== 0x01) { - throw new ZWaveError( - `Unsupported NVM3 page version: ${version}`, - ZWaveErrorCodes.NVM_NotSupported, - ); - } - - // The erase counter is saved twice, once normally, once inverted - let eraseCount = buffer.readUInt32LE(offset + 4); - const eraseCountCode = eraseCount >>> NVM3_PAGE_COUNTER_SIZE; - eraseCount &= NVM3_PAGE_COUNTER_MASK; - validateBergerCode(eraseCount, eraseCountCode, NVM3_PAGE_COUNTER_SIZE); - - let eraseCountInv = buffer.readUInt32LE(offset + 8); - const eraseCountInvCode = eraseCountInv >>> NVM3_PAGE_COUNTER_SIZE; - eraseCountInv &= NVM3_PAGE_COUNTER_MASK; - validateBergerCode( - eraseCountInv, - eraseCountInvCode, - NVM3_PAGE_COUNTER_SIZE, - ); - - if (eraseCount !== (~eraseCountInv & NVM3_PAGE_COUNTER_MASK)) { - throw new ZWaveError( - "Invalid erase count!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - - return { version, eraseCount }; -} - -function isValidPageHeaderAtOffset( - buffer: Buffer, - offset: number, -): boolean { - try { - tryGetVersionAndEraseCount(buffer, offset); - return true; - } catch { - return false; - } -} - -export function writePageHeader( - header: Omit, -): Buffer { - const ret = Buffer.alloc(NVM3_PAGE_HEADER_SIZE); - - ret.writeUInt16LE(header.version, 0); - ret.writeUInt16LE(NVM3_PAGE_MAGIC, 2); - - let eraseCount = header.eraseCount & NVM3_PAGE_COUNTER_MASK; - const eraseCountCode = computeBergerCode( - eraseCount, - NVM3_PAGE_COUNTER_SIZE, - ); - eraseCount |= eraseCountCode << NVM3_PAGE_COUNTER_SIZE; - ret.writeInt32LE(eraseCount, 4); - - let eraseCountInv = ~header.eraseCount & NVM3_PAGE_COUNTER_MASK; - const eraseCountInvCode = computeBergerCode( - eraseCountInv, - NVM3_PAGE_COUNTER_SIZE, - ); - eraseCountInv |= eraseCountInvCode << NVM3_PAGE_COUNTER_SIZE; - ret.writeInt32LE(eraseCountInv, 8); - - ret.writeUInt32LE(header.status, 12); - - const devInfo = (header.deviceFamily & 0x7ff) - | ((header.writeSize & 0b1) << 11) - | ((header.memoryMapped ? 1 : 0) << 12) - | (pageSizeToBits(header.pageSize) << 13); - ret.writeUInt16LE(devInfo, 16); - - const formatInfo = header.encrypted ? 0xfffe : 0xffff; - ret.writeUInt16LE(formatInfo, 18); - - return ret; -} diff --git a/packages/nvmedit/src/nvm500/NVMParser.ts b/packages/nvmedit/src/nvm500/NVMParser.ts index 1fb81943592a..1770a680c706 100644 --- a/packages/nvmedit/src/nvm500/NVMParser.ts +++ b/packages/nvmedit/src/nvm500/NVMParser.ts @@ -1,726 +1,9 @@ -import { - type CommandClasses, - MAX_NODES, - ZWaveError, - ZWaveErrorCodes, - encodeBitMask, - parseBitMask, -} from "@zwave-js/core/safe"; -import { num2hex, pick, sum } from "@zwave-js/shared/safe"; -import { SUC_MAX_UPDATES } from "../consts"; -import { nodeHasInfo } from "../convert"; -import { - type Route, - type SUCUpdateEntry, - encodeRoute, - encodeSUCUpdateEntry, - parseRoute, - parseSUCUpdateEntry, -} from "../files"; -import { - type NVM500NodeInfo, - type NVMDescriptor, - type NVMModuleDescriptor, - encodeNVM500NodeInfo, - encodeNVMDescriptor, - encodeNVMModuleDescriptor, - parseNVM500NodeInfo, - parseNVMDescriptor, - parseNVMModuleDescriptor, -} from "./EntryParsers"; -import { Bridge_6_6x } from "./parsers/Bridge_6_6x"; -import { Bridge_6_7x } from "./parsers/Bridge_6_7x"; -import { Bridge_6_8x } from "./parsers/Bridge_6_8x"; -import { Static_6_6x } from "./parsers/Static_6_6x"; -import { Static_6_7x } from "./parsers/Static_6_7x"; -import { Static_6_8x } from "./parsers/Static_6_8x"; -import { - APPL_NODEPARM_MAX, - CONFIGURATION_VALID_0, - CONFIGURATION_VALID_1, - MAGIC_VALUE, - type NVMData, - type NVMEntryName, - NVMEntrySizes, - NVMEntryType, - type NVMLayout, - NVMModuleType, - NVM_SERIALAPI_HOST_SIZE, - type ParsedNVMEntry, - ROUTECACHE_VALID, -} from "./shared"; +import { type CommandClasses } from "@zwave-js/core/safe"; +import { type Route } from "../lib/common/routeCache"; +import { type SUCUpdateEntry } from "../lib/common/sucUpdateEntry"; +import { type NVM500NodeInfo } from "../lib/nvm500/EntryParsers"; +import { type NVM500Impl } from "../lib/nvm500/shared"; -export interface NVM500Details { - name: string; - library: "static" | "bridge"; - protocolVersions: string[]; - layout: NVMLayout; -} - -export const nmvDetails500 = [ - Bridge_6_6x, - Bridge_6_7x, - Bridge_6_8x, - Static_6_6x, - Static_6_7x, - Static_6_8x, -] as const; - -/** Detects which parser is able to parse the given NVM */ -export function createParser(nvm: Buffer): NVMParser | undefined { - for (const impl of nmvDetails500) { - try { - const parser = new NVMParser(impl, nvm); - return parser; - } catch { - continue; - } - } -} - -export class NVMParser { - public constructor(private readonly impl: NVM500Details, nvm: Buffer) { - this.parse(nvm); - if (!this.isValid()) { - throw new ZWaveError( - "Invalid NVM!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - } - - /** Tests if the given NVM is a valid NVM for this parser version */ - private isValid(): boolean { - // Checking if an NVM is valid requires checking multiple bytes at different locations - const eeoffset_magic = this.cache.get("EEOFFSET_MAGIC_far") - ?.data[0] as number; - const configuration_valid_0 = this.cache.get( - "NVM_CONFIGURATION_VALID_far", - )?.data[0] as number; - const configuration_valid_1 = this.cache.get( - "NVM_CONFIGURATION_REALLYVALID_far", - )?.data[0] as number; - const routecache_valid = this.cache.get("EX_NVM_ROUTECACHE_MAGIC_far") - ?.data[0] as number; - const nvm = this.cache.get("nvmDescriptor")?.data[0] as NVMDescriptor; - const endMarker = this.cache.get("nvmModuleSizeEndMarker") - ?.data[0] as number; - - return ( - eeoffset_magic === MAGIC_VALUE - && configuration_valid_0 === CONFIGURATION_VALID_0 - && configuration_valid_1 === CONFIGURATION_VALID_1 - && routecache_valid === ROUTECACHE_VALID - && this.impl.protocolVersions.includes(nvm.protocolVersion) - && endMarker === 0 - ); - } - - private cache = new Map(); - - private parse(nvm: Buffer): void { - let offset = 0; - let moduleStart = -1; - let moduleSize = -1; - - const nvmEnd = nvm.readUInt16BE(0); - - for (const entry of this.impl.layout) { - const size = entry.size ?? NVMEntrySizes[entry.type]; - - if (entry.type === NVMEntryType.NVMModuleSize) { - if (moduleStart !== -1) { - // All following NVM modules must start at the last module's end - offset = moduleStart + moduleSize; - } - - moduleStart = offset; - moduleSize = nvm.readUInt16BE(offset); - } else if (entry.type === NVMEntryType.NVMModuleDescriptor) { - // The module descriptor is always at the end of the module - offset = moduleStart + moduleSize - size; - } - - if (entry.offset != undefined && entry.offset !== offset) { - // The entry has a defined offset but is at the wrong location - throw new ZWaveError( - `${entry.name} is at wrong location in NVM buffer!`, - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - - const data: Buffer[] = []; - for (let i = 0; i < entry.count; i++) { - data.push( - nvm.subarray(offset + i * size, offset + (i + 1) * size), - ); - } - const converted = data.map((buffer) => { - switch (entry.type) { - case NVMEntryType.Byte: - return buffer.readUInt8(0); - case NVMEntryType.Word: - case NVMEntryType.NVMModuleSize: - return buffer.readUInt16BE(0); - case NVMEntryType.DWord: - return buffer.readUInt32BE(0); - case NVMEntryType.NodeInfo: - if (buffer.every((byte) => byte === 0)) { - return undefined; - } - return parseNVM500NodeInfo(buffer, 0); - case NVMEntryType.NodeMask: - return parseBitMask(buffer); - case NVMEntryType.SUCUpdateEntry: - if (buffer.every((byte) => byte === 0)) { - return undefined; - } - return parseSUCUpdateEntry(buffer, 0); - case NVMEntryType.Route: - if (buffer.every((byte) => byte === 0)) { - return undefined; - } - return parseRoute(buffer, 0); - case NVMEntryType.NVMModuleDescriptor: { - const ret = parseNVMModuleDescriptor(buffer); - if (ret.size !== moduleSize) { - throw new ZWaveError( - "NVM module descriptor size does not match module size!", - ZWaveErrorCodes.NVM_InvalidFormat, - ); - } - return ret; - } - case NVMEntryType.NVMDescriptor: - return parseNVMDescriptor(buffer); - default: - // This includes NVMEntryType.BUFFER - return buffer; - } - }); - this.cache.set(entry.name, { - ...entry, - data: converted, - }); - - // Skip forward - offset += size * entry.count; - if (offset >= nvmEnd) return; - } - } - - private getOne(key: NVMEntryName): T { - return this.cache.get(key)?.data[0] as T; - } - - private getAll( - key: NVMEntryName, - ): T extends Buffer ? T : T[] { - return this.cache.get(key)?.data as any; - } - - public toJSON(): Required { - const nvmDescriptor = this.getOne("nvmDescriptor"); - const ownHomeId = this.getOne("EX_NVM_HOME_ID_far"); - const learnedHomeId = this.getOne("NVM_HOMEID_far"); - - const lastNodeId = this.getOne( - "EX_NVM_LAST_USED_NODE_ID_START_far", - ); - const maxNodeId = this.getOne("EX_NVM_MAX_NODE_ID_far"); - - const nodeInfos = this.getAll( - "EX_NVM_NODE_TABLE_START_far", - ); - const sucUpdateIndizes = this.getAll( - "EX_NVM_SUC_CONTROLLER_LIST_START_far", - ); - const appRouteLock = new Set( - this.getOne("EX_NVM_ROUTECACHE_APP_LOCK_far"), - ); - const routeSlaveSUC = new Set( - this.getOne("EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far"), - ); - const pendingDiscovery = new Set( - this.getOne("NVM_PENDING_DISCOVERY_far"), - ); - const sucPendingUpdate = new Set( - this.getOne("EX_NVM_PENDING_UPDATE_far"), - ); - const virtualNodes = new Set( - this.getOne("EX_NVM_BRIDGE_NODEPOOL_START_far") ?? [], - ); - const lwr = this.getAll("EX_NVM_ROUTECACHE_START_far"); - const nlwr = this.getAll("EX_NVM_ROUTECACHE_NLWR_SR_START_far"); - const neighbors = this.getAll( - "EX_NVM_ROUTING_TABLE_START_far", - ); - - const numCCs = this.getOne("EEOFFSET_CMDCLASS_LEN_far"); - const commandClasses = this.getAll( - "EEOFFSET_CMDCLASS_far", - ).slice(0, numCCs); - - const nodes: Record = {}; - for (let nodeId = 1; nodeId <= MAX_NODES; nodeId++) { - const nodeInfo = nodeInfos[nodeId - 1]; - const isVirtual = virtualNodes.has(nodeId); - if (!nodeInfo) { - if (isVirtual) { - nodes[nodeId] = { isVirtual: true }; - } - continue; - } - - nodes[nodeId] = { - ...nodeInfo, - isVirtual, - - neighbors: neighbors[nodeId - 1] ?? [], - sucUpdateIndex: sucUpdateIndizes[nodeId - 1], - - appRouteLock: appRouteLock.has(nodeId), - routeSlaveSUC: routeSlaveSUC.has(nodeId), - sucPendingUpdate: sucPendingUpdate.has(nodeId), - pendingDiscovery: pendingDiscovery.has(nodeId), - - lwr: lwr[nodeId - 1] ?? null, - nlwr: nlwr[nodeId - 1] ?? null, - }; - } - - return { - format: 500, - meta: { - library: this.impl.library, - ...pick(nvmDescriptor, [ - "manufacturerID", - "firmwareID", - "productType", - "productID", - ]), - }, - controller: { - protocolVersion: nvmDescriptor.protocolVersion, - applicationVersion: nvmDescriptor.firmwareVersion, - ownHomeId: num2hex(ownHomeId), - learnedHomeId: learnedHomeId ? num2hex(learnedHomeId) : null, - nodeId: this.getOne("NVM_NODEID_far"), - lastNodeId, - staticControllerNodeId: this.getOne( - "EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far", - ), - sucLastIndex: this.getOne( - "EX_NVM_SUC_LAST_INDEX_START_far", - ), - controllerConfiguration: this.getOne( - "EX_NVM_CONTROLLER_CONFIGURATION_far", - ), - sucUpdateEntries: this.getAll( - "EX_NVM_SUC_NODE_LIST_START_far", - ).filter(Boolean), - maxNodeId, - reservedId: this.getOne("EX_NVM_RESERVED_ID_far"), - systemState: this.getOne("NVM_SYSTEM_STATE"), - watchdogStarted: this.getOne( - "EEOFFSET_WATCHDOG_STARTED_far", - ), - rfConfig: { - powerLevelNormal: this.getAll( - "EEOFFSET_POWERLEVEL_NORMAL_far", - ), - powerLevelLow: this.getAll( - "EEOFFSET_POWERLEVEL_LOW_far", - ), - powerMode: this.getOne( - "EEOFFSET_MODULE_POWER_MODE_far", - ), - powerModeExtintEnable: this.getOne( - "EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far", - ), - powerModeWutTimeout: this.getOne( - "EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far", - ), - }, - preferredRepeaters: this.getOne( - "NVM_PREFERRED_REPEATERS_far", - ), - - commandClasses, - applicationData: this.getOne( - "EEOFFSET_HOST_OFFSET_START_far", - ).toString("hex"), - }, - nodes, - }; - } -} - -export class NVMSerializer { - public constructor(private readonly impl: NVM500Details) {} - public readonly entries = new Map(); - private nvmSize: number = 0; - - private setOne(key: NVMEntryName, value: T) { - const entry = this.impl.layout.find((e) => e.name === key); - // Skip entries not present in this layout - if (!entry) return; - - this.entries.set(key, { - ...entry, - data: [value], - }); - } - - private setMany(key: NVMEntryName, value: T[]) { - const entry = this.impl.layout.find((e) => e.name === key); - // Skip entries not present in this layout - if (!entry) return; - - this.entries.set(key, { - ...entry, - data: value, - }); - } - - private setFromNodeMap( - key: NVMEntryName, - map: Map, - fill?: number, - ) { - const entry = this.impl.layout.find((e) => e.name === key); - // Skip entries not present in this layout - if (!entry) return; - - const data: (T | undefined)[] = new Array(MAX_NODES).fill(fill); - for (const [nodeId, value] of map) { - data[nodeId - 1] = value; - } - - this.entries.set(key, { - ...entry, - data, - }); - } - - private fill(key: NVMEntryName, value: number) { - const entry = this.impl.layout.find((e) => e.name === key); - // Skip entries not present in this layout - if (!entry) return; - - const size = entry.size ?? NVMEntrySizes[entry.type]; - const data: any[] = []; - for (let i = 1; i <= entry.count; i++) { - switch (entry.type) { - case NVMEntryType.Byte: - case NVMEntryType.Word: - case NVMEntryType.DWord: - data.push(value); - break; - case NVMEntryType.Buffer: - data.push(Buffer.alloc(size, value)); - break; - case NVMEntryType.NodeMask: - // This ignores the fill value - data.push(new Array(size).fill(0)); - break; - default: - throw new Error( - `Cannot fill entry of type ${NVMEntryType[entry.type]}`, - ); - } - } - this.entries.set(key, { - ...entry, - data, - }); - } - - public parseJSON( - json: Required, - protocolVersion: string, - ): void { - this.entries.clear(); - - // Set controller infos - const c = json.controller; - this.setOne( - "EX_NVM_HOME_ID_far", - parseInt(c.ownHomeId.replace(/^0x/, ""), 16), - ); - if (c.learnedHomeId) { - this.setOne( - "NVM_HOMEID_far", - parseInt(c.learnedHomeId.replace(/^0x/, ""), 16), - ); - } else { - this.setOne("NVM_HOMEID_far", 0); - } - this.setOne("EX_NVM_LAST_USED_NODE_ID_START_far", c.lastNodeId); - this.setOne("NVM_NODEID_far", c.nodeId); - this.setOne( - "EX_NVM_STATIC_CONTROLLER_NODE_ID_START_far", - c.staticControllerNodeId, - ); - this.setOne("EX_NVM_SUC_LAST_INDEX_START_far", c.sucLastIndex); - this.setOne( - "EX_NVM_CONTROLLER_CONFIGURATION_far", - c.controllerConfiguration, - ); - - const sucUpdateEntries = new Array(SUC_MAX_UPDATES).fill(undefined); - for (let i = 0; i < c.sucUpdateEntries.length; i++) { - if (i < SUC_MAX_UPDATES) { - sucUpdateEntries[i] = c.sucUpdateEntries[i]; - } - } - this.setMany("EX_NVM_SUC_NODE_LIST_START_far", sucUpdateEntries); - - this.setOne("EX_NVM_MAX_NODE_ID_far", c.maxNodeId); - this.setOne("EX_NVM_RESERVED_ID_far", c.reservedId); - this.setOne("NVM_SYSTEM_STATE", c.systemState); - this.setOne("EEOFFSET_WATCHDOG_STARTED_far", c.watchdogStarted); - - this.setMany( - "EEOFFSET_POWERLEVEL_NORMAL_far", - c.rfConfig.powerLevelNormal, - ); - this.setMany("EEOFFSET_POWERLEVEL_LOW_far", c.rfConfig.powerLevelLow); - this.setOne("EEOFFSET_MODULE_POWER_MODE_far", c.rfConfig.powerMode); - this.setOne( - "EEOFFSET_MODULE_POWER_MODE_EXTINT_ENABLE_far", - c.rfConfig.powerModeExtintEnable, - ); - this.setOne( - "EEOFFSET_MODULE_POWER_MODE_WUT_TIMEOUT_far", - c.rfConfig.powerModeWutTimeout, - ); - - this.setOne("NVM_PREFERRED_REPEATERS_far", c.preferredRepeaters); - - this.setOne("EEOFFSET_CMDCLASS_LEN_far", c.commandClasses.length); - const CCs = new Array(APPL_NODEPARM_MAX).fill(0xff); - for (let i = 0; i < c.commandClasses.length; i++) { - if (i < APPL_NODEPARM_MAX) { - CCs[i] = c.commandClasses[i]; - } - } - this.setMany("EEOFFSET_CMDCLASS_far", CCs); - - if (c.applicationData) { - this.setOne( - "EEOFFSET_HOST_OFFSET_START_far", - Buffer.from(c.applicationData, "hex"), - ); - } else { - this.setOne( - "EEOFFSET_HOST_OFFSET_START_far", - Buffer.alloc(NVM_SERIALAPI_HOST_SIZE, 0xff), - ); - } - - // Set node infos - const nodeInfos = new Map(); - const sucUpdateIndizes = new Map(); - const appRouteLock: number[] = []; - const routeSlaveSUC: number[] = []; - const pendingDiscovery: number[] = []; - const sucPendingUpdate: number[] = []; - const virtualNodes: number[] = []; - const lwr = new Map(); - const nlwr = new Map(); - const neighbors = new Map(); - - for (const [id, node] of Object.entries(json.nodes)) { - const nodeId = parseInt(id); - if (!nodeHasInfo(node)) { - virtualNodes.push(nodeId); - continue; - } - - nodeInfos.set( - nodeId, - pick(node, [ - "isListening", - "isFrequentListening", - "isRouting", - "supportedDataRates", - "protocolVersion", - "optionalFunctionality", - "nodeType", - "supportsSecurity", - "supportsBeaming", - "genericDeviceClass", - "specificDeviceClass", - ]), - ); - sucUpdateIndizes.set(nodeId, node.sucUpdateIndex); - if (node.appRouteLock) appRouteLock.push(nodeId); - if (node.routeSlaveSUC) routeSlaveSUC.push(nodeId); - if (node.pendingDiscovery) pendingDiscovery.push(nodeId); - if (node.sucPendingUpdate) sucPendingUpdate.push(nodeId); - if (node.lwr) lwr.set(nodeId, node.lwr); - if (node.nlwr) nlwr.set(nodeId, node.nlwr); - neighbors.set(nodeId, node.neighbors); - } - - this.setFromNodeMap( - "EX_NVM_NODE_TABLE_START_far", - nodeInfos, - ); - this.setFromNodeMap( - "EX_NVM_SUC_CONTROLLER_LIST_START_far", - sucUpdateIndizes, - 0xfe, - ); - this.setOne("EX_NVM_ROUTECACHE_APP_LOCK_far", appRouteLock); - this.setOne( - "EX_NVM_SUC_ROUTING_SLAVE_LIST_START_far", - routeSlaveSUC, - ); - this.setOne("NVM_PENDING_DISCOVERY_far", pendingDiscovery); - this.setOne("EX_NVM_PENDING_UPDATE_far", sucPendingUpdate); - this.setOne("EX_NVM_BRIDGE_NODEPOOL_START_far", virtualNodes); - this.setFromNodeMap("EX_NVM_ROUTECACHE_START_far", lwr); - this.setFromNodeMap("EX_NVM_ROUTECACHE_NLWR_SR_START_far", nlwr); - this.setFromNodeMap("EX_NVM_ROUTING_TABLE_START_far", neighbors); - - // Set some entries that are always identical - this.setOne("NVM_CONFIGURATION_VALID_far", CONFIGURATION_VALID_0); - this.setOne("NVM_CONFIGURATION_REALLYVALID_far", CONFIGURATION_VALID_1); - this.setOne("EEOFFSET_MAGIC_far", MAGIC_VALUE); - this.setOne("EX_NVM_ROUTECACHE_MAGIC_far", ROUTECACHE_VALID); - this.setOne("nvmModuleSizeEndMarker", 0); - - // Set NVM descriptor - this.setOne("nvmDescriptor", { - ...pick(json.meta, [ - "manufacturerID", - "productType", - "productID", - "firmwareID", - ]), - // Override the protocol version with the specified one - protocolVersion, - firmwareVersion: c.applicationVersion, - }); - - // Set dummy entries we're never going to fill - this.fill("NVM_INTERNAL_RESERVED_1_far", 0); - this.fill("NVM_INTERNAL_RESERVED_2_far", 0xff); - this.fill("NVM_INTERNAL_RESERVED_3_far", 0); - this.fill("NVM_RTC_TIMERS_far", 0); - this.fill("EX_NVM_SUC_ACTIVE_START_far", 0); - this.fill("EX_NVM_ZENSOR_TABLE_START_far", 0); - this.fill("NVM_SECURITY0_KEY_far", 0); - - // Auto-compute some fields - const entrySizes = this.impl.layout.map( - (e) => e.count * (e.size ?? NVMEntrySizes[e.type]), - ); - this.nvmSize = sum(entrySizes); - this.setOne("nvmTotalEnd", this.nvmSize - 1); // the value points to the last byte - - let moduleSize = 0; - let moduleKey: NVMEntryName; - for (let i = 0; i < this.impl.layout.length; i++) { - const entry = this.impl.layout[i]; - if (entry.type === NVMEntryType.NVMModuleSize) { - // Start of NVM module - moduleSize = 0; - moduleKey = entry.name; - } - moduleSize += entrySizes[i]; - if (entry.type === NVMEntryType.NVMModuleDescriptor) { - // End of NVM module - // set size at the start - this.setOne(moduleKey!, moduleSize); - // and descriptor at the end - const moduleType = entry.name === "nvmZWlibraryDescriptor" - ? NVMModuleType.ZW_LIBRARY - : entry.name === "nvmApplicationDescriptor" - ? NVMModuleType.APPLICATION - : entry.name === "nvmHostApplicationDescriptor" - ? NVMModuleType.HOST_APPLICATION - : entry.name === "nvmDescriptorDescriptor" - ? NVMModuleType.NVM_DESCRIPTOR - : 0; - this.setOne(entry.name, { - size: moduleSize, - type: moduleType, - version: entry.name === "nvmZWlibraryDescriptor" - ? c.protocolVersion - : c.applicationVersion, - }); - } - } - } - - public serialize(): Buffer { - const ret = Buffer.alloc(this.nvmSize, 0xff); - let offset = 0; - - for (const entry of this.impl.layout) { - // In 500 NVMs there are no optional entries. Make sure they all exist - const value = this.entries.get(entry.name); - if (value == undefined) { - throw new Error(`Required entry ${entry.name} is missing`); - } - - const size = entry.size ?? NVMEntrySizes[entry.type]; - - const converted: Buffer[] = value.data.map((data) => { - switch (entry.type) { - case NVMEntryType.Byte: - return Buffer.from([data as number]); - case NVMEntryType.Word: - case NVMEntryType.NVMModuleSize: { - const ret = Buffer.allocUnsafe(2); - ret.writeUInt16BE(data as number, 0); - return ret; - } - case NVMEntryType.DWord: { - const ret = Buffer.allocUnsafe(4); - ret.writeUInt32BE(data as number, 0); - return ret; - } - case NVMEntryType.NodeInfo: - return data - ? encodeNVM500NodeInfo(data as NVM500NodeInfo) - : Buffer.alloc(size, 0); - case NVMEntryType.NodeMask: { - const ret = Buffer.alloc(size, 0); - if (data) { - encodeBitMask(data as number[], MAX_NODES, 1).copy( - ret, - 0, - ); - } - return ret; - } - case NVMEntryType.SUCUpdateEntry: - return encodeSUCUpdateEntry(data as SUCUpdateEntry); - case NVMEntryType.Route: - return encodeRoute(data as Route); - case NVMEntryType.NVMModuleDescriptor: - return encodeNVMModuleDescriptor( - data as NVMModuleDescriptor, - ); - case NVMEntryType.NVMDescriptor: - return encodeNVMDescriptor(data as NVMDescriptor); - case NVMEntryType.Buffer: - return data as Buffer; - } - }); - for (const buf of converted) { - buf.copy(ret, offset); - offset += size; // Not all entries have the same size as the raw buffer - } - } - - return ret; - } -} export interface NVM500JSON { // To distinguish between 700 and 500 series JSONs better format: 500; @@ -734,7 +17,7 @@ export interface NVM500Meta { firmwareID: number; productType: number; productID: number; - library: NVM500Details["library"]; + library: NVM500Impl["library"]; } export interface NVM500JSONController { diff --git a/packages/nvmedit/src/shared.ts b/packages/nvmedit/src/shared.ts deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.11.0.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.11.0.bin index 558b933d2519..3a99941edba5 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.11.0.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.11.0.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.12.0.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.12.0.bin index b3b718476d7e..9a45fe805e54 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.12.0.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.12.0.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.15.4.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.15.4.bin index b55f5feeb6a9..07b413cded26 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.15.4.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.15.4.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_1.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_1.bin index 36522cce083c..dad76349ffd5 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_1.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_1.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_2.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_2.bin index 388048e38e12..afd823ee10c2 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_2.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.16.2_2.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.17.2.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.17.2.bin index 8bd68231b349..a919ef041bb8 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.17.2.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.17.2.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.1.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.1.bin index b76cd65be250..c307f38ad3b5 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.1.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.1.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.2.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.2.bin index 0633149d398a..beb4f23a439b 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.2.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.2.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.3.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.3.bin index 29669edf1485..836e268fab7c 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.3.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.3.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.4.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.4.bin index cc9fcbd8f60b..56e00048dd96 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.4.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.18.4.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.0.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.0.bin index d5f69d481b07..850ce515da28 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.0.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.0.bin differ diff --git a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.1.bin b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.1.bin index 7998524d2af7..e4a64b24b2cd 100644 Binary files a/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.1.bin and b/packages/nvmedit/test/fixtures/nvm_700_invariants/ctrlr_backup_700_7.19.1.bin differ diff --git a/packages/serial/package.json b/packages/serial/package.json index 8b72aa6fdb5a..cda604c48d42 100644 --- a/packages/serial/package.json +++ b/packages/serial/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/serial", - "version": "13.3.1", + "version": "13.9.0", "description": "zwave-js: Serialport driver", "publishConfig": { "access": "public" @@ -51,7 +51,7 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" @@ -63,20 +63,20 @@ "@zwave-js/shared": "workspace:*", "alcalzone-shared": "^4.0.8", "serialport": "^12.0.0", - "winston": "^3.13.0" + "winston": "^3.15.0" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", + "@microsoft/api-extractor": "^7.47.9", "@serialport/binding-mock": "^10.2.2", "@serialport/bindings-interface": "*", - "@types/node": "^18.19.42", + "@types/node": "^18.19.55", "@types/sinon": "^17.0.3", "ansi-colors": "^4.1.3", "ava": "^6.1.3", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", - "sinon": "^17.0.1", - "typescript": "5.5.3" + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", + "sinon": "^19.0.2", + "typescript": "5.6.2" } } diff --git a/packages/serial/serial.api.md b/packages/serial/serial.api.md index 3172327f2023..fb5479473df6 100644 --- a/packages/serial/serial.api.md +++ b/packages/serial/serial.api.md @@ -151,33 +151,35 @@ export enum FunctionType { // (undocumented) ExploreRequestInclusion = 94,// ?? // (undocumented) - ExtExtWriteLongByte = 45,// Returns random data of variable length + ExtendedNVMOperations = 61,// Returns random data of variable length // (undocumented) - ExtNVMReadLongBuffer = 42,// Get Home ID and Controller Node ID + ExtExtWriteLongByte = 45,// Get Home ID and Controller Node ID // (undocumented) - ExtNVMReadLongByte = 44,// get a byte of memory + ExtNVMReadLongBuffer = 42,// get a byte of memory // (undocumented) - ExtNVMWriteLongBuffer = 43,// write a byte of memory + ExtNVMReadLongByte = 44,// write a byte of memory + // (undocumented) + ExtNVMWriteLongBuffer = 43, // (undocumented) FirmwareUpdateNVM = 120, // (undocumented) - FUNC_ID_APPLICATION_SLAVE_COMMAND_HANDLER = 161, + FUNC_ID_APPLICATION_SLAVE_COMMAND_HANDLER = 161,// Leave Serial API and enter bootloader (700+ series only). Enter Auto-Programming mode (500 series only). // (undocumented) - FUNC_ID_PROMISCUOUS_APPLICATION_COMMAND_HANDLER = 209,// Leave Serial API and enter bootloader (700+ series only). Enter Auto-Programming mode (500 series only). + FUNC_ID_PROMISCUOUS_APPLICATION_COMMAND_HANDLER = 209,// ZW_NVRGetValue(offset, length) => NVRdata[], see INS13954-13 // (undocumented) - FUNC_ID_ZW_ENABLE_SUC = 82,// ZW_NVRGetValue(offset, length) => NVRdata[], see INS13954-13 + FUNC_ID_ZW_ENABLE_SUC = 82,// Returns information about the external NVM // (undocumented) - FUNC_ID_ZW_GET_RANDOM = 28,// Returns information about the external NVM + FUNC_ID_ZW_GET_RANDOM = 28,// Reads a buffer from the external NVM // (undocumented) - FUNC_ID_ZW_NEW_CONTROLLER = 67,// Reads a buffer from the external NVM + FUNC_ID_ZW_NEW_CONTROLLER = 67,// Writes a buffer to the external NVM // (undocumented) - FUNC_ID_ZW_R_F_POWER_LEVEL_SET = 23,// Writes a buffer to the external NVM + FUNC_ID_ZW_R_F_POWER_LEVEL_SET = 23,// Reads a byte from the external NVM // (undocumented) - FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE = 68,// Reads a byte from the external NVM + FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE = 68,// Writes a byte to the external NVM // (undocumented) - FUNC_ID_ZW_REPLICATION_SEND_DATA = 69,// Writes a byte to the external NVM + FUNC_ID_ZW_REPLICATION_SEND_DATA = 69,// Read and write from/to the external NVM (700+ series) // (undocumented) - FUNC_ID_ZW_REQUEST_NODE_NEIGHBOR_UPDATE_OPTIONS = 90,// 700-series command to read and write from/to the external NVM + FUNC_ID_ZW_REQUEST_NODE_NEIGHBOR_UPDATE_OPTIONS = 90,// ?? // (undocumented) FUNC_ID_ZW_SEND_SLAVE_DATA = 163,// ?? // (undocumented) @@ -191,19 +193,19 @@ export enum FunctionType { // (undocumented) GetControllerId = 32,// ?? // (undocumented) - GetControllerVersion = 21,// ?? + GetControllerVersion = 21,// Reset the Z-Wave module's internal TX timers // (undocumented) - GetLibrary = 189,// Reset the Z-Wave module's internal TX timers + GetLibrary = 189,// Request the Z-Wave module's internal TX timers // (undocumented) - GetLongRangeChannel = 219,// Request the Z-Wave module's internal TX timers + GetLongRangeChannel = 219,// Clear the current Network Statistics collected by the Z-Wave API Module // (undocumented) - GetLongRangeNodes = 218,// Clear the current Network Statistics collected by the Z-Wave API Module + GetLongRangeNodes = 218,// Request the current Network Statistics from the Z-Wave API Module // (undocumented) - GetNetworkStats = 58,// Request the current Network Statistics from the Z-Wave API Module + GetNetworkStats = 58,// request the most recent background RSSI levels detected // (undocumented) - GetNodeProtocolInfo = 65,// request the most recent background RSSI levels detected + GetNodeProtocolInfo = 65,// Set the RSSI threshold above which the stick will not transmit // (undocumented) - GetNVMId = 41,// Set the RSSI threshold above which the stick will not transmit + GetNVMId = 41,// Read and write from/to the external NVM with 32-bit addresses (700+ series) // (undocumented) GetPriorityRoute = 146,// Trigger removal of a specific node that desires exclusion from the network // (undocumented) @@ -347,7 +349,7 @@ export enum FunctionType { // (undocumented) UNKNOWN_FUNC_GetTXCounter = 129,// Set controller into promiscuous mode to listen to all messages // (undocumented) - UNKNOWN_FUNC_MEMORY_GET_BUFFER = 35, + UNKNOWN_FUNC_MEMORY_GET_BUFFER = 35,// deprecated, replaced with a flag for the ApplicationCommandHandler // (undocumented) UNKNOWN_FUNC_MEMORY_GET_BYTE = 33,// Start Hardware Watchdog (700 series and newer) // (undocumented) diff --git a/packages/serial/src/index.ts b/packages/serial/src/index.ts index 51ba8203cb75..5c20a1baac3e 100644 --- a/packages/serial/src/index.ts +++ b/packages/serial/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ export { SerialLogger } from "./Logger"; export type { SerialLogContext } from "./Logger_safe"; export * from "./MessageHeaders"; diff --git a/packages/serial/src/message/Constants.ts b/packages/serial/src/message/Constants.ts index 3515d118481a..9b3fcf531cfb 100644 --- a/packages/serial/src/message/Constants.ts +++ b/packages/serial/src/message/Constants.ts @@ -177,7 +177,7 @@ export enum FunctionType { GetProtocolStatus = 0xbf, // Request the current status of the protocol running on the Z-Wave module FUNC_ID_ZW_SET_PROMISCUOUS_MODE = 0xd0, // Set controller into promiscuous mode to listen to all messages - FUNC_ID_PROMISCUOUS_APPLICATION_COMMAND_HANDLER = 0xd1, + FUNC_ID_PROMISCUOUS_APPLICATION_COMMAND_HANDLER = 0xd1, // deprecated, replaced with a flag for the ApplicationCommandHandler StartWatchdog = 0xd2, // Start Hardware Watchdog (700 series and newer) StopWatchdog = 0xd3, // Stop Hardware Watchdog (700 series and newer) diff --git a/packages/serial/src/message/ZnifferMessages.ts b/packages/serial/src/message/ZnifferMessages.ts index fcbe6883613d..dddd22e70d9d 100644 --- a/packages/serial/src/message/ZnifferMessages.ts +++ b/packages/serial/src/message/ZnifferMessages.ts @@ -37,6 +37,7 @@ function gotDeserializationOptions( return options != undefined && Buffer.isBuffer(options.data); } +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface ZnifferMessageBaseOptions { // Intentionally empty } @@ -245,7 +246,7 @@ export class ZnifferDataMessage extends ZnifferMessage this.checksumOK = true; this.payload = Buffer.alloc(0); } else { - throw validatePayload.fail( + validatePayload.fail( `Unsupported frame type ${ getEnumMemberName(ZnifferFrameType, this.frameType) }`, diff --git a/packages/shared/package.json b/packages/shared/package.json index 21b8be39a7c1..e77b6c9e7fae 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/shared", - "version": "13.1.0", + "version": "13.6.0", "description": "zwave-js: shared utilities", "keywords": [], "publishConfig": { @@ -50,21 +50,21 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", + "@microsoft/api-extractor": "^7.47.9", "@types/fs-extra": "^11.0.4", - "@types/node": "^18.19.42", + "@types/node": "^18.19.55", "@types/sinon": "^17.0.3", "ava": "^6.1.3", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", - "sinon": "^17.0.1", - "typescript": "5.5.3" + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", + "sinon": "^19.0.2", + "typescript": "5.6.2" } } diff --git a/packages/shared/shared.api.md b/packages/shared/shared.api.md index 2dc12964a8d3..3f0f510e3930 100644 --- a/packages/shared/shared.api.md +++ b/packages/shared/shared.api.md @@ -56,7 +56,7 @@ export function compareStrings(a: string, b: string): number; // Warning: (ae-missing-release-tag) "Constructor" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type Constructor = new (...args: any[]) => T; +export type Constructor = new (...args: any[]) => T; // Warning: (ae-missing-release-tag) "cpp2js" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -98,6 +98,11 @@ export function discreteLinearSearch(rangeMin: number, rangeMax: number, executo // @public (undocumented) export function enumFilesRecursive(rootDir: string, predicate?: (filename: string) => boolean): Promise; +// Warning: (ae-missing-release-tag) "evalOrStatic" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export function evalOrStatic(fnOrConst: T, ...args: any[]): ReturnTypeOrStatic; + // Warning: (ae-missing-release-tag) "EventHandler" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -115,6 +120,11 @@ export type Expand = T extends object ? T extends infer O ? { // @public export function flatMap(array: T[], callbackfn: (value: T, index: number, array: T[]) => U[]): U[]; +// Warning: (ae-missing-release-tag) "FnOrStatic" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type FnOrStatic = ((...args: TArgs) => TReturn) | TReturn; + // Warning: (ae-missing-release-tag) "formatDate" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -177,7 +187,7 @@ export type JSONObject = Record; // Warning: (ae-missing-release-tag) "keysOf" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public -export function keysOf(obj: T): (keyof T)[]; +export function keysOf(obj: T): (keyof T)[]; // Warning: (ae-missing-release-tag) "mergeDeep" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -270,6 +280,11 @@ export type ReadonlyThrowingMap = ReadonlyMap & { getOrThrow(key: K): V; }; +// Warning: (ae-missing-release-tag) "ReturnTypeOrStatic" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ReturnTypeOrStatic = T extends (...args: any[]) => infer R ? R : T; + // Warning: (ae-missing-release-tag) "skipBytes" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public @@ -319,7 +334,7 @@ export class TimedExpectation implements Pro // Warning: (ae-missing-release-tag) "TypedClassDecorator" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type TypedClassDecorator = T>(apiClass: TConstructor) => TConstructor | void; +export type TypedClassDecorator = T>(apiClass: TConstructor) => TConstructor | void; // Warning: (ae-missing-release-tag) "TypedEventEmitter" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // Warning: (ae-missing-release-tag) "TypedEventEmitter" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -363,7 +378,7 @@ export class TypedEventEmitter = (target: T, propertyKey: string | symbol) => void; +export type TypedPropertyDecorator = (target: T, propertyKey: string | symbol) => void; // Warning: (ae-missing-release-tag) "UnionToIntersection" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/packages/shared/src/EventEmitter.test.ts b/packages/shared/src/EventEmitter.test.ts index fe222846911d..306bce593fa3 100644 --- a/packages/shared/src/EventEmitter.test.ts +++ b/packages/shared/src/EventEmitter.test.ts @@ -17,6 +17,7 @@ interface TestEvents { baseProp2 = "base"; } + // eslint-disable-next-line @typescript-eslint/no-empty-object-type interface Test extends TypedEventEmitter {} @Mixin([EventEmitter]) diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 075724d30069..e9fc00d7f3f1 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ export * from "./AsyncQueue"; export * from "./EventEmitter"; export { ObjectKeyMap } from "./ObjectKeyMap"; diff --git a/packages/shared/src/index_safe.ts b/packages/shared/src/index_safe.ts index 8dd0f0ae40d9..adc6b2d3d7c0 100644 --- a/packages/shared/src/index_safe.ts +++ b/packages/shared/src/index_safe.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ /* @forbiddenImports external */ export { ObjectKeyMap } from "./ObjectKeyMap"; diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index 1e84ab4fd215..4960a8cb7806 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -7,19 +7,16 @@ export type DeepPartial = { [P in keyof T]+?: DeepPartial }; export type JSONObject = Record; -// eslint-disable-next-line @typescript-eslint/ban-types -export type Constructor = new (...args: any[]) => T; +export type Constructor = new (...args: any[]) => T; -// eslint-disable-next-line @typescript-eslint/ban-types -export type TypedClassDecorator = < +export type TypedClassDecorator = < T extends TTarget, TConstructor extends new (...args: any[]) => T, >( apiClass: TConstructor, ) => TConstructor | void; -// eslint-disable-next-line @typescript-eslint/ban-types -export type TypedPropertyDecorator = < +export type TypedPropertyDecorator = < T extends TTarget, >( target: T, diff --git a/packages/shared/src/utils.ts b/packages/shared/src/utils.ts index 5e74283632a2..7ebc171d30b6 100644 --- a/packages/shared/src/utils.ts +++ b/packages/shared/src/utils.ts @@ -2,8 +2,7 @@ import { isArray, isObject } from "alcalzone-shared/typeguards"; import { num2hex } from "./strings"; /** Object.keys, but with `(keyof T)[]` as the return type */ -// eslint-disable-next-line @typescript-eslint/ban-types -export function keysOf(obj: T): (keyof T)[] { +export function keysOf(obj: T): (keyof T)[] { return Object.keys(obj) as unknown as (keyof T)[]; } @@ -236,3 +235,17 @@ export function sum(values: number[]): number { export function noop(): void { // intentionally empty } + +export type FnOrStatic = + | ((...args: TArgs) => TReturn) + | TReturn; + +export type ReturnTypeOrStatic = T extends (...args: any[]) => infer R ? R + : T; + +export function evalOrStatic( + fnOrConst: T, + ...args: any[] +): ReturnTypeOrStatic { + return typeof fnOrConst === "function" ? fnOrConst(...args) : fnOrConst; +} diff --git a/packages/testing/package.json b/packages/testing/package.json index 8ec40e31475a..395b234e42aa 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/testing", - "version": "13.3.1", + "version": "13.10.0", "description": "zwave-js: testing utilities", "keywords": [], "publishConfig": { @@ -41,7 +41,7 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix" }, "dependencies": { @@ -53,15 +53,15 @@ "ansi-colors": "^4.1.3" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", - "@types/node": "^18.19.42", + "@microsoft/api-extractor": "^7.47.9", + "@types/node": "^18.19.55", "@types/triple-beam": "^1.3.5", "@zwave-js/cc": "workspace:*", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", "triple-beam": "*", - "typescript": "5.5.3", - "winston-transport": "^4.7.1" + "typescript": "5.6.2", + "winston-transport": "^4.8.0" } } diff --git a/packages/testing/src/CCSpecificCapabilities.ts b/packages/testing/src/CCSpecificCapabilities.ts index 974ebd55b7cf..141e8105c17c 100644 --- a/packages/testing/src/CCSpecificCapabilities.ts +++ b/packages/testing/src/CCSpecificCapabilities.ts @@ -1,6 +1,7 @@ import type { ColorComponent, KeypadMode, + SwitchType, ThermostatMode, ThermostatSetpointType, UserIDStatus, @@ -10,6 +11,7 @@ import type { CommandClasses, ConfigValue, ConfigValueFormat, + MaybeUnknown, } from "@zwave-js/core"; export interface BinarySensorCCCapabilities { @@ -17,6 +19,10 @@ export interface BinarySensorCCCapabilities { getValue?: (sensorType: number | undefined) => boolean | undefined; } +export interface BinarySwitchCCCapabilities { + defaultValue?: MaybeUnknown; +} + export interface ConfigurationCCCapabilities { // We don't have bulk support implemented in the mocks bulkSupport?: false; @@ -78,6 +84,11 @@ export interface MultilevelSensorCCCapabilities { ) => number | undefined; } +export interface MultilevelSwitchCCCapabilities { + defaultValue?: MaybeUnknown; + primarySwitchType: SwitchType; +} + export interface SoundSwitchCCCapabilities { defaultToneId: number; defaultVolume: number; @@ -153,7 +164,9 @@ export type CCSpecificCapabilities = { [CommandClasses.Configuration]: ConfigurationCCCapabilities; [CommandClasses.Notification]: NotificationCCCapabilities; [48 /* Binary Sensor */]: BinarySensorCCCapabilities; + [0x25 /* Binary Switch */]: BinarySwitchCCCapabilities; [49 /* Multilevel Sensor */]: MultilevelSensorCCCapabilities; + [0x26 /* Multilevel Switch */]: MultilevelSwitchCCCapabilities; [51 /* Color Switch */]: ColorSwitchCCCapabilities; [121 /* Sound Switch */]: SoundSwitchCCCapabilities; [106 /* Window Covering */]: WindowCoveringCCCapabilities; diff --git a/packages/testing/src/MockControllerCapabilities.ts b/packages/testing/src/MockControllerCapabilities.ts index 007444df63cc..fd448b55a571 100644 --- a/packages/testing/src/MockControllerCapabilities.ts +++ b/packages/testing/src/MockControllerCapabilities.ts @@ -43,6 +43,8 @@ export function getDefaultSupportedFunctionTypes(): FunctionType[] { FunctionType.GetNodeProtocolInfo, FunctionType.RequestNodeInfo, FunctionType.AssignSUCReturnRoute, + FunctionType.AddNodeToNetwork, + FunctionType.RemoveNodeFromNetwork, ]; } diff --git a/packages/testing/src/index.ts b/packages/testing/src/index.ts index ce4a0fafc610..db131d8c61e4 100644 --- a/packages/testing/src/index.ts +++ b/packages/testing/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/consistent-type-exports */ export * from "./CCSpecificCapabilities"; export * from "./MockController"; export { getDefaultSupportedFunctionTypes } from "./MockControllerCapabilities"; diff --git a/packages/testing/testing.api.md b/packages/testing/testing.api.md index d17e0082fd1d..21605ce7a58b 100644 --- a/packages/testing/testing.api.md +++ b/packages/testing/testing.api.md @@ -443,7 +443,7 @@ export interface NotificationCCCapabilities { // (undocumented) notificationTypesAndEvents: Record; // (undocumented) - supportsV1Alarm: false; + supportsV1Alarm: boolean; } // Warning: (ae-missing-release-tag) "PartialCCCapabilities" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -536,21 +536,21 @@ export interface WindowCoveringCCCapabilities { // Warnings were encountered during analysis: // -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ColorSwitchCC.ts:478:9 - (TS2345) Argument of type '("index" | "warmWhite" | "coldWhite" | "red" | "green" | "blue" | "amber" | "cyan" | "purple" | undefined)[]' is not assignable to parameter of type 'readonly (string | number | symbol)[]'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ColorSwitchCC.ts:478:9 - (TS2345) Argument of type '("index" | "warmWhite" | "coldWhite" | "red" | "green" | "blue" | "amber" | "cyan" | "purple" | undefined)[]' is not assignable to parameter of type 'readonly (string | number | symbol)[]'. // Type 'string | undefined' is not assignable to type 'string | number | symbol'. // Type 'undefined' is not assignable to type 'string | number | symbol'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1273:41 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1273:41 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. // Type 'string' is not assignable to type 'number'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1280:20 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1280:20 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. // Type 'string' is not assignable to type 'number'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1398:40 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1398:40 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. // Type 'string' is not assignable to type 'number'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1355:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MGRPExtension | undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1456:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MGRPExtension | undefined'. // Property 'groupId' is missing in type 'Security2Extension' but required in type 'MGRPExtension'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1366:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MPANExtension | undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1467:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MPANExtension | undefined'. // Type 'Security2Extension' is missing the following properties from type 'MPANExtension': groupId, innerMPANState -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1380:25 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1438:19 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1481:25 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1542:19 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. // (No @packageDocumentation comment for this package) diff --git a/packages/transformers/package.json b/packages/transformers/package.json index 4d79ddb9bc3b..e360ea8d8d8a 100644 --- a/packages/transformers/package.json +++ b/packages/transformers/package.json @@ -1,6 +1,6 @@ { "name": "@zwave-js/transformers", - "version": "13.1.0", + "version": "13.6.0", "description": "zwave-js: compile-time transformers", "private": true, "keywords": [], @@ -33,7 +33,7 @@ "clean": "del-cli build/ \"*.tsbuildinfo\"", "bootstrap": "yarn build", "pretest": "del-cli \"test/fixtures/*.js\" && tsc -p tsconfig.test.json && cpy \"test/build/test/fixtures/*.js\" test/fixtures && del-cli test/build", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" @@ -42,10 +42,10 @@ "@types/fs-extra": "^11.0.4", "ava": "^6.1.3", "cpy-cli": "^5.0.0", - "del-cli": "^5.1.0", + "del-cli": "^6.0.0", "execa": "^5.1.1", "fs-extra": "^11.2.0", "tsutils": "^3.21.0", - "typescript": "5.5.3" + "typescript": "5.6.2" } } diff --git a/packages/zwave-js/package.json b/packages/zwave-js/package.json index e585e745790f..4849db905325 100644 --- a/packages/zwave-js/package.json +++ b/packages/zwave-js/package.json @@ -1,6 +1,6 @@ { "name": "zwave-js", - "version": "13.3.1", + "version": "13.10.0", "description": "Z-Wave driver written entirely in JavaScript/TypeScript", "keywords": [], "type": "commonjs", @@ -88,7 +88,7 @@ "build": "tsc -b tsconfig.build.json --pretty", "clean": "del-cli build/ \"*.tsbuildinfo\"", "extract-api": "yarn api-extractor run", - "lint:ts": "eslint --cache --ext .ts \"src/**/*.ts\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts:fix": "yarn run lint:ts --fix", "test:ts": "ava", "test:dirty": "node -r ../../maintenance/esbuild-register.js ../maintenance/src/resolveDirtyTests.ts --run" @@ -96,7 +96,7 @@ "dependencies": { "@alcalzone/jsonl-db": "^3.1.1", "@alcalzone/pak": "^0.11.0", - "@homebridge/ciao": "^1.2.0", + "@homebridge/ciao": "^1.3.1", "@zwave-js/cc": "workspace:*", "@zwave-js/config": "workspace:*", "@zwave-js/core": "workspace:*", @@ -114,16 +114,16 @@ "p-queue": "^8.0.1", "proper-lockfile": "^4.1.2", "reflect-metadata": "^0.2.2", - "semver": "^7.6.2", + "semver": "^7.6.3", "serialport": "^12.0.0", "source-map-support": "^0.5.21", - "winston": "^3.13.0", + "winston": "^3.15.0", "xstate": "4.38.3" }, "devDependencies": { - "@microsoft/api-extractor": "^7.47.0", + "@microsoft/api-extractor": "^7.47.9", "@types/fs-extra": "^11.0.4", - "@types/node": "^18.19.42", + "@types/node": "^18.19.55", "@types/proper-lockfile": "^4.1.4", "@types/proxyquire": "^1.3.31", "@types/semver": "^7.5.8", @@ -133,12 +133,12 @@ "@zwave-js/maintenance": "workspace:*", "@zwave-js/transformers": "workspace:*", "ava": "^6.1.3", - "del-cli": "^5.1.0", - "esbuild": "0.21.5", - "esbuild-register": "^3.5.0", + "del-cli": "^6.0.0", + "esbuild": "0.24.0", + "esbuild-register": "^3.6.0", "mockdate": "^3.0.5", "proxyquire": "^2.1.3", - "sinon": "^17.0.1", - "typescript": "5.5.3" + "sinon": "^19.0.2", + "typescript": "5.6.2" } } diff --git a/packages/zwave-js/src/lib/controller/Controller.ts b/packages/zwave-js/src/lib/controller/Controller.ts index 3237443350ab..2618142275fb 100644 --- a/packages/zwave-js/src/lib/controller/Controller.ts +++ b/packages/zwave-js/src/lib/controller/Controller.ts @@ -99,7 +99,15 @@ import { securityClassIsS2, securityClassOrder, } from "@zwave-js/core"; -import { migrateNVM } from "@zwave-js/nvmedit"; +import { + BufferedNVMReader, + NVM3, + NVM3Adapter, + NVM500, + NVM500Adapter, + type NVMAdapter, + migrateNVM, +} from "@zwave-js/nvmedit"; import { type BootloaderChunk, BootloaderChunkType, @@ -135,6 +143,7 @@ import crypto from "node:crypto"; import type { Driver } from "../driver/Driver"; import { cacheKeyUtils, cacheKeys } from "../driver/NetworkCache"; import type { StatisticsEventCallbacks } from "../driver/Statistics"; +import { type TaskBuilder, TaskPriority } from "../driver/Task"; import { DeviceClass } from "../node/DeviceClass"; import { ZWaveNode } from "../node/Node"; import { VirtualNode } from "../node/VirtualNode"; @@ -153,7 +162,6 @@ import { ApplicationUpdateRequestSmartStartHomeIDReceived, ApplicationUpdateRequestSmartStartLongRangeHomeIDReceived, } from "../serialapi/application/ApplicationUpdateRequest"; - import { ShutdownRequest, type ShutdownResponse, @@ -409,6 +417,7 @@ import { SecurityBootstrapFailure, type SmartStartProvisioningEntry, } from "./Inclusion"; +import { SerialNVMIO500, SerialNVMIO700 } from "./NVMIO"; import { determineNIF } from "./NodeInformationFrame"; import { protocolVersionToSDKVersion } from "./ZWaveSDKVersions"; import { @@ -424,6 +433,7 @@ import { } from "./_Types"; import { assertProvisioningEntry, + isRebuildRoutesTask, sdkVersionGt, sdkVersionGte, sdkVersionLt, @@ -467,6 +477,7 @@ interface ControllerEventCallbacks export type ControllerEvents = Extract; +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface ZWaveController extends ControllerStatisticsHost {} @Mixin([ControllerStatisticsHost]) @@ -924,10 +935,9 @@ export class ZWaveController */ public readonly indicatorValues = new Map(); - private _isRebuildingRoutes: boolean = false; /** Returns whether the routes are currently being rebuilt for one or more nodes. */ public get isRebuildingRoutes(): boolean { - return this._isRebuildingRoutes; + return !!this.driver.scheduler.findTask(isRebuildRoutesTask); } /** @@ -2611,6 +2621,8 @@ export class ZWaveController // Resolve active pings that would fail otherwise this.driver.resolvePendingPings(node.id); + node.emit("node info received", node); + if ( node.canSleep && node.supportsCC(CommandClasses["Wake Up"]) @@ -4549,7 +4561,7 @@ export class ZWaveController > | undefined { - if (!this._isRebuildingRoutes) return undefined; + if (!this.isRebuildingRoutes) return undefined; return new Map(this._rebuildRoutesProgress); } @@ -4563,10 +4575,13 @@ export class ZWaveController */ public beginRebuildingRoutes(options: RebuildRoutesOptions = {}): boolean { // Don't start the process twice - if (this._isRebuildingRoutes) return false; - this._isRebuildingRoutes = true; + const existingTask = this.driver.scheduler.findTask( + (t) => t.tag?.id === "rebuild-routes", + ); + if (existingTask) return false; options.includeSleeping ??= true; + options.deletePriorityReturnRoutes ??= false; this.driver.controllerLog.print( `rebuilding routes${ @@ -4593,6 +4608,21 @@ export class ZWaveController ); this._rebuildRoutesProgress.set(id, "skipped"); } else if (!options.includeSleeping && node.canSleep) { + this.driver.controllerLog.logNode( + id, + `Skipping route rebuild because the node is sleeping.`, + ); + this._rebuildRoutesProgress.set(id, "skipped"); + } else if ( + !options.deletePriorityReturnRoutes + && (this.getPrioritySUCReturnRouteCached(id) + || Object.keys(this.getPriorityReturnRoutesCached(id)) + .length > 0) + ) { + this.driver.controllerLog.logNode( + id, + `Skipping route rebuild because the node has priority return routes.`, + ); this._rebuildRoutesProgress.set(id, "skipped"); } else { this._rebuildRoutesProgress.set(id, "pending"); @@ -4600,9 +4630,7 @@ export class ZWaveController } // Rebuild routes in the background - void this.rebuildRoutes(options).catch(() => { - /* ignore errors */ - }); + void this.rebuildRoutesInternal(options).catch(noop); // And update the progress once at the start this.emit( @@ -4613,7 +4641,17 @@ export class ZWaveController return true; } - private async rebuildRoutes(options: RebuildRoutesOptions): Promise { + private rebuildRoutesInternal( + options: RebuildRoutesOptions, + ): Promise { + return this.driver.scheduler.queueTask( + this.getRebuildRoutesTask(options), + ); + } + + private getRebuildRoutesTask( + options: RebuildRoutesOptions, + ): TaskBuilder { const pendingNodes = new Set( [...this._rebuildRoutesProgress] .filter(([, status]) => status === "pending") @@ -4648,89 +4686,150 @@ export class ZWaveController } }; - // We work our way outwards from the controller and start with non-sleeping nodes, one by one - try { - const neighbors = await this.getNodeNeighbors(this._ownNodeId!); - neighbors.forEach((id) => addTodo(id)); - } catch { - // ignore - } + const self = this; - const doRebuildRoutes = async (nodeId: number) => { - // await the process for each node and convert errors to a non-successful result - const result = await this.rebuildNodeRoutesInternal(nodeId).catch( - () => false, - ); - if (!this._isRebuildingRoutes) return; + return { + priority: TaskPriority.Lower, + tag: { id: "rebuild-routes" }, + task: async function* rebuildRoutesTask() { + // We work our way outwards from the controller and start with non-sleeping nodes, one by one + try { + const neighbors = await self.getNodeNeighbors( + self._ownNodeId!, + ); + neighbors.forEach((id) => addTodo(id)); + } catch { + // ignore + } - // Track the success in a map - this._rebuildRoutesProgress.set(nodeId, result ? "done" : "failed"); - // Notify listeners about the progress - this.emit( - "rebuild routes progress", - new Map(this._rebuildRoutesProgress), - ); + yield; // Give the task scheduler time to do something else - // Figure out which nodes to do next - try { - const neighbors = await this.getNodeNeighbors(nodeId); - neighbors.forEach((id) => addTodo(id)); - } catch { - // ignore - } - }; + async function* doRebuildRoutes(nodeId: number) { + // Await the process for each node and convert errors to a non-successful result + let result: boolean; + try { + const node = self.nodes.getOrThrow(nodeId); + result = yield () => + self.getRebuildNodeRoutesTask(node); + } catch { + result = false; + } - // First try to rebuild routes for as many nodes as possible one by one - while (todoListening.length > 0) { - const nodeId = todoListening.shift()!; - await doRebuildRoutes(nodeId); - if (!this._isRebuildingRoutes) return; - } + // Track the success in a map + self._rebuildRoutesProgress.set( + nodeId, + result ? "done" : "failed", + ); + // Notify listeners about the progress + self.emit( + "rebuild routes progress", + new Map(self._rebuildRoutesProgress), + ); - // We might end up with a few unconnected listening nodes, try to rebuild routes for them too - pendingNodes.forEach((nodeId) => addTodo(nodeId)); - while (todoListening.length > 0) { - const nodeId = todoListening.shift()!; - await doRebuildRoutes(nodeId); - if (!this._isRebuildingRoutes) return; - } + yield; // Give the task scheduler time to do something else - if (options.includeSleeping) { - // Now do all sleeping nodes at once - this.driver.controllerLog.print( - "Rebuilding routes for sleeping nodes when they wake up", - ); + // Figure out which nodes to do next + try { + const neighbors = await self.getNodeNeighbors(nodeId); + neighbors.forEach((id) => addTodo(id)); + } catch { + // ignore + } - const tasks = todoSleeping.map((nodeId) => doRebuildRoutes(nodeId)); - await Promise.all(tasks); - } + yield; // Give the task scheduler time to do something else + } - // Only emit the done event when the process wasn't stopped in the meantime - if (this._isRebuildingRoutes) { - this.driver.controllerLog.print("rebuilding routes completed"); + // First try to rebuild routes for as many nodes as possible one by one + while (todoListening.length > 0) { + const nodeId = todoListening.shift()!; + yield* doRebuildRoutes(nodeId); + } - this.emit( - "rebuild routes done", - new Map(this._rebuildRoutesProgress), - ); - } else { - this.driver.controllerLog.print("rebuilding routes aborted"); - } - // We're done! - this._isRebuildingRoutes = false; - this._rebuildRoutesProgress.clear(); + // We might end up with a few unconnected listening nodes, try to rebuild routes for them too + pendingNodes.forEach((nodeId) => addTodo(nodeId)); + while (todoListening.length > 0) { + const nodeId = todoListening.shift()!; + yield* doRebuildRoutes(nodeId); + } + + if (options.includeSleeping) { + // Now do all sleeping nodes at once + self.driver.controllerLog.print( + "Rebuilding routes for sleeping nodes when they wake up", + ); + + const sleepingNodes = todoSleeping.map((nodeId) => + self.nodes.get(nodeId) + ).filter((node) => node != undefined); + + const wakeupPromises = new Map( + sleepingNodes.map((node) => + [ + node.id, + node.waitForWakeup().then(() => node), + ] as const + ), + ); + + // As long as there are sleeping nodes that haven't had their routes rebuilt yet, + // wait for any of them to wake up + while (wakeupPromises.size > 0) { + const wakeUpPromise = Promise.race( + wakeupPromises.values(), + ); + const wokenUpNode = ( + yield () => wakeUpPromise + ) as Awaited; + if (wokenUpNode.status === NodeStatus.Asleep) { + // The node has gone to sleep again since the promise was resolved. Wait again + wakeupPromises.set( + wokenUpNode.id, + wokenUpNode.waitForWakeup().then(() => + wokenUpNode + ), + ); + continue; + } + // Once the node has woken up, remove it from the list and rebuild its routes + wakeupPromises.delete(wokenUpNode.id); + yield* doRebuildRoutes(wokenUpNode.id); + } + } + + self.driver.controllerLog.print( + "rebuilding routes completed", + ); + + self.emit( + "rebuild routes done", + new Map(self._rebuildRoutesProgress), + ); + + // We're done! + self._rebuildRoutesProgress.clear(); + }, + }; } /** * Stops the route rebuilding process. Resolves false if the process was not active, true otherwise. */ public stopRebuildingRoutes(): boolean { + const hasTasks = !!this.driver.scheduler.findTask(isRebuildRoutesTask); + // don't stop it twice - if (!this._isRebuildingRoutes) return false; - this._isRebuildingRoutes = false; + if (!hasTasks) return false; this.driver.controllerLog.print(`stopping route rebuilding process...`); + // Stop all tasks that are part of the route rebuilding process + // FIXME: This should be an async function that waits for the task removal + void this.driver.scheduler.removeTasks(isRebuildRoutesTask).then(() => { + this.driver.controllerLog.print( + "rebuilding routes aborted", + ); + }); + // Cancel all transactions that were created by the route rebuilding process this.driver.rejectTransactions( (t) => @@ -4769,16 +4868,6 @@ export class ZWaveController ); } - // Don't start the process twice - if (this._isRebuildingRoutes) { - this.driver.controllerLog.logNode( - nodeId, - `Cannot rebuild routes because another rebuilding process is in progress.`, - ); - return false; - } - this._isRebuildingRoutes = true; - // Figure out if nodes are responsive before attempting to rebuild routes if ( // The node is known to be dead @@ -4797,173 +4886,220 @@ export class ZWaveController } } - try { - return await this.rebuildNodeRoutesInternal(nodeId); - } finally { - this._isRebuildingRoutes = false; - } + return this.rebuildNodeRoutesInternal(nodeId); } - private async rebuildNodeRoutesInternal(nodeId: number): Promise { + private rebuildNodeRoutesInternal( + nodeId: number, + ): Promise { const node = this.nodes.getOrThrow(nodeId); + const task = this.getRebuildNodeRoutesTask(node); + if (task instanceof Promise) return task; - // Keep battery powered nodes awake during the process - // and make sure that the flag gets reset at the end - const keepAwake = node.keepAwake; - try { - node.keepAwake = true; + return this.driver.scheduler.queueTask(task); + } - this.driver.controllerLog.logNode(nodeId, { - message: `Rebuilding routes...`, - direction: "none", - }); + private getRebuildNodeRoutesTask( + node: ZWaveNode, + ): Promise | TaskBuilder { + // This task should only run once at a time + const existingTask = this.driver.scheduler.findTask((t) => + t.tag?.id === "rebuild-node-routes" && t.tag.nodeId === node.id + ); + if (existingTask) return existingTask; - // The process consists of four steps, each step is tried up to 5 times before i is considered failed - const maxAttempts = 5; + const self = this; + let keepAwake: boolean; - // 1. command the node to refresh its neighbor list - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - // If the process was stopped in the meantime, cancel - if (!this._isRebuildingRoutes) return false; + return { + // This task is executed by users and by the network-wide route rebuilding process. + priority: TaskPriority.Lower, + tag: { id: "rebuild-node-routes", nodeId: node.id }, + task: async function* rebuildNodeRoutesTask() { + // Keep battery powered nodes awake during the process + keepAwake = node.keepAwake; + node.keepAwake = true; - this.driver.controllerLog.logNode(nodeId, { - message: `refreshing neighbor list (attempt ${attempt})...`, - direction: "outbound", + if ( + node.canSleep && node.supportsCC(CommandClasses["Wake Up"]) + ) { + yield () => node.waitForWakeup(); + } + + self.driver.controllerLog.logNode(node.id, { + message: `Rebuilding routes...`, + direction: "none", }); - try { - const result = await this.discoverNodeNeighbors(nodeId); - if (result) { - this.driver.controllerLog.logNode(nodeId, { - message: "neighbor list refreshed...", - direction: "inbound", - }); - // this step was successful, continue with the next - break; - } else { - this.driver.controllerLog.logNode(nodeId, { - message: "refreshing neighbor list failed...", - direction: "inbound", + // The process consists of four steps, each step is tried up to 5 times before it is considered failed + const maxAttempts = 5; + + // 1. command the node to refresh its neighbor list + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + yield; // Give the task scheduler time to do something else + + self.driver.controllerLog.logNode(node.id, { + message: + `refreshing neighbor list (attempt ${attempt})...`, + direction: "outbound", + }); + + try { + const result = await self.discoverNodeNeighbors( + node.id, + ); + if (result) { + self.driver.controllerLog.logNode(node.id, { + message: "neighbor list refreshed...", + direction: "inbound", + }); + // this step was successful, continue with the next + break; + } else { + self.driver.controllerLog.logNode(node.id, { + message: "refreshing neighbor list failed...", + direction: "inbound", + level: "warn", + }); + } + } catch (e) { + self.driver.controllerLog.logNode( + node.id, + `refreshing neighbor list failed: ${ + getErrorMessage( + e, + ) + }`, + "warn", + ); + } + if (attempt === maxAttempts) { + self.driver.controllerLog.logNode(node.id, { + message: + `rebuilding routes failed: could not update the neighbor list after ${maxAttempts} attempts`, level: "warn", + direction: "none", }); + return false; } - } catch (e) { - this.driver.controllerLog.logNode( - nodeId, - `refreshing neighbor list failed: ${ - getErrorMessage( - e, - ) - }`, - "warn", - ); - } - if (attempt === maxAttempts) { - this.driver.controllerLog.logNode(nodeId, { - message: - `rebuilding routes failed: could not update the neighbor list after ${maxAttempts} attempts`, - level: "warn", - direction: "none", - }); - return false; } - } - // 2. re-create the SUC return route, just in case - node.hasSUCReturnRoute = await this.assignSUCReturnRoutes(nodeId); + yield; // Give the task scheduler time to do something else - // 3. delete all return routes to get rid of potential priority return routes - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - this.driver.controllerLog.logNode(nodeId, { - message: `deleting return routes (attempt ${attempt})...`, - direction: "outbound", - }); + // 2. re-create the SUC return route, just in case + node.hasSUCReturnRoute = await self.assignSUCReturnRoutes( + node.id, + ); - if (await this.deleteReturnRoutes(nodeId)) { - break; - } + // 3. delete all return routes to get rid of potential priority return routes + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + yield; // Give the task scheduler time to do something else - if (attempt === maxAttempts) { - this.driver.controllerLog.logNode(nodeId, { + self.driver.controllerLog.logNode(node.id, { message: - `rebuilding routes failed: failed to delete return routes after ${maxAttempts} attempts`, - level: "warn", - direction: "none", + `deleting return routes (attempt ${attempt})...`, + direction: "outbound", }); - return false; - } - } - // 4. Assign return routes to all association destinations... - let associatedNodes: number[] = []; - try { - associatedNodes = distinct( - flatMap( - [...(this.getAssociations({ nodeId }).values() as any)], - (assocs: AssociationAddress[]) => - assocs.map((a) => a.nodeId), - ), - ) - // ...except the controller itself, which was handled by step 2 - .filter((id) => id !== this._ownNodeId!) - // ...and the node itself - .filter((id) => id !== nodeId) - .sort(); - } catch { - /* ignore */ - } + if (await self.deleteReturnRoutes(node.id)) { + break; + } - if (associatedNodes.length > 0) { - this.driver.controllerLog.logNode(nodeId, { - message: `assigning return routes to the following nodes: -${associatedNodes.join(", ")}`, - direction: "outbound", - }); - for (const destinationNodeId of associatedNodes) { - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - this.driver.controllerLog.logNode(nodeId, { + if (attempt === maxAttempts) { + self.driver.controllerLog.logNode(node.id, { message: - `assigning return route to node ${destinationNodeId} (attempt ${attempt})...`, - direction: "outbound", + `rebuilding routes failed: failed to delete return routes after ${maxAttempts} attempts`, + level: "warn", + direction: "none", }); + return false; + } + } - if ( - await this.assignReturnRoutes( - nodeId, - destinationNodeId, - ) + // 4. Assign return routes to all association destinations... + let associatedNodes: number[] = []; + try { + associatedNodes = distinct( + flatMap( + [ + ...(self.getAssociations({ nodeId: node.id }) + .values() as any), + ], + (assocs: AssociationAddress[]) => + assocs.map((a) => a.nodeId), + ), + ) + // ...except the controller itself, which was handled by step 2 + .filter((id) => id !== self._ownNodeId!) + // ...and the node itself + .filter((id) => id !== node.id) + .sort(); + } catch { + // ignore + } + + if (associatedNodes.length > 0) { + self.driver.controllerLog.logNode(node.id, { + message: + `assigning return routes to the following nodes: + ${associatedNodes.join(", ")}`, + direction: "outbound", + }); + for (const destinationNodeId of associatedNodes) { + for ( + let attempt = 1; + attempt <= maxAttempts; + attempt++ ) { - // this step was successful, continue with the next - break; - } + yield; // Give the task scheduler time to do something else - if (attempt === maxAttempts) { - this.driver.controllerLog.logNode(nodeId, { + self.driver.controllerLog.logNode(node.id, { message: - `rebuilding routes failed: failed to assign return route after ${maxAttempts} attempts`, - level: "warn", - direction: "none", + `assigning return route to node ${destinationNodeId} (attempt ${attempt})...`, + direction: "outbound", }); - return false; + + if ( + await self.assignReturnRoutes( + node.id, + destinationNodeId, + ) + ) { + // this step was successful, continue with the next + break; + } + + if (attempt === maxAttempts) { + self.driver.controllerLog.logNode(node.id, { + message: + `rebuilding routes failed: failed to assign return route after ${maxAttempts} attempts`, + level: "warn", + direction: "none", + }); + return false; + } } } } - } - this.driver.controllerLog.logNode(nodeId, { - message: `rebuilt routes successfully`, - direction: "none", - }); - - return true; - } finally { - node.keepAwake = keepAwake; - if (!keepAwake) { - setImmediate(() => { - this.driver.debounceSendNodeToSleep(node); + self.driver.controllerLog.logNode(node.id, { + message: `rebuilt routes successfully`, + direction: "none", }); - } - } + + return true; + }, + cleanup: () => { + // Make sure that the keepAwake flag gets reset at the end + node.keepAwake = keepAwake; + if (!keepAwake) { + setImmediate(() => { + this.driver.debounceSendNodeToSleep(node); + }); + } + return Promise.resolve(); + }, + }; } /** Configures the given Node to be SUC/SIS or not */ @@ -5159,7 +5295,7 @@ ${associatedNodes.join(", ")}`, // Remember that this route has been assigned if (i !== priorityRouteIndex) assignedRoutes[i] = route; - } catch (e) { + } catch { this.driver.controllerLog.logNode(nodeId, { message: `Assigning custom SUC return route #${i} failed`, direction: "outbound", @@ -5182,7 +5318,7 @@ ${associatedNodes.join(", ")}`, ); try { await this.driver.sendZWaveProtocolCC(cc); - } catch (e) { + } catch { this.driver.controllerLog.logNode(nodeId, { message: `Marking custom SUC return route as priority failed`, @@ -5464,7 +5600,7 @@ ${associatedNodes.join(", ")}`, // Remember that this route has been assigned if (i !== priorityRouteIndex) assignedRoutes[i] = route; - } catch (e) { + } catch { this.driver.controllerLog.logNode(nodeId, { message: `Assigning custom return route #${i} failed`, direction: "outbound", @@ -5487,7 +5623,7 @@ ${associatedNodes.join(", ")}`, ); try { await this.driver.sendZWaveProtocolCC(cc); - } catch (e) { + } catch { this.driver.controllerLog.logNode(nodeId, { message: `Marking custom return route as priority failed`, direction: "outbound", @@ -5686,6 +5822,29 @@ ${associatedNodes.join(", ")}`, ); } + /** + * For the given node, returns all end node destinations and the priority routes to them. + * + * **Note:** This is using cached information, since there's no way to query priority routes from a node. + * If another controller has assigned routes in the meantime, this information may be out of date. + */ + public getPriorityReturnRoutesCached( + nodeId: number, + ): Record { + const ret: Record = {}; + + const routes = this.driver.cacheList( + cacheKeys.node(nodeId)._priorityReturnRouteBaseKey, + ); + for (const [key, route] of Object.entries(routes)) { + const destination = cacheKeyUtils + .destinationFromPriorityReturnRouteKey(key); + if (destination !== undefined) ret[destination] = route; + } + + return ret; + } + /** * Assigns a priority route from an end node to the SUC. This route will always be used for the first transmission attempt. * @param nodeId The ID of the end node for which to assign the route @@ -7040,6 +7199,24 @@ ${associatedNodes.join(", ")}`, } } + private _nvm: NVMAdapter | undefined; + /** Provides access to the controller's non-volatile memory */ + public get nvm(): NVMAdapter { + if (!this._nvm) { + if (this.sdkVersionGte("7.0")) { + const io = new BufferedNVMReader(new SerialNVMIO700(this)); + const nvm3 = new NVM3(io); + this._nvm = new NVM3Adapter(nvm3); + } else { + const io = new BufferedNVMReader(new SerialNVMIO500(this)); + const nvm = new NVM500(io); + this._nvm = new NVM500Adapter(nvm); + } + } + + return this._nvm; + } + /** * **Z-Wave 500 series only** * @@ -7680,7 +7857,7 @@ ${associatedNodes.join(", ")}`, } else { targetNVM = await this.backupNVMRaw500(convertProgress); } - const convertedNVM = migrateNVM(nvmData, targetNVM); + const convertedNVM = await migrateNVM(nvmData, targetNVM); this.driver.controllerLog.print("Restoring NVM backup..."); if (this.sdkVersionGte("7.0")) { @@ -8476,7 +8653,7 @@ ${associatedNodes.join(", ")}`, (c) => c.type === BootloaderChunkType.FlowControl, 1000, ); - } catch (e) { + } catch { this.driver.controllerLog.print( "OTW update failed: The bootloader did not acknowledge the start of transfer.", "error", @@ -8587,7 +8764,7 @@ ${associatedNodes.join(", ")}`, 1000, ), ]); - } catch (e) { + } catch { this.driver.controllerLog.print( "OTW update failed: The bootloader did not acknowledge the end of transfer.", "error", diff --git a/packages/zwave-js/src/lib/controller/MockControllerBehaviors.ts b/packages/zwave-js/src/lib/controller/MockControllerBehaviors.ts index 9f4fa93d8754..010bbab67471 100644 --- a/packages/zwave-js/src/lib/controller/MockControllerBehaviors.ts +++ b/packages/zwave-js/src/lib/controller/MockControllerBehaviors.ts @@ -55,6 +55,12 @@ import { GetControllerIdResponse, } from "../serialapi/memory/GetControllerIdMessages"; import { SoftResetRequest } from "../serialapi/misc/SoftResetRequest"; +import { + AddNodeStatus, + AddNodeToNetworkRequest, + AddNodeToNetworkRequestStatusReport, + AddNodeType, +} from "../serialapi/network-mgmt/AddNodeToNetworkRequest"; import { AssignSUCReturnRouteRequest, AssignSUCReturnRouteRequestTransmitReport, @@ -68,6 +74,12 @@ import { GetSUCNodeIdRequest, GetSUCNodeIdResponse, } from "../serialapi/network-mgmt/GetSUCNodeIdMessages"; +import { + RemoveNodeFromNetworkRequest, + RemoveNodeFromNetworkRequestStatusReport, + RemoveNodeStatus, + RemoveNodeType, +} from "../serialapi/network-mgmt/RemoveNodeFromNetworkRequest"; import { RequestNodeInfoRequest, RequestNodeInfoResponse, @@ -82,6 +94,7 @@ import { } from "../serialapi/transport/SendDataMessages"; import { MockControllerCommunicationState, + MockControllerInclusionState, MockControllerStateKeys, } from "./MockControllerState"; import { determineNIF } from "./NodeInformationFrame"; @@ -524,7 +537,7 @@ const handleRequestNodeInfo: MockControllerBehavior = { nodeId: nodeInfo.nodeId as number, }, }); - } catch (e) { + } catch { cb = new ApplicationUpdateRequestNodeInfoRequestFailed(host); } controller.state.set( @@ -619,6 +632,150 @@ const handleAssignSUCReturnRoute: MockControllerBehavior = { }, }; +const handleAddNode: MockControllerBehavior = { + async onHostMessage(host, controller, msg) { + if (msg instanceof AddNodeToNetworkRequest) { + // Check if this command is legal right now + const state = controller.state.get( + MockControllerStateKeys.InclusionState, + ) as MockControllerInclusionState | undefined; + + const expectCallback = msg.callbackId !== 0; + let cb: AddNodeToNetworkRequestStatusReport | undefined; + if ( + state === MockControllerInclusionState.AddingNode + ) { + // While adding, only accept stop commands + if (msg.addNodeType === AddNodeType.Stop) { + controller.state.set( + MockControllerStateKeys.InclusionState, + MockControllerInclusionState.Idle, + ); + cb = new AddNodeToNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: AddNodeStatus.Failed, + }, + ); + } else { + cb = new AddNodeToNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: AddNodeStatus.Failed, + }, + ); + } + } else if (state === MockControllerInclusionState.RemovingNode) { + // Cannot start adding nodes while removing one + cb = new AddNodeToNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: AddNodeStatus.Failed, + }, + ); + } else { + // Idle + + // Set the controller into "adding node" state + // For now we don't actually do anything in that state + controller.state.set( + MockControllerStateKeys.InclusionState, + MockControllerInclusionState.AddingNode, + ); + + cb = new AddNodeToNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: AddNodeStatus.Ready, + }, + ); + } + + if (expectCallback && cb) { + await controller.sendToHost(cb.serialize()); + } + + return true; + } + }, +}; + +const handleRemoveNode: MockControllerBehavior = { + async onHostMessage(host, controller, msg) { + if (msg instanceof RemoveNodeFromNetworkRequest) { + // Check if this command is legal right now + const state = controller.state.get( + MockControllerStateKeys.InclusionState, + ) as MockControllerInclusionState | undefined; + + const expectCallback = msg.callbackId !== 0; + let cb: RemoveNodeFromNetworkRequestStatusReport | undefined; + if ( + state === MockControllerInclusionState.RemovingNode + ) { + // While removing, only accept stop commands + if (msg.removeNodeType === RemoveNodeType.Stop) { + controller.state.set( + MockControllerStateKeys.InclusionState, + MockControllerInclusionState.Idle, + ); + cb = new RemoveNodeFromNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: RemoveNodeStatus.Failed, + }, + ); + } else { + cb = new RemoveNodeFromNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: RemoveNodeStatus.Failed, + }, + ); + } + } else if (state === MockControllerInclusionState.AddingNode) { + // Cannot start removing nodes while adding one + cb = new RemoveNodeFromNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: RemoveNodeStatus.Failed, + }, + ); + } else { + // Idle + + // Set the controller into "removing node" state + // For now we don't actually do anything in that state + controller.state.set( + MockControllerStateKeys.InclusionState, + MockControllerInclusionState.RemovingNode, + ); + + cb = new RemoveNodeFromNetworkRequestStatusReport( + host, + { + callbackId: msg.callbackId, + status: RemoveNodeStatus.Ready, + }, + ); + } + + if (expectCallback && cb) { + await controller.sendToHost(cb.serialize()); + } + + return true; + } + }, +}; + const forwardCommandClassesToHost: MockControllerBehavior = { async onNodeFrame(host, controller, node, frame) { if ( @@ -682,6 +839,8 @@ export function createDefaultBehaviors(): MockControllerBehavior[] { handleSendDataMulticast, handleRequestNodeInfo, handleAssignSUCReturnRoute, + handleAddNode, + handleRemoveNode, forwardCommandClassesToHost, forwardUnsolicitedNIF, ]; diff --git a/packages/zwave-js/src/lib/controller/MockControllerState.ts b/packages/zwave-js/src/lib/controller/MockControllerState.ts index b36f56bec019..fa267ad72130 100644 --- a/packages/zwave-js/src/lib/controller/MockControllerState.ts +++ b/packages/zwave-js/src/lib/controller/MockControllerState.ts @@ -1,5 +1,6 @@ export enum MockControllerStateKeys { CommunicationState = "communicationState", + InclusionState = "inclusionState", } export enum MockControllerCommunicationState { @@ -7,3 +8,9 @@ export enum MockControllerCommunicationState { Sending, WaitingForNode, } + +export enum MockControllerInclusionState { + Idle, + AddingNode, + RemovingNode, +} diff --git a/packages/zwave-js/src/lib/controller/NVMIO.ts b/packages/zwave-js/src/lib/controller/NVMIO.ts new file mode 100644 index 000000000000..07ebc78e2c91 --- /dev/null +++ b/packages/zwave-js/src/lib/controller/NVMIO.ts @@ -0,0 +1,260 @@ +import { ZWaveError, ZWaveErrorCodes } from "@zwave-js/core"; +import { NVMAccess, type NVMIO } from "@zwave-js/nvmedit"; +import { FunctionType } from "@zwave-js/serial"; +import { nvmSizeToBufferSize } from "../serialapi/nvm/GetNVMIdMessages"; +import { type ZWaveController } from "./Controller"; + +/** NVM IO over serial for 500 series controllers */ +export class SerialNVMIO500 implements NVMIO { + public constructor(controller: ZWaveController) { + this._controller = controller; + } + + private _controller: ZWaveController; + private _size: number | undefined; + private _chunkSize: number | undefined; + + public async open(_access: NVMAccess): Promise { + this._size = nvmSizeToBufferSize( + (await this._controller.getNVMId()).memorySize, + ); + if (!this._size) { + throw new ZWaveError( + "Unknown NVM size - cannot backup!", + ZWaveErrorCodes.Controller_NotSupported, + ); + } + return NVMAccess.ReadWrite; + } + + get size(): number { + if (this._size == undefined) { + throw new ZWaveError( + "The NVM is not open", + ZWaveErrorCodes.NVM_NotOpen, + ); + } + return this._size; + } + + get accessMode(): NVMAccess { + if (this._size == undefined) { + return NVMAccess.None; + } else { + return NVMAccess.ReadWrite; + } + } + + async determineChunkSize(): Promise { + if (this._size == undefined) { + throw new ZWaveError( + "The NVM is not open", + ZWaveErrorCodes.NVM_NotOpen, + ); + } + + if (!this._chunkSize) { + // Try reading the maximum size at first, the Serial API should return chunks in a size it supports + // For some reason, there is no documentation and no official command for this + const chunk = await this._controller.externalNVMReadBuffer( + 0, + 0xffff, + ); + // Some SDK versions return an empty buffer when trying to read a buffer that is too long + // Fallback to a sane (but maybe slow) size + this._chunkSize = chunk.length || 48; + } + return this._chunkSize; + } + + async read( + offset: number, + length: number, + ): Promise<{ buffer: Buffer; endOfFile: boolean }> { + // Ensure we're not reading out of bounds + const size = this.size; + if (offset < 0 || offset >= size) { + throw new ZWaveError( + "Cannot read outside of the NVM", + ZWaveErrorCodes.Argument_Invalid, + ); + } + + const chunkSize = await this.determineChunkSize(); + const readSize = Math.min(length, chunkSize, size - offset); + + const buffer = await this._controller.externalNVMReadBuffer( + offset, + readSize, + ); + const endOfFile = offset + readSize >= size; + return { + buffer, + endOfFile, + }; + } + + async write( + offset: number, + data: Buffer, + ): Promise<{ bytesWritten: number; endOfFile: boolean }> { + // Ensure we're not writing out of bounds + const size = this.size; + if (offset < 0 || offset >= size) { + throw new ZWaveError( + "Cannot read outside of the NVM", + ZWaveErrorCodes.Argument_Invalid, + ); + } + + // Write requests need 5 bytes more than read requests, which limits our chunk size + const chunkSize = await this.determineChunkSize() - 5; + const writeSize = Math.min(data.length, chunkSize, size - offset); + + await this._controller.externalNVMWriteBuffer( + offset, + data.subarray(0, writeSize), + ); + const endOfFile = offset + writeSize >= size; + return { + bytesWritten: writeSize, + endOfFile, + }; + } + + close(): Promise { + // Nothing to do really + return Promise.resolve(); + } +} + +/** NVM IO over serial for 700+ series controllers */ +export class SerialNVMIO700 implements NVMIO { + public constructor(controller: ZWaveController) { + this._controller = controller; + if ( + controller.isFunctionSupported( + FunctionType.ExtendedNVMOperations, + ) + ) { + this._open = async () => { + const { size } = await controller.externalNVMOpenExt(); + return size; + }; + this._read = (offset, length) => + controller.externalNVMReadBufferExt(offset, length); + this._write = (offset, buffer) => + controller.externalNVMWriteBufferExt(offset, buffer); + this._close = () => controller.externalNVMCloseExt(); + } else { + this._open = () => controller.externalNVMOpen(); + this._read = (offset, length) => + controller.externalNVMReadBuffer700(offset, length); + this._write = (offset, buffer) => + controller.externalNVMWriteBuffer700(offset, buffer); + this._close = () => controller.externalNVMClose(); + } + } + + private _controller: ZWaveController; + + private _open: () => Promise; + private _read: ( + offset: number, + length: number, + ) => Promise<{ buffer: Buffer; endOfFile: boolean }>; + private _write: ( + offset: number, + buffer: Buffer, + ) => Promise<{ endOfFile: boolean }>; + private _close: () => Promise; + + private _size: number | undefined; + private _chunkSize: number | undefined; + private _accessMode: NVMAccess = NVMAccess.None; + + public async open( + access: NVMAccess.Read | NVMAccess.Write, + ): Promise { + this._size = await this._open(); + // We only support reading or writing, not both + this._accessMode = access; + return access; + } + + get size(): number { + if (this._size == undefined) { + throw new ZWaveError( + "The NVM is not open", + ZWaveErrorCodes.NVM_NotOpen, + ); + } + return this._size; + } + + get accessMode(): NVMAccess { + return this._accessMode; + } + + async determineChunkSize(): Promise { + if (!this._chunkSize) { + // The write requests have the same size as the read response - if this yields no + // data, default to a sane (but maybe slow) size + this._chunkSize = (await this._read(0, 0xff)).buffer.length || 48; + } + + return this._chunkSize; + } + + async read( + offset: number, + length: number, + ): Promise<{ buffer: Buffer; endOfFile: boolean }> { + // Ensure we're not reading out of bounds + const size = this.size; + if (offset < 0 || offset >= size) { + throw new ZWaveError( + "Cannot read outside of the NVM", + ZWaveErrorCodes.Argument_Invalid, + ); + } + + const chunkSize = await this.determineChunkSize(); + + return this._read( + offset, + Math.min(length, chunkSize, size - offset), + ); + } + + async write( + offset: number, + data: Buffer, + ): Promise<{ bytesWritten: number; endOfFile: boolean }> { + // Ensure we're not writing out of bounds + const size = this.size; + if (offset < 0 || offset >= size) { + throw new ZWaveError( + "Cannot read outside of the NVM", + ZWaveErrorCodes.Argument_Invalid, + ); + } + + const chunkSize = await this.determineChunkSize(); + const writeSize = Math.min(data.length, chunkSize, size - offset); + + const { endOfFile } = await this._write( + offset, + data.subarray(0, writeSize), + ); + return { + bytesWritten: writeSize, + endOfFile, + }; + } + + close(): Promise { + this._accessMode = NVMAccess.None; + return this._close(); + } +} diff --git a/packages/zwave-js/src/lib/controller/_Types.ts b/packages/zwave-js/src/lib/controller/_Types.ts index b67cda4e34b9..02f21a9e9f1a 100644 --- a/packages/zwave-js/src/lib/controller/_Types.ts +++ b/packages/zwave-js/src/lib/controller/_Types.ts @@ -7,6 +7,8 @@ export type RebuildRoutesStatus = "pending" | "done" | "failed" | "skipped"; export interface RebuildRoutesOptions { /** Whether the routes of sleeping nodes should be rebuilt too at the end of the process. Default: true */ includeSleeping?: boolean; + /** Whether nodes with priority return routes should be included, as those will be deleted. Default: false */ + deletePriorityReturnRoutes?: boolean; } export type SDKVersion = diff --git a/packages/zwave-js/src/lib/controller/utils.ts b/packages/zwave-js/src/lib/controller/utils.ts index 3d8837ba5fc9..8d5655061c3c 100644 --- a/packages/zwave-js/src/lib/controller/utils.ts +++ b/packages/zwave-js/src/lib/controller/utils.ts @@ -9,6 +9,7 @@ import { import { padVersion } from "@zwave-js/shared/safe"; import { isArray, isObject } from "alcalzone-shared/typeguards"; import semver from "semver"; +import { type Task } from "../driver/Task"; import { type PlannedProvisioningEntry, ProvisioningEntryStatus, @@ -17,18 +18,18 @@ import { export function assertProvisioningEntry( arg: any, ): asserts arg is PlannedProvisioningEntry { - const fail = (why: string) => { + function fail(why: string): never { throw new ZWaveError( `Invalid provisioning entry: ${why}`, ZWaveErrorCodes.Argument_Invalid, ); - }; + } - if (!isObject(arg)) throw fail("not an object"); + if (!isObject(arg)) fail("not an object"); - if (typeof arg.dsk !== "string") throw fail("dsk must be a string"); + if (typeof arg.dsk !== "string") fail("dsk must be a string"); else if (!isValidDSK(arg.dsk)) { - throw fail("dsk does not have the correct format"); + fail("dsk does not have the correct format"); } if ( @@ -36,29 +37,29 @@ export function assertProvisioningEntry( && (typeof arg.status !== "number" || !(arg.status in ProvisioningEntryStatus)) ) { - throw fail("status is not a ProvisioningEntryStatus"); + fail("status is not a ProvisioningEntryStatus"); } if (!isArray(arg.securityClasses)) { - throw fail("securityClasses must be an array"); + fail("securityClasses must be an array"); } else if ( !arg.securityClasses.every( (sc: any) => typeof sc === "number" && sc in SecurityClass, ) ) { - throw fail("securityClasses contains invalid entries"); + fail("securityClasses contains invalid entries"); } if (arg.requestedSecurityClasses != undefined) { if (!isArray(arg.requestedSecurityClasses)) { - throw fail("requestedSecurityClasses must be an array"); + fail("requestedSecurityClasses must be an array"); } else if ( !arg.requestedSecurityClasses.every( (sc: any) => typeof sc === "number" && sc in SecurityClass, ) ) { { - throw fail("requestedSecurityClasses contains invalid entries"); + fail("requestedSecurityClasses contains invalid entries"); } } } @@ -67,18 +68,18 @@ export function assertProvisioningEntry( arg.protocol != undefined && (typeof arg.protocol !== "number" || !(arg.protocol in Protocols)) ) { - throw fail("protocol is not a valid"); + fail("protocol is not a valid"); } if (arg.supportedProtocols != undefined) { if (!isArray(arg.supportedProtocols)) { - throw fail("supportedProtocols must be an array"); + fail("supportedProtocols must be an array"); } else if ( !arg.supportedProtocols.every( (p: any) => typeof p === "number" && p in Protocols, ) ) { - throw fail("supportedProtocols contains invalid entries"); + fail("supportedProtocols contains invalid entries"); } } } @@ -126,3 +127,9 @@ export function sdkVersionLte( } return semver.lte(padVersion(sdkVersion), padVersion(compareVersion)); } + +/** Checks if a task belongs to a route rebuilding process */ +export function isRebuildRoutesTask(t: Task): boolean { + return t.tag?.id === "rebuild-routes" + || t.tag?.id === "rebuild-node-routes"; +} diff --git a/packages/zwave-js/src/lib/driver/Driver.ts b/packages/zwave-js/src/lib/driver/Driver.ts index 4f53cbe0012f..947deff90ca8 100644 --- a/packages/zwave-js/src/lib/driver/Driver.ts +++ b/packages/zwave-js/src/lib/driver/Driver.ts @@ -233,6 +233,7 @@ import { createMessageDroppedUnexpectedError, serialAPICommandErrorToZWaveError, } from "./StateMachineShared"; +import { TaskScheduler } from "./Task"; import { throttlePresets } from "./ThrottlePresets"; import { Transaction } from "./Transaction"; import { @@ -253,7 +254,8 @@ import type { import { discoverRemoteSerialPorts } from "./mDNSDiscovery"; const packageJsonPath = require.resolve("zwave-js/package.json"); -// eslint-disable-next-line @typescript-eslint/no-var-requires + +// eslint-disable-next-line @typescript-eslint/no-require-imports const packageJson = require(packageJsonPath); const libraryRootDir = path.dirname(packageJsonPath); export const libVersion: string = packageJson.version; @@ -675,6 +677,8 @@ export class Driver extends TypedEventEmitter }); this.serialAPIQueue = new AsyncQueue(); this._queueIdle = false; + + this._scheduler = new TaskScheduler(); } /** The serial port instance */ @@ -693,6 +697,11 @@ export class Driver extends TypedEventEmitter return [this.immediateQueue, this.queue]; } + private _scheduler: TaskScheduler; + public get scheduler(): TaskScheduler { + return this._scheduler; + } + private queuePaused = false; /** The interpreter for the currently active Serial API command */ private serialAPIInterpreter: SerialAPICommandInterpreter | undefined; @@ -706,7 +715,9 @@ export class Driver extends TypedEventEmitter } private set queueIdle(value: boolean) { if (this._queueIdle !== value) { - this.driverLog.print(`all queues ${value ? "idle" : "busy"}`); + this.driverLog.print( + value ? "all queues idle" : "one or more queues busy", + ); this._queueIdle = value; this.handleQueueIdleChange(value); } @@ -1218,7 +1229,7 @@ export class Driver extends TypedEventEmitter try { await this.openSerialport(); } catch (e) { - spOpenPromise.reject(e); + spOpenPromise.reject(e as Error); void this.destroy(); return; } @@ -1235,6 +1246,9 @@ export class Driver extends TypedEventEmitter // Start the serial API queue void this.drainSerialAPIQueue(); + // Start the task scheduler + this._scheduler.start(); + if ( typeof this._options.testingHooks?.onSerialPortOpen === "function" @@ -1680,6 +1694,7 @@ export class Driver extends TypedEventEmitter } else { // Secondary controller - load security keys from cache. // Either LR or S2+S0, not both + // FIXME: The fallback code duplicates the logic from the primary controller above. Find a nicer solution. if (isLongRangeNodeId(this.controller.ownNodeId!)) { const securityKeysLongRange = [ SecurityClass.S2_AccessControl, @@ -1702,6 +1717,28 @@ export class Driver extends TypedEventEmitter for (const [sc, key] of securityKeysLongRange) { this._securityManagerLR.setKey(sc, key); } + } else if ( + this._options.securityKeysLongRange?.S2_AccessControl + || this._options.securityKeysLongRange?.S2_Authenticated + ) { + this.driverLog.print( + "Fallback to configured network keys for Z-Wave Long Range, enabling security manager...", + ); + this._securityManagerLR = new SecurityManager2(); + if (this._options.securityKeysLongRange?.S2_AccessControl) { + this._securityManagerLR.setKey( + SecurityClass.S2_AccessControl, + this._options.securityKeysLongRange + .S2_AccessControl, + ); + } + if (this._options.securityKeysLongRange?.S2_Authenticated) { + this._securityManagerLR.setKey( + SecurityClass.S2_Authenticated, + this._options.securityKeysLongRange + .S2_Authenticated, + ); + } } else { this.driverLog.print( "No network key for Z-Wave Long Range configured, communication won't work!", @@ -1721,6 +1758,15 @@ export class Driver extends TypedEventEmitter ownNodeId: this._controller.ownNodeId!, nonceTimeout: this._options.timeouts.nonce, }); + } else if (this._options.securityKeys?.S0_Legacy) { + this.driverLog.print( + "Fallback to configured S0 network key, enabling S0 security manager...", + ); + this._securityManager = new SecurityManager({ + networkKey: this._options.securityKeys.S0_Legacy, + ownNodeId: this._controller.ownNodeId!, + nonceTimeout: this._options.timeouts.nonce, + }); } else { this.driverLog.print( "No network key for S0 found in cache, communication with secure (S0) devices won't work!", @@ -1745,6 +1791,36 @@ export class Driver extends TypedEventEmitter for (const [sc, key] of securityKeys) { this._securityManager2.setKey(sc, key); } + } else if ( + this._options.securityKeys + && Object.keys(this._options.securityKeys).some( + (key) => + key.startsWith("S2_") + && key in SecurityClass + && securityClassIsS2((SecurityClass as any)[key]), + ) + ) { + this.driverLog.print( + "Fallback to configured network keys for S2, enabling S2 security manager...", + ); + this._securityManager2 = new SecurityManager2(); + // Set up all keys + for ( + const secClass of [ + "S2_Unauthenticated", + "S2_Authenticated", + "S2_AccessControl", + "S0_Legacy", + ] as const + ) { + const key = this._options.securityKeys[secClass]; + if (key) { + this._securityManager2.setKey( + SecurityClass[secClass], + key, + ); + } + } } else { this.driverLog.print( "No network key for S2 found in cache, communication with secure (S2) devices won't work!", @@ -2556,6 +2632,10 @@ export class Driver extends TypedEventEmitter } catch { // ignore } + + // No need to keep the node awake longer than necessary + node.keepAwake = false; + this.debounceSendNodeToSleep(node); } } @@ -3076,6 +3156,15 @@ export class Driver extends TypedEventEmitter cacheKeys.controller.privateKey, ); + // Drop all scheduled tasks - they don't make sense after a hard reset + await this.scheduler.removeTasks( + () => true, + new ZWaveError( + "The controller is being hard-reset", + ZWaveErrorCodes.Driver_TaskRemoved, + ), + ); + // Update the controller NIF prior to hard resetting await this.controller.setControllerNIF(); await this.controller.hardReset(); @@ -3197,7 +3286,9 @@ export class Driver extends TypedEventEmitter this.driverLog.print("destroying driver instance..."); - // First stop all queues and close the serial port, so nothing happens anymore + // First stop the scheduler, all queues and close the serial port, so nothing happens anymore + await this._scheduler.stop(); + this.serialAPIQueue.abort(); for (const queue of this.queues) { queue.abort(); @@ -4059,7 +4150,7 @@ export class Driver extends TypedEventEmitter "Attempting to recover controller again...", "warn", ); - void this.softReset().catch(() => { + void this.softResetInternal(true).catch(() => { this.driverLog.print( "Automatic controller recovery failed. Returning to normal operation and hoping for the best.", "warn", @@ -4088,7 +4179,7 @@ export class Driver extends TypedEventEmitter ); // Execute the soft-reset asynchronously - void this.softReset().then(() => { + void this.softResetInternal(true).then(() => { // The controller responded. It is no longer unresponsive. // Re-queue the transaction, so it can get handled next. @@ -5543,7 +5634,7 @@ ${handlers.length} left`, ); result.resolve(ret); } catch (e) { - result.reject(e); + result.reject(e as Error); } finally { this._currentSerialAPICommandPromise = undefined; } @@ -6655,6 +6746,35 @@ ${handlers.length} left`, } } + /** + * @internal + * Helper function to find multiple existing values from the network cache + */ + public cacheList( + prefix: string, + options?: { + reviver?: (value: any) => T; + }, + ): Record { + const ret: Record = {}; + for (const entry of this.networkCache.entries()) { + const key = entry[0]; + if (!key.startsWith(prefix)) continue; + let value = entry[1]; + if (value === undefined) continue; + if (typeof options?.reviver === "function") { + try { + value = options.reviver(value); + } catch { + // invalid entry + continue; + } + } + ret[key] = value; + } + return ret; + } + private cachePurge(prefix: string): void { for (const key of this.networkCache.keys()) { if (key.startsWith(prefix)) { @@ -6961,6 +7081,14 @@ ${handlers.length} left`, try { // await this.controller.toggleRF(false); // Avoid re-transmissions etc. communicating with the bootloader + await this.scheduler.removeTasks( + () => true, + new ZWaveError( + "The controller is entering bootloader mode.", + ZWaveErrorCodes.Driver_TaskRemoved, + ), + ); + this.rejectTransactions( (_t) => true, "The controller is entering bootloader mode.", diff --git a/packages/zwave-js/src/lib/driver/MessageGenerators.ts b/packages/zwave-js/src/lib/driver/MessageGenerators.ts index 0841ac7b3628..cff635c21168 100644 --- a/packages/zwave-js/src/lib/driver/MessageGenerators.ts +++ b/packages/zwave-js/src/lib/driver/MessageGenerators.ts @@ -103,7 +103,7 @@ export async function waitForNodeUpdate( timeoutMs, (received) => maybePartialNodeUpdate(msg, received), ); - } catch (e) { + } catch { throw new ZWaveError( `Timed out while waiting for a response from the node`, ZWaveErrorCodes.Controller_NodeTimeout, @@ -136,17 +136,17 @@ export const simpleMessageGenerator: MessageGeneratorImplementation = if (isSendData(msg) && driver.exceedsMaxPayloadLength(msg)) { // We use explorer frames by default, but this reduces the maximum payload length by 2 bytes compared to AUTO_ROUTE // Try disabling explorer frames for this message and see if it fits now. - const fail = () => { + function fail(): never { throw new ZWaveError( "Cannot send this message because it would exceed the maximum payload length!", ZWaveErrorCodes.Controller_MessageTooLarge, ); - }; + } if (msg.transmitOptions & TransmitOptions.Explore) { msg.transmitOptions &= ~TransmitOptions.Explore; if (driver.exceedsMaxPayloadLength(msg)) { // Still too large - throw fail(); + fail(); } driver.controllerLog.logNode(msg.getNodeId()!, { message: @@ -154,7 +154,7 @@ export const simpleMessageGenerator: MessageGeneratorImplementation = level: "warn", }); } else { - throw fail(); + fail(); } } @@ -183,6 +183,7 @@ export const simpleMessageGenerator: MessageGeneratorImplementation = // We now need to throw because the callback was passed through so we could inspect it. if (isTransmitReport(result) && !result.isOK()) { // Throw the message in order to short-circuit all possible generators + // eslint-disable-next-line @typescript-eslint/only-throw-error throw result; } diff --git a/packages/zwave-js/src/lib/driver/NetworkCache.ts b/packages/zwave-js/src/lib/driver/NetworkCache.ts index cce505aab205..31d74e2117f0 100644 --- a/packages/zwave-js/src/lib/driver/NetworkCache.ts +++ b/packages/zwave-js/src/lib/driver/NetworkCache.ts @@ -51,6 +51,7 @@ export const cacheKeys = { return { _baseKey: nodeBaseKey, _securityClassBaseKey: `${nodeBaseKey}securityClasses`, + _priorityReturnRouteBaseKey: `${nodeBaseKey}priorityReturnRoute`, interviewStage: `${nodeBaseKey}interviewStage`, deviceClass: `${nodeBaseKey}deviceClass`, isListening: `${nodeBaseKey}isListening`, @@ -117,6 +118,14 @@ export const cacheKeyUtils = { return parseInt(match.groups!.index, 10); } }, + destinationFromPriorityReturnRouteKey: ( + key: string, + ): number | undefined => { + const match = /\.priorityReturnRoute\.(?\d+)$/.exec(key); + if (match) { + return parseInt(match.groups!.nodeId, 10); + } + }, } as const; function tryParseInterviewStage(value: unknown): InterviewStage | undefined { @@ -378,7 +387,7 @@ export function deserializeNetworkCacheValue( ); } - function fail() { + function fail(): never { throw new ZWaveError( `Failed to deserialize property "${key}"`, ZWaveErrorCodes.Driver_InvalidCache, @@ -389,12 +398,12 @@ export function deserializeNetworkCacheValue( case "interviewStage": { value = tryParseInterviewStage(value); if (value) return value; - throw fail(); + fail(); } case "deviceClass": { value = tryParseDeviceClass(value); if (value) return value; - throw fail(); + fail(); } case "isListening": case "isRouting": @@ -411,14 +420,14 @@ export function deserializeNetworkCacheValue( case false: return false; } - throw fail(); + fail(); } case "dsk": { if (typeof value === "string") { return dskFromString(value); } - throw fail(); + fail(); } case "supportsSecurity": @@ -435,7 +444,7 @@ export function deserializeNetworkCacheValue( case "nodeType": { value = tryParseNodeType(value); if (value) return value; - throw fail(); + fail(); } case "supportedDataRates": { @@ -445,19 +454,19 @@ export function deserializeNetworkCacheValue( ) { return value; } - throw fail(); + fail(); } case "lastSeen": { value = tryParseDate(value); if (value) return value; - throw fail(); + fail(); } case "deviceConfigHash": { value = tryParseBuffer(value); if (value) return value; - throw fail(); + fail(); } } @@ -465,23 +474,23 @@ export function deserializeNetworkCacheValue( if (key.startsWith("controller.associations.")) { value = tryParseAssociationAddress(value); if (value) return value; - throw fail(); + fail(); } else if (key.startsWith("controller.securityKeys.")) { value = tryParseBuffer(value); if (value) return value; - throw fail(); + fail(); } switch (key) { case cacheKeys.controller.provisioningList: { value = tryParseProvisioningList(value); if (value) return value; - throw fail(); + fail(); } case cacheKeys.controller.privateKey: { value = tryParseBuffer(value); if (value) return value; - throw fail(); + fail(); } } diff --git a/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.test.ts b/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.test.ts index 7f107ccca566..73a1ca3d9c77 100644 --- a/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.test.ts +++ b/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.test.ts @@ -33,22 +33,20 @@ interface AvaTestContext { const test = ava as TestFn; -/* eslint-disable @typescript-eslint/ban-types */ interface TestMachineStateSchema { states: { - init: {}; - sending: {}; - waitForACK: {}; - waitForResponse: {}; - waitForCallback: {}; + init: object; + sending: object; + waitForACK: object; + waitForResponse: object; + waitForCallback: object; // FIXME: This is relevant for SendData, but we're not using SendData messages in this test // waitForCallbackAfterTimeout: {}; - unsolicited: {}; - success: {}; - failure: {}; + unsolicited: object; + success: object; + failure: object; }; } -/* eslint-enable @typescript-eslint/ban-types */ interface TestMachineContext { resp: boolean; diff --git a/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.ts b/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.ts index fca75ef65221..04ea7db84021 100644 --- a/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.ts +++ b/packages/zwave-js/src/lib/driver/SerialAPICommandMachine.ts @@ -16,20 +16,18 @@ import { import { isSendData } from "../serialapi/transport/SendDataShared"; import type { ZWaveOptions } from "./ZWaveOptions"; -/* eslint-disable @typescript-eslint/ban-types */ export interface SerialAPICommandStateSchema { states: { - sending: {}; - waitForACK: {}; - waitForResponse: {}; - waitForCallback: {}; - retry: {}; - retryWait: {}; - failure: {}; - success: {}; + sending: object; + waitForACK: object; + waitForResponse: object; + waitForCallback: object; + retry: object; + retryWait: object; + failure: object; + success: object; }; } -/* eslint-enable @typescript-eslint/ban-types */ export type SerialAPICommandError = | "send failure" diff --git a/packages/zwave-js/src/lib/driver/Statistics.test.ts b/packages/zwave-js/src/lib/driver/Statistics.test.ts index f745f87ad4f2..e2a1a62d9428 100644 --- a/packages/zwave-js/src/lib/driver/Statistics.test.ts +++ b/packages/zwave-js/src/lib/driver/Statistics.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-empty-object-type */ import { Mixin } from "@zwave-js/shared"; import test from "ava"; import EventEmitter from "node:events"; diff --git a/packages/zwave-js/src/lib/driver/Task.test.ts b/packages/zwave-js/src/lib/driver/Task.test.ts new file mode 100644 index 000000000000..a0fd0920a78e --- /dev/null +++ b/packages/zwave-js/src/lib/driver/Task.test.ts @@ -0,0 +1,1355 @@ +import { ZWaveError, ZWaveErrorCodes, assertZWaveError } from "@zwave-js/core"; +import { noop } from "@zwave-js/shared"; +import { wait } from "alcalzone-shared/async"; +import { createDeferredPromise } from "alcalzone-shared/deferred-promise"; +import test from "ava"; +import { + type TaskBuilder, + TaskInterruptBehavior, + TaskPriority, + type TaskReturnType, + TaskScheduler, +} from "./Task"; + +test("The scheduler can be started and stopped", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + await scheduler.stop(); + t.pass(); +}); + +test("An empty task runs to completion", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + const task = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() {}, + }); + await task; + t.pass(); +}); + +test("The task promise resolves to the return value of the task function", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + const task = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + return 1; + }, + }); + t.is(await task, 1); +}); + +test("A task with multiple interrupt points runs to completion", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + const task = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + }, + }); + await task; + t.pass(); +}); + +test("A task with multiple interrupt points has the correct result", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + const task = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + return 2; + }, + }); + t.is(await task, 2); +}); + +test("Multiple tasks run to completion", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + return 1; + }, + }); + const task2 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + return 2; + }, + }); + const result = await Promise.all([task1, task2]); + t.deepEqual(result, [1, 2]); +}); + +test("Higher priority tasks run before lower priority ones if the scheduler is started afterwards", async (t) => { + const scheduler = new TaskScheduler(); + const order: number[] = []; + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + order.push(1); + }, + }); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + order.push(2); + }, + }); + scheduler.start(); + + await Promise.all([task1, task2]); + t.deepEqual(order, [2, 1]); +}); + +test("Higher priority tasks run before lower priority ones when added at the same time", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: number[] = []; + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + order.push(1); + }, + }); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + order.push(2); + }, + }); + + await Promise.all([task1, task2]); + t.deepEqual(order, [2, 1]); +}); + +test("Higher priority tasks run before lower priority ones when added at the same time, part 2", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: number[] = []; + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + order.push(1); + }, + }); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + order.push(2); + }, + }); + const task3 = scheduler.queueTask({ + priority: TaskPriority.Idle, + task: async function*() { + yield; + yield; + order.push(3); + }, + }); + + await Promise.all([task1, task2, task3]); + t.deepEqual(order, [2, 1, 3]); +}); + +test("Higher priority tasks interrupt lower priority ones", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + await wait(1); + yield; + order.push("1b"); + await wait(1); + yield; + order.push("1c"); + }, + }); + await wait(0); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + await wait(1); + yield; + order.push("2b"); + await wait(1); + yield; + order.push("2c"); + }, + }); + + await Promise.all([task1, task2]); + + t.deepEqual(order, ["1a", "2a", "2b", "2c", "1b", "1c"]); +}); + +test("Higher priority tasks interrupt lower priority ones, part 2", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + await wait(1); + yield; + order.push("1b"); + await wait(1); + yield; + order.push("1c"); + }, + }); + await wait(0); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + await wait(1); + yield; + order.push("2b"); + await wait(1); + yield; + order.push("2c"); + }, + }); + + const task3 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("3a"); + await wait(1); + yield; + order.push("3b"); + await wait(1); + yield; + order.push("3c"); + }, + }); + + await Promise.all([task1, task2, task3]); + + t.deepEqual(order, ["1a", "2a", "2b", "2c", "3a", "3b", "3c", "1b", "1c"]); +}); + +test("Higher priority tasks do not interrupt non-interruptible lower priority ones", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + interrupt: TaskInterruptBehavior.Forbidden, + task: async function*() { + order.push("1a"); + await wait(1); + yield; + order.push("1b"); + await wait(1); + yield; + order.push("1c"); + }, + }); + await wait(0); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + await wait(1); + yield; + order.push("2b"); + await wait(1); + yield; + order.push("2c"); + }, + }); + + await Promise.all([task1, task2]); + + t.deepEqual(order, ["1a", "1b", "1c", "2a", "2b", "2c"]); +}); + +test("Interrupting a task with the Restart interrupt behavior restarts it completely", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + interrupt: TaskInterruptBehavior.Restart, + task: async function*() { + order.push("1a"); + await wait(1); + yield; + order.push("1b"); + await wait(1); + yield; + order.push("1c"); + }, + }); + await wait(0); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + await wait(1); + yield; + order.push("2b"); + await wait(1); + yield; + order.push("2c"); + }, + }); + + await Promise.all([task1, task2]); + + t.deepEqual(order, ["1a", "2a", "2b", "2c", "1a", "1b", "1c"]); +}); + +test("Completed Restart tasks are not restarted after completion", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + interrupt: TaskInterruptBehavior.Restart, + task: async function*() { + order.push("1a"); + yield; + order.push("1b"); + yield; + order.push("1c"); + }, + }); + await wait(1); + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + await wait(1); + yield; + order.push("2b"); + await wait(1); + yield; + order.push("2c"); + }, + }); + + await Promise.all([task1, task2]); + + t.deepEqual(order, ["1a", "1b", "1c", "2a", "2b", "2c"]); +}); + +test("Yielding a promise-returning function causes the scheduler to wait for that until resuming the task", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => yieldedPromise; + order.push("1b"); + return; + }, + }); + + // Wait long enough that the task is definitely waiting for the promise + await wait(50); + t.deepEqual(order, ["1a"]); + + // Run to completion + yieldedPromise.resolve(); + await task1; + + t.deepEqual(order, ["1a", "1b"]); +}); + +test("While a task is waiting, higher-priority tasks are still executed", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => yieldedPromise; + order.push("1b"); + return; + }, + }); + + await wait(1); + + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + return; + }, + }); + + // Task 2 should be able to finish before task 1 + await task2; + + // Task 1 should not have completed yet + // Wait long enough that it would have if the scheduler didn't work correctly + await wait(50); + t.deepEqual(order, ["1a", "2a", "2b"]); + + // Run task 1 to completion + yieldedPromise.resolve(); + await task1; + + t.deepEqual(order, ["1a", "2a", "2b", "1b"]); +}); + +test("Waiting tasks are deprioritized over tasks with the same priority", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => yieldedPromise; + order.push("1b"); + return; + }, + }); + + await wait(1); + + const task2 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + return; + }, + }); + + // Task 2 should be able to finish before task 1 + await task2; + + // Task 1 should not have completed yet + // Wait long enough that it would have if the scheduler didn't work correctly + await wait(50); + t.deepEqual(order, ["1a", "2a", "2b"]); + + // Run task 1 to completion + yieldedPromise.resolve(); + await task1; + + t.deepEqual(order, ["1a", "2a", "2b", "1b"]); +}); + +test("Waiting tasks are deprioritized over tasks with a higher priority", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => yieldedPromise; + order.push("1b"); + return; + }, + }); + + await wait(1); + + const task2 = scheduler.queueTask({ + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + return; + }, + }); + + // Task 2 should be able to finish before task 1 + await task2; + + // Task 1 should not have completed yet + // Wait long enough that it would have if the scheduler didn't work correctly + await wait(50); + t.deepEqual(order, ["1a", "2a", "2b"]); + + // Run task 1 to completion + yieldedPromise.resolve(); + await task1; + + t.deepEqual(order, ["1a", "2a", "2b", "1b"]); +}); + +test("Waiting tasks are NOT deprioritized over tasks with a lower priority", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => yieldedPromise; + order.push("1b"); + return; + }, + }); + + await wait(1); + + const task2 = scheduler.queueTask({ + priority: TaskPriority.Idle, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + return; + }, + }); + + // Task 2 should not have started yet + await wait(50); + t.deepEqual(order, ["1a"]); + + // Run to completion + yieldedPromise.resolve(); + await Promise.all([task1, task2]); + + t.deepEqual(order, ["1a", "1b", "2a", "2b"]); +}); + +test("Two tasks of the same priority can wait at the same time", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => wait(50); + order.push("1b"); + return; + }, + }); + const task2 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("2a"); + yield () => wait(100); + order.push("2b"); + return; + }, + }); + + await Promise.all([task1, task2]); + + t.deepEqual(order, ["1a", "2a", "1b", "2b"]); +}); + +test("Stopping the scheduler mid-task works", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => yieldedPromise; + order.push("1b"); + return; + }, + }); + + await wait(1); + + const task2 = scheduler.queueTask({ + priority: TaskPriority.Idle, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + return; + }, + }); + + // Task 2 should not have started yet + await wait(1); + t.deepEqual(order, ["1a"]); + + await scheduler.stop(); + + // "Run" to completion, but nothing should happen + yieldedPromise.resolve(); + await wait(50); + t.deepEqual(order, ["1a"]); +}); + +test("Stopping the scheduler works after multiple tasks have run to completion", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + return 1; + }, + }); + const task2 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + return 2; + }, + }); + const result = await Promise.all([task1, task2]); + t.deepEqual(result, [1, 2]); + + await scheduler.stop(); +}); + +test("Tasks can yield-queue higher-priority tasks", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + order.push("inner"); + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield innerBuilder; + order.push("outer"); + }, + }); + + await outer; + + t.deepEqual(order, ["inner", "outer"]); +}); + +test("Tasks can yield-queue same-priority tasks", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.Normal, + task: async function*() { + yield; + yield; + order.push("inner"); + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield innerBuilder; + order.push("outer"); + }, + }); + + await outer; + + t.deepEqual(order, ["inner", "outer"]); +}); + +test.failing("Tasks cannot yield-queue lower-priority tasks", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.Idle, + task: async function*() { + yield; + yield; + order.push("inner"); + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield innerBuilder; + order.push("outer"); + }, + }); + + await outer; +}); + +test("Yielding tasks multiple levels deep works", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + const yieldedPromise = createDeferredPromise(); + + const innerinnerBuilder: TaskBuilder = { + name: "innerinner", + priority: TaskPriority.Normal, + task: async function*() { + yield; + order.push("innerinner1"); + yield () => yieldedPromise; + order.push("innerinner2"); + }, + }; + + const innerBuilder: TaskBuilder = { + name: "inner", + priority: TaskPriority.Normal, + task: async function*() { + yield; + order.push("inner1"); + yield innerinnerBuilder; + order.push("inner2"); + }, + }; + + const outer = scheduler.queueTask({ + name: "outer", + priority: TaskPriority.Normal, + task: async function*() { + order.push("outer1"); + yield innerBuilder; + order.push("outer2"); + }, + }); + + // Wait long enough that the task is definitely waiting for the promise + await wait(10); + t.deepEqual(order, ["outer1", "inner1", "innerinner1"]); + + // Run to completion + yieldedPromise.resolve(); + await outer; + + t.deepEqual(order, [ + "outer1", + "inner1", + "innerinner1", + "innerinner2", + "inner2", + "outer2", + ]); +}); + +test("Tasks receive the result of yielded tasks", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + return "foo"; + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + const result = (yield innerBuilder) as TaskReturnType< + typeof innerBuilder + >; + return result; + }, + }); + + t.is(await outer, "foo"); +}); + +test("Tasks receive the result of yielded tasks, part 2", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const inner1Builder: TaskBuilder = { + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + return "foo"; + }, + }; + + const inner3Builder: TaskBuilder = { + priority: TaskPriority.High, + task: async function*() { + yield; + yield; + return "bar"; + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + const result1 = (yield inner1Builder) as TaskReturnType< + typeof inner1Builder + >; + const result2 = (yield) as any; + const result3 = (yield inner3Builder) as TaskReturnType< + typeof inner3Builder + >; + return result1 + (result2 ?? "") + result3; + }, + }); + + t.is(await outer, "foobar"); +}); + +test("Tasks receive the result of yielded tasks, part 3", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.High, + task: async function*() { + yield; + throw new Error("foo"); + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + try { + yield innerBuilder; + throw new Error("This should not happen"); + } catch (e) { + return e as Error; + } + }, + }); + + const result = await outer; + t.true(result instanceof Error); + t.is(result.message, "foo"); +}); + +test("Tasks can queue lower-priority tasks without waiting for them", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + let inner: Promise; + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.Idle, + task: async function*() { + yield; + order.push("inner"); + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + inner = scheduler.queueTask(innerBuilder); + yield; + order.push("outer"); + }, + }); + + await outer; + await inner!; + + t.deepEqual(order, ["outer", "inner"]); +}); + +test("Failing tasks reject the corresponding Promise", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + throw new Error("Task 1 failed"); + }, + }); + + const task2 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + yield; + return 2; + }, + }); + + await t.throwsAsync(task1, { message: "Task 1 failed" }); + t.is(await task2, 2); +}); + +test("Tasks can be removed if they haven't been started yet", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const longRunningThing = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + await longRunningThing; + yield; + order.push("1b"); + return; + }, + }); + + await wait(1); + + const task2 = scheduler.queueTask({ + name: "task2", + priority: TaskPriority.Normal, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + return; + }, + }); + + // Task 2 should not have started yet + await wait(1); + t.deepEqual(order, ["1a"]); + + await scheduler.removeTasks((t) => t.name === "task2"); + + await assertZWaveError(t, () => task2, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + + // Run to completion + longRunningThing.resolve(); + await task1; + t.deepEqual(order, ["1a", "1b"]); +}); + +test("Tasks can be removed while paused", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => wait(10); + order.push("1b"); + return; + }, + cleanup() { + order.push("1c"); + return Promise.resolve(); + }, + }); + + await wait(1); + // The task should have run to the first yield + t.deepEqual(order, ["1a"]); + + await scheduler.removeTasks((t) => true); + + await assertZWaveError(t, () => task1, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + + t.deepEqual(order, ["1a", "1c"]); +}); + +test("Tasks can be removed while paused, part 2", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => wait(10); + order.push("1b"); + return; + }, + cleanup() { + order.push("1c"); + return Promise.resolve(); + }, + }); + + const task2 = scheduler.queueTask({ + name: "task2", + priority: TaskPriority.Normal, + task: async function*() { + order.push("2a"); + yield () => wait(10); + order.push("2b"); + return; + }, + cleanup() { + order.push("2c"); + return Promise.resolve(); + }, + }); + + await wait(1); + // The tasks should have run to the first yield + t.deepEqual(order, ["1a", "2a"]); + + await scheduler.removeTasks((t) => true); + + await assertZWaveError(t, () => task1, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + await assertZWaveError(t, () => task2, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + + // Current task "1" gets cleaned up last + t.deepEqual(order, ["1a", "2a", "2c", "1c"]); +}); + +test("Tasks can be removed while running", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + await wait(10); + yield; + order.push("1b"); + }, + cleanup() { + order.push("1c"); + return Promise.resolve(); + }, + }); + + const task2 = scheduler.queueTask({ + name: "task2", + priority: TaskPriority.Normal, + task: async function*() { + order.push("2a"); + yield; + order.push("2b"); + }, + cleanup() { + order.push("2c"); + return Promise.resolve(); + }, + }); + + await wait(1); + // Task 1 should have run to the first yield, + // Task 2 should not have started yet + t.deepEqual(order, ["1a"]); + + await scheduler.removeTasks((t) => true); + + await assertZWaveError(t, () => task1, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + await assertZWaveError(t, () => task2, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + + // Only task 1 should have been cleaned up, since task 2 was not started + t.deepEqual(order, ["1a", "1c"]); +}); + +test("Tasks can be removed while running and paused", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => wait(10); + order.push("1b"); + }, + cleanup() { + order.push("1c"); + return Promise.resolve(); + }, + }); + + const task2 = scheduler.queueTask({ + name: "task2", + priority: TaskPriority.Normal, + task: async function*() { + order.push("2a"); + await wait(10); + yield; + order.push("2b"); + }, + cleanup() { + order.push("2c"); + return Promise.resolve(); + }, + }); + + await wait(1); + // Both tasks should have run to the first yield. + t.deepEqual(order, ["1a", "2a"]); + + await scheduler.removeTasks((t) => true); + + await assertZWaveError(t, () => task1, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + await assertZWaveError(t, () => task2, { + errorCode: ZWaveErrorCodes.Driver_TaskRemoved, + }); + + // Both tasks should be cleaned up, 1c before 2c, + // since task 2 was the current task and should be cleaned up last + t.deepEqual(order, ["1a", "2a", "1c", "2c"]); +}); + +test("The task rejection uses the given error, if any", async (t) => { + const scheduler = new TaskScheduler(); + const order: string[] = []; + scheduler.start(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield () => wait(10); + order.push("1b"); + return; + }, + cleanup() { + order.push("1c"); + return Promise.resolve(); + }, + }); + + await wait(1); + // The task should have run to the first yield + t.deepEqual(order, ["1a"]); + + await scheduler.removeTasks( + (t) => true, + new ZWaveError("Test error", ZWaveErrorCodes.Driver_Reset), + ); + + await assertZWaveError(t, () => task1, { + errorCode: ZWaveErrorCodes.Driver_Reset, + }); + + t.deepEqual(order, ["1a", "1c"]); +}); + +test("Canceling nested tasks works", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + const yieldedPromise = createDeferredPromise(); + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.High, + task: async function*() { + order.push("2a"); + yield () => yieldedPromise; + order.push("2b"); + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + yield innerBuilder; + order.push("1b"); + }, + }).catch(noop); + + // Wait long enough that the task is definitely waiting for the promise + await wait(50); + t.deepEqual(order, ["1a", "2a"]); + + // Cancel all tasks + await scheduler.removeTasks(() => true); + + t.deepEqual(order, ["1a", "2a"]); +}); + +test("Canceling nested tasks works, part 2", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const yieldedPromise = createDeferredPromise(); + + const innerBuilder: TaskBuilder = { + priority: TaskPriority.High, + name: "inner", + task: async function*() { + yield () => yieldedPromise; + }, + }; + + const outer = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + try { + yield innerBuilder; + } catch (e) { + return "canceled"; + } + }, + }); + + // Wait long enough that the task is definitely waiting for the promise + await wait(10); + + // Cancel all tasks + // FIXME: Restore parent tasks when removing nested tasks + await scheduler.removeTasks((t) => t.name === "inner"); + + t.is(await outer, "canceled"); +}); + +test("Splitting tasks into multiple generator functions works", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + + async function* inner() { + order.push("1b"); + yield; + order.push("1c"); + } + + yield* inner(); + yield; + order.push("1d"); + }, + }); + + await task1; + + t.deepEqual(order, ["1a", "1b", "1c", "1d"]); +}); + +test("Split tasks can be canceled", async (t) => { + const scheduler = new TaskScheduler(); + scheduler.start(); + + const order: string[] = []; + const yieldedPromise = createDeferredPromise(); + + const task1 = scheduler.queueTask({ + priority: TaskPriority.Normal, + task: async function*() { + order.push("1a"); + + async function* inner() { + order.push("1b"); + yield () => yieldedPromise; + order.push("1c"); + } + + yield* inner(); + yield; + order.push("1d"); + }, + }).catch(noop); + + // Wait long enough that the task is definitely waiting for the promise + await wait(10); + + // Cancel all tasks + await scheduler.removeTasks(() => true); + + t.deepEqual(order, ["1a", "1b"]); +}); diff --git a/packages/zwave-js/src/lib/driver/Task.ts b/packages/zwave-js/src/lib/driver/Task.ts new file mode 100644 index 000000000000..5a95ccb469ef --- /dev/null +++ b/packages/zwave-js/src/lib/driver/Task.ts @@ -0,0 +1,569 @@ +import { ZWaveError, ZWaveErrorCodes, highResTimestamp } from "@zwave-js/core"; +import { createWrappingCounter, evalOrStatic, noop } from "@zwave-js/shared"; +import { type CompareResult } from "alcalzone-shared/comparable"; +import { + type DeferredPromise, + createDeferredPromise, +} from "alcalzone-shared/deferred-promise"; +import { SortedList } from "alcalzone-shared/sorted-list"; + +/** A high-level task that can be started and stepped through */ +export interface Task { + readonly id: number; + readonly timestamp: number; + readonly builder: TaskBuilder; + + /** The parent task spawning this subtask, if any */ + readonly parent?: Task; + + /** A name to identify the task */ + readonly name?: string; + /** A tag to identify the task programmatically */ + readonly tag?: TaskTag; + /** The task's priority */ + readonly priority: TaskPriority; + /** How the task should behave when interrupted */ + readonly interrupt: TaskInterruptBehavior; + /** Starts the task it if hasn't been started yet, and executes the next step of the task */ + step(): Promise>; + /** Stops the task without further executing it, cleans up, and prepares it for starting again */ + reset(): Promise; + /** Resolves the task's promise to notify the caller */ + resolve(result: TReturn): void; + /** Rejects the task's promise to notify the caller */ + reject(error: Error): void; + /** The current state of the task */ + get state(): TaskState; + + readonly generator: ReturnType["task"]> | undefined; + readonly promise: Promise; +} + +function getTaskName(task: Task): string { + return `${ + task.name ?? (task.tag && JSON.stringify(task.tag)) ?? "unnamed" + } (ID ${task.id})`; +} + +/** Defines the necessary information for creating a task */ +export interface TaskBuilder { + /** A name to identify the task */ + name?: string; + /** A tag to identify the task programmatically */ + tag?: TaskTag; + /** The task's priority */ + priority: TaskPriority; + /** How the task should behave when interrupted */ + interrupt?: TaskInterruptBehavior; + /** + * The task's main generator function. This is called repeatedly until it's done. + * The function must yield at points where it may be interrupted. + * + * At those points, the task can also wait for something to happen: + * - Either a Promise, in which case it must yield a function that returns that Promise + * - Or another task, in which case it must yield a TaskBuilder object or a function that returns one + * + * Yielded Promises should not spawn new tasks. If they do, the spawned tasks MUST have a higher priority than the parent task. + */ + task: () => AsyncGenerator< + | (() => Promise | TaskBuilder) + | (() => TaskBuilder) + | TaskBuilder + | undefined, + TReturn, + TInner + >; + /** A cleanup function that gets called when the task is dropped */ + cleanup?: () => Promise; +} + +export type TaskReturnType> = T extends + TaskBuilder ? R + : never; + +function isTaskBuilder( + obj: any, +): obj is TaskBuilder { + return ( + typeof obj === "object" + && typeof obj.task === "function" + && typeof obj.priority === "number" + ); +} + +/** + * The priority of a task. + * + * Higher priority tasks are executed first and interrupt lower priority tasks. + * The recommended priority for application-initiated communication is `Normal`. + * `Low` and `Lower` are recommended for internal long-running tasks that should not interfere with user-initiated tasks. + * `Idle` is recommended for tasks that should only run when no other tasks are pending. + */ +export enum TaskPriority { + Highest, + High = 1, + Normal = 2, + Low = 3, + Lower = 4, + Idle = 5, +} + +export enum TaskState { + /** The task has not been created yet */ + None, + /** The task is being executed */ + Active, + /** The task is waiting for a Promise to resolve */ + AwaitingPromise, + /** The task is waiting for another task to finish */ + AwaitingTask, + /** The task is finished */ + Done, +} + +export enum TaskInterruptBehavior { + /** The task may not be interrupted */ + Forbidden, + /** The task will be resumed after being interrupted (default) */ + Resume, + /** The task needs to be restarted after being interrupted */ + Restart, +} + +export type TaskStepResult = { + newState: TaskState.Done; + result: T; +} | { + newState: TaskState.Active; +} | { + newState: TaskState.AwaitingPromise; + promise: Promise; +} | { + newState: TaskState.AwaitingTask; + task: Task; +}; + +function compareTasks(a: Task, b: Task): CompareResult { + // Sort by priority first. Higher priority goes to the end of the list + if (a.priority < b.priority) return 1; + if (a.priority > b.priority) return -1; + + // Deprioritize waiting tasks + const aWaiting = a.state === TaskState.AwaitingPromise + || a.state === TaskState.AwaitingTask; + const bWaiting = b.state === TaskState.AwaitingPromise + || b.state === TaskState.AwaitingTask; + if (!aWaiting && bWaiting) return 1; + if (aWaiting && !bWaiting) return -1; + + // Sort equal priority by timestamp. Newer tasks go to the end of the list + if (a.timestamp < b.timestamp) return 1; + if (a.timestamp > b.timestamp) return -1; + + // If all else fails, sort by ID + return Math.sign(b.id - a.id) as CompareResult; +} + +export type TaskTag = + | { + // Rebuild routes for all nodes + id: "rebuild-routes"; + } + | { + // Rebuild routes for a single node + id: "rebuild-node-routes"; + nodeId: number; + } + | { + // Perform an OTA firmware update for a node + id: "firmware-update-ota"; + nodeId: number; + }; + +export class TaskScheduler { + public constructor(private verbose: boolean = false) { + } + + private _tasks = new SortedList>(undefined, compareTasks); + private _currentTask: Task | undefined; + + private _idGenerator = createWrappingCounter(0xff_ff_ff); + private _continueSignal: DeferredPromise | undefined; + private _stopSignal: DeferredPromise | undefined; + private _stopPromise: DeferredPromise | undefined; + + public queueTask(builder: TaskBuilder): Promise { + const task = this.createTask(builder); + this._tasks.add(task); + if (this.verbose) { + console.log( + `Task queued: ${getTaskName(task)}`, + ); + } + + if (this._continueSignal) this._continueSignal.resolve(); + return task.promise; + } + + /** Removes/stops tasks matching the given predicate. Returns `true` when a task was removed, `false` otherwise. */ + public async removeTasks( + predicate: (task: Task) => boolean, + reason?: ZWaveError, + ): Promise { + // Collect tasks that should be removed, but in reverse order, + // so that we handle the current task last. + const tasksToRemove: Task[] = []; + let removeCurrentTask = false; + for (const task of this._tasks) { + if (predicate(task)) { + if (task === this._currentTask) { + removeCurrentTask = true; + } else { + tasksToRemove.push(task); + } + } + } + + reason ??= new ZWaveError( + "Task was removed", + ZWaveErrorCodes.Driver_TaskRemoved, + ); + + for (const task of tasksToRemove) { + if (this.verbose) { + console.log( + `Removing task: ${getTaskName(task)}`, + ); + } + this._tasks.remove(task); + if ( + task.state === TaskState.Active + || task.state === TaskState.AwaitingPromise + || task.state === TaskState.AwaitingTask + ) { + // The task is running, clean it up + await task.reset().catch(noop); + } + task.reject(reason); + // Re-add the parent task to the list if there is one + if (task.parent) { + if (this.verbose) { + console.log( + `Restoring parent task: ${getTaskName(task.parent)}`, + ); + } + this._tasks.add(task.parent); + } + } + + if (removeCurrentTask && this._currentTask) { + if (this.verbose) { + console.log( + `Removing task: ${getTaskName(this._currentTask)}`, + ); + } + this._tasks.remove(this._currentTask); + await this._currentTask.reset().catch(noop); + this._currentTask.reject(reason); + // Re-add the parent task to the list if there is one + if (this._currentTask.parent) { + if (this.verbose) { + console.log( + `Restoring parent task: ${ + getTaskName(this._currentTask.parent) + }`, + ); + } + this._tasks.add(this._currentTask.parent); + } + this._currentTask = undefined; + } + + if (this._continueSignal) this._continueSignal.resolve(); + + return tasksToRemove.length > 0 || removeCurrentTask; + } + + public findTask( + predicate: (task: Task) => boolean, + ): Promise | undefined { + return this._tasks.find((t: any) => predicate(t))?.promise as + | Promise + | undefined; + } + + /** Creates a task that can be executed */ + private createTask( + builder: TaskBuilder, + parent?: Task, + ): Task { + let state = TaskState.None; + let generator: ReturnType["task"]> | undefined; + let waitForPromise: Promise | undefined; + const promise = createDeferredPromise(); + + let prevResult: unknown; + let waitError: unknown; + + const self = this; + + return { + id: this._idGenerator(), + timestamp: highResTimestamp(), + builder, + parent, + name: builder.name, + tag: builder.tag, + priority: builder.priority, + interrupt: builder.interrupt ?? TaskInterruptBehavior.Resume, + promise, + async step() { + // Do not proceed while still waiting for a Promise to resolve + if (state === TaskState.AwaitingPromise && waitForPromise) { + return { + newState: state, + promise: waitForPromise, + }; + } else if (state === TaskState.AwaitingTask) { + throw new Error( + "Cannot step through a task that is waiting for another task", + ); + } + + generator ??= builder.task(); + state = TaskState.Active; + + const { value, done } = waitError + ? await generator.throw(waitError) + : await generator.next(prevResult); + prevResult = undefined; + waitError = undefined; + if (done) { + state = TaskState.Done; + return { + newState: state, + result: value, + }; + } else if (value != undefined) { + const waitFor = evalOrStatic(value); + if (waitFor instanceof Promise) { + state = TaskState.AwaitingPromise; + waitForPromise = waitFor.then((result) => { + prevResult = result; + }).catch((e) => { + waitError = e; + }).finally(() => { + waitForPromise = undefined; + if (state === TaskState.AwaitingPromise) { + state = TaskState.Active; + } + }); + return { + newState: state, + promise: waitForPromise, + }; + } else if (isTaskBuilder(waitFor)) { + // Create a sub-task with a reference to this task + state = TaskState.AwaitingTask; + const subTask = self.createTask(waitFor, this); + + subTask.promise.then((result) => { + prevResult = result; + }).catch((e) => { + waitError = e; + }).finally(() => { + if (state === TaskState.AwaitingTask) { + state = TaskState.Active; + } + }); + + return { + newState: state, + task: subTask, + }; + } else { + throw new Error( + "Invalid value yielded by task", + ); + } + } else { + return { newState: state }; + } + }, + async reset() { + if (state === TaskState.None) return; + state = TaskState.None; + waitForPromise = undefined; + generator = undefined; + + await builder.cleanup?.(); + }, + resolve(result) { + promise.resolve(result); + }, + reject(error) { + promise.reject(error); + }, + get state() { + return state; + }, + get generator() { + return generator; + }, + }; + } + + public start(): void { + this._stopSignal = createDeferredPromise(); + setImmediate(async () => { + try { + await this.run(); + } catch (e) { + console.error("Task runner crashed", e); + } + }); + } + + private async run(): Promise { + while (true) { + let waitFor: Promise | undefined; + if (this._tasks.length > 0) { + const firstTask = this._tasks.peekStart()!; + if (!this._currentTask) { + // We're not currently executing a task, start executing the first one + this._currentTask = firstTask; + } else if ( + this._currentTask !== firstTask + && this._currentTask.interrupt + !== TaskInterruptBehavior.Forbidden + ) { + // We are executing an interruptible task, and a new task with a higher priority was added + if ( + this._currentTask.interrupt + === TaskInterruptBehavior.Restart + ) { + // The current task needs to be restarted after being interrupted, so reset it + await this._currentTask.reset(); + } + // switch to the new task + this._currentTask = firstTask; + } + + if (this.verbose) { + console.log( + `Stepping through task: ${ + getTaskName(this._currentTask) + }`, + ); + } + + const cleanupCurrentTask = async () => { + if (this._currentTask) { + this._tasks.remove(this._currentTask); + await this._currentTask.reset(); + // Re-add the parent task to the list if there is one + if (this._currentTask.parent) { + if (this.verbose) { + console.log( + `Restoring parent task: ${ + getTaskName(this._currentTask.parent) + }`, + ); + } + this._tasks.add(this._currentTask.parent); + } + this._currentTask = undefined; + } + }; + + // Execute the current task one step further + waitFor = undefined; + let stepResult: TaskStepResult; + try { + stepResult = await this._currentTask.step(); + } catch (e) { + if (this.verbose) { + console.error( + `- Task threw an error:`, + e, + ); + } + // The task threw an error, expose the result and clean up. + this._currentTask.reject(e as Error); + await cleanupCurrentTask(); + // Then continue with the next iteration + continue; + } + + if (stepResult.newState === TaskState.Done) { + if (this.verbose) { + console.log(`- Task finished`); + } + // The task is done, clean up + this._currentTask.resolve(stepResult.result); + await cleanupCurrentTask(); + // Then continue with the next iteration + continue; + } else if (stepResult.newState === TaskState.AwaitingPromise) { + // The task is waiting for something + if (this.verbose) { + console.log(`- Task waiting`); + } + + // If the task may be interrupted, check if there are other same-priority tasks that should be executed instead + if ( + this._currentTask.interrupt + !== TaskInterruptBehavior.Forbidden + ) { + // Re-queue the task, so the queue gets reordered + this._tasks.remove(this._currentTask); + this._tasks.add(this._currentTask); + + if (this._tasks.peekStart() !== this._currentTask) { + if (this.verbose) { + console.log(`-- Continuing with another task`); + } + // The task is no longer the first in the queue. Switch to the other one + continue; + } + } + + // Otherwise, we got nothing to do right now than to wait + waitFor = stepResult.promise; + } else if (stepResult.newState === TaskState.AwaitingTask) { + // The task spawned a sub-task. Replace it with the sub-task and continue executing + if (this.verbose) { + console.log(`- Task spawned a sub-task`); + } + this._tasks.add(stepResult.task); + this._tasks.remove(this._currentTask); + // Continue with the next iteration + continue; + } else { + // The current task is not done, continue with the next iteration + continue; + } + } + + // Task queue empty. Wait for either a new task or the stop signal, + // or the current task to finish waiting + this._continueSignal = createDeferredPromise(); + const nextAction = await Promise.race([ + this._continueSignal.then(() => "continue" as const), + this._stopSignal!.then(() => "stop" as const), + waitFor?.then(() => "continue" as const), + ].filter((p) => p !== undefined)); + this._continueSignal = undefined; + if (nextAction === "stop") break; + } + this._stopPromise!.resolve(); + } + + public async stop(): Promise { + if (!this._stopSignal) return; + // Signal to the task runner that it should stop + this._stopPromise = createDeferredPromise(); + this._stopSignal.resolve(); + await this._stopPromise; + } +} diff --git a/packages/zwave-js/src/lib/driver/TransportServiceMachine.ts b/packages/zwave-js/src/lib/driver/TransportServiceMachine.ts index 9d83e3c4484e..6cdaa478a0b6 100644 --- a/packages/zwave-js/src/lib/driver/TransportServiceMachine.ts +++ b/packages/zwave-js/src/lib/driver/TransportServiceMachine.ts @@ -10,18 +10,16 @@ import { This state machine handles the receipt of Transport Service encapsulated commands from a node */ -/* eslint-disable @typescript-eslint/ban-types */ export interface TransportServiceRXStateSchema { states: { - waitingForSegment: {}; - segmentTimeout: {}; - waitingForRequestedSegment: {}; - segmentsComplete: {}; - success: {}; - failure: {}; + waitingForSegment: object; + segmentTimeout: object; + waitingForRequestedSegment: object; + segmentsComplete: object; + success: object; + failure: object; }; } -/* eslint-enable @typescript-eslint/ban-types */ export interface TransportServiceRXContext { receivedBytes: boolean[]; diff --git a/packages/zwave-js/src/lib/driver/UpdateConfig.ts b/packages/zwave-js/src/lib/driver/UpdateConfig.ts index 82c4634944ca..5389cc47e396 100644 --- a/packages/zwave-js/src/lib/driver/UpdateConfig.ts +++ b/packages/zwave-js/src/lib/driver/UpdateConfig.ts @@ -24,7 +24,7 @@ export async function checkForConfigUpdates( registry = await got .get("https://registry.npmjs.org/@zwave-js/config") .json(); - } catch (e) { + } catch { throw new ZWaveError( `Could not check for config updates: Failed to download package information!`, ZWaveErrorCodes.Config_Update_RegistryError, @@ -177,7 +177,7 @@ export async function installConfigUpdateInDocker( // do nothing }, }); - } catch (e) { + } catch { throw new ZWaveError( `Config update failed: Another installation is already in progress!`, ZWaveErrorCodes.Config_Update_InstallFailed, @@ -267,7 +267,7 @@ export async function installConfigUpdateInDocker( await fs.remove(configModuleDir); await fs.rename(extractedDir, configModuleDir); } - } catch (e) { + } catch { await freeLock(); throw new ZWaveError( `Config update failed: Could not extract tarball`, diff --git a/packages/zwave-js/src/lib/driver/ZWaveOptions.ts b/packages/zwave-js/src/lib/driver/ZWaveOptions.ts index 528c8edc7d19..76633f027a3f 100644 --- a/packages/zwave-js/src/lib/driver/ZWaveOptions.ts +++ b/packages/zwave-js/src/lib/driver/ZWaveOptions.ts @@ -451,6 +451,16 @@ export const driverPresets = Object.freeze( }, }, + /** + * Prevents enabling the watchdog to be able to deal with controllers + * which frequently get restarted for seemingly no reason. + */ + NO_WATCHDOG: { + features: { + watchdog: false, + }, + }, + /** * Sends battery powered nodes to sleep more quickly in order to save battery. */ diff --git a/packages/zwave-js/src/lib/node/MockNodeBehaviors.ts b/packages/zwave-js/src/lib/node/MockNodeBehaviors.ts index 327e3afeebb4..402720e709b4 100644 --- a/packages/zwave-js/src/lib/node/MockNodeBehaviors.ts +++ b/packages/zwave-js/src/lib/node/MockNodeBehaviors.ts @@ -30,10 +30,12 @@ import { MultiChannelCCHooks, } from "./mockCCBehaviors/MultiChannel"; import { MultilevelSensorCCBehaviors } from "./mockCCBehaviors/MultilevelSensor"; +import { MultilevelSwitchCCBehaviors } from "./mockCCBehaviors/MultilevelSwitch"; import { NotificationCCBehaviors } from "./mockCCBehaviors/Notification"; import { ScheduleEntryLockCCBehaviors } from "./mockCCBehaviors/ScheduleEntryLock"; import { SoundSwitchCCBehaviors } from "./mockCCBehaviors/SoundSwitch"; import { ThermostatModeCCBehaviors } from "./mockCCBehaviors/ThermostatMode"; +import { ThermostatSetbackCCBehaviors } from "./mockCCBehaviors/ThermostatSetback"; import { ThermostatSetpointCCBehaviors } from "./mockCCBehaviors/ThermostatSetpoint"; import { UserCodeCCBehaviors } from "./mockCCBehaviors/UserCode"; import { WindowCoveringCCBehaviors } from "./mockCCBehaviors/WindowCovering"; @@ -186,11 +188,13 @@ export function createDefaultBehaviors(): MockNodeBehavior[] { ...ManufacturerSpecificCCBehaviors, ...MeterCCBehaviors, ...MultilevelSensorCCBehaviors, + ...MultilevelSwitchCCBehaviors, ...NotificationCCBehaviors, ...ScheduleEntryLockCCBehaviors, ...SoundSwitchCCBehaviors, ...ThermostatModeCCBehaviors, ...ThermostatSetpointCCBehaviors, + ...ThermostatSetbackCCBehaviors, ...UserCodeCCBehaviors, ...WindowCoveringCCBehaviors, ]; diff --git a/packages/zwave-js/src/lib/node/Node.ts b/packages/zwave-js/src/lib/node/Node.ts index 01129dfbf3cc..c623b2dda576 100644 --- a/packages/zwave-js/src/lib/node/Node.ts +++ b/packages/zwave-js/src/lib/node/Node.ts @@ -10,6 +10,7 @@ import { DoorLockMode, EntryControlDataTypes, type FirmwareUpdateCapabilities, + type FirmwareUpdateInitResult, type FirmwareUpdateMetaData, type FirmwareUpdateOptions, type FirmwareUpdateProgress, @@ -257,6 +258,7 @@ import { type Driver, libVersion } from "../driver/Driver"; import { cacheKeys } from "../driver/NetworkCache"; import { type Extended, interpretEx } from "../driver/StateMachineShared"; import type { StatisticsEventCallbacksWithSelf } from "../driver/Statistics"; +import { type TaskBuilder, TaskPriority } from "../driver/Task"; import type { Transaction } from "../driver/Transaction"; import { type ApplicationUpdateRequest, @@ -321,6 +323,10 @@ interface AbortFirmwareUpdateContext { abortPromise: DeferredPromise; } +type PartialFirmwareUpdateResult = + & Pick + & { success: boolean }; + const MAX_ASSOCIATIONS = 1; export interface ZWaveNode extends @@ -2440,7 +2446,7 @@ protocol version: ${this.protocolVersion}`; rootInterviewOrderAfterEndpoints = topologicalSort( rootInterviewGraphAfterEndpoints, ); - } catch (e) { + } catch { // This interview cannot be done throw new ZWaveError( "The CC interview cannot be completed because there are circular dependencies between CCs!", @@ -2717,7 +2723,7 @@ protocol version: ${this.protocolVersion}`; endpointInterviewOrder = topologicalSort( endpointInterviewGraph, ); - } catch (e) { + } catch { // This interview cannot be done throw new ZWaveError( "The CC interview cannot be completed because there are circular dependencies between CCs!", @@ -5537,34 +5543,11 @@ protocol version: ${this.protocolVersion}`; & ~EncapsulationFlags.Supervision, }); await api.reportTimezone(timezone); - } catch (e) { + } catch { // ignore } } - private _firmwareUpdateInProgress: boolean = false; - /** - * Returns whether a firmware update is in progress for this node. - */ - public isFirmwareUpdateInProgress(): boolean { - if (this.isControllerNode) { - return this.driver.controller.isFirmwareUpdateInProgress(); - } else { - return this._firmwareUpdateInProgress; - } - } - - // Stores the CRC of the previously transferred firmware image. - // Allows detecting whether resuming is supported and where to continue in a multi-file transfer. - private _previousFirmwareCRC: number | undefined; - - private _abortFirmwareUpdate: (() => Promise) | undefined; - - /** Is used to remember fragment requests that came in before they were able to be handled */ - private _firmwareUpdatePrematureRequest: - | FirmwareUpdateMetaDataCCGet - | undefined; - /** * Retrieves the firmware update capabilities of a node to decide which options to offer a user prior to the update. * This method uses cached information from the most recent interview. @@ -5641,6 +5624,24 @@ protocol version: ${this.protocolVersion}`; }; } + private _abortFirmwareUpdate: (() => Promise) | undefined; + /** + * Aborts an active firmware update process + */ + public async abortFirmwareUpdate(): Promise { + if (!this._abortFirmwareUpdate) return; + await this._abortFirmwareUpdate(); + } + + // Stores the CRC of the previously transferred firmware image. + // Allows detecting whether resuming is supported and where to continue in a multi-file transfer. + private _previousFirmwareCRC: number | undefined; + + /** Is used to remember fragment requests that came in before they were able to be handled */ + private _firmwareUpdatePrematureRequest: + | FirmwareUpdateMetaDataCCGet + | undefined; + /** * Performs an OTA firmware upgrade of one or more chips on this node. * @@ -5683,317 +5684,382 @@ protocol version: ${this.protocolVersion}`; } // Don't start the process twice - if (this.isFirmwareUpdateInProgress()) { + if (this.driver.controller.isFirmwareUpdateInProgress()) { throw new ZWaveError( - `Failed to start the update: A firmware upgrade is already in progress!`, + `Failed to start the update: An OTW upgrade of the controller is in progress!`, ZWaveErrorCodes.FirmwareUpdateCC_Busy, ); } - // Don't let two firmware updates happen in parallel - if (this.driver.controller.isAnyOTAFirmwareUpdateInProgress()) { + // Don't allow starting two firmware updates for the same node + const task = this.getUpdateFirmwareTask(updates, options); + if (task instanceof Promise) { throw new ZWaveError( - `Failed to start the update: A firmware update is already in progress on this network!`, - ZWaveErrorCodes.FirmwareUpdateCC_NetworkBusy, + `Failed to start the update: A firmware update is already in progress for this node!`, + ZWaveErrorCodes.FirmwareUpdateCC_Busy, ); } - this._firmwareUpdateInProgress = true; - // Support aborting the update - const abortContext = { - abort: false, - tooLateToAbort: false, - abortPromise: createDeferredPromise(), - }; + // Queue the task + return this.driver.scheduler.queueTask(task); + } - this._abortFirmwareUpdate = async () => { - if (abortContext.tooLateToAbort) { - throw new ZWaveError( - `The firmware update was transmitted completely, cannot abort anymore.`, - ZWaveErrorCodes.FirmwareUpdateCC_FailedToAbort, - ); - } + /** + * Returns whether a firmware update is in progress for this node. + */ + public isFirmwareUpdateInProgress(): boolean { + return !!this.driver.scheduler.findTask( + nodeUtils.isFirmwareUpdateOTATask, + ); + } - this.driver.controllerLog.logNode(this.id, { - message: `Aborting firmware update...`, - direction: "outbound", - }); + private getUpdateFirmwareTask( + updates: Firmware[], + options: FirmwareUpdateOptions = {}, + ): Promise | TaskBuilder { + const self = this; + + // This task should only run once at a time + const existingTask = this.driver.scheduler.findTask< + FirmwareUpdateResult + >((t) => + t.tag?.id === "firmware-update-ota" + && t.tag.nodeId === self.id + ); + if (existingTask) return existingTask; - // Trigger the abort - abortContext.abort = true; - const aborted = await abortContext.abortPromise; - if (!aborted) { - throw new ZWaveError( - `The node did not acknowledge the aborted update`, - ZWaveErrorCodes.FirmwareUpdateCC_FailedToAbort, - ); - } - this.driver.controllerLog.logNode(this.id, { - message: `Firmware update aborted`, - direction: "inbound", - }); - }; + let keepAwake: boolean; - // If the node isn't supposed to be kept awake yet, do it - this.keepAwake = true; + return { + // Firmware updates cause a lot of traffic. Execute them in the background. + priority: TaskPriority.Lower, + tag: { id: "firmware-update-ota", nodeId: self.id }, + task: async function* firmwareUpdateTask() { + // Keep battery powered nodes awake during the process + keepAwake = self.keepAwake; + self.keepAwake = true; + + // Support aborting the update + const abortContext = { + abort: false, + tooLateToAbort: false, + abortPromise: createDeferredPromise(), + }; - // Reset persisted state after the update - const restore = (keepAwake: boolean) => { - this.keepAwake = keepAwake; - this._firmwareUpdateInProgress = false; - this._abortFirmwareUpdate = undefined; - this._firmwareUpdatePrematureRequest = undefined; - }; + self._abortFirmwareUpdate = async () => { + if (abortContext.tooLateToAbort) { + throw new ZWaveError( + `The firmware update was transmitted completely, cannot abort anymore.`, + ZWaveErrorCodes.FirmwareUpdateCC_FailedToAbort, + ); + } - // Prepare the firmware update - let fragmentSizeSecure: number; - let fragmentSizeNonSecure: number; - let meta: FirmwareUpdateMetaData; - try { - const prepareResult = await this.prepareFirmwareUpdateInternal( - updates.map((u) => u.firmwareTarget ?? 0), - abortContext, - ); + self.driver.controllerLog.logNode(self.id, { + message: `Aborting firmware update...`, + direction: "outbound", + }); - // Handle early aborts - if (abortContext.abort) { - const result: FirmwareUpdateResult = { - success: false, - status: FirmwareUpdateStatus.Error_TransmissionFailed, - reInterview: false, + // Trigger the abort + abortContext.abort = true; + const aborted = await abortContext.abortPromise; + if (!aborted) { + throw new ZWaveError( + `The node did not acknowledge the aborted update`, + ZWaveErrorCodes.FirmwareUpdateCC_FailedToAbort, + ); + } + self.driver.controllerLog.logNode(self.id, { + message: `Firmware update aborted`, + direction: "inbound", + }); }; - this.emit("firmware update finished", this, result); - restore(false); - return result; - } - - // If the firmware update was not aborted, prepareResult is definitely defined - ({ fragmentSizeSecure, fragmentSizeNonSecure, ...meta } = - prepareResult!); - } catch { - restore(false); - // Not sure what the error is, but we'll label it "transmission failed" - const result: FirmwareUpdateResult = { - success: false, - status: FirmwareUpdateStatus.Error_TransmissionFailed, - reInterview: false, - }; - return result; - } + // Prepare the firmware update + let fragmentSizeSecure: number; + let fragmentSizeNonSecure: number; + let meta: FirmwareUpdateMetaData; + try { + const prepareResult = await self + .prepareFirmwareUpdateInternal( + updates.map((u) => u.firmwareTarget ?? 0), + abortContext, + ); - // The resume and non-secure transfer features may not be supported by the node - // If not, disable them, even though the application requested them - if (!meta.supportsResuming) options.resume = false; + // Handle early aborts + if (abortContext.abort) { + const result: FirmwareUpdateResult = { + success: false, + status: FirmwareUpdateStatus + .Error_TransmissionFailed, + reInterview: false, + }; + self.emit( + "firmware update finished", + self, + result, + ); + return result; + } - const securityClass = this.getHighestSecurityClass(); - const isSecure = securityClass === SecurityClass.S0_Legacy - || securityClassIsS2(securityClass); - if (!isSecure) { - // The nonSecureTransfer option is only relevant for secure devices - options.nonSecureTransfer = false; - } else if (!meta.supportsNonSecureTransfer) { - options.nonSecureTransfer = false; - } - - // Throttle the progress emitter so applications can handle the load of events - const notifyProgress = throttle( - (progress) => this.emit("firmware update progress", this, progress), - 250, - true, - ); + // If the firmware update was not aborted, prepareResult is definitely defined + ({ + fragmentSizeSecure, + fragmentSizeNonSecure, + ...meta + } = prepareResult!); + } catch { + // Not sure what the error is, but we'll label it "transmission failed" + const result: FirmwareUpdateResult = { + success: false, + status: FirmwareUpdateStatus.Error_TransmissionFailed, + reInterview: false, + }; - // If resuming is supported and desired, try to figure out with which file to continue - const updatesWithChecksum = updates.map((u) => ({ - ...u, - checksum: CRC16_CCITT(u.data), - })); - let skipFinishedFiles = -1; - let shouldResume = options.resume - && this._previousFirmwareCRC != undefined; - if (shouldResume) { - skipFinishedFiles = updatesWithChecksum.findIndex( - (u) => u.checksum === this._previousFirmwareCRC, - ); - if (skipFinishedFiles === -1) shouldResume = false; - } + return result; + } - // Perform all firmware updates in sequence - let updateResult!: Awaited< - ReturnType - >; - let conservativeWaitTime: number; + yield; // Give the task scheduler time to do something else - const totalBytes: number = updatesWithChecksum.reduce( - (total, update) => total + update.data.length, - 0, - ); - let sentBytesOfPreviousFiles = 0; + // The resume and non-secure transfer features may not be supported by the node + // If not, disable them, even though the application requested them + if (!meta.supportsResuming) options.resume = false; - for (let i = 0; i < updatesWithChecksum.length; i++) { - const { firmwareTarget: target = 0, data, checksum } = - updatesWithChecksum[i]; + const securityClass = self.getHighestSecurityClass(); + const isSecure = securityClass === SecurityClass.S0_Legacy + || securityClassIsS2(securityClass); + if (!isSecure) { + // The nonSecureTransfer option is only relevant for secure devices + options.nonSecureTransfer = false; + } else if (!meta.supportsNonSecureTransfer) { + options.nonSecureTransfer = false; + } - if (i < skipFinishedFiles) { - // If we are resuming, skip this file since it was already done before - this.driver.controllerLog.logNode( - this.id, - `Skipping already completed firmware update (part ${ - i + 1 - } / ${updatesWithChecksum.length})...`, + // Throttle the progress emitter so applications can handle the load of events + const notifyProgress = throttle( + (progress) => + self.emit( + "firmware update progress", + self, + progress, + ), + 250, + true, ); - sentBytesOfPreviousFiles += data.length; - continue; - } - this.driver.controllerLog.logNode( - this.id, - `Updating firmware (part ${ - i + 1 - } / ${updatesWithChecksum.length})...`, - ); + // If resuming is supported and desired, try to figure out with which file to continue + const updatesWithChecksum = updates.map((u) => ({ + ...u, + checksum: CRC16_CCITT(u.data), + })); + let skipFinishedFiles = -1; + let shouldResume = options.resume + && self._previousFirmwareCRC != undefined; + if (shouldResume) { + skipFinishedFiles = updatesWithChecksum.findIndex( + (u) => u.checksum === self._previousFirmwareCRC, + ); + if (skipFinishedFiles === -1) shouldResume = false; + } + + // Perform all firmware updates in sequence + let updateResult!: PartialFirmwareUpdateResult; + let conservativeWaitTime: number; - // For determining the initial fragment size, assume the node respects our choice. - // If the node is not secure, these two values are identical anyways. - let fragmentSize = options.nonSecureTransfer - ? fragmentSizeNonSecure - : fragmentSizeSecure; - - // Tell the node to start requesting fragments - const { resume, nonSecureTransfer } = await this - .beginFirmwareUpdateInternal( - data, - target, - meta, - fragmentSize, - checksum, - shouldResume, - options.nonSecureTransfer, + const totalBytes: number = updatesWithChecksum.reduce( + (total, update) => total + update.data.length, + 0, ); + let sentBytesOfPreviousFiles = 0; + + for (let i = 0; i < updatesWithChecksum.length; i++) { + const { firmwareTarget: target = 0, data, checksum } = + updatesWithChecksum[i]; + + if (i < skipFinishedFiles) { + // If we are resuming, skip this file since it was already done before + self.driver.controllerLog.logNode( + self.id, + `Skipping already completed firmware update (part ${ + i + 1 + } / ${updatesWithChecksum.length})...`, + ); + sentBytesOfPreviousFiles += data.length; + continue; + } - // If the node did not accept non-secure transfer, revisit our choice of fragment size - if (options.nonSecureTransfer && !nonSecureTransfer) { - fragmentSize = fragmentSizeSecure; - } + self.driver.controllerLog.logNode( + self.id, + `Updating firmware (part ${ + i + 1 + } / ${updatesWithChecksum.length})...`, + ); - // Remember the checksum, so we can resume if necessary - this._previousFirmwareCRC = checksum; + // For determining the initial fragment size, assume the node respects our choice. + // If the node is not secure, these two values are identical anyways. + let fragmentSize = options.nonSecureTransfer + ? fragmentSizeNonSecure + : fragmentSizeSecure; + + // Tell the node to start requesting fragments + const { resume, nonSecureTransfer } = yield* self + .beginFirmwareUpdateInternal( + data, + target, + meta, + fragmentSize, + checksum, + shouldResume, + options.nonSecureTransfer, + ); - if (shouldResume) { - this.driver.controllerLog.logNode( - this.id, - `Node ${ - resume ? "accepted" : "did not accept" - } resuming the update...`, - ); - } - if (nonSecureTransfer) { - this.driver.controllerLog.logNode( - this.id, - `Firmware will be transferred without encryption...`, - ); - } + // If the node did not accept non-secure transfer, revisit our choice of fragment size + if (options.nonSecureTransfer && !nonSecureTransfer) { + fragmentSize = fragmentSizeSecure; + } - // And handle them - updateResult = await this.doFirmwareUpdateInternal( - data, - fragmentSize, - nonSecureTransfer, - abortContext, - (fragment, total) => { - const progress: FirmwareUpdateProgress = { - currentFile: i + 1, - totalFiles: updatesWithChecksum.length, - sentFragments: fragment, - totalFragments: total, - progress: roundTo( - ( - (sentBytesOfPreviousFiles - + Math.min( - fragment * fragmentSize, - data.length, - )) - / totalBytes - ) * 100, - 2, - ), - }; - notifyProgress(progress); + // Remember the checksum, so we can resume if necessary + self._previousFirmwareCRC = checksum; - // When this file is done, add the fragments to the total, so we can compute the total progress correctly - if (fragment === total) { - sentBytesOfPreviousFiles += data.length; + if (shouldResume) { + self.driver.controllerLog.logNode( + self.id, + `Node ${ + resume ? "accepted" : "did not accept" + } resuming the update...`, + ); + } + if (nonSecureTransfer) { + self.driver.controllerLog.logNode( + self.id, + `Firmware will be transferred without encryption...`, + ); } - }, - ); - // If we wait, wait a bit longer than the device told us, so it is actually ready to use - conservativeWaitTime = this.driver - .getConservativeWaitTimeAfterFirmwareUpdate( - updateResult.waitTime, - ); + yield; // Give the task scheduler time to do something else - if (!updateResult.success) { - this.driver.controllerLog.logNode(this.id, { - message: `Firmware update (part ${ - i + 1 - } / ${updatesWithChecksum.length}) failed with status ${ - getEnumMemberName( - FirmwareUpdateStatus, - updateResult.status, - ) - }`, - direction: "inbound", - }); + // Listen for firmware update fragment requests and handle them + updateResult = yield* self.doFirmwareUpdateInternal( + data, + fragmentSize, + nonSecureTransfer, + abortContext, + (fragment, total) => { + const progress: FirmwareUpdateProgress = { + currentFile: i + 1, + totalFiles: updatesWithChecksum.length, + sentFragments: fragment, + totalFragments: total, + progress: roundTo( + ( + (sentBytesOfPreviousFiles + + Math.min( + fragment * fragmentSize, + data.length, + )) + / totalBytes + ) * 100, + 2, + ), + }; + notifyProgress(progress); + + // When this file is done, add the fragments to the total, so we can compute the total progress correctly + if (fragment === total) { + sentBytesOfPreviousFiles += data.length; + } + }, + ); - const result: FirmwareUpdateResult = { - ...updateResult, - waitTime: undefined, - reInterview: false, - }; - this.emit("firmware update finished", this, result); - restore(false); - return result; - } else if (i < updatesWithChecksum.length - 1) { - // Update succeeded, but we're not done yet + // If we wait, wait a bit longer than the device told us, so it is actually ready to use + conservativeWaitTime = self.driver + .getConservativeWaitTimeAfterFirmwareUpdate( + updateResult.waitTime, + ); - this.driver.controllerLog.logNode(this.id, { - message: `Firmware update (part ${ - i + 1 - } / ${updatesWithChecksum.length}) succeeded with status ${ - getEnumMemberName( - FirmwareUpdateStatus, - updateResult.status, - ) - }`, - direction: "inbound", - }); + if (!updateResult.success) { + self.driver.controllerLog.logNode(self.id, { + message: `Firmware update (part ${ + i + 1 + } / ${updatesWithChecksum.length}) failed with status ${ + getEnumMemberName( + FirmwareUpdateStatus, + updateResult.status, + ) + }`, + direction: "inbound", + }); - this.driver.controllerLog.logNode( - this.id, - `Continuing with next part in ${conservativeWaitTime} seconds...`, - ); + const result: FirmwareUpdateResult = { + ...updateResult, + waitTime: undefined, + reInterview: false, + }; + self.emit( + "firmware update finished", + self, + result, + ); - // If we've resumed the previous file, there's no need to resume the next one too - shouldResume = false; + return result; + } else if (i < updatesWithChecksum.length - 1) { + // Update succeeded, but we're not done yet + + self.driver.controllerLog.logNode(self.id, { + message: `Firmware update (part ${ + i + 1 + } / ${updatesWithChecksum.length}) succeeded with status ${ + getEnumMemberName( + FirmwareUpdateStatus, + updateResult.status, + ) + }`, + direction: "inbound", + }); - await wait(conservativeWaitTime * 1000, true); - } - } + self.driver.controllerLog.logNode( + self.id, + `Continuing with next part in ${conservativeWaitTime} seconds...`, + ); - // We're done. No need to resume this update - this._previousFirmwareCRC = undefined; + // If we've resumed the previous file, there's no need to resume the next one too + shouldResume = false; - const result: FirmwareUpdateResult = { - ...updateResult, - waitTime: conservativeWaitTime!, - reInterview: true, - }; + yield () => wait(conservativeWaitTime * 1000, true); + } + } - this.emit("firmware update finished", this, result); + // We're done. No need to resume this update + self._previousFirmwareCRC = undefined; - restore(true); - return result; + const result: FirmwareUpdateResult = { + ...updateResult, + waitTime: conservativeWaitTime!, + reInterview: true, + }; + + // After a successful firmware update, we want to interview sleeping nodes immediately, + // so don't send them to sleep when they wake up + keepAwake = true; + + self.emit("firmware update finished", self, result); + + return result; + }, + cleanup() { + self._abortFirmwareUpdate = undefined; + self._firmwareUpdatePrematureRequest = undefined; + + // Make sure that the keepAwake flag gets reset at the end + self.keepAwake = keepAwake; + if (!keepAwake) { + setImmediate(() => { + self.driver.debounceSendNodeToSleep(self); + }); + } + + return Promise.resolve(); + }, + }; } /** Prepares the firmware update of a single target by collecting the necessary information */ @@ -6051,9 +6117,10 @@ protocol version: ${this.protocolVersion}`; const fcc = new FirmwareUpdateMetaDataCC(this.driver, { nodeId: this.id, }); - const maxGrossPayloadSizeSecure = this.driver.computeNetCCPayloadSize( - fcc, - ); + const maxGrossPayloadSizeSecure = this.driver + .computeNetCCPayloadSize( + fcc, + ); const maxGrossPayloadSizeNonSecure = this.driver .computeNetCCPayloadSize(fcc, true); @@ -6086,8 +6153,43 @@ protocol version: ${this.protocolVersion}`; } } + protected async handleUnexpectedFirmwareUpdateGet( + command: FirmwareUpdateMetaDataCCGet, + ): Promise { + // This method will only be called under two circumstances: + // 1. The node is currently busy responding to a firmware update request -> remember the request + if (this.isFirmwareUpdateInProgress()) { + this._firmwareUpdatePrematureRequest = command; + return; + } + + // 2. No firmware update is in progress -> abort + this.driver.controllerLog.logNode(this.id, { + message: + `Received Firmware Update Get, but no firmware update is in progress. Forcing the node to abort...`, + direction: "inbound", + }); + + // Since no update is in progress, we need to determine the fragment size again + const fcc = new FirmwareUpdateMetaDataCC(this.driver, { + nodeId: this.id, + }); + const fragmentSize = this.driver.computeNetCCPayloadSize(fcc) + - 2 // report number + - (fcc.version >= 2 ? 2 : 0); // checksum + const fragment = randomBytes(fragmentSize); + try { + await this.sendCorruptedFirmwareUpdateReport( + command.reportNumber, + fragment, + ); + } catch { + // ignore + } + } + /** Kicks off a firmware update of a single target. Returns whether the node accepted resuming and non-secure transfer */ - private async beginFirmwareUpdateInternal( + private *beginFirmwareUpdateInternal( data: Buffer, target: number, meta: FirmwareUpdateMetaData, @@ -6095,10 +6197,7 @@ protocol version: ${this.protocolVersion}`; checksum: number, resume: boolean | undefined, nonSecureTransfer: boolean | undefined, - ): Promise<{ - resume: boolean; - nonSecureTransfer: boolean; - }> { + ) { const api = this.commandClasses["Firmware Update Meta Data"]; // ================================ @@ -6109,19 +6208,21 @@ protocol version: ${this.protocolVersion}`; direction: "outbound", }); - // Request the node to start the upgrade - // TODO: Should manufacturer id and firmware id be provided externally? - const result = await api.requestUpdate({ - manufacturerId: meta.manufacturerId, - firmwareId: target == 0 - ? meta.firmwareId - : meta.additionalFirmwareIDs[target - 1], - firmwareTarget: target, - fragmentSize, - checksum, - resume, - nonSecureTransfer, - }); + // Request the node to start the upgrade. Pause the task until this is done, + // since the call can block for a long time + const result: FirmwareUpdateInitResult = yield () => + api.requestUpdate({ + // TODO: Should manufacturer id and firmware id be provided externally? + manufacturerId: meta.manufacturerId, + firmwareId: target == 0 + ? meta.firmwareId + : meta.additionalFirmwareIDs[target - 1], + firmwareTarget: target, + fragmentSize, + checksum, + resume, + nonSecureTransfer, + }); switch (result.status) { case FirmwareUpdateRequestStatus.Error_AuthenticationExpected: throw new ZWaveError( @@ -6133,7 +6234,8 @@ protocol version: ${this.protocolVersion}`; `Failed to start the update: The battery level is too low!`, ZWaveErrorCodes.FirmwareUpdateCC_FailedToStart, ); - case FirmwareUpdateRequestStatus.Error_FirmwareUpgradeInProgress: + case FirmwareUpdateRequestStatus + .Error_FirmwareUpgradeInProgress: throw new ZWaveError( `Failed to start the update: A firmware upgrade is already in progress!`, ZWaveErrorCodes.FirmwareUpdateCC_Busy, @@ -6171,17 +6273,75 @@ protocol version: ${this.protocolVersion}`; }; } - /** Performs the firmware update of a single target */ - private async doFirmwareUpdateInternal( + protected async handleFirmwareUpdateMetaDataGet( + command: FirmwareUpdateMetaDataCCMetaDataGet, + ): Promise { + const endpoint = this.getEndpoint(command.endpointIndex) + ?? this; + + // We are being queried, so the device may actually not support the CC, just control it. + // Using the commandClasses property would throw in that case + const api = endpoint + .createAPI(CommandClasses["Firmware Update Meta Data"], false) + .withOptions({ + // Answer with the same encapsulation as asked, but omit + // Supervision as it shouldn't be used for Get-Report flows + encapsulationFlags: command.encapsulationFlags + & ~EncapsulationFlags.Supervision, + }); + + // We do not support the firmware to be upgraded. + await api.reportMetaData({ + manufacturerId: this.driver.options.vendor?.manufacturerId + ?? 0xffff, + firmwareUpgradable: false, + hardwareVersion: this.driver.options.vendor?.hardwareVersion + ?? 0, + }); + } + + private async sendCorruptedFirmwareUpdateReport( + reportNum: number, + fragment: Buffer, + nonSecureTransfer: boolean = false, + ): Promise { + try { + await this.commandClasses["Firmware Update Meta Data"] + .withOptions({ + // Only encapsulate if the transfer is secure + autoEncapsulate: !nonSecureTransfer, + }) + .sendFirmwareFragment(reportNum, true, fragment); + } catch { + // ignore + } + } + + private hasPendingFirmwareUpdateFragment( + fragmentNumber: number, + ): boolean { + // Avoid queuing duplicate fragments + const isCurrentFirmwareFragment = (t: Transaction) => + t.message.getNodeId() === this.id + && isCommandClassContainer(t.message) + && t.message.command instanceof FirmwareUpdateMetaDataCCReport + && t.message.command.reportNumber === fragmentNumber; + + return this.driver.hasPendingTransactions( + isCurrentFirmwareFragment, + ); + } + + private async *doFirmwareUpdateInternal( data: Buffer, fragmentSize: number, nonSecureTransfer: boolean, abortContext: AbortFirmwareUpdateContext, onProgress: (fragment: number, total: number) => void, - ): Promise< - Pick & { - success: boolean; - } + ): AsyncGenerator< + any, + PartialFirmwareUpdateResult, + any > { const numFragments = Math.ceil(data.length / fragmentSize); @@ -6192,42 +6352,45 @@ protocol version: ${this.protocolVersion}`; // STEP 4: // Respond to fragment requests from the node update: while (true) { + yield; // Give the task scheduler time to do something else + // During ongoing firmware updates, it can happen that the next request is received before the callback for the previous response // is back. In that case we can immediately handle the premature request. Otherwise wait for the next request. - const fragmentRequest = this._firmwareUpdatePrematureRequest - ?? (await this.driver - .waitForCommand( - (cc) => - cc.nodeId === this.id - && cc instanceof FirmwareUpdateMetaDataCCGet, - // Wait up to 2 minutes for each fragment request. - // Some users try to update devices with unstable connections, where 30s can be too short. - timespan.minutes(2), - ) - .catch(() => undefined)); - this._firmwareUpdatePrematureRequest = undefined; - - if (!fragmentRequest) { - // In some cases it can happen that the device stops requesting update frames - // We need to timeout the update in this case so it can be restarted - - this.driver.controllerLog.logNode(this.id, { - message: `Firmware update timed out`, - direction: "none", - level: "warn", - }); + let fragmentRequest: FirmwareUpdateMetaDataCCGet; + if (this._firmwareUpdatePrematureRequest) { + fragmentRequest = this._firmwareUpdatePrematureRequest; + this._firmwareUpdatePrematureRequest = undefined; + } else { + try { + fragmentRequest = yield () => + this.driver + .waitForCommand( + (cc) => + cc.nodeId === this.id + && cc + instanceof FirmwareUpdateMetaDataCCGet, + // Wait up to 2 minutes for each fragment request. + // Some users try to update devices with unstable connections, where 30s can be too short. + timespan.minutes(2), + ); + } catch { + // In some cases it can happen that the device stops requesting update frames + // We need to timeout the update in this case so it can be restarted + this.driver.controllerLog.logNode(this.id, { + message: `Firmware update timed out`, + direction: "none", + level: "warn", + }); - return { - success: false, - status: FirmwareUpdateStatus.Error_Timeout, - }; + return { + success: false, + status: FirmwareUpdateStatus.Error_Timeout, + }; + } } + // When a node requests a firmware update fragment, it must be awake - try { - this.markAsAwake(); - } catch { - /* ignore */ - } + this.markAsAwake(); if (fragmentRequest.reportNumber > numFragments) { this.driver.controllerLog.logNode(this.id, { @@ -6247,9 +6410,13 @@ protocol version: ${this.protocolVersion}`; // Actually send the requested frames request: for ( let num = fragmentRequest.reportNumber; - num < fragmentRequest.reportNumber + fragmentRequest.numReports; + num + < fragmentRequest.reportNumber + + fragmentRequest.numReports; num++ ) { + yield; // Give the task scheduler time to do something else + // Check if the node requested more fragments than are left if (num > numFragments) { break; @@ -6285,7 +6452,8 @@ protocol version: ${this.protocolVersion}`; const isLast = num === numFragments; try { - await this.commandClasses["Firmware Update Meta Data"] + await this + .commandClasses["Firmware Update Meta Data"] .withOptions({ // Only encapsulate if the transfer is secure autoEncapsulate: !nonSecureTransfer, @@ -6313,25 +6481,35 @@ protocol version: ${this.protocolVersion}`; } } + yield; // Give the task scheduler time to do something else + // ================================ // STEP 5: // Finalize the update process - const statusReport = await this.driver - .waitForCommand( - (cc) => - cc.nodeId === this.id - && cc instanceof FirmwareUpdateMetaDataCCStatusReport, - // Wait up to 5 minutes. It should never take that long, but the specs - // don't say anything specific - 5 * 60000, - ) - .catch(() => undefined); + const statusReport: + | FirmwareUpdateMetaDataCCStatusReport + | undefined = yield () => + this.driver + .waitForCommand( + (cc) => + cc.nodeId === this.id + && cc + instanceof FirmwareUpdateMetaDataCCStatusReport, + // Wait up to 5 minutes. It should never take that long, but the specs + // don't say anything specific + 5 * 60000, + ) + .catch(() => undefined); if (abortContext.abort) { abortContext.abortPromise.resolve( + // The error should be Error_TransmissionFailed, but some devices + // use the Error_Checksum error code instead statusReport?.status - === FirmwareUpdateStatus.Error_TransmissionFailed, + === FirmwareUpdateStatus.Error_TransmissionFailed + || statusReport?.status + === FirmwareUpdateStatus.Error_Checksum, ); } @@ -6361,102 +6539,6 @@ protocol version: ${this.protocolVersion}`; }; } - /** - * Aborts an active firmware update process - */ - public async abortFirmwareUpdate(): Promise { - if (!this._abortFirmwareUpdate) return; - await this._abortFirmwareUpdate(); - } - - private async sendCorruptedFirmwareUpdateReport( - reportNum: number, - fragment: Buffer, - nonSecureTransfer: boolean = false, - ): Promise { - try { - await this.commandClasses["Firmware Update Meta Data"] - .withOptions({ - // Only encapsulate if the transfer is secure - autoEncapsulate: !nonSecureTransfer, - }) - .sendFirmwareFragment(reportNum, true, fragment); - } catch { - // ignore - } - } - - private hasPendingFirmwareUpdateFragment(fragmentNumber: number): boolean { - // Avoid queuing duplicate fragments - const isCurrentFirmwareFragment = (t: Transaction) => - t.message.getNodeId() === this.id - && isCommandClassContainer(t.message) - && t.message.command instanceof FirmwareUpdateMetaDataCCReport - && t.message.command.reportNumber === fragmentNumber; - - return this.driver.hasPendingTransactions(isCurrentFirmwareFragment); - } - - private async handleUnexpectedFirmwareUpdateGet( - command: FirmwareUpdateMetaDataCCGet, - ): Promise { - // This method will only be called under two circumstances: - // 1. The node is currently busy responding to a firmware update request -> remember the request - if (this.isFirmwareUpdateInProgress()) { - this._firmwareUpdatePrematureRequest = command; - return; - } - - // 2. No firmware update is in progress -> abort - this.driver.controllerLog.logNode(this.id, { - message: - `Received Firmware Update Get, but no firmware update is in progress. Forcing the node to abort...`, - direction: "inbound", - }); - - // Since no update is in progress, we need to determine the fragment size again - const fcc = new FirmwareUpdateMetaDataCC(this.driver, { - nodeId: this.id, - }); - const fragmentSize = this.driver.computeNetCCPayloadSize(fcc) - - 2 // report number - - (fcc.version >= 2 ? 2 : 0); // checksum - const fragment = randomBytes(fragmentSize); - try { - await this.sendCorruptedFirmwareUpdateReport( - command.reportNumber, - fragment, - ); - } catch { - // ignore - } - } - - private async handleFirmwareUpdateMetaDataGet( - command: FirmwareUpdateMetaDataCCMetaDataGet, - ): Promise { - const endpoint = this.getEndpoint(command.endpointIndex) ?? this; - - // We are being queried, so the device may actually not support the CC, just control it. - // Using the commandClasses property would throw in that case - const api = endpoint - .createAPI(CommandClasses["Firmware Update Meta Data"], false) - .withOptions({ - // Answer with the same encapsulation as asked, but omit - // Supervision as it shouldn't be used for Get-Report flows - encapsulationFlags: command.encapsulationFlags - & ~EncapsulationFlags.Supervision, - }); - - // We do not support the firmware to be upgraded. - await api.reportMetaData({ - manufacturerId: this.driver.options.vendor?.manufacturerId - ?? 0xffff, - firmwareUpgradable: false, - hardwareVersion: this.driver.options.vendor?.hardwareVersion ?? 0, - }); - } - private recentEntryControlNotificationSequenceNumbers: number[] = []; private handleEntryControlNotification( command: EntryControlCCNotification, @@ -7801,7 +7883,7 @@ ${formatRouteHealthCheckSummary(this.id, otherNode.id, summary)}`, } // That's everything return response; - } catch (e) {} + } catch {} } if ( @@ -7820,7 +7902,7 @@ ${formatRouteHealthCheckSummary(this.id, otherNode.id, summary)}`, } satisfies DateAndTime, ); } - } catch (e) {} + } catch {} } if ( @@ -7839,7 +7921,7 @@ ${formatRouteHealthCheckSummary(this.id, otherNode.id, summary)}`, } satisfies DateAndTime, ); } - } catch (e) {} + } catch {} } if ( @@ -7858,7 +7940,7 @@ ${formatRouteHealthCheckSummary(this.id, otherNode.id, summary)}`, } satisfies DateAndTime, ); } - } catch (e) {} + } catch {} } if ( @@ -7876,7 +7958,7 @@ ${formatRouteHealthCheckSummary(this.id, otherNode.id, summary)}`, } satisfies DateAndTime, ); } - } catch (e) {} + } catch {} } if ( @@ -7896,7 +7978,7 @@ ${formatRouteHealthCheckSummary(this.id, otherNode.id, summary)}`, } satisfies DateAndTime, ); } - } catch (e) {} + } catch {} } return response; diff --git a/packages/zwave-js/src/lib/node/NodeReadyMachine.ts b/packages/zwave-js/src/lib/node/NodeReadyMachine.ts index c1d4e6a781f5..ded9e47896b2 100644 --- a/packages/zwave-js/src/lib/node/NodeReadyMachine.ts +++ b/packages/zwave-js/src/lib/node/NodeReadyMachine.ts @@ -5,15 +5,13 @@ import { assign, } from "xstate"; -/* eslint-disable @typescript-eslint/ban-types */ export interface NodeReadyStateSchema { states: { - notReady: {}; - readyIfNotDead: {}; - ready: {}; + notReady: object; + readyIfNotDead: object; + ready: object; }; } -/* eslint-enable @typescript-eslint/ban-types */ export interface NodeReadyContext { isMaybeDead: boolean; diff --git a/packages/zwave-js/src/lib/node/NodeStatusMachine.ts b/packages/zwave-js/src/lib/node/NodeStatusMachine.ts index 4867b560abb6..9bca75019308 100644 --- a/packages/zwave-js/src/lib/node/NodeStatusMachine.ts +++ b/packages/zwave-js/src/lib/node/NodeStatusMachine.ts @@ -2,19 +2,17 @@ import { type InterpreterFrom, Machine, type StateMachine } from "xstate"; import type { ZWaveNode } from "./Node"; import { NodeStatus } from "./_Types"; -/* eslint-disable @typescript-eslint/ban-types */ export interface NodeStatusStateSchema { states: { - unknown: {}; + unknown: object; // non-sleeping nodes are either dead or alive - dead: {}; - alive: {}; + dead: object; + alive: object; // sleeping nodes are asleep or awake - asleep: {}; - awake: {}; + asleep: object; + awake: object; }; } -/* eslint-enable @typescript-eslint/ban-types */ const statusDict = { unknown: NodeStatus.Unknown, diff --git a/packages/zwave-js/src/lib/node/_Types.ts b/packages/zwave-js/src/lib/node/_Types.ts index 5e3279a8a540..9a996dee8a2b 100644 --- a/packages/zwave-js/src/lib/node/_Types.ts +++ b/packages/zwave-js/src/lib/node/_Types.ts @@ -43,14 +43,10 @@ export type NodeInterviewFailedEventArgs = errorMessage: string; isFinal: boolean; } - & ( - | { - attempt: number; - maxAttempts: number; - } - // eslint-disable-next-line @typescript-eslint/ban-types - | {} - ); + & AllOrNone<{ + attempt: number; + maxAttempts: number; + }>; export type ZWaveNodeValueAddedArgs = ValueAddedArgs & TranslatedValueID; export type ZWaveNodeValueUpdatedArgs = @@ -213,6 +209,7 @@ export interface ZWaveNodeEventCallbacks extends ZWaveNodeValueEventCallbacks { ready: (node: ZWaveNode) => void; "interview stage completed": (node: ZWaveNode, stageName: string) => void; "interview started": (node: ZWaveNode) => void; + "node info received": (node: ZWaveNode) => void; } export type ZWaveNodeEvents = Extract; diff --git a/packages/zwave-js/src/lib/node/mockCCBehaviors/BinarySwitch.ts b/packages/zwave-js/src/lib/node/mockCCBehaviors/BinarySwitch.ts index 412beb3c0d0e..416dc35a2e09 100644 --- a/packages/zwave-js/src/lib/node/mockCCBehaviors/BinarySwitch.ts +++ b/packages/zwave-js/src/lib/node/mockCCBehaviors/BinarySwitch.ts @@ -3,8 +3,19 @@ import { BinarySwitchCCReport, BinarySwitchCCSet, } from "@zwave-js/cc/BinarySwitchCC"; -import { type MaybeUnknown, UNKNOWN_STATE } from "@zwave-js/core"; -import { type MockNodeBehavior } from "@zwave-js/testing"; +import { + CommandClasses, + type MaybeUnknown, + UNKNOWN_STATE, +} from "@zwave-js/core"; +import { + type BinarySwitchCCCapabilities, + type MockNodeBehavior, +} from "@zwave-js/testing"; + +const defaultCapabilities: BinarySwitchCCCapabilities = { + defaultValue: false, +}; const STATE_KEY_PREFIX = "BinarySwitch_"; const StateKeys = { @@ -14,10 +25,20 @@ const StateKeys = { const respondToBinarySwitchGet: MockNodeBehavior = { handleCC(controller, self, receivedCC) { if (receivedCC instanceof BinarySwitchCCGet) { + const capabilities = { + ...defaultCapabilities, + ...self.getCCCapabilities( + CommandClasses["Binary Switch"], + receivedCC.endpointIndex, + ), + }; const cc = new BinarySwitchCCReport(self.host, { nodeId: controller.host.ownNodeId, - currentValue: (self.state.get(StateKeys.currentValue) - ?? UNKNOWN_STATE) as MaybeUnknown, + currentValue: ( + self.state.get(StateKeys.currentValue) + ?? capabilities.defaultValue + ?? UNKNOWN_STATE + ) as MaybeUnknown, }); return { action: "sendCC", cc }; } diff --git a/packages/zwave-js/src/lib/node/mockCCBehaviors/MultilevelSwitch.ts b/packages/zwave-js/src/lib/node/mockCCBehaviors/MultilevelSwitch.ts new file mode 100644 index 000000000000..09bbc13d794a --- /dev/null +++ b/packages/zwave-js/src/lib/node/mockCCBehaviors/MultilevelSwitch.ts @@ -0,0 +1,113 @@ +import { SwitchType } from "@zwave-js/cc"; +import { + MultilevelSwitchCCGet, + MultilevelSwitchCCReport, + MultilevelSwitchCCSet, + MultilevelSwitchCCStartLevelChange, + MultilevelSwitchCCStopLevelChange, + MultilevelSwitchCCSupportedGet, + MultilevelSwitchCCSupportedReport, +} from "@zwave-js/cc/MultilevelSwitchCC"; +import { + CommandClasses, + type MaybeUnknown, + UNKNOWN_STATE, +} from "@zwave-js/core"; +import { + type MockNodeBehavior, + type MultilevelSwitchCCCapabilities, +} from "@zwave-js/testing"; + +const defaultCapabilities: MultilevelSwitchCCCapabilities = { + defaultValue: 0, + primarySwitchType: SwitchType["Down/Up"], +}; + +const STATE_KEY_PREFIX = "MultilevelSwitch_"; +const StateKeys = { + currentValue: `${STATE_KEY_PREFIX}currentValue`, +} as const; + +const respondToMultilevelSwitchGet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof MultilevelSwitchCCGet) { + const capabilities = { + ...defaultCapabilities, + ...self.getCCCapabilities( + CommandClasses["Multilevel Switch"], + receivedCC.endpointIndex, + ), + }; + const currentValue = ( + self.state.get(StateKeys.currentValue) + ?? capabilities.defaultValue + ?? UNKNOWN_STATE + ) as MaybeUnknown; + const cc = new MultilevelSwitchCCReport(self.host, { + nodeId: controller.host.ownNodeId, + currentValue, + // We don't support transitioning yet + targetValue: currentValue, + }); + return { action: "sendCC", cc }; + } + }, +}; + +const respondToMultilevelSwitchSet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof MultilevelSwitchCCSet) { + self.state.set(StateKeys.currentValue, receivedCC.targetValue); + return { action: "ok" }; + } + }, +}; + +const respondToMultilevelSwitchSupportedGet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof MultilevelSwitchCCSupportedGet) { + const capabilities = { + ...defaultCapabilities, + ...self.getCCCapabilities( + CommandClasses["Multilevel Switch"], + receivedCC.endpointIndex, + ), + }; + const cc = new MultilevelSwitchCCSupportedReport(self.host, { + nodeId: controller.host.ownNodeId, + switchType: capabilities.primarySwitchType, + }); + return { action: "sendCC", cc }; + } + }, +}; + +const respondToMultilevelSwitchStartLevelChange: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof MultilevelSwitchCCStartLevelChange) { + // TODO: A proper simulation should gradually transition the value. We just set it to the target value. + self.state.set( + StateKeys.currentValue, + receivedCC.direction === "up" ? 99 : 0, + ); + + return { action: "ok" }; + } + }, +}; + +const respondToMultilevelSwitchStopLevelChange: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof MultilevelSwitchCCStopLevelChange) { + return { action: "ok" }; + } + }, +}; + +export const MultilevelSwitchCCBehaviors = [ + respondToMultilevelSwitchGet, + respondToMultilevelSwitchSet, + respondToMultilevelSwitchSupportedGet, + respondToMultilevelSwitchStartLevelChange, + respondToMultilevelSwitchStopLevelChange, +]; diff --git a/packages/zwave-js/src/lib/node/mockCCBehaviors/SoundSwitch.ts b/packages/zwave-js/src/lib/node/mockCCBehaviors/SoundSwitch.ts index a4956b19ca80..ffca6b9a851e 100644 --- a/packages/zwave-js/src/lib/node/mockCCBehaviors/SoundSwitch.ts +++ b/packages/zwave-js/src/lib/node/mockCCBehaviors/SoundSwitch.ts @@ -4,6 +4,9 @@ import { SoundSwitchCCConfigurationSet, SoundSwitchCCToneInfoGet, SoundSwitchCCToneInfoReport, + SoundSwitchCCTonePlayGet, + SoundSwitchCCTonePlayReport, + SoundSwitchCCTonePlaySet, SoundSwitchCCTonesNumberGet, SoundSwitchCCTonesNumberReport, } from "@zwave-js/cc/SoundSwitchCC"; @@ -11,6 +14,7 @@ import { CommandClasses } from "@zwave-js/core/safe"; import { type MockNodeBehavior, type SoundSwitchCCCapabilities, + createMockZWaveRequestFrame, } from "@zwave-js/testing"; const defaultCapabilities: SoundSwitchCCCapabilities = { @@ -19,10 +23,18 @@ const defaultCapabilities: SoundSwitchCCCapabilities = { tones: [], }; +interface SoundSwitchState { + toneId: number; + volume: number; + timeout: NodeJS.Timeout; +} + const STATE_KEY_PREFIX = "SoundSwitch_"; const StateKeys = { defaultToneId: `${STATE_KEY_PREFIX}defaultToneId`, defaultVolume: `${STATE_KEY_PREFIX}defaultVolume`, + state: `${STATE_KEY_PREFIX}state`, + lastNonZeroVolume: `${STATE_KEY_PREFIX}lastNonZeroVolume`, } as const; const respondToSoundSwitchConfigurationGet: MockNodeBehavior = { @@ -108,9 +120,112 @@ const respondToSoundSwitchToneInfoGet: MockNodeBehavior = { }, }; +const respondToSoundSwitchTonePlaySet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof SoundSwitchCCTonePlaySet) { + const capabilities = { + ...defaultCapabilities, + ...self.getCCCapabilities( + CommandClasses["Sound Switch"], + receivedCC.endpointIndex, + ), + }; + + const currentState = self.state.get( + StateKeys.state, + ) as SoundSwitchState | undefined; + + if (receivedCC.toneId === 0) { + if (currentState) { + clearTimeout(currentState.timeout); + self.state.delete(StateKeys.state); + } + + // TODO: Send unsolicited report if not supervised + + return { action: "ok" }; + } else { + const toneId = receivedCC.toneId === 0xff + ? capabilities.defaultToneId + : receivedCC.toneId; + const tone = capabilities.tones[toneId - 1]; + if (!tone) return { action: "fail" }; + + const volume = (receivedCC.volume === 0 + ? capabilities.defaultVolume + : receivedCC.volume === 0xff + ? self.state.get( + StateKeys.lastNonZeroVolume, + ) as (number | undefined) + : receivedCC.volume) || capabilities.defaultVolume; + + // Stop "playing" the previous tone + if (currentState) { + clearTimeout(currentState.timeout); + self.state.delete(StateKeys.state); + } + + if (volume !== 0) { + self.state.set(StateKeys.lastNonZeroVolume, volume); + } + + const newState: SoundSwitchState = { + toneId, + volume, + timeout: setTimeout(async () => { + self.state.delete(StateKeys.state); + + // Tell the controller that we're done playing + const cc = new SoundSwitchCCTonePlayReport( + self.host, + { + nodeId: controller.host.ownNodeId, + toneId: 0, + volume: 0, + }, + ); + await self.sendToController( + createMockZWaveRequestFrame(cc, { + ackRequested: false, + }), + ); + }, tone.duration * 1000).unref(), + }; + self.state.set(StateKeys.state, newState); + + // TODO: Send unsolicited report if not supervised + return { action: "ok" }; + } + } + }, +}; + +const respondToSoundSwitchTonePlayGet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof SoundSwitchCCTonePlayGet) { + const currentState = self.state.get( + StateKeys.state, + ) as SoundSwitchState | undefined; + + const cc = new SoundSwitchCCTonePlayReport( + self.host, + { + nodeId: controller.host.ownNodeId, + toneId: currentState?.toneId ?? 0, + volume: currentState?.volume ?? 0, + }, + ); + + return { action: "sendCC", cc }; + } + }, +}; + export const SoundSwitchCCBehaviors = [ respondToSoundSwitchConfigurationGet, respondToSoundSwitchConfigurationSet, respondToSoundSwitchToneNumberGet, respondToSoundSwitchToneInfoGet, + respondToSoundSwitchTonePlaySet, + respondToSoundSwitchTonePlayGet, ]; diff --git a/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatMode.ts b/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatMode.ts index afbc3b2635df..3bca22f5e634 100644 --- a/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatMode.ts +++ b/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatMode.ts @@ -47,7 +47,6 @@ const respondToThermostatModeGet: MockNodeBehavior = { const cc = new ThermostatModeCCReport(self.host, { nodeId: controller.host.ownNodeId, - // @ts-expect-error yeah yeah... mode, // @ts-expect-error I know... manufacturerData, diff --git a/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatSetback.ts b/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatSetback.ts new file mode 100644 index 000000000000..6abb57ea0a88 --- /dev/null +++ b/packages/zwave-js/src/lib/node/mockCCBehaviors/ThermostatSetback.ts @@ -0,0 +1,50 @@ +import { type SetbackState, SetbackType } from "@zwave-js/cc"; +import { + ThermostatSetbackCCGet, + ThermostatSetbackCCReport, + ThermostatSetbackCCSet, +} from "@zwave-js/cc/ThermostatSetbackCC"; +import { type MockNodeBehavior } from "@zwave-js/testing"; + +const STATE_KEY_PREFIX = "ThermostatSetback_"; +const StateKeys = { + setbackType: `${STATE_KEY_PREFIX}setbackType`, + setbackState: `${STATE_KEY_PREFIX}setbackState`, +} as const; + +const respondToThermostatSetbackSet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof ThermostatSetbackCCSet) { + self.state.set(StateKeys.setbackType, receivedCC.setbackType); + self.state.set(StateKeys.setbackState, receivedCC.setbackState); + return { action: "ok" }; + } + }, +}; + +const respondToThermostatSetbackGet: MockNodeBehavior = { + handleCC(controller, self, receivedCC) { + if (receivedCC instanceof ThermostatSetbackCCGet) { + const setbackType = ( + self.state.get(StateKeys.setbackType) + ?? SetbackType.None + ) as SetbackType; + const setbackState = ( + self.state.get(StateKeys.setbackState) + ?? "Unused" + ) as SetbackState; + + const cc = new ThermostatSetbackCCReport(self.host, { + nodeId: controller.host.ownNodeId, + setbackType, + setbackState, + }); + return { action: "sendCC", cc }; + } + }, +}; + +export const ThermostatSetbackCCBehaviors = [ + respondToThermostatSetbackGet, + respondToThermostatSetbackSet, +]; diff --git a/packages/zwave-js/src/lib/node/utils.ts b/packages/zwave-js/src/lib/node/utils.ts index 6be088f67d33..fc542fa2e1b6 100644 --- a/packages/zwave-js/src/lib/node/utils.ts +++ b/packages/zwave-js/src/lib/node/utils.ts @@ -15,6 +15,7 @@ import { getCCName, } from "@zwave-js/core"; import type { ZWaveApplicationHost } from "@zwave-js/host"; +import { type Task } from "../driver/Task"; function getValue( applHost: ZWaveApplicationHost, @@ -358,3 +359,8 @@ export function getDefinedValueIDsInternal( // Translate the remaining value IDs before exposing them to applications return ret.map((id) => translateValueID(applHost, node, id)); } + +/** Checks if a task belongs to a route rebuilding process */ +export function isFirmwareUpdateOTATask(t: Task): boolean { + return t.tag?.id === "firmware-update-ota"; +} diff --git a/packages/zwave-js/src/lib/serialapi/network-mgmt/AddNodeToNetworkRequest.ts b/packages/zwave-js/src/lib/serialapi/network-mgmt/AddNodeToNetworkRequest.ts index 945b465b893a..3b8e7045fbb5 100644 --- a/packages/zwave-js/src/lib/serialapi/network-mgmt/AddNodeToNetworkRequest.ts +++ b/packages/zwave-js/src/lib/serialapi/network-mgmt/AddNodeToNetworkRequest.ts @@ -5,7 +5,9 @@ import { MessagePriority, type MessageRecord, NodeType, + type NodeUpdatePayload, Protocols, + encodeNodeUpdatePayload, parseNodeID, parseNodeUpdatePayload, } from "@zwave-js/core"; @@ -17,6 +19,7 @@ import { type MessageBaseOptions, type MessageDeserializationOptions, type MessageOptions, + MessageOrigin, MessageType, expectedCallback, gotDeserializationOptions, @@ -90,12 +93,21 @@ export function computeNeighborDiscoveryTimeout( @priority(MessagePriority.Controller) export class AddNodeToNetworkRequestBase extends Message { public constructor(host: ZWaveHost, options: MessageOptions) { - if ( - gotDeserializationOptions(options) - && (new.target as any) !== AddNodeToNetworkRequestStatusReport - ) { - return new AddNodeToNetworkRequestStatusReport(host, options); + if (gotDeserializationOptions(options)) { + if ( + options.origin === MessageOrigin.Host + && (new.target as any) !== AddNodeToNetworkRequest + ) { + return new AddNodeToNetworkRequest(host, options); + } else if ( + options.origin !== MessageOrigin.Host + && (new.target as any) + !== AddNodeToNetworkRequestStatusReport + ) { + return new AddNodeToNetworkRequestStatusReport(host, options); + } } + super(host, options); } } @@ -131,13 +143,23 @@ function testCallbackForAddNodeRequest( export class AddNodeToNetworkRequest extends AddNodeToNetworkRequestBase { public constructor( host: ZWaveHost, - options: AddNodeToNetworkRequestOptions = {}, + options: + | MessageDeserializationOptions + | AddNodeToNetworkRequestOptions = {}, ) { super(host, options); - this.addNodeType = options.addNodeType; - this.highPower = !!options.highPower; - this.networkWide = !!options.networkWide; + if (gotDeserializationOptions(options)) { + const config = this.payload[0]; + this.highPower = !!(config & AddNodeFlags.HighPower); + this.networkWide = !!(config & AddNodeFlags.NetworkWide); + this.addNodeType = config & 0b1111; + this.callbackId = this.payload[1]; + } else { + this.addNodeType = options.addNodeType; + this.highPower = !!options.highPower; + this.networkWide = !!options.networkWide; + } } /** The type of node to add */ @@ -265,43 +287,70 @@ export class AddNodeDSKToNetworkRequest extends AddNodeToNetworkRequestBase { } } +export type AddNodeToNetworkRequestStatusReportOptions = { + status: + | AddNodeStatus.Ready + | AddNodeStatus.NodeFound + | AddNodeStatus.ProtocolDone + | AddNodeStatus.Failed; +} | { + status: AddNodeStatus.Done; + nodeId: number; +} | { + status: AddNodeStatus.AddingController | AddNodeStatus.AddingSlave; + nodeInfo: NodeUpdatePayload; +}; + export class AddNodeToNetworkRequestStatusReport extends AddNodeToNetworkRequestBase implements SuccessIndicator { public constructor( host: ZWaveHost, - options: MessageDeserializationOptions, + options: + | MessageDeserializationOptions + | (AddNodeToNetworkRequestStatusReportOptions & MessageBaseOptions), ) { super(host, options); - this.callbackId = this.payload[0]; - this.status = this.payload[1]; - switch (this.status) { - case AddNodeStatus.Ready: - case AddNodeStatus.NodeFound: - case AddNodeStatus.ProtocolDone: - case AddNodeStatus.Failed: - // no context for the status to parse - break; - - case AddNodeStatus.Done: { - const { nodeId } = parseNodeID( - this.payload, - host.nodeIdType, - 2, - ); - this.statusContext = { nodeId }; - break; - } - case AddNodeStatus.AddingController: - case AddNodeStatus.AddingSlave: { - // the payload contains a node information frame - this.statusContext = parseNodeUpdatePayload( - this.payload.subarray(2), - host.nodeIdType, - ); - break; + if (gotDeserializationOptions(options)) { + this.callbackId = this.payload[0]; + this.status = this.payload[1]; + switch (this.status) { + case AddNodeStatus.Ready: + case AddNodeStatus.NodeFound: + case AddNodeStatus.ProtocolDone: + case AddNodeStatus.Failed: + // no context for the status to parse + break; + + case AddNodeStatus.Done: { + const { nodeId } = parseNodeID( + this.payload, + host.nodeIdType, + 2, + ); + this.statusContext = { nodeId }; + break; + } + + case AddNodeStatus.AddingController: + case AddNodeStatus.AddingSlave: { + // the payload contains a node information frame + this.statusContext = parseNodeUpdatePayload( + this.payload.subarray(2), + host.nodeIdType, + ); + break; + } + } + } else { + this.callbackId = options.callbackId; + this.status = options.status; + if ("nodeId" in options) { + this.statusContext = { nodeId: options.nodeId }; + } else if ("nodeInfo" in options) { + this.statusContext = options.nodeInfo; } } } @@ -315,6 +364,20 @@ export class AddNodeToNetworkRequestStatusReport public readonly status: AddNodeStatus; public readonly statusContext: AddNodeStatusContext | undefined; + public serialize(): Buffer { + this.payload = Buffer.from([this.callbackId, this.status]); + if (this.statusContext?.basicDeviceClass != undefined) { + this.payload = Buffer.concat([ + this.payload, + encodeNodeUpdatePayload( + this.statusContext as NodeUpdatePayload, + this.host.nodeIdType, + ), + ]); + } + return super.serialize(); + } + public toLogEntry(): MessageOrCCLogEntry { return { ...super.toLogEntry(), diff --git a/packages/zwave-js/src/lib/serialapi/network-mgmt/RemoveNodeFromNetworkRequest.ts b/packages/zwave-js/src/lib/serialapi/network-mgmt/RemoveNodeFromNetworkRequest.ts index d5b06589f785..afab88dc9a64 100644 --- a/packages/zwave-js/src/lib/serialapi/network-mgmt/RemoveNodeFromNetworkRequest.ts +++ b/packages/zwave-js/src/lib/serialapi/network-mgmt/RemoveNodeFromNetworkRequest.ts @@ -1,6 +1,7 @@ import { type CommandClasses, MessagePriority, + encodeNodeID, parseNodeID, } from "@zwave-js/core"; import type { ZWaveHost } from "@zwave-js/host"; @@ -11,6 +12,7 @@ import { type MessageBaseOptions, type MessageDeserializationOptions, type MessageOptions, + MessageOrigin, MessageType, expectedCallback, gotDeserializationOptions, @@ -52,12 +54,24 @@ interface RemoveNodeFromNetworkRequestOptions extends MessageBaseOptions { @priority(MessagePriority.Controller) export class RemoveNodeFromNetworkRequestBase extends Message { public constructor(host: ZWaveHost, options: MessageOptions) { - if ( - gotDeserializationOptions(options) - && (new.target as any) !== RemoveNodeFromNetworkRequestStatusReport - ) { - return new RemoveNodeFromNetworkRequestStatusReport(host, options); + if (gotDeserializationOptions(options)) { + if ( + options.origin === MessageOrigin.Host + && (new.target as any) !== RemoveNodeFromNetworkRequest + ) { + return new RemoveNodeFromNetworkRequest(host, options); + } else if ( + options.origin !== MessageOrigin.Host + && (new.target as any) + !== RemoveNodeFromNetworkRequestStatusReport + ) { + return new RemoveNodeFromNetworkRequestStatusReport( + host, + options, + ); + } } + super(host, options); } } @@ -95,13 +109,23 @@ export class RemoveNodeFromNetworkRequest { public constructor( host: ZWaveHost, - options: RemoveNodeFromNetworkRequestOptions = {}, + options: + | MessageDeserializationOptions + | RemoveNodeFromNetworkRequestOptions = {}, ) { super(host, options); - this.removeNodeType = options.removeNodeType; - this.highPower = !!options.highPower; - this.networkWide = !!options.networkWide; + if (gotDeserializationOptions(options)) { + const config = this.payload[0]; + this.highPower = !!(config & RemoveNodeFlags.HighPower); + this.networkWide = !!(config & RemoveNodeFlags.NetworkWide); + this.removeNodeType = config & 0b11111; + this.callbackId = this.payload[1]; + } else { + this.removeNodeType = options.removeNodeType; + this.highPower = !!options.highPower; + this.networkWide = !!options.networkWide; + } } /** The type of node to remove */ @@ -122,38 +146,65 @@ export class RemoveNodeFromNetworkRequest } } +export type RemoveNodeFromNetworkRequestStatusReportOptions = { + status: + | RemoveNodeStatus.Ready + | RemoveNodeStatus.NodeFound + | RemoveNodeStatus.Failed + | RemoveNodeStatus.Done; +} | { + status: + | RemoveNodeStatus.RemovingController + | RemoveNodeStatus.RemovingSlave; + nodeId: number; +}; + export class RemoveNodeFromNetworkRequestStatusReport extends RemoveNodeFromNetworkRequestBase implements SuccessIndicator { public constructor( host: ZWaveHost, - options: MessageDeserializationOptions, + options: + | MessageDeserializationOptions + | ( + & RemoveNodeFromNetworkRequestStatusReportOptions + & MessageBaseOptions + ), ) { super(host, options); - this.callbackId = this.payload[0]; - this.status = this.payload[1]; - switch (this.status) { - case RemoveNodeStatus.Ready: - case RemoveNodeStatus.NodeFound: - case RemoveNodeStatus.Failed: - case RemoveNodeStatus.Done: - // no context for the status to parse - // TODO: - // An application MUST time out waiting for the REMOVE_NODE_STATUS_REMOVING_SLAVE status - // if it does not receive the indication within a 14 sec after receiving the - // REMOVE_NODE_STATUS_NODE_FOUND status. - break; - - case RemoveNodeStatus.RemovingController: - case RemoveNodeStatus.RemovingSlave: { - // the payload contains the node ID - const { nodeId } = parseNodeID( - this.payload.subarray(2), - this.host.nodeIdType, - ); - this.statusContext = { nodeId }; - break; + + if (gotDeserializationOptions(options)) { + this.callbackId = this.payload[0]; + this.status = this.payload[1]; + switch (this.status) { + case RemoveNodeStatus.Ready: + case RemoveNodeStatus.NodeFound: + case RemoveNodeStatus.Failed: + case RemoveNodeStatus.Done: + // no context for the status to parse + // TODO: + // An application MUST time out waiting for the REMOVE_NODE_STATUS_REMOVING_SLAVE status + // if it does not receive the indication within a 14 sec after receiving the + // REMOVE_NODE_STATUS_NODE_FOUND status. + break; + + case RemoveNodeStatus.RemovingController: + case RemoveNodeStatus.RemovingSlave: { + // the payload contains the node ID + const { nodeId } = parseNodeID( + this.payload.subarray(2), + this.host.nodeIdType, + ); + this.statusContext = { nodeId }; + break; + } + } + } else { + this.callbackId = options.callbackId; + this.status = options.status; + if ("nodeId" in options) { + this.statusContext = { nodeId: options.nodeId }; } } } @@ -164,6 +215,18 @@ export class RemoveNodeFromNetworkRequestStatusReport return this.status !== RemoveNodeStatus.Failed; } + public serialize(): Buffer { + this.payload = Buffer.from([this.callbackId, this.status]); + if (this.statusContext?.nodeId != undefined) { + this.payload = Buffer.concat([ + this.payload, + encodeNodeID(this.statusContext.nodeId, this.host.nodeIdType), + ]); + } + + return super.serialize(); + } + public readonly status: RemoveNodeStatus; public readonly statusContext: RemoveNodeStatusContext | undefined; } diff --git a/packages/zwave-js/src/lib/test/driver/multicastOptimisticValueUpdate.test.ts b/packages/zwave-js/src/lib/test/driver/multicastOptimisticValueUpdate.test.ts index d69cc4abffaa..eee056f29c39 100644 --- a/packages/zwave-js/src/lib/test/driver/multicastOptimisticValueUpdate.test.ts +++ b/packages/zwave-js/src/lib/test/driver/multicastOptimisticValueUpdate.test.ts @@ -1,6 +1,6 @@ import { BinarySwitchCCSet, BinarySwitchCCValues } from "@zwave-js/cc"; import { CommandClasses, NOT_KNOWN, UNKNOWN_STATE } from "@zwave-js/core"; -import { MockZWaveFrameType } from "@zwave-js/testing"; +import { MockZWaveFrameType, ccCaps } from "@zwave-js/testing"; import { wait } from "alcalzone-shared/async"; import { integrationTest } from "../integrationTestSuiteMulti"; @@ -17,13 +17,25 @@ integrationTest("multicast setValue: do optimistic value update after ACK", { { id: 2, capabilities: { - commandClasses: [CommandClasses["Binary Switch"]], + commandClasses: [ + ccCaps({ + ccId: CommandClasses["Binary Switch"], + isSupported: true, + defaultValue: NOT_KNOWN, + }), + ], }, }, { id: 3, capabilities: { - commandClasses: [CommandClasses["Binary Switch"]], + commandClasses: [ + ccCaps({ + ccId: CommandClasses["Binary Switch"], + isSupported: true, + defaultValue: NOT_KNOWN, + }), + ], }, }, ], diff --git a/packages/zwave-js/src/lib/test/driver/setValueSupervisionWorking.test.ts b/packages/zwave-js/src/lib/test/driver/setValueSupervisionWorking.test.ts index 43a916321b24..927a6d01ced7 100644 --- a/packages/zwave-js/src/lib/test/driver/setValueSupervisionWorking.test.ts +++ b/packages/zwave-js/src/lib/test/driver/setValueSupervisionWorking.test.ts @@ -3,9 +3,15 @@ import { SupervisionCCGet, SupervisionCCReport, } from "@zwave-js/cc"; -import { CommandClasses, Duration, SupervisionStatus } from "@zwave-js/core"; +import { + CommandClasses, + Duration, + SupervisionStatus, + UNKNOWN_STATE, +} from "@zwave-js/core"; import { type MockNodeBehavior, + ccCaps, createMockZWaveRequestFrame, } from "@zwave-js/testing"; import { wait } from "alcalzone-shared/async"; @@ -22,7 +28,12 @@ integrationTest( nodeCapabilities: { commandClasses: [ - CommandClasses["Multilevel Switch"], + ccCaps({ + ccId: CommandClasses["Multilevel Switch"], + isSupported: true, + version: 4, + defaultValue: UNKNOWN_STATE, + }), CommandClasses.Supervision, ], }, @@ -65,22 +76,23 @@ integrationTest( }; mockNode.defineBehavior(respondToSupervisionGet); }, + testBody: async (t, driver, node, _mockController, _mockNode) => { const targetValueId = MultilevelSwitchCCValues.targetValue.id; const currentValueId = MultilevelSwitchCCValues.currentValue.id; - t.is(node.getValue(targetValueId), undefined); - t.is(node.getValue(currentValueId), undefined); + t.is(node.getValue(targetValueId), UNKNOWN_STATE); + t.is(node.getValue(currentValueId), UNKNOWN_STATE); await node.setValue(targetValueId, 55); t.is(node.getValue(targetValueId), 55); - t.is(node.getValue(currentValueId), undefined); + t.is(node.getValue(currentValueId), UNKNOWN_STATE); // Unchanged after 0.5s await wait(500); t.is(node.getValue(targetValueId), 55); - t.is(node.getValue(currentValueId), undefined); + t.is(node.getValue(currentValueId), UNKNOWN_STATE); // Updated after 2.5s await wait(2000); diff --git a/packages/zwave-js/src/lib/test/driver/unknownValues.test.ts b/packages/zwave-js/src/lib/test/driver/unknownValues.test.ts index 2709f85dcc79..4273ae3c9483 100644 --- a/packages/zwave-js/src/lib/test/driver/unknownValues.test.ts +++ b/packages/zwave-js/src/lib/test/driver/unknownValues.test.ts @@ -15,6 +15,7 @@ import { } from "@zwave-js/core"; import { type MockNodeBehavior, + ccCaps, createMockZWaveRequestFrame, } from "@zwave-js/testing"; import { wait } from "alcalzone-shared/async"; @@ -95,7 +96,12 @@ integrationTest( // ), nodeCapabilities: { - commandClasses: [CommandClasses["Multilevel Switch"]], + commandClasses: [ccCaps({ + ccId: CommandClasses["Multilevel Switch"], + isSupported: true, + version: 4, + defaultValue: UNKNOWN_STATE, + })], }, testBody: async (t, driver, node, mockController, mockNode) => { @@ -103,8 +109,8 @@ integrationTest( const currentValueId = MultilevelSwitchCCValues.currentValue.id; // At the start, values are not known yet - t.is(node.getValue(targetValueId), NOT_KNOWN); - t.is(node.getValue(currentValueId), NOT_KNOWN); + t.is(node.getValue(targetValueId), UNKNOWN_STATE); + t.is(node.getValue(currentValueId), UNKNOWN_STATE); // Send an initial state let cc = new MultilevelSwitchCCReport(mockNode.host, { @@ -155,7 +161,13 @@ integrationTest( // ), nodeCapabilities: { - commandClasses: [CommandClasses["Binary Switch"]], + commandClasses: [ + ccCaps({ + ccId: CommandClasses["Binary Switch"], + isSupported: true, + defaultValue: NOT_KNOWN, + }), + ], }, additionalDriverOptions: { diff --git a/packages/zwave-js/src/lib/test/node/Node.interviewOrder.test.ts b/packages/zwave-js/src/lib/test/node/Node.interviewOrder.test.ts index 1b8984d1bf28..046495c42fd8 100644 --- a/packages/zwave-js/src/lib/test/node/Node.interviewOrder.test.ts +++ b/packages/zwave-js/src/lib/test/node/Node.interviewOrder.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ import { getCCConstructor } from "@zwave-js/cc"; import { CommandClasses, diff --git a/packages/zwave-js/src/lib/zniffer/CCParsingContext.ts b/packages/zwave-js/src/lib/zniffer/CCParsingContext.ts index e74e529c91b3..0e9cd65853bf 100644 --- a/packages/zwave-js/src/lib/zniffer/CCParsingContext.ts +++ b/packages/zwave-js/src/lib/zniffer/CCParsingContext.ts @@ -22,7 +22,7 @@ export class ZnifferCCParsingContext implements ZWaveHost { getSafeCCVersion( cc: CommandClasses, nodeId: number, - endpointIndex?: number | undefined, + endpointIndex?: number, ): number { // We don't know any versions of the node. Try parsing with the highest version we support return getImplementedVersion(cc); @@ -31,7 +31,7 @@ export class ZnifferCCParsingContext implements ZWaveHost { getSupportedCCVersion( cc: CommandClasses, nodeId: number, - endpointIndex?: number | undefined, + endpointIndex?: number, ): number { // We don't know any versions of the node. Try parsing with the highest version we support return getImplementedVersion(cc); @@ -40,7 +40,7 @@ export class ZnifferCCParsingContext implements ZWaveHost { isCCSecure( cc: CommandClasses, nodeId: number, - endpointIndex?: number | undefined, + endpointIndex?: number, ): boolean { // Don't care when parsing return false; diff --git a/packages/zwave-js/src/lib/zniffer/MPDU.ts b/packages/zwave-js/src/lib/zniffer/MPDU.ts index 931318453830..29f36d7c07d6 100644 --- a/packages/zwave-js/src/lib/zniffer/MPDU.ts +++ b/packages/zwave-js/src/lib/zniffer/MPDU.ts @@ -128,7 +128,7 @@ export function parseMPDU( case 3: return LongRangeMPDU.from(frame); default: - throw validatePayload.fail( + validatePayload.fail( `Unsupported channel ${frame.channel}. MPDU payload: ${ buffer2hex(frame.payload) }`, @@ -142,7 +142,7 @@ export class LongRangeMPDU implements MPDU { this.frameInfo = options.frameInfo; if (options.frameInfo.channel !== 3) { - throw validatePayload.fail( + validatePayload.fail( `Unsupported channel ${options.frameInfo.channel} for LongRangeMPDU`, ); } @@ -179,7 +179,7 @@ export class LongRangeMPDU implements MPDU { ? SinglecastLongRangeMPDU : undefined; if (!Constructor) { - throw validatePayload.fail( + validatePayload.fail( `Unsupported Long Range MPDU header type ${this.headerType}`, ); } else if ( @@ -330,12 +330,12 @@ export class ZWaveMPDU implements MPDU { break; } case 3: { - throw validatePayload.fail( + validatePayload.fail( `Channel 3 (ZWLR) must be parsed as a LongRangeMPDU!`, ); } default: { - throw validatePayload.fail( + validatePayload.fail( `Unsupported channel ${options.frameInfo.channel}. MPDU payload: ${ buffer2hex(data) }`, @@ -357,7 +357,7 @@ export class ZWaveMPDU implements MPDU { ? ExplorerZWaveMPDU : undefined; if (!Constructor) { - throw validatePayload.fail( + validatePayload.fail( `Unsupported MPDU header type ${this.headerType}`, ); } else if ( @@ -645,7 +645,7 @@ export class ExplorerZWaveMPDU extends ZWaveMPDU { : undefined; if (!Constructor) { - throw validatePayload.fail( + validatePayload.fail( `Unsupported Explorer MPDU command ${this.command}`, ); } else if ( @@ -813,7 +813,7 @@ export function parseBeamFrame( }); } default: - throw validatePayload.fail( + validatePayload.fail( // eslint-disable-next-line @typescript-eslint/restrict-template-expressions `Unsupported channel configuration ${channelConfig}. MPDU payload: ${ buffer2hex(frame.payload) @@ -834,12 +834,12 @@ export class ZWaveBeamStart { // OK break; case "4": { - throw validatePayload.fail( + validatePayload.fail( `Channel configuration 4 (ZWLR) must be parsed as a LongRangeMPDU!`, ); } default: { - throw validatePayload.fail( + validatePayload.fail( // eslint-disable-next-line @typescript-eslint/restrict-template-expressions `Unsupported channel configuration ${channelConfig}. MPDU payload: ${ buffer2hex(data) @@ -891,12 +891,12 @@ export class LongRangeBeamStart { // OK break; case "4": { - throw validatePayload.fail( + validatePayload.fail( `Channel configuration 4 (ZWLR) must be parsed as a LongRangeMPDU!`, ); } default: { - throw validatePayload.fail( + validatePayload.fail( // eslint-disable-next-line @typescript-eslint/restrict-template-expressions `Unsupported channel configuration ${channelConfig}. MPDU payload: ${ buffer2hex(data) diff --git a/packages/zwave-js/src/lib/zniffer/Zniffer.ts b/packages/zwave-js/src/lib/zniffer/Zniffer.ts index 1bc815f01413..0447d8b11587 100644 --- a/packages/zwave-js/src/lib/zniffer/Zniffer.ts +++ b/packages/zwave-js/src/lib/zniffer/Zniffer.ts @@ -871,21 +871,45 @@ supported frequencies: ${ this._capturedFrames = []; } - /** Get the captured frames in the official Zniffer application format. */ - public getCaptureAsZLFBuffer(): Buffer { + /** + * Get the captured frames in the official Zniffer application format. + * @param frameFilter Optional predicate function to filter the frames included in the capture + */ + public getCaptureAsZLFBuffer( + frameFilter?: (frame: CapturedFrame) => boolean, + ): Buffer { // Mimics the current Zniffer software, without using features like sessions and comments const header = Buffer.alloc(2048, 0); header[0] = 0x68; // zniffer version header.writeUInt16BE(0x2312, 0x07fe); // checksum + let filteredFrames = this._capturedFrames; + if (frameFilter) { + filteredFrames = filteredFrames.filter((f) => + // Always include Zniffer-protocol frames + f.parsedFrame == undefined + // Apply the filter to all other frames + || frameFilter({ + frameData: f.frameData, + parsedFrame: f.parsedFrame, + timestamp: f.timestamp, + }) + ); + } return Buffer.concat([ header, - ...this._capturedFrames.map(captureToZLFEntry), + ...filteredFrames.map(captureToZLFEntry), ]); } - /** Saves the captured frames in a `.zlf` file that can be read by the official Zniffer application. */ - public async saveCaptureToFile(filePath: string): Promise { - await fs.writeFile(filePath, this.getCaptureAsZLFBuffer()); + /** + * Saves the captured frames in a `.zlf` file that can be read by the official Zniffer application. + * @param frameFilter Optional predicate function to filter the frames included in the capture + */ + public async saveCaptureToFile( + filePath: string, + frameFilter?: (frame: CapturedFrame) => boolean, + ): Promise { + await fs.writeFile(filePath, this.getCaptureAsZLFBuffer(frameFilter)); } /** diff --git a/packages/zwave-js/src/mockServer.ts b/packages/zwave-js/src/mockServer.ts index 780e1be648c6..91f238493ea5 100644 --- a/packages/zwave-js/src/mockServer.ts +++ b/packages/zwave-js/src/mockServer.ts @@ -4,11 +4,19 @@ import { type Responder as MdnsResponder, getResponder as getMdnsResponder, } from "@homebridge/ciao"; -import { NotificationCCValues } from "@zwave-js/cc"; +import { + BinarySwitchCCValues, + MultilevelSwitchCCValues, + NotificationCCValues, + SoundSwitchCCValues, + SwitchType, +} from "@zwave-js/cc"; import { CommandClasses, type ConfigurationMetadata, type ValueID, + type ValueMetadata, + type ValueMetadataNumeric, } from "@zwave-js/core"; import type { ZWaveSerialPort } from "@zwave-js/serial"; import { @@ -17,6 +25,7 @@ import { } from "@zwave-js/serial/mock"; import { getErrorMessage } from "@zwave-js/shared"; import { + type BinarySwitchCCCapabilities, type ConfigurationCCCapabilities, MockController, type MockControllerBehavior, @@ -24,8 +33,10 @@ import { MockNode, type MockNodeBehavior, type MockNodeOptions, + type MultilevelSwitchCCCapabilities, type NotificationCCCapabilities, type PartialCCCapabilities, + type SoundSwitchCCCapabilities, getDefaultMockEndpointCapabilities, getDefaultMockNodeCapabilities, } from "@zwave-js/testing"; @@ -294,6 +305,14 @@ export function createMockNodeOptionsFromDump( ) { continue; } + // FIXME: Supervision encapsulation is not supported yet in mocks + if (ccId === CommandClasses.Supervision) { + continue; + } + // FIXME: Transport Service encapsulation is not supported yet in mocks + if (ccId === CommandClasses["Transport Service"]) { + continue; + } ret.capabilities.commandClasses ??= []; ret.capabilities.commandClasses.push( @@ -368,6 +387,12 @@ function createCCCapabilitiesFromDump( Object.assign(ret, createConfigurationCCCapabilitiesFromDump(dump)); } else if (ccId === CommandClasses.Notification) { Object.assign(ret, createNotificationCCCapabilitiesFromDump(dump)); + } else if (ccId === CommandClasses["Binary Switch"]) { + Object.assign(ret, createBinarySwitchCCCapabilitiesFromDump(dump)); + } else if (ccId === CommandClasses["Multilevel Switch"]) { + Object.assign(ret, createMultilevelSwitchCCCapabilitiesFromDump(dump)); + } else if (ccId === CommandClasses["Sound Switch"]) { + Object.assign(ret, createSoundSwitchCCCapabilitiesFromDump(dump)); } return ret; @@ -439,14 +464,120 @@ function createNotificationCCCapabilitiesFromDump( return ret; } +function createBinarySwitchCCCapabilitiesFromDump( + dump: CommandClassDump, +): BinarySwitchCCCapabilities { + const defaultValue = findDumpedValue( + dump, + CommandClasses["Binary Switch"], + BinarySwitchCCValues.currentValue.id, + undefined, + ); + return { + defaultValue, + }; +} + +function createMultilevelSwitchCCCapabilitiesFromDump( + dump: CommandClassDump, +): MultilevelSwitchCCCapabilities { + const defaultValue = findDumpedValue( + dump, + CommandClasses["Multilevel Switch"], + MultilevelSwitchCCValues.currentValue.id, + undefined, + ); + + const switchType = findDumpedValue( + dump, + CommandClasses["Multilevel Switch"], + MultilevelSwitchCCValues.switchType.id, + SwitchType["Down/Up"], + ); + + return { + defaultValue, + primarySwitchType: switchType, + }; +} + +function createSoundSwitchCCCapabilitiesFromDump( + dump: CommandClassDump, +): SoundSwitchCCCapabilities { + const defaultToneId = findDumpedValue( + dump, + CommandClasses["Sound Switch"], + SoundSwitchCCValues.defaultToneId.id, + 1, + ); + const defaultVolume = findDumpedValue( + dump, + CommandClasses["Sound Switch"], + SoundSwitchCCValues.defaultVolume.id, + 50, + ); + + const ret: SoundSwitchCCCapabilities = { + defaultToneId, + defaultVolume, + tones: [], + }; + + const tonesMetadata = findDumpedMetadata( + dump, + CommandClasses["Sound Switch"], + SoundSwitchCCValues.toneId.id, + ); + + if (tonesMetadata?.states) { + for ( + const [toneIdStr, nameAndDuration] of Object.entries( + tonesMetadata.states, + ) + ) { + const toneId = parseInt(toneIdStr); + if (Number.isNaN(toneId) || toneId < 1 || toneId > 0xfe) continue; + + const durationIndex = nameAndDuration.lastIndexOf("("); + if (durationIndex === -1) continue; + + const name = nameAndDuration.slice(0, durationIndex).trim(); + const duration = parseInt( + nameAndDuration.slice(durationIndex + 1, -1), + 10, + ); + if (Number.isNaN(duration)) continue; + + ret.tones.push({ name, duration }); + } + } + + return ret; +} + function findDumpedValue( dump: CommandClassDump, commandClass: CommandClasses, valueId: ValueID, defaultValue: T, ): T { - return (dump.values.find((id) => - id.property === valueId.property - && id.propertyKey === valueId.propertyKey - )?.value) as (T | undefined) ?? defaultValue; + return ( + dump.values.find((id) => + id.property === valueId.property + && id.propertyKey === valueId.propertyKey + )?.value + ) as (T | undefined) ?? defaultValue; +} + +function findDumpedMetadata( + dump: CommandClassDump, + commandClass: CommandClasses, + valueId: ValueID, +): T | undefined { + return ( + dump.values.find((id) => + id.property === valueId.property + && id.propertyKey === valueId.propertyKey + )?.metadata as (T | undefined) + ); } diff --git a/packages/zwave-js/zwave-js.api.md b/packages/zwave-js/zwave-js.api.md index a955ef38b3f8..38873268dfd7 100644 --- a/packages/zwave-js/zwave-js.api.md +++ b/packages/zwave-js/zwave-js.api.md @@ -25,9 +25,11 @@ import type { CommandClassInfo as CommandClassInfo_2 } from '@zwave-js/core/safe import { Comparable } from 'alcalzone-shared/comparable'; import { CompareResult } from 'alcalzone-shared/comparable'; import { ConfigManager } from '@zwave-js/config'; +import { ControllerCapabilities } from '@zwave-js/core'; import { ControllerLogContext } from '@zwave-js/core'; import { ControllerLogger } from '@zwave-js/core'; import { ControllerNodeLogContext } from '@zwave-js/core'; +import { ControllerRole } from '@zwave-js/core'; import { ControllerSelfLogContext } from '@zwave-js/core'; import { ControllerStatus } from '@zwave-js/core/safe'; import { ControllerStatus as ControllerStatus_2 } from '@zwave-js/core'; @@ -52,6 +54,7 @@ import type { FileSystem as FileSystem_2 } from '@zwave-js/host'; import { Firmware } from '@zwave-js/core'; import { FirmwareFileFormat } from '@zwave-js/core'; import { FirmwareUpdateCapabilities } from '@zwave-js/cc'; +import { FirmwareUpdateOptions } from '@zwave-js/cc'; import type { FirmwareUpdateProgress } from '@zwave-js/cc/safe'; import type { FirmwareUpdateResult } from '@zwave-js/cc/safe'; import { FirmwareUpdateResult as FirmwareUpdateResult_2 } from '@zwave-js/cc'; @@ -109,6 +112,7 @@ import { NodeType as NodeType_2 } from '@zwave-js/core'; import { NodeUpdatePayload } from '@zwave-js/core'; import type { NotificationCCReport } from '@zwave-js/cc/NotificationCC'; import { num2hex } from '@zwave-js/shared/safe'; +import { NVMAdapter } from '@zwave-js/nvmedit'; import { parseQRCodeString } from '@zwave-js/core'; import { Powerlevel } from '@zwave-js/cc/safe'; import { Powerlevel as Powerlevel_2 } from '@zwave-js/cc'; @@ -129,6 +133,7 @@ import { ResponsePredicate } from '@zwave-js/serial'; import { ResponseRole } from '@zwave-js/serial'; import { RFRegion } from '@zwave-js/core/safe'; import { RFRegion as RFRegion_2 } from '@zwave-js/core'; +import { RFRegionInfo } from '@zwave-js/core'; import { Route } from '@zwave-js/core'; import { RouteKind } from '@zwave-js/core'; import { RouteProtocolDataRate } from '@zwave-js/core'; @@ -146,6 +151,7 @@ import { SendCommandOptions } from '@zwave-js/core'; import { SendCommandReturnType } from '@zwave-js/core'; import { SendMessageOptions } from '@zwave-js/core'; import { Sensor } from '@zwave-js/core/safe'; +import { SerialApiInitData } from '@zwave-js/core'; import type { SerializedValue } from '@zwave-js/core/safe'; import type { SerialPort } from 'serialport'; import { SetbackState } from '@zwave-js/cc'; @@ -389,7 +395,7 @@ export class Driver extends TypedEventEmitter implements Z checkForConfigUpdates(silent?: boolean): Promise; // Warning: (ae-forgotten-export) The symbol "SendDataRequest" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "SendDataBridgeRequest" needs to be exported by the entry point index.d.ts - computeNetCCPayloadSize(commandOrMsg: CommandClass | SendDataRequest | SendDataBridgeRequest): number; + computeNetCCPayloadSize(commandOrMsg: CommandClass | SendDataRequest | SendDataBridgeRequest, ignoreEncapsulation?: boolean): number; // (undocumented) readonly configManager: ConfigManager; // (undocumented) @@ -472,6 +478,10 @@ export class Driver extends TypedEventEmitter implements Z resetSPAN(nodeId: number): void; restoreNetworkStructureFromCache(): Promise; schedulePoll(nodeId: number, valueId: ValueID_2, options: NodeSchedulePollOptions): boolean; + // Warning: (ae-forgotten-export) The symbol "TaskScheduler" needs to be exported by the entry point index.d.ts + // + // (undocumented) + get scheduler(): TaskScheduler; get securityManager(): SecurityManager | undefined; get securityManager2(): SecurityManager2 | undefined; get securityManagerLR(): SecurityManager2 | undefined; @@ -550,6 +560,11 @@ export const driverPresets: Readonly<{ readonly unresponsiveControllerRecovery: false; }; }; + readonly NO_WATCHDOG: { + readonly features: { + readonly watchdog: false; + }; + }; readonly BATTERY_SAVE: { readonly timeouts: { readonly sendToSleep: 100; @@ -569,7 +584,7 @@ export { DurationUnit } // Warning: (ae-missing-release-tag) "EditableZWaveOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type EditableZWaveOptions = Expand & { +export type EditableZWaveOptions = Expand & { userAgent?: Record; }>; @@ -827,6 +842,51 @@ export { InterviewStage } export { isRssiError } +// Warning: (ae-missing-release-tag) "JoinNetworkOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type JoinNetworkOptions = { + strategy: JoinNetworkStrategy.Default; + userCallbacks?: JoinNetworkUserCallbacks; +}; + +// Warning: (ae-missing-release-tag) "JoinNetworkResult" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum JoinNetworkResult { + Error_Busy = 1, + Error_Failed = 3, + Error_NotPermitted = 2, + OK = 0 +} + +// Warning: (ae-missing-release-tag) "JoinNetworkStrategy" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum JoinNetworkStrategy { + // (undocumented) + Default = 0 +} + +// Warning: (ae-missing-release-tag) "JoinNetworkUserCallbacks" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface JoinNetworkUserCallbacks { + done(): void; + // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen + showDSK(dsk: string): void; +} + +// Warning: (ae-missing-release-tag) "LeaveNetworkResult" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum LeaveNetworkResult { + Error_Busy = 1, + Error_Failed = 3, + Error_NotPermitted = 2, + OK = 0 +} + // Warning: (ae-missing-release-tag) "libName" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1123,10 +1183,10 @@ export interface NodeDump { export type NodeInterviewFailedEventArgs = { errorMessage: string; isFinal: boolean; -} & ({ +} & AllOrNone<{ attempt: number; maxAttempts: number; -} | {}); +}>; // Warning: (ae-missing-release-tag) "NodeStatistics" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -1160,8 +1220,9 @@ export { parseQRCodeString } // Warning: (ae-missing-release-tag) "PartialZWaveOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type PartialZWaveOptions = Expand> & Partial> & { +export type PartialZWaveOptions = Expand> & Partial> & { inclusionUserCallbacks?: ZWaveOptions["inclusionUserCallbacks"]; + joinNetworkUserCallbacks?: ZWaveOptions["joinNetworkUserCallbacks"]; logConfig?: Partial; }>; @@ -1343,10 +1404,14 @@ export enum SerialAPISetupCommand { // (undocumented) GetPowerlevel16Bit = 19, // (undocumented) + GetRegionInfo = 22, + // (undocumented) GetRFRegion = 32, // (undocumented) GetSupportedCommands = 1, // (undocumented) + GetSupportedRegions = 21, + // (undocumented) SetLongRangeMaximumTxPower = 3, // (undocumented) SetNodeIDType = 128, @@ -1523,6 +1588,10 @@ export class ZWaveController extends TypedEventEmitter beginExclusion(options?: ExclusionOptions): Promise; // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen beginInclusion(options?: InclusionOptions): Promise; + // (undocumented) + beginJoiningNetwork(options?: JoinNetworkOptions): Promise; + // (undocumented) + beginLeavingNetwork(): Promise; beginRebuildingRoutes(options?: RebuildRoutesOptions): boolean; // (undocumented) cancelSecureBootstrapS2(reason: KEXFailType): void; @@ -1532,22 +1601,43 @@ export class ZWaveController extends TypedEventEmitter deleteSUCReturnRoutes(nodeId: number): Promise; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "getNodeNeighbors" discoverNodeNeighbors(nodeId: number): Promise; + get dsk(): Buffer; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMCloseExt" externalNVMClose(): Promise; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMClose" + externalNVMCloseExt(): Promise; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMOpenExt" externalNVMOpen(): Promise; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMOpen" + externalNVMOpenExt(): Promise<{ + size: number; + supportedOperations: ExtendedNVMOperationsCommand[]; + }>; externalNVMReadBuffer(offset: number, length: number): Promise; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMReadBufferExt" externalNVMReadBuffer700(offset: number, length: number): Promise<{ buffer: Buffer; endOfFile: boolean; }>; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMReadBuffer700" + externalNVMReadBufferExt(offset: number, length: number): Promise<{ + buffer: Buffer; + endOfFile: boolean; + }>; externalNVMReadByte(offset: number): Promise; externalNVMWriteBuffer(offset: number, buffer: Buffer): Promise; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMWriteBufferExt" externalNVMWriteBuffer700(offset: number, buffer: Buffer): Promise<{ endOfFile: boolean; }>; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "externalNVMWriteBuffer700" + externalNVMWriteBufferExt(offset: number, buffer: Buffer): Promise<{ + endOfFile: boolean; + }>; externalNVMWriteByte(offset: number, data: number): Promise; // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "getAvailableFirmwareUpdates" - firmwareUpdateOTA(nodeId: number, updateInfo: FirmwareUpdateInfo): Promise; + firmwareUpdateOTA(nodeId: number, updateInfo: FirmwareUpdateInfo, options?: FirmwareUpdateOptions): Promise; firmwareUpdateOTW(data: Buffer): Promise; // (undocumented) get firmwareVersion(): MaybeNotKnown; @@ -1564,6 +1654,7 @@ export class ZWaveController extends TypedEventEmitter }>; getBroadcastNode(): VirtualNode; getBroadcastNodeLR(): VirtualNode; + getControllerCapabilities(): Promise; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "assignCustomReturnRoutes" getCustomReturnRoutesCached(nodeId: number, destinationNodeId: number): Route[]; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "assignCustomSUCReturnRoutes" @@ -1593,6 +1684,7 @@ export class ZWaveController extends TypedEventEmitter getProvisioningEntries(): SmartStartProvisioningEntry[]; getProvisioningEntry(dskOrNodeId: string | number): Readonly | undefined; getRFRegion(): Promise; + getSerialApiInitData(): Promise; // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen getSupportedRFRegions(filterSubsets?: boolean): MaybeNotKnown; hasPlannedProvisioningEntries(): boolean; @@ -1604,7 +1696,10 @@ export class ZWaveController extends TypedEventEmitter isFailedNode(nodeId: number): Promise; isFirmwareUpdateInProgress(): boolean; isFunctionSupported(functionType: FunctionType): MaybeNotKnown; - // (undocumented) + get isLearnModePermitted(): boolean; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "role" + // + // @deprecated (undocumented) get isPrimary(): MaybeNotKnown; get isRebuildingRoutes(): boolean; isSerialAPISetupCommandSupported(command: SerialAPISetupCommand): MaybeNotKnown; @@ -1614,7 +1709,9 @@ export class ZWaveController extends TypedEventEmitter get isSISPresent(): MaybeNotKnown; // (undocumented) get isSUC(): MaybeNotKnown; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "role" + // + // @deprecated (undocumented) get isUsingHomeIdFromOtherNetwork(): MaybeNotKnown; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "setLongRangeChannel" get longRangeChannel(): MaybeNotKnown; @@ -1628,6 +1725,7 @@ export class ZWaveController extends TypedEventEmitter get nodes(): ReadonlyThrowingMap; // (undocumented) get nodeType(): MaybeNotKnown; + get nvm(): NVMAdapter; get ownNodeId(): MaybeNotKnown; // (undocumented) get productId(): MaybeNotKnown; @@ -1636,6 +1734,15 @@ export class ZWaveController extends TypedEventEmitter // (undocumented) get protocolVersion(): MaybeNotKnown; provisionSmartStartNode(entry: PlannedProvisioningEntry): void; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "supportedRFRegions" + queryRFRegionInfo(region: RFRegion_2): Promise<{ + region: RFRegion_2; + supportsZWave: boolean; + supportsLongRange: boolean; + includesRegion?: RFRegion_2; + }>; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "getSupportedRFRegions" + querySupportedRFRegions(): Promise; rebuildNodeRoutes(nodeId: number): Promise; get rebuildRoutesProgress(): ReadonlyMap | undefined; removeAssociations(source: AssociationAddress, group: number, destinations: AssociationAddress[]): Promise; @@ -1657,6 +1764,7 @@ export class ZWaveController extends TypedEventEmitter restoreNVMRaw(nvmData: Buffer, onProgress?: (bytesWritten: number, total: number) => void): Promise; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "setRFRegion" get rfRegion(): MaybeNotKnown; + get role(): MaybeNotKnown; // (undocumented) get sdkVersion(): MaybeNotKnown; sdkVersionGt(version: SDKVersion): MaybeNotKnown; @@ -1675,12 +1783,17 @@ export class ZWaveController extends TypedEventEmitter get status(): ControllerStatus_2; stopExclusion(): Promise; stopInclusion(): Promise; + // (undocumented) + stopJoiningNetwork(): Promise; + // (undocumented) + stopLeavingNetwork(): Promise; stopRebuildingRoutes(): boolean; stopWatchdog(): Promise; // (undocumented) get sucNodeId(): MaybeNotKnown; // (undocumented) get supportedFunctionTypes(): MaybeNotKnown; + get supportedRegions(): MaybeNotKnown>>; // (undocumented) get supportedSerialAPISetupCommands(): readonly SerialAPISetupCommand[] | undefined; supportsFeature(feature: ZWaveFeature): MaybeNotKnown; @@ -1695,7 +1808,9 @@ export class ZWaveController extends TypedEventEmitter get type(): MaybeNotKnown; unprovisionSmartStartNode(dskOrNodeId: string | number): void; get valueDB(): ValueDB; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "role" + // + // @deprecated (undocumented) get wasRealPrimary(): MaybeNotKnown; // (undocumented) get zwaveApiVersion(): MaybeNotKnown; @@ -1983,7 +2098,7 @@ export class ZWaveNode extends Endpoint implements SecurityClassOwner, IZWaveNod get supportsWakeUpOnDemand(): MaybeNotKnown; testPowerlevel(testNodeId: number, powerlevel: Powerlevel_2, healthCheckTestFrameCount: number, onProgress?: (acknowledged: number, total: number) => void): Promise; // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen - updateFirmware(updates: Firmware[]): Promise; + updateFirmware(updates: Firmware[], options?: FirmwareUpdateOptions): Promise; waitForWakeup(): Promise; // (undocumented) get zwavePlusNodeType(): MaybeNotKnown; @@ -2231,6 +2346,7 @@ export interface ZWaveOptions extends ZWaveHostOptions { queryAllUserCodes?: boolean; disableOnNodeAdded?: boolean; }; + joinNetworkUserCallbacks?: JoinNetworkUserCallbacks; logConfig?: LogConfig; // (undocumented) preferences: { @@ -2302,33 +2418,40 @@ export * from "@zwave-js/cc"; // Warnings were encountered during analysis: // -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ColorSwitchCC.ts:478:9 - (TS2345) Argument of type '("index" | "warmWhite" | "coldWhite" | "red" | "green" | "blue" | "amber" | "cyan" | "purple" | undefined)[]' is not assignable to parameter of type 'readonly (string | number | symbol)[]'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ColorSwitchCC.ts:478:9 - (TS2345) Argument of type '("index" | "warmWhite" | "coldWhite" | "red" | "green" | "blue" | "amber" | "cyan" | "purple" | undefined)[]' is not assignable to parameter of type 'readonly (string | number | symbol)[]'. // Type 'string | undefined' is not assignable to type 'string | number | symbol'. // Type 'undefined' is not assignable to type 'string | number | symbol'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1273:41 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1273:41 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. // Type 'string' is not assignable to type 'number'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1280:20 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1280:20 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. // Type 'string' is not assignable to type 'number'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1398:40 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/ConfigurationCC.ts:1398:40 - (TS2345) Argument of type 'string | number' is not assignable to parameter of type 'number'. // Type 'string' is not assignable to type 'number'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1355:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MGRPExtension | undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1456:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MGRPExtension | undefined'. // Property 'groupId' is missing in type 'Security2Extension' but required in type 'MGRPExtension'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1366:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MPANExtension | undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1467:3 - (TS2322) Type 'Security2Extension | undefined' is not assignable to type 'MPANExtension | undefined'. // Type 'Security2Extension' is missing the following properties from type 'MPANExtension': groupId, innerMPANState -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1380:25 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. -// /home/runner/work/node-zwave-js/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1438:19 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. -// src/lib/controller/Controller.ts:867:2 - (ae-missing-getter) The property "provisioningList" has a setter but no getter. -// src/lib/driver/Driver.ts:701:24 - (tsdoc-escape-greater-than) The ">" character should be escaped using a backslash to avoid confusion with an HTML tag -// src/lib/driver/Driver.ts:4191:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/lib/driver/Driver.ts:5340:2 - (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "drainSerialAPIQueue" -// src/lib/driver/Driver.ts:5733:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/lib/driver/Driver.ts:5734:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/lib/driver/Driver.ts:5776:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/lib/driver/Driver.ts:5777:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/lib/driver/Driver.ts:5913:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/lib/driver/ZWaveOptions.ts:270:120 - (tsdoc-escape-greater-than) The ">" character should be escaped using a backslash to avoid confusion with an HTML tag -// src/lib/node/Node.ts:1032:2 - (ae-missing-getter) The property "deviceConfigHash" has a setter but no getter. -// src/lib/node/Node.ts:3018:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1481:25 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. +// /home/dominic/Repositories/node-zwave-js/packages/cc/src/cc/Security2CC.ts:1542:19 - (TS2339) Property 'senderEI' does not exist on type 'Security2Extension'. +// /home/dominic/Repositories/node-zwave-js/packages/nvmedit/src/lib/NVM3.ts:430:20 - (TS18048) 'h' is possibly 'undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/nvmedit/src/lib/NVM3.ts:433:33 - (TS18048) 'header' is possibly 'undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/nvmedit/src/lib/NVM3.ts:434:54 - (TS18048) 'header' is possibly 'undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/nvmedit/src/lib/NVM3.ts:436:48 - (TS18048) 'header' is possibly 'undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/nvmedit/src/lib/NVM3.ts:439:11 - (TS18048) 'header' is possibly 'undefined'. +// /home/dominic/Repositories/node-zwave-js/packages/nvmedit/src/lib/NVM3.ts:440:12 - (TS18048) 'header' is possibly 'undefined'. +// src/lib/controller/Controller.ts:997:2 - (ae-missing-getter) The property "provisioningList" has a setter but no getter. +// src/lib/controller/Controller.ts:7564:3 - (ae-forgotten-export) The symbol "ExtendedNVMOperationsCommand" needs to be exported by the entry point index.d.ts +// src/lib/driver/Driver.ts:735:24 - (tsdoc-escape-greater-than) The ">" character should be escaped using a backslash to avoid confusion with an HTML tag +// src/lib/driver/Driver.ts:4472:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/lib/driver/Driver.ts:5621:2 - (ae-unresolved-link) The @link reference could not be resolved: The package "zwave-js" does not have an export "drainSerialAPIQueue" +// src/lib/driver/Driver.ts:6014:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/lib/driver/Driver.ts:6015:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/lib/driver/Driver.ts:6057:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/lib/driver/Driver.ts:6058:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/lib/driver/Driver.ts:6194:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/lib/driver/ZWaveOptions.ts:280:120 - (tsdoc-escape-greater-than) The ">" character should be escaped using a backslash to avoid confusion with an HTML tag +// src/lib/node/Node.ts:1033:2 - (ae-missing-getter) The property "deviceConfigHash" has a setter but no getter. +// src/lib/node/Node.ts:3019:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // src/lib/zniffer/Zniffer.ts:631:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // src/lib/zniffer/Zniffer.ts:632:5 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen diff --git a/test/primary_2024-09-06.log b/test/primary_2024-09-06.log deleted file mode 100644 index c4b03274600c..000000000000 --- a/test/primary_2024-09-06.log +++ /dev/null @@ -1,14312 +0,0 @@ -2024-09-06T10:02:42.064Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:02:42.066Z DRIVER version 13.2.0 -2024-09-06T10:02:42.066Z DRIVER -2024-09-06T10:02:42.066Z DRIVER starting driver... -2024-09-06T10:02:42.067Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:02:42.076Z DRIVER serial port opened -2024-09-06T10:02:42.076Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:02:43.081Z DRIVER loading configuration... -2024-09-06T10:02:43.086Z CONFIG version 13.2.0 -2024-09-06T10:02:43.298Z CONFIG Device configuration files on disk changed - regenerating index... -2024-09-06T10:02:47.293Z CONFIG Device index regenerated -2024-09-06T10:02:47.294Z DRIVER beginning interview... -2024-09-06T10:02:47.294Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:02:47.294Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:02:47.295Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:02:47.295Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:02:47.295Z CNTRLR querying Serial API capabilities... -2024-09-06T10:02:47.296Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:02:47.297Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:02:47.301Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.309Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:02:47.310Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.310Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:02:47.311Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:02:47.312Z CNTRLR querying additional controller information... -2024-09-06T10:02:47.313Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:02:47.313Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:02:47.315Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.323Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:02:47.324Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.325Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:02:47.326Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:02:47.326Z CNTRLR querying version info... -2024-09-06T10:02:47.327Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:02:47.328Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:02:47.333Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.333Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:02:47.334Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.334Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:02:47.335Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:02:47.335Z CNTRLR querying protocol version info... -2024-09-06T10:02:47.336Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:02:47.336Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:02:47.343Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.344Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:02:47.344Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.345Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:02:47.347Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:02:47.347Z CNTRLR querying controller capabilities... -2024-09-06T10:02:47.348Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:02:47.349Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:02:47.354Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.354Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:02:47.355Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.355Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:02:47.356Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:02:47.356Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:02:47.357Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:02:47.358Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:02:47.363Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.364Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:02:47.364Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.365Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:02:47.365Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:02:47.366Z CNTRLR querying max. payload size... -2024-09-06T10:02:47.366Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:02:47.367Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:02:47.372Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.373Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:02:47.373Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.374Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:02:47.375Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:02:47.375Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:02:47.375Z CNTRLR Querying configured RF region... -2024-09-06T10:02:47.376Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:02:47.376Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:02:47.381Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.381Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:02:47.381Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.382Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:02:47.383Z CNTRLR The controller is using RF region Europe -2024-09-06T10:02:47.383Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:02:47.383Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:02:47.384Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:02:47.392Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.392Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:02:47.393Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.393Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:02:47.394Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:02:47.394Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:02:47.395Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:02:47.395Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:02:47.400Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.400Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:02:47.400Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.401Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:02:47.402Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:02:47.402Z CNTRLR Performing soft reset... -2024-09-06T10:02:47.403Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:02:47.404Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:02:47.407Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.408Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:02:47.408Z DRIVER all queues idle -2024-09-06T10:02:47.632Z SERIAL « 0x0111000a0700010100075e9f556c568f7400b1 (19 bytes) -2024-09-06T10:02:47.633Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.633Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:02:47.634Z CNTRLR reconnected and restarted -2024-09-06T10:02:47.634Z CNTRLR Starting hardware watchdog... -2024-09-06T10:02:47.634Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:02:47.635Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:02:47.635Z DRIVER all queues busy -2024-09-06T10:02:47.636Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:02:47.636Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:02:47.637Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:02:47.638Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:02:47.639Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.640Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.641Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:47.642Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.643Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:47.643Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:02:47.644Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:02:47.645Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:02:47.647Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.649Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:47.649Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.650Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:47.651Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:02:47.651Z CNTRLR querying controller IDs... -2024-09-06T10:02:47.652Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:02:47.653Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:02:47.657Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.658Z SERIAL « 0x01080120e8ddb79601c3 (10 bytes) -2024-09-06T10:02:47.658Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.659Z DRIVER « [RES] [GetControllerId] - home ID: 0xe8ddb796 - own node ID: 1 -2024-09-06T10:02:47.659Z CNTRLR received controller IDs: - home ID: 0xe8ddb796 - own node ID: 1 -2024-09-06T10:02:47.660Z CNTRLR Enabling TX status report... -2024-09-06T10:02:47.660Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:02:47.661Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:02:47.666Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.667Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:02:47.667Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.668Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:02:47.668Z CNTRLR Enabling TX status report successful... -2024-09-06T10:02:47.669Z CNTRLR finding SUC... -2024-09-06T10:02:47.670Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:02:47.670Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:02:47.673Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.674Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:02:47.674Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.675Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:02:47.676Z CNTRLR This is the SUC -2024-09-06T10:02:47.677Z DRIVER all queues idle -2024-09-06T10:02:47.689Z DRIVER Cache file for homeId 0xe8ddb796 found, attempting to restore the network from - cache... -2024-09-06T10:02:47.692Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:02:47.693Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:02:47.694Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:02:47.694Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:02:47.694Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:02:47.695Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:02:47.695Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:02:47.695Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:02:47.696Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:02:47.696Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:02:47.696Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:02:47.696Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:02:47.697Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:02:47.697Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:02:47.697Z CNTRLR Interview completed -2024-09-06T10:02:47.698Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:02:47.699Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:02:47.701Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:02:47.702Z DRIVER driver ready -2024-09-06T10:02:48.703Z CNTRLR Updating the controller NIF... -2024-09-06T10:02:48.705Z DRIVER all queues busy -2024-09-06T10:02:48.709Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:02:48.710Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:02:48.714Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.716Z CNTRLR performing hard reset... -2024-09-06T10:02:48.718Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:02:48.719Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:02:48.721Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.743Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:02:48.743Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.744Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:02:48.745Z CNTRLR hard reset succeeded -2024-09-06T10:02:48.745Z CNTRLR querying Serial API capabilities... -2024-09-06T10:02:48.746Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:02:48.747Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:02:48.749Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.754Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:02:48.754Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.755Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:02:48.756Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:02:48.756Z CNTRLR querying additional controller information... -2024-09-06T10:02:48.757Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:02:48.758Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:02:48.760Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.765Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:02:48.766Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.766Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:02:48.767Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:02:48.767Z CNTRLR querying version info... -2024-09-06T10:02:48.768Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:02:48.769Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:02:48.771Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.773Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:02:48.773Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.774Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:02:48.775Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:02:48.775Z CNTRLR querying protocol version info... -2024-09-06T10:02:48.775Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:02:48.776Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:02:48.778Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.781Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:02:48.781Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.782Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:02:48.783Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:02:48.783Z CNTRLR querying controller capabilities... -2024-09-06T10:02:48.783Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:02:48.784Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:02:48.786Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.787Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:02:48.788Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.789Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:02:48.789Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:02:48.790Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:02:48.791Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:02:48.791Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:02:48.793Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.795Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:02:48.796Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.797Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:02:48.798Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:02:48.798Z CNTRLR querying max. payload size... -2024-09-06T10:02:48.798Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:02:48.799Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:02:48.801Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.802Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:02:48.802Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.803Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:02:48.804Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:02:48.804Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:02:48.804Z CNTRLR Querying configured RF region... -2024-09-06T10:02:48.805Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:02:48.805Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:02:48.807Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.808Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:02:48.808Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.809Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:02:48.810Z CNTRLR The controller is using RF region Europe -2024-09-06T10:02:48.810Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:02:48.811Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:02:48.811Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:02:48.813Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.814Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:02:48.815Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.815Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:02:48.816Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:02:48.816Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:02:48.817Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:02:48.817Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:02:48.819Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.820Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:02:48.820Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:48.821Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:02:48.822Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:02:48.822Z CNTRLR Performing soft reset... -2024-09-06T10:02:48.822Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:02:48.823Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:02:48.826Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:48.827Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:02:48.827Z DRIVER all queues idle -2024-09-06T10:02:49.045Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:02:49.046Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.048Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:02:49.049Z CNTRLR reconnected and restarted -2024-09-06T10:02:49.050Z CNTRLR Starting hardware watchdog... -2024-09-06T10:02:49.051Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:02:49.052Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:02:49.053Z DRIVER all queues busy -2024-09-06T10:02:49.054Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:02:49.055Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:02:49.058Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:02:49.060Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:02:49.061Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.063Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.064Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:49.065Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.065Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:49.066Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:02:49.066Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:02:49.067Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:02:49.069Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.070Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:49.071Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.071Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:49.072Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:02:49.073Z CNTRLR querying controller IDs... -2024-09-06T10:02:49.074Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:02:49.074Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:02:49.076Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.078Z SERIAL « 0x01080120f346aed7011b (10 bytes) -2024-09-06T10:02:49.078Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.079Z DRIVER « [RES] [GetControllerId] - home ID: 0xf346aed7 - own node ID: 1 -2024-09-06T10:02:49.079Z CNTRLR received controller IDs: - home ID: 0xf346aed7 - own node ID: 1 -2024-09-06T10:02:49.080Z CNTRLR Enabling TX status report... -2024-09-06T10:02:49.081Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:02:49.082Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:02:49.084Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.085Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:02:49.086Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.087Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:02:49.087Z CNTRLR Enabling TX status report successful... -2024-09-06T10:02:49.088Z CNTRLR finding SUC... -2024-09-06T10:02:49.088Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:02:49.089Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:02:49.091Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.092Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:02:49.092Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.093Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:02:49.093Z CNTRLR No SUC present in the network -2024-09-06T10:02:49.093Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:02:49.094Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:02:49.095Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:02:49.098Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:49.100Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:02:49.100Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:49.101Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:02:49.102Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:02:49.102Z DRIVER all queues idle -2024-09-06T10:02:49.106Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:02:49.107Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:02:49.107Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:02:49.107Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:02:49.108Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:02:49.108Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:02:49.108Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:02:49.108Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:02:49.108Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:02:49.109Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:02:49.109Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:02:49.109Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:02:49.109Z CNTRLR Interview completed -2024-09-06T10:02:49.109Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:02:49.109Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:02:49.110Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:02:49.111Z DRIVER driver ready -2024-09-06T10:02:53.746Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:02:53.747Z DRIVER all queues busy -2024-09-06T10:02:53.749Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:02:53.750Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:02:53.752Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:53.758Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:02:53.759Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:53.760Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:02:53.760Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:02:53.761Z DRIVER all queues idle -2024-09-06T10:02:57.799Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:02:57.800Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:57.802Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:02:57.803Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:02:57.803Z DRIVER 1 handler registered! -2024-09-06T10:02:57.804Z DRIVER invoking handler #0 -2024-09-06T10:02:57.805Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:02:57.904Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:02:57.905Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:57.905Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:02:57.906Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:02:57.906Z DRIVER 1 handler registered! -2024-09-06T10:02:57.906Z DRIVER invoking handler #0 -2024-09-06T10:02:57.906Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:02:57.907Z DRIVER the message was handled -2024-09-06T10:02:58.325Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:02:58.326Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.327Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:02:58.328Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:02:58.328Z DRIVER 1 handler registered! -2024-09-06T10:02:58.328Z DRIVER invoking handler #0 -2024-09-06T10:02:58.329Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:02:58.329Z CNTRLR finishing inclusion process... -2024-09-06T10:02:58.330Z DRIVER all queues busy -2024-09-06T10:02:58.331Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:02:58.331Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:02:58.334Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.372Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:02:58.373Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.373Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:02:58.374Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:02:58.375Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:02:58.380Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.381Z CNTRLR The inclusion process was stopped -2024-09-06T10:02:58.381Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:02:58.382Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:02:58.382Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:02:58.383Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:02:58.383Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:02:58.388Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.391Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:02:58.392Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.393Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:02:58.457Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:02:58.458Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.460Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:02:58.464Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:02:58.466Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:02:58.468Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.475Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:02:58.477Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.478Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:02:58.549Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:02:58.550Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.552Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:02:58.560Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:02:58.561Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:02:58.565Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.571Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:02:58.572Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.572Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:02:58.585Z SERIAL « 0x011d00a90700000100e17f7f7f7f00000300000000030100007f7f7f7f7fd2 (31 bytes) -2024-09-06T10:02:58.585Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.586Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -31 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:03:08.614Z CNTRLR [Node 002] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T10:03:08.616Z CNTRLR [Node 002] Security S2 bootstrapping failed: did not receive the node's desire - d security classes. -2024-09-06T10:03:08.617Z DRIVER the message was handled -2024-09-06T10:03:08.619Z DRIVER all queues idle -2024-09-06T10:03:13.620Z DRIVER all queues busy -2024-09-06T10:03:13.623Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:03:13.625Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:03:13.628Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:13.631Z SERIAL « 0x0107013b9492927f29 (9 bytes) -2024-09-06T10:03:13.633Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:13.635Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -108 dBm - channel 1: -110 dBm - channel 2: -110 dBm - channel 3: N/A -2024-09-06T10:03:13.639Z DRIVER all queues idle -2024-09-06T10:03:18.238Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:03:18.239Z DRIVER version 13.2.0 -2024-09-06T10:03:18.240Z DRIVER -2024-09-06T10:03:18.240Z DRIVER starting driver... -2024-09-06T10:03:18.240Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:03:18.249Z DRIVER serial port opened -2024-09-06T10:03:18.250Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:03:19.255Z DRIVER loading configuration... -2024-09-06T10:03:19.258Z CONFIG version 13.2.0 -2024-09-06T10:03:19.582Z DRIVER beginning interview... -2024-09-06T10:03:19.584Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:03:19.584Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:03:19.584Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:03:19.584Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:03:19.585Z CNTRLR querying Serial API capabilities... -2024-09-06T10:03:19.593Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:03:19.594Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:03:19.600Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.601Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:03:19.602Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.603Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:03:19.605Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:03:19.606Z CNTRLR querying additional controller information... -2024-09-06T10:03:19.607Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:03:19.607Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:03:19.612Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.614Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:03:19.615Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.615Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:03:19.617Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:03:19.617Z CNTRLR querying version info... -2024-09-06T10:03:19.618Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:03:19.619Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:03:19.626Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.627Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:03:19.628Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.632Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:03:19.633Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:03:19.633Z CNTRLR querying protocol version info... -2024-09-06T10:03:19.635Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:03:19.636Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:03:19.642Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.642Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:03:19.643Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.643Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:03:19.644Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:03:19.645Z CNTRLR querying controller capabilities... -2024-09-06T10:03:19.646Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:03:19.646Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:03:19.652Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.653Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:03:19.653Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.654Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:03:19.655Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:03:19.655Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:03:19.656Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:03:19.657Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:03:19.661Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.661Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:03:19.662Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.663Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:03:19.664Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:03:19.664Z CNTRLR querying max. payload size... -2024-09-06T10:03:19.665Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:03:19.666Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:03:19.670Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.670Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:03:19.671Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.672Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:03:19.672Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:03:19.673Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:03:19.673Z CNTRLR Querying configured RF region... -2024-09-06T10:03:19.674Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:03:19.675Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:03:19.680Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.680Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:03:19.680Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.681Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:03:19.682Z CNTRLR The controller is using RF region Europe -2024-09-06T10:03:19.682Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:03:19.683Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:03:19.684Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:03:19.688Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.688Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:03:19.689Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.689Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:03:19.690Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:03:19.690Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:03:19.691Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:03:19.692Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:03:19.696Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.697Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:03:19.697Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.698Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:03:19.699Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:03:19.699Z CNTRLR Performing soft reset... -2024-09-06T10:03:19.701Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:03:19.702Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:03:19.708Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.709Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:03:19.710Z DRIVER all queues idle -2024-09-06T10:03:19.923Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:03:19.923Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.924Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:03:19.924Z CNTRLR reconnected and restarted -2024-09-06T10:03:19.924Z CNTRLR Starting hardware watchdog... -2024-09-06T10:03:19.925Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:03:19.925Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:03:19.926Z DRIVER all queues busy -2024-09-06T10:03:19.926Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:03:19.927Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:03:19.928Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:03:19.928Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:03:19.930Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.935Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.936Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:19.937Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.937Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:19.938Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:03:19.939Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:03:19.939Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:03:19.941Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.942Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:19.943Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.943Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:19.944Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:03:19.944Z CNTRLR querying controller IDs... -2024-09-06T10:03:19.945Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:03:19.945Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:03:19.949Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.950Z SERIAL « 0x01080120f346aed7011b (10 bytes) -2024-09-06T10:03:19.950Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.951Z DRIVER « [RES] [GetControllerId] - home ID: 0xf346aed7 - own node ID: 1 -2024-09-06T10:03:19.952Z CNTRLR received controller IDs: - home ID: 0xf346aed7 - own node ID: 1 -2024-09-06T10:03:19.952Z CNTRLR Enabling TX status report... -2024-09-06T10:03:19.953Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:03:19.954Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:03:19.956Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.957Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:03:19.957Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.958Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:03:19.959Z CNTRLR Enabling TX status report successful... -2024-09-06T10:03:19.959Z CNTRLR finding SUC... -2024-09-06T10:03:19.960Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:03:19.960Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:03:19.962Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.963Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:03:19.963Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.964Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:03:19.965Z CNTRLR This is the SUC -2024-09-06T10:03:19.965Z DRIVER all queues idle -2024-09-06T10:03:19.973Z DRIVER Cache file for homeId 0xf346aed7 found, attempting to restore the network from - cache... -2024-09-06T10:03:19.978Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:03:19.979Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:03:19.979Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:03:19.980Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:03:19.980Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:03:19.981Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:03:19.981Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:03:19.981Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:03:19.982Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:03:19.982Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:03:19.982Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:03:19.983Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:03:19.983Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:03:19.983Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:03:19.984Z CNTRLR Interview completed -2024-09-06T10:03:19.984Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:03:19.985Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:03:19.987Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:03:19.988Z DRIVER driver ready -2024-09-06T10:03:20.989Z CNTRLR Updating the controller NIF... -2024-09-06T10:03:20.990Z DRIVER all queues busy -2024-09-06T10:03:20.991Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:03:20.992Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:03:20.996Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:20.998Z CNTRLR performing hard reset... -2024-09-06T10:03:20.999Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:03:20.999Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:03:21.002Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.037Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:03:21.038Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.039Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:03:21.039Z CNTRLR hard reset succeeded -2024-09-06T10:03:21.040Z CNTRLR querying Serial API capabilities... -2024-09-06T10:03:21.041Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:03:21.041Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:03:21.043Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.048Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:03:21.049Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.050Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:03:21.051Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:03:21.052Z CNTRLR querying additional controller information... -2024-09-06T10:03:21.053Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:03:21.053Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:03:21.055Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.060Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:03:21.061Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.061Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:03:21.062Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:03:21.062Z CNTRLR querying version info... -2024-09-06T10:03:21.063Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:03:21.063Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:03:21.065Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.067Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:03:21.068Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.069Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:03:21.069Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:03:21.070Z CNTRLR querying protocol version info... -2024-09-06T10:03:21.070Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:03:21.071Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:03:21.072Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.076Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:03:21.076Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.077Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:03:21.078Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:03:21.078Z CNTRLR querying controller capabilities... -2024-09-06T10:03:21.079Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:03:21.079Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:03:21.081Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.082Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:03:21.083Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.084Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:03:21.084Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:03:21.085Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:03:21.085Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:03:21.086Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:03:21.090Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.092Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:03:21.092Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.092Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:03:21.093Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:03:21.093Z CNTRLR querying max. payload size... -2024-09-06T10:03:21.094Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:03:21.095Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:03:21.098Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.099Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:03:21.099Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.100Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:03:21.101Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:03:21.101Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:03:21.101Z CNTRLR Querying configured RF region... -2024-09-06T10:03:21.102Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:03:21.102Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:03:21.104Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.105Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:03:21.106Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.106Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:03:21.107Z CNTRLR The controller is using RF region Europe -2024-09-06T10:03:21.107Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:03:21.108Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:03:21.108Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:03:21.110Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.111Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:03:21.112Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.112Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:03:21.113Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:03:21.113Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:03:21.114Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:03:21.114Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:03:21.116Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.117Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:03:21.118Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.118Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:03:21.119Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:03:21.119Z CNTRLR Performing soft reset... -2024-09-06T10:03:21.120Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:03:21.121Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:03:21.123Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.123Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:03:21.124Z DRIVER all queues idle -2024-09-06T10:03:21.349Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:03:21.351Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.353Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:03:21.354Z CNTRLR reconnected and restarted -2024-09-06T10:03:21.354Z CNTRLR Starting hardware watchdog... -2024-09-06T10:03:21.355Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:03:21.356Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:03:21.357Z DRIVER all queues busy -2024-09-06T10:03:21.359Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:03:21.360Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:03:21.363Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:03:21.364Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:03:21.365Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.367Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.368Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:21.368Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.369Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:21.369Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:03:21.370Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:03:21.370Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:03:21.372Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.374Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:21.374Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.375Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:21.375Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:03:21.376Z CNTRLR querying controller IDs... -2024-09-06T10:03:21.376Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:03:21.377Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:03:21.379Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.380Z SERIAL « 0x01080120f41ad2d20139 (10 bytes) -2024-09-06T10:03:21.380Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.381Z DRIVER « [RES] [GetControllerId] - home ID: 0xf41ad2d2 - own node ID: 1 -2024-09-06T10:03:21.382Z CNTRLR received controller IDs: - home ID: 0xf41ad2d2 - own node ID: 1 -2024-09-06T10:03:21.382Z CNTRLR Enabling TX status report... -2024-09-06T10:03:21.383Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:03:21.383Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:03:21.386Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.387Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:03:21.387Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.388Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:03:21.388Z CNTRLR Enabling TX status report successful... -2024-09-06T10:03:21.388Z CNTRLR finding SUC... -2024-09-06T10:03:21.389Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:03:21.389Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:03:21.392Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.393Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:03:21.393Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.394Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:03:21.394Z CNTRLR No SUC present in the network -2024-09-06T10:03:21.395Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:03:21.396Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:03:21.396Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:03:21.399Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:21.401Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:03:21.402Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:21.403Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:03:21.403Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:03:21.404Z DRIVER all queues idle -2024-09-06T10:03:21.410Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:03:21.410Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:03:21.410Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:03:21.411Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:03:21.411Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:03:21.411Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:03:21.411Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:03:21.412Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:03:21.412Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:03:21.412Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:03:21.412Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:03:21.412Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:03:21.413Z CNTRLR Interview completed -2024-09-06T10:03:21.413Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:03:21.413Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:03:21.414Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:03:21.415Z DRIVER driver ready -2024-09-06T10:03:26.042Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:03:26.044Z DRIVER all queues busy -2024-09-06T10:03:26.046Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:03:26.048Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:03:26.054Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:26.056Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:03:26.057Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:26.059Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:03:26.060Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:03:26.060Z DRIVER all queues idle -2024-09-06T10:03:30.098Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:03:30.099Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.101Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:03:30.102Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:03:30.102Z DRIVER 1 handler registered! -2024-09-06T10:03:30.103Z DRIVER invoking handler #0 -2024-09-06T10:03:30.104Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:03:30.202Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:03:30.204Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.205Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:03:30.206Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:03:30.207Z DRIVER 1 handler registered! -2024-09-06T10:03:30.207Z DRIVER invoking handler #0 -2024-09-06T10:03:30.207Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:03:30.211Z DRIVER the message was handled -2024-09-06T10:03:30.622Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:03:30.624Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.625Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:03:30.626Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:03:30.626Z DRIVER 1 handler registered! -2024-09-06T10:03:30.627Z DRIVER invoking handler #0 -2024-09-06T10:03:30.627Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:03:30.627Z CNTRLR finishing inclusion process... -2024-09-06T10:03:30.628Z DRIVER all queues busy -2024-09-06T10:03:30.628Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:03:30.629Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:03:30.632Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.669Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:03:30.669Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.670Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:03:30.671Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:03:30.671Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:03:30.677Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.678Z CNTRLR The inclusion process was stopped -2024-09-06T10:03:30.678Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:03:30.679Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:03:30.679Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:03:30.680Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:03:30.680Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:03:30.684Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.688Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:03:30.689Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.689Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:03:30.753Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:03:30.754Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.756Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:03:30.759Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:03:30.760Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:03:30.762Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.769Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:03:30.770Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.771Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:03:30.849Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:03:30.849Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.854Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:03:30.858Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:03:30.863Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:03:30.868Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.875Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:03:30.876Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.877Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:03:30.891Z SERIAL « 0x011d00a90700000100e17f7f7f7f00000300000000030100007f7f7f7f7fd2 (31 bytes) -2024-09-06T10:03:30.892Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.893Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -31 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:03:40.931Z CNTRLR [Node 002] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T10:03:40.932Z CNTRLR [Node 002] Security S2 bootstrapping failed: did not receive the node's desire - d security classes. -2024-09-06T10:03:40.934Z DRIVER the message was handled -2024-09-06T10:03:40.935Z DRIVER all queues idle -2024-09-06T10:03:45.937Z DRIVER all queues busy -2024-09-06T10:03:45.940Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:03:45.943Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:03:45.946Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:45.949Z SERIAL « 0x0107013b9493937f29 (9 bytes) -2024-09-06T10:03:45.950Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:45.952Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -108 dBm - channel 1: -109 dBm - channel 2: -109 dBm - channel 3: N/A -2024-09-06T10:03:45.954Z DRIVER all queues idle -2024-09-06T10:04:11.380Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:04:11.383Z DRIVER version 13.2.0 -2024-09-06T10:04:11.384Z DRIVER -2024-09-06T10:04:11.384Z DRIVER starting driver... -2024-09-06T10:04:11.385Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:04:11.400Z DRIVER serial port opened -2024-09-06T10:04:11.402Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:04:12.409Z DRIVER loading configuration... -2024-09-06T10:04:12.414Z CONFIG version 13.2.0 -2024-09-06T10:04:12.725Z DRIVER beginning interview... -2024-09-06T10:04:12.726Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:04:12.726Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:04:12.726Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:04:12.727Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:04:12.727Z CNTRLR querying Serial API capabilities... -2024-09-06T10:04:12.736Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:04:12.736Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:04:12.743Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.745Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:04:12.746Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.747Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:04:12.749Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:04:12.749Z CNTRLR querying additional controller information... -2024-09-06T10:04:12.751Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:04:12.751Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:04:12.756Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.761Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:04:12.761Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.762Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:04:12.763Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:04:12.763Z CNTRLR querying version info... -2024-09-06T10:04:12.765Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:04:12.765Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:04:12.767Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.772Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:04:12.772Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.773Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:04:12.774Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:04:12.774Z CNTRLR querying protocol version info... -2024-09-06T10:04:12.775Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:04:12.776Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:04:12.780Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.781Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:04:12.781Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.782Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:04:12.783Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:04:12.784Z CNTRLR querying controller capabilities... -2024-09-06T10:04:12.785Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:04:12.786Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:04:12.791Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.792Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:04:12.793Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.794Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:04:12.795Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:04:12.795Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:04:12.797Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:04:12.798Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:04:12.804Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.805Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:04:12.806Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.807Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:04:12.808Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:04:12.809Z CNTRLR querying max. payload size... -2024-09-06T10:04:12.810Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:04:12.811Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:04:12.815Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.816Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:04:12.816Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.817Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:04:12.818Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:04:12.818Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:04:12.819Z CNTRLR Querying configured RF region... -2024-09-06T10:04:12.819Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:04:12.820Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:04:12.824Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.825Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:04:12.825Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.826Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:04:12.827Z CNTRLR The controller is using RF region Europe -2024-09-06T10:04:12.827Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:04:12.828Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:04:12.828Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:04:12.832Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.832Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:04:12.833Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.833Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:04:12.834Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:04:12.834Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:04:12.835Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:04:12.835Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:04:12.839Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.840Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:04:12.840Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.841Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:04:12.842Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:04:12.842Z CNTRLR Performing soft reset... -2024-09-06T10:04:12.843Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:04:12.844Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:04:12.847Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.848Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:04:12.849Z DRIVER all queues idle -2024-09-06T10:04:13.071Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:04:13.072Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.072Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:04:13.073Z CNTRLR reconnected and restarted -2024-09-06T10:04:13.073Z CNTRLR Starting hardware watchdog... -2024-09-06T10:04:13.073Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:04:13.073Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:04:13.074Z DRIVER all queues busy -2024-09-06T10:04:13.074Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:04:13.075Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:04:13.076Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:04:13.076Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:04:13.082Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.082Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.083Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:13.083Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.084Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:13.084Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:04:13.085Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:04:13.085Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:04:13.087Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.090Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:13.091Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.091Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:13.092Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:04:13.092Z CNTRLR querying controller IDs... -2024-09-06T10:04:13.093Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:04:13.093Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:04:13.099Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.099Z SERIAL « 0x01080120f41ad2d20139 (10 bytes) -2024-09-06T10:04:13.100Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.100Z DRIVER « [RES] [GetControllerId] - home ID: 0xf41ad2d2 - own node ID: 1 -2024-09-06T10:04:13.101Z CNTRLR received controller IDs: - home ID: 0xf41ad2d2 - own node ID: 1 -2024-09-06T10:04:13.101Z CNTRLR Enabling TX status report... -2024-09-06T10:04:13.102Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:04:13.102Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:04:13.105Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.106Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:04:13.106Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.107Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:04:13.107Z CNTRLR Enabling TX status report successful... -2024-09-06T10:04:13.107Z CNTRLR finding SUC... -2024-09-06T10:04:13.108Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:04:13.109Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:04:13.118Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.119Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:04:13.119Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.120Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:04:13.122Z CNTRLR This is the SUC -2024-09-06T10:04:13.122Z DRIVER all queues idle -2024-09-06T10:04:13.147Z DRIVER Cache file for homeId 0xf41ad2d2 found, attempting to restore the network from - cache... -2024-09-06T10:04:13.150Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:04:13.151Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:04:13.151Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:04:13.151Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:04:13.152Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:04:13.152Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:04:13.152Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:04:13.153Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:04:13.153Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:04:13.153Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:04:13.153Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:04:13.154Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:04:13.154Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:04:13.154Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:04:13.154Z CNTRLR Interview completed -2024-09-06T10:04:13.155Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:04:13.156Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:04:13.157Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:04:13.158Z DRIVER driver ready -2024-09-06T10:04:14.159Z CNTRLR Updating the controller NIF... -2024-09-06T10:04:14.160Z DRIVER all queues busy -2024-09-06T10:04:14.161Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:04:14.162Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:04:14.166Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.168Z CNTRLR performing hard reset... -2024-09-06T10:04:14.170Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:04:14.171Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:04:14.173Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.195Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:04:14.196Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.196Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:04:14.197Z CNTRLR hard reset succeeded -2024-09-06T10:04:14.198Z CNTRLR querying Serial API capabilities... -2024-09-06T10:04:14.198Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:04:14.199Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:04:14.201Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.205Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:04:14.206Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.206Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:04:14.207Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:04:14.208Z CNTRLR querying additional controller information... -2024-09-06T10:04:14.209Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:04:14.209Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:04:14.211Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.216Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:04:14.216Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.217Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:04:14.218Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:04:14.218Z CNTRLR querying version info... -2024-09-06T10:04:14.219Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:04:14.219Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:04:14.222Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.223Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:04:14.224Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.225Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:04:14.225Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:04:14.226Z CNTRLR querying protocol version info... -2024-09-06T10:04:14.226Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:04:14.227Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:04:14.229Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.232Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:04:14.232Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.233Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:04:14.233Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:04:14.234Z CNTRLR querying controller capabilities... -2024-09-06T10:04:14.234Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:04:14.235Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:04:14.237Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.238Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:04:14.238Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.239Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:04:14.239Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:04:14.240Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:04:14.240Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:04:14.241Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:04:14.243Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.245Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:04:14.246Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.246Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:04:14.247Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:04:14.247Z CNTRLR querying max. payload size... -2024-09-06T10:04:14.248Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:04:14.248Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:04:14.251Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.252Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:04:14.252Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.253Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:04:14.253Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:04:14.254Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:04:14.254Z CNTRLR Querying configured RF region... -2024-09-06T10:04:14.254Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:04:14.255Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:04:14.257Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.258Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:04:14.259Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.259Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:04:14.260Z CNTRLR The controller is using RF region Europe -2024-09-06T10:04:14.260Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:04:14.261Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:04:14.261Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:04:14.264Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.265Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:04:14.265Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.266Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:04:14.267Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:04:14.267Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:04:14.268Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:04:14.268Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:04:14.270Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.271Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:04:14.272Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.272Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:04:14.273Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:04:14.273Z CNTRLR Performing soft reset... -2024-09-06T10:04:14.274Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:04:14.274Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:04:14.276Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.277Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:04:14.278Z DRIVER all queues idle -2024-09-06T10:04:14.504Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:04:14.505Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.507Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:04:14.508Z CNTRLR reconnected and restarted -2024-09-06T10:04:14.508Z CNTRLR Starting hardware watchdog... -2024-09-06T10:04:14.509Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:04:14.510Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:04:14.511Z DRIVER all queues busy -2024-09-06T10:04:14.513Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:04:14.514Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:04:14.516Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:04:14.517Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:04:14.518Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.519Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.521Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:14.521Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.522Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:14.522Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:04:14.523Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:04:14.523Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:04:14.525Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.527Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:14.527Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.528Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:14.528Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:04:14.529Z CNTRLR querying controller IDs... -2024-09-06T10:04:14.529Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:04:14.530Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:04:14.533Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.534Z SERIAL « 0x01080120d1f692e50187 (10 bytes) -2024-09-06T10:04:14.535Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.535Z DRIVER « [RES] [GetControllerId] - home ID: 0xd1f692e5 - own node ID: 1 -2024-09-06T10:04:14.536Z CNTRLR received controller IDs: - home ID: 0xd1f692e5 - own node ID: 1 -2024-09-06T10:04:14.536Z CNTRLR Enabling TX status report... -2024-09-06T10:04:14.537Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:04:14.538Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:04:14.540Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.541Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:04:14.541Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.542Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:04:14.542Z CNTRLR Enabling TX status report successful... -2024-09-06T10:04:14.543Z CNTRLR finding SUC... -2024-09-06T10:04:14.543Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:04:14.544Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:04:14.546Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.547Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:04:14.547Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.548Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:04:14.549Z CNTRLR No SUC present in the network -2024-09-06T10:04:14.549Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:04:14.550Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:04:14.550Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:04:14.553Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:14.555Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:04:14.556Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:14.556Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:04:14.557Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:04:14.557Z DRIVER all queues idle -2024-09-06T10:04:14.562Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:04:14.562Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:04:14.562Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:04:14.563Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:04:14.563Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:04:14.563Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:04:14.563Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:04:14.564Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:04:14.564Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:04:14.564Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:04:14.564Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:04:14.564Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:04:14.564Z CNTRLR Interview completed -2024-09-06T10:04:14.565Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:04:14.565Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:04:14.566Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:04:14.566Z DRIVER driver ready -2024-09-06T10:04:19.199Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:04:19.201Z DRIVER all queues busy -2024-09-06T10:04:19.203Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:04:19.204Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:04:19.210Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:19.213Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:04:19.214Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:19.215Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:04:19.216Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:04:19.217Z DRIVER all queues idle -2024-09-06T10:04:23.253Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:04:23.254Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.256Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:04:23.257Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:04:23.257Z DRIVER 1 handler registered! -2024-09-06T10:04:23.258Z DRIVER invoking handler #0 -2024-09-06T10:04:23.260Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:04:23.358Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:04:23.359Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.361Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:04:23.362Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:04:23.362Z DRIVER 1 handler registered! -2024-09-06T10:04:23.363Z DRIVER invoking handler #0 -2024-09-06T10:04:23.363Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:04:23.367Z DRIVER the message was handled -2024-09-06T10:04:23.777Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:04:23.778Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.780Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:04:23.781Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:04:23.782Z DRIVER 1 handler registered! -2024-09-06T10:04:23.782Z DRIVER invoking handler #0 -2024-09-06T10:04:23.783Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:04:23.783Z CNTRLR finishing inclusion process... -2024-09-06T10:04:23.785Z DRIVER all queues busy -2024-09-06T10:04:23.786Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:04:23.787Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:04:23.790Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.834Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:04:33.835Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.839Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:04:33.846Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:04:33.847Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:04:33.850Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:04:33.853Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.853Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:04:33.854Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.858Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:04:33.859Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.861Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:04:33.863Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:04:33.865Z DRIVER 1 handler registered! -2024-09-06T10:04:33.865Z DRIVER invoking handler #0 -2024-09-06T10:04:33.866Z CNTRLR handling add node request (status = Done) -2024-09-06T10:04:33.867Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:04:33.868Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:04:33.869Z DRIVER 1 handler registered! -2024-09-06T10:04:33.870Z DRIVER invoking handler #0 -2024-09-06T10:04:33.870Z CNTRLR handling add node request (status = Done) -2024-09-06T10:04:33.871Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:04:33.872Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:04:33.872Z DRIVER 1 handler registered! -2024-09-06T10:04:33.873Z DRIVER invoking handler #0 -2024-09-06T10:04:33.873Z CNTRLR handling add node request (status = Done) -2024-09-06T10:04:33.899Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.901Z CNTRLR The inclusion process was stopped -2024-09-06T10:04:33.901Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:04:33.902Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:04:33.903Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:04:33.904Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:04:33.906Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:04:33.913Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.915Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:04:33.916Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.917Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:04:33.980Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:04:33.981Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.982Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:04:33.985Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:04:33.985Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:04:33.988Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.995Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:04:33.996Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.996Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:04:34.074Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:04:34.075Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:34.077Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:04:34.088Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:04:34.089Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:04:34.095Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:34.099Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:04:34.100Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:34.106Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:04:34.113Z SERIAL « 0x011d00a90700000100e17f7f7f7f00000300000000030100007f7f7f7f7fd2 (31 bytes) -2024-09-06T10:04:34.115Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:34.117Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -31 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:04:44.150Z CNTRLR [Node 002] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T10:04:44.152Z CNTRLR [Node 002] Security S2 bootstrapping failed: did not receive the node's desire - d security classes. -2024-09-06T10:04:44.154Z DRIVER the message was handled -2024-09-06T10:04:44.155Z DRIVER all queues idle -2024-09-06T10:05:09.130Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:05:09.132Z DRIVER version 13.2.0 -2024-09-06T10:05:09.132Z DRIVER -2024-09-06T10:05:09.133Z DRIVER starting driver... -2024-09-06T10:05:09.133Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:05:09.143Z DRIVER serial port opened -2024-09-06T10:05:09.144Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:05:10.148Z DRIVER loading configuration... -2024-09-06T10:05:10.153Z CONFIG version 13.2.0 -2024-09-06T10:05:10.477Z DRIVER beginning interview... -2024-09-06T10:05:10.478Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:05:10.479Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:05:10.479Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:05:10.479Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:05:10.480Z CNTRLR querying Serial API capabilities... -2024-09-06T10:05:10.489Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:05:10.490Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:05:10.495Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.497Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:05:10.498Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.498Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:05:10.500Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:05:10.501Z CNTRLR querying additional controller information... -2024-09-06T10:05:10.502Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:05:10.502Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:05:10.508Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.512Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:05:10.512Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.513Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:05:10.514Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:05:10.514Z CNTRLR querying version info... -2024-09-06T10:05:10.515Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:05:10.515Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:05:10.518Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.523Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:05:10.524Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.524Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:05:10.525Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:05:10.526Z CNTRLR querying protocol version info... -2024-09-06T10:05:10.527Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:05:10.527Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:05:10.531Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.532Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:05:10.533Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.533Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:05:10.534Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:05:10.535Z CNTRLR querying controller capabilities... -2024-09-06T10:05:10.536Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:05:10.537Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:05:10.541Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.541Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:05:10.542Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.543Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:05:10.544Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:05:10.544Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:05:10.545Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:05:10.545Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:05:10.550Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.551Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:05:10.552Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.553Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:05:10.555Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:05:10.555Z CNTRLR querying max. payload size... -2024-09-06T10:05:10.556Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:05:10.557Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:05:10.563Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.564Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:05:10.564Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.565Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:05:10.566Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:05:10.567Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:05:10.568Z CNTRLR Querying configured RF region... -2024-09-06T10:05:10.569Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:05:10.570Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:05:10.576Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.577Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:05:10.577Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.578Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:05:10.580Z CNTRLR The controller is using RF region Europe -2024-09-06T10:05:10.580Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:05:10.581Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:05:10.582Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:05:10.588Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.589Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:05:10.590Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.591Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:05:10.592Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:05:10.592Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:05:10.593Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:05:10.594Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:05:10.598Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.599Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:05:10.599Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.600Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:05:10.601Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:05:10.601Z CNTRLR Performing soft reset... -2024-09-06T10:05:10.602Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:05:10.603Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:05:10.606Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.607Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:05:10.608Z DRIVER all queues idle -2024-09-06T10:05:10.823Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:05:10.823Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.824Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:05:10.824Z CNTRLR reconnected and restarted -2024-09-06T10:05:10.824Z CNTRLR Starting hardware watchdog... -2024-09-06T10:05:10.824Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:05:10.825Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:05:10.825Z DRIVER all queues busy -2024-09-06T10:05:10.826Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:05:10.826Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:05:10.827Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:05:10.827Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:05:10.828Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.829Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.831Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:10.832Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.832Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:10.833Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:05:10.833Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:05:10.834Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:05:10.839Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.840Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:10.841Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.842Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:10.842Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:05:10.843Z CNTRLR querying controller IDs... -2024-09-06T10:05:10.843Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:05:10.844Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:05:10.846Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.847Z SERIAL « 0x01080120d1f692e50187 (10 bytes) -2024-09-06T10:05:10.848Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.848Z DRIVER « [RES] [GetControllerId] - home ID: 0xd1f692e5 - own node ID: 1 -2024-09-06T10:05:10.849Z CNTRLR received controller IDs: - home ID: 0xd1f692e5 - own node ID: 1 -2024-09-06T10:05:10.849Z CNTRLR Enabling TX status report... -2024-09-06T10:05:10.850Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:05:10.850Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:05:10.854Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.854Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:05:10.855Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.855Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:05:10.856Z CNTRLR Enabling TX status report successful... -2024-09-06T10:05:10.856Z CNTRLR finding SUC... -2024-09-06T10:05:10.857Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:05:10.857Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:05:10.859Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.860Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:05:10.860Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.861Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:05:10.861Z CNTRLR This is the SUC -2024-09-06T10:05:10.862Z DRIVER all queues idle -2024-09-06T10:05:10.876Z DRIVER Cache file for homeId 0xd1f692e5 found, attempting to restore the network from - cache... -2024-09-06T10:05:10.878Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:05:10.879Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:05:10.879Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:05:10.879Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:05:10.880Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:05:10.880Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:05:10.881Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:05:10.881Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:05:10.881Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:05:10.882Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:05:10.882Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:05:10.882Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:05:10.883Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:05:10.883Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:05:10.883Z CNTRLR Interview completed -2024-09-06T10:05:10.884Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:05:10.885Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:05:10.887Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:05:10.887Z DRIVER driver ready -2024-09-06T10:05:11.888Z CNTRLR Updating the controller NIF... -2024-09-06T10:05:11.889Z DRIVER all queues busy -2024-09-06T10:05:11.890Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:05:11.891Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:05:11.895Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.896Z CNTRLR performing hard reset... -2024-09-06T10:05:11.897Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:05:11.897Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:05:11.901Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.922Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:05:11.923Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.924Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:05:11.925Z CNTRLR hard reset succeeded -2024-09-06T10:05:11.926Z CNTRLR querying Serial API capabilities... -2024-09-06T10:05:11.927Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:05:11.928Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:05:11.930Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.935Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:05:11.936Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.936Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:05:11.938Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:05:11.938Z CNTRLR querying additional controller information... -2024-09-06T10:05:11.939Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:05:11.940Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:05:11.941Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.946Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:05:11.947Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.948Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:05:11.948Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:05:11.949Z CNTRLR querying version info... -2024-09-06T10:05:11.950Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:05:11.950Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:05:11.952Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.954Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:05:11.955Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.956Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:05:11.956Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:05:11.956Z CNTRLR querying protocol version info... -2024-09-06T10:05:11.957Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:05:11.958Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:05:11.959Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.962Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:05:11.963Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.963Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:05:11.964Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:05:11.964Z CNTRLR querying controller capabilities... -2024-09-06T10:05:11.965Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:05:11.965Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:05:11.967Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.968Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:05:11.969Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.969Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:05:11.970Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:05:11.970Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:05:11.971Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:05:11.971Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:05:11.973Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.976Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:05:11.976Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.977Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:05:11.978Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:05:11.978Z CNTRLR querying max. payload size... -2024-09-06T10:05:11.979Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:05:11.979Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:05:11.981Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.982Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:05:11.983Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.983Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:05:11.984Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:05:11.984Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:05:11.984Z CNTRLR Querying configured RF region... -2024-09-06T10:05:11.985Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:05:11.986Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:05:11.988Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.989Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:05:11.989Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.990Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:05:11.990Z CNTRLR The controller is using RF region Europe -2024-09-06T10:05:11.991Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:05:11.992Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:05:11.992Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:05:11.994Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:11.995Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:05:11.996Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:11.996Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:05:11.997Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:05:11.997Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:05:11.998Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:05:11.998Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:05:12.000Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.001Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:05:12.002Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.002Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:05:12.003Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:05:12.003Z CNTRLR Performing soft reset... -2024-09-06T10:05:12.004Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:05:12.004Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:05:12.006Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.007Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:05:12.008Z DRIVER all queues idle -2024-09-06T10:05:12.226Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:05:12.226Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.227Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:05:12.228Z CNTRLR reconnected and restarted -2024-09-06T10:05:12.228Z CNTRLR Starting hardware watchdog... -2024-09-06T10:05:12.228Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:05:12.229Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:05:12.229Z DRIVER all queues busy -2024-09-06T10:05:12.230Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:05:12.230Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:05:12.231Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:05:12.232Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:05:12.233Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.234Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.236Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:12.236Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.237Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:12.238Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:05:12.239Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:05:12.240Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:05:12.242Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.243Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:12.244Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.244Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:12.245Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:05:12.245Z CNTRLR querying controller IDs... -2024-09-06T10:05:12.246Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:05:12.247Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:05:12.249Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.250Z SERIAL « 0x01080120fd37611c0160 (10 bytes) -2024-09-06T10:05:12.251Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.252Z DRIVER « [RES] [GetControllerId] - home ID: 0xfd37611c - own node ID: 1 -2024-09-06T10:05:12.253Z CNTRLR received controller IDs: - home ID: 0xfd37611c - own node ID: 1 -2024-09-06T10:05:12.253Z CNTRLR Enabling TX status report... -2024-09-06T10:05:12.254Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:05:12.254Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:05:12.258Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.259Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:05:12.259Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.260Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:05:12.261Z CNTRLR Enabling TX status report successful... -2024-09-06T10:05:12.262Z CNTRLR finding SUC... -2024-09-06T10:05:12.263Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:05:12.263Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:05:12.265Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.266Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:05:12.267Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.268Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:05:12.269Z CNTRLR No SUC present in the network -2024-09-06T10:05:12.269Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:05:12.271Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:05:12.271Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:05:12.274Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:12.276Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:05:12.277Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:12.278Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:05:12.279Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:05:12.280Z DRIVER all queues idle -2024-09-06T10:05:12.285Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:05:12.285Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:05:12.286Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:05:12.286Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:05:12.286Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:05:12.286Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:05:12.287Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:05:12.287Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:05:12.287Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:05:12.287Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:05:12.287Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:05:12.288Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:05:12.288Z CNTRLR Interview completed -2024-09-06T10:05:12.288Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:05:12.288Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:05:12.289Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:05:12.290Z DRIVER driver ready -2024-09-06T10:05:16.928Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:05:16.930Z DRIVER all queues busy -2024-09-06T10:05:16.932Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:05:16.933Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:05:16.935Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.941Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:05:16.942Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.943Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:05:16.944Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:05:16.944Z DRIVER all queues idle -2024-09-06T10:05:20.983Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:05:20.984Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:20.986Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:05:20.987Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:05:20.988Z DRIVER 1 handler registered! -2024-09-06T10:05:20.988Z DRIVER invoking handler #0 -2024-09-06T10:05:20.990Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:05:21.087Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:05:21.088Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:21.090Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:05:21.091Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:05:21.091Z DRIVER 1 handler registered! -2024-09-06T10:05:21.092Z DRIVER invoking handler #0 -2024-09-06T10:05:21.092Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:05:21.097Z DRIVER the message was handled -2024-09-06T10:05:21.507Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:05:21.508Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:21.510Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:05:21.511Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:05:21.511Z DRIVER 1 handler registered! -2024-09-06T10:05:21.512Z DRIVER invoking handler #0 -2024-09-06T10:05:21.512Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:05:21.514Z CNTRLR finishing inclusion process... -2024-09-06T10:05:21.516Z DRIVER all queues busy -2024-09-06T10:05:21.518Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:05:21.520Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:05:21.522Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.089Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:05:24.090Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.090Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:05:24.091Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.092Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:05:24.093Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:05:24.094Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:05:24.095Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:05:24.095Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:05:24.096Z DRIVER 1 handler registered! -2024-09-06T10:05:24.096Z DRIVER invoking handler #0 -2024-09-06T10:05:24.096Z CNTRLR handling add node request (status = Done) -2024-09-06T10:05:24.102Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.104Z CNTRLR The inclusion process was stopped -2024-09-06T10:05:24.104Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:05:24.105Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:05:24.105Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:05:24.106Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:05:24.107Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:05:24.113Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.115Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:05:24.116Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.117Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:05:24.180Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:05:24.181Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.181Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:05:24.183Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:05:24.184Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:05:24.186Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.193Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:05:24.194Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.194Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:05:24.271Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:05:24.272Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.275Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:05:24.283Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:05:24.284Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:05:24.290Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.297Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:05:24.298Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.299Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:06:42.101Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:06:42.103Z DRIVER version 13.2.0 -2024-09-06T10:06:42.103Z DRIVER -2024-09-06T10:06:42.104Z DRIVER starting driver... -2024-09-06T10:06:42.104Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:06:42.113Z DRIVER serial port opened -2024-09-06T10:06:42.114Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:06:43.117Z DRIVER loading configuration... -2024-09-06T10:06:43.119Z CONFIG version 13.2.0 -2024-09-06T10:06:43.424Z DRIVER beginning interview... -2024-09-06T10:06:43.425Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:06:43.425Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:06:43.426Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:06:43.426Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:06:43.426Z CNTRLR querying Serial API capabilities... -2024-09-06T10:06:43.434Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:06:43.435Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:06:43.441Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.443Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:06:43.444Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.445Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:06:43.447Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:06:43.447Z CNTRLR querying additional controller information... -2024-09-06T10:06:43.449Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:06:43.449Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:06:43.456Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.458Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:06:43.458Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.459Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:06:43.460Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:06:43.460Z CNTRLR querying version info... -2024-09-06T10:06:43.461Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:06:43.462Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:06:43.463Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.468Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:06:43.469Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.469Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:06:43.470Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:06:43.470Z CNTRLR querying protocol version info... -2024-09-06T10:06:43.471Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:06:43.471Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:06:43.477Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.477Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:06:43.478Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.478Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:06:43.479Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:06:43.480Z CNTRLR querying controller capabilities... -2024-09-06T10:06:43.481Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:06:43.481Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:06:43.485Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.486Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:06:43.486Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.487Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:06:43.488Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:06:43.488Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:06:43.489Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:06:43.489Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:06:43.494Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.495Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:06:43.495Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.496Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:06:43.497Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:06:43.497Z CNTRLR querying max. payload size... -2024-09-06T10:06:43.498Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:06:43.498Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:06:43.503Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.503Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:06:43.503Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.504Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:06:43.505Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:06:43.505Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:06:43.505Z CNTRLR Querying configured RF region... -2024-09-06T10:06:43.506Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:06:43.507Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:06:43.511Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.512Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:06:43.512Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.513Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:06:43.514Z CNTRLR The controller is using RF region Europe -2024-09-06T10:06:43.514Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:06:43.515Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:06:43.515Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:06:43.519Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.520Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:06:43.520Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.520Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:06:43.521Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:06:43.521Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:06:43.522Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:06:43.523Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:06:43.527Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.527Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:06:43.528Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.528Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:06:43.529Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:06:43.529Z CNTRLR Performing soft reset... -2024-09-06T10:06:43.530Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:06:43.531Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:06:43.534Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.535Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:06:43.536Z DRIVER all queues idle -2024-09-06T10:06:43.752Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:06:43.753Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.753Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:06:43.754Z CNTRLR reconnected and restarted -2024-09-06T10:06:43.754Z CNTRLR Starting hardware watchdog... -2024-09-06T10:06:43.754Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:06:43.754Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:06:43.755Z DRIVER all queues busy -2024-09-06T10:06:43.755Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:06:43.756Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:06:43.756Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:06:43.757Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:06:43.764Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.765Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.766Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:43.766Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.767Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:43.768Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:06:43.769Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:06:43.769Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:06:43.773Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.791Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:43.792Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.793Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:43.795Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:06:43.795Z CNTRLR querying controller IDs... -2024-09-06T10:06:43.796Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:06:43.797Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:06:43.798Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.800Z SERIAL « 0x01080120fd37611c0160 (10 bytes) -2024-09-06T10:06:43.800Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.801Z DRIVER « [RES] [GetControllerId] - home ID: 0xfd37611c - own node ID: 1 -2024-09-06T10:06:43.802Z CNTRLR received controller IDs: - home ID: 0xfd37611c - own node ID: 1 -2024-09-06T10:06:43.802Z CNTRLR Enabling TX status report... -2024-09-06T10:06:43.803Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:06:43.804Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:06:43.808Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.809Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:06:43.810Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.810Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:06:43.811Z CNTRLR Enabling TX status report successful... -2024-09-06T10:06:43.812Z CNTRLR finding SUC... -2024-09-06T10:06:43.813Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:06:43.813Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:06:43.815Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.816Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:06:43.817Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.817Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:06:43.818Z CNTRLR This is the SUC -2024-09-06T10:06:43.819Z DRIVER all queues idle -2024-09-06T10:06:43.839Z DRIVER Cache file for homeId 0xfd37611c found, attempting to restore the network from - cache... -2024-09-06T10:06:43.847Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:06:43.848Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:06:43.848Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:06:43.848Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:06:43.848Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:06:43.849Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:06:43.849Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:06:43.849Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:06:43.850Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:06:43.850Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:06:43.850Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:06:43.850Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:06:43.851Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:06:43.851Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:06:43.851Z CNTRLR Interview completed -2024-09-06T10:06:43.851Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:06:43.852Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:06:43.853Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:06:43.854Z DRIVER driver ready -2024-09-06T10:06:44.856Z CNTRLR Updating the controller NIF... -2024-09-06T10:06:44.858Z DRIVER all queues busy -2024-09-06T10:06:44.861Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:06:44.862Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:06:44.867Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.869Z CNTRLR performing hard reset... -2024-09-06T10:06:44.872Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:06:44.873Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:06:44.875Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.896Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:06:44.896Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.897Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:06:44.898Z CNTRLR hard reset succeeded -2024-09-06T10:06:44.898Z CNTRLR querying Serial API capabilities... -2024-09-06T10:06:44.899Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:06:44.899Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:06:44.902Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.906Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:06:44.907Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.908Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:06:44.908Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:06:44.909Z CNTRLR querying additional controller information... -2024-09-06T10:06:44.909Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:06:44.910Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:06:44.912Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.917Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:06:44.918Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.918Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:06:44.919Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:06:44.919Z CNTRLR querying version info... -2024-09-06T10:06:44.920Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:06:44.921Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:06:44.923Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.925Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:06:44.925Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.926Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:06:44.926Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:06:44.927Z CNTRLR querying protocol version info... -2024-09-06T10:06:44.927Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:06:44.928Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:06:44.929Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.932Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:06:44.933Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.933Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:06:44.934Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:06:44.934Z CNTRLR querying controller capabilities... -2024-09-06T10:06:44.935Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:06:44.935Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:06:44.938Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.939Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:06:44.939Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.940Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:06:44.941Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:06:44.941Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:06:44.941Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:06:44.942Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:06:44.947Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.948Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:06:44.948Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.949Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:06:44.949Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:06:44.949Z CNTRLR querying max. payload size... -2024-09-06T10:06:44.950Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:06:44.951Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:06:44.954Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.955Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:06:44.955Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.956Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:06:44.957Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:06:44.957Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:06:44.957Z CNTRLR Querying configured RF region... -2024-09-06T10:06:44.958Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:06:44.958Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:06:44.960Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.962Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:06:44.962Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.963Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:06:44.963Z CNTRLR The controller is using RF region Europe -2024-09-06T10:06:44.963Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:06:44.964Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:06:44.964Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:06:44.966Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.968Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:06:44.968Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.969Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:06:44.969Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:06:44.970Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:06:44.970Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:06:44.971Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:06:44.973Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.974Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:06:44.974Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:44.975Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:06:44.975Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:06:44.976Z CNTRLR Performing soft reset... -2024-09-06T10:06:44.976Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:06:44.977Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:06:44.978Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:44.979Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:06:44.979Z DRIVER all queues idle -2024-09-06T10:06:45.206Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:06:45.207Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.209Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:06:45.210Z CNTRLR reconnected and restarted -2024-09-06T10:06:45.210Z CNTRLR Starting hardware watchdog... -2024-09-06T10:06:45.211Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:06:45.212Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:06:45.213Z DRIVER all queues busy -2024-09-06T10:06:45.216Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:06:45.217Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:06:45.221Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:06:45.222Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:06:45.224Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.225Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.226Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:45.227Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.228Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:45.228Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:06:45.229Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:06:45.230Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:06:45.233Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.234Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:45.235Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.236Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:45.237Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:06:45.237Z CNTRLR querying controller IDs... -2024-09-06T10:06:45.238Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:06:45.239Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:06:45.242Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.243Z SERIAL « 0x01080120de273aaf01bb (10 bytes) -2024-09-06T10:06:45.244Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.245Z DRIVER « [RES] [GetControllerId] - home ID: 0xde273aaf - own node ID: 1 -2024-09-06T10:06:45.246Z CNTRLR received controller IDs: - home ID: 0xde273aaf - own node ID: 1 -2024-09-06T10:06:45.246Z CNTRLR Enabling TX status report... -2024-09-06T10:06:45.247Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:06:45.248Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:06:45.251Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.251Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:06:45.252Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.253Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:06:45.253Z CNTRLR Enabling TX status report successful... -2024-09-06T10:06:45.254Z CNTRLR finding SUC... -2024-09-06T10:06:45.254Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:06:45.255Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:06:45.258Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.259Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:06:45.259Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.260Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:06:45.261Z CNTRLR No SUC present in the network -2024-09-06T10:06:45.261Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:06:45.263Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:06:45.263Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:06:45.268Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:45.269Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:06:45.270Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:45.271Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:06:45.272Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:06:45.272Z DRIVER all queues idle -2024-09-06T10:06:45.278Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:06:45.278Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:06:45.279Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:06:45.279Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:06:45.279Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:06:45.279Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:06:45.280Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:06:45.280Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:06:45.280Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:06:45.281Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:06:45.281Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:06:45.281Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:06:45.281Z CNTRLR Interview completed -2024-09-06T10:06:45.282Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:06:45.282Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:06:45.283Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:06:45.284Z DRIVER driver ready -2024-09-06T10:06:49.900Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:06:49.902Z DRIVER all queues busy -2024-09-06T10:06:49.904Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:06:49.905Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:06:49.908Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.914Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:06:49.916Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.917Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:06:49.918Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:06:49.919Z DRIVER all queues idle -2024-09-06T10:06:53.955Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:06:53.956Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:53.958Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:06:53.959Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:06:53.959Z DRIVER 1 handler registered! -2024-09-06T10:06:53.960Z DRIVER invoking handler #0 -2024-09-06T10:06:53.961Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:06:54.063Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:06:54.065Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.066Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:06:54.067Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:06:54.067Z DRIVER 1 handler registered! -2024-09-06T10:06:54.068Z DRIVER invoking handler #0 -2024-09-06T10:06:54.068Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:06:54.071Z DRIVER the message was handled -2024-09-06T10:06:54.478Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:06:54.480Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.482Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:06:54.482Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:06:54.483Z DRIVER 1 handler registered! -2024-09-06T10:06:54.483Z DRIVER invoking handler #0 -2024-09-06T10:06:54.484Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:06:54.485Z CNTRLR finishing inclusion process... -2024-09-06T10:06:54.486Z DRIVER all queues busy -2024-09-06T10:06:54.489Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:06:54.491Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:06:54.493Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.531Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:06:54.531Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.532Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:06:54.533Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:06:54.533Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:06:54.539Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.540Z CNTRLR The inclusion process was stopped -2024-09-06T10:06:54.540Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:06:54.540Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:06:54.541Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:06:54.541Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:06:54.542Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:06:54.546Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.550Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:06:54.551Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.552Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:06:54.615Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:06:54.617Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.618Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:06:54.621Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:06:54.621Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:06:54.624Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.631Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:06:54.631Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.632Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:06:54.703Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:06:54.705Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.706Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:06:54.714Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:06:54.715Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:06:54.719Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.726Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:06:54.726Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.727Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:57:31.571Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:57:31.573Z DRIVER version 13.2.0 -2024-09-06T10:57:31.573Z DRIVER -2024-09-06T10:57:31.574Z DRIVER starting driver... -2024-09-06T10:57:31.574Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:57:31.583Z DRIVER serial port opened -2024-09-06T10:57:31.584Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:57:32.589Z DRIVER loading configuration... -2024-09-06T10:57:32.595Z CONFIG version 13.2.0 -2024-09-06T10:57:32.915Z DRIVER beginning interview... -2024-09-06T10:57:32.916Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:57:32.916Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:57:32.917Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:57:32.917Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:57:32.917Z CNTRLR querying Serial API capabilities... -2024-09-06T10:57:32.926Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:57:32.926Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:57:32.932Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.934Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:57:32.935Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.936Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:57:32.938Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:57:32.939Z CNTRLR querying additional controller information... -2024-09-06T10:57:32.940Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:57:32.940Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:57:32.948Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.948Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:57:32.949Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.950Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:57:32.950Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:57:32.951Z CNTRLR querying version info... -2024-09-06T10:57:32.952Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:57:32.952Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:57:32.957Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.958Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:57:32.959Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.959Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:57:32.960Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:57:32.960Z CNTRLR querying protocol version info... -2024-09-06T10:57:32.961Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:57:32.961Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:57:32.966Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.967Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:57:32.967Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.968Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:57:32.968Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:57:32.969Z CNTRLR querying controller capabilities... -2024-09-06T10:57:32.970Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:57:32.970Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:57:32.975Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.976Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:57:32.977Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.977Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:57:32.978Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:57:32.978Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:57:32.979Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:57:32.979Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:57:32.984Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.984Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:57:32.985Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.986Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:57:32.987Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:57:32.987Z CNTRLR querying max. payload size... -2024-09-06T10:57:32.988Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:57:32.988Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:57:32.992Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.993Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:57:32.993Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.994Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:57:32.994Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:57:32.995Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:57:32.995Z CNTRLR Querying configured RF region... -2024-09-06T10:57:32.996Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:57:32.996Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:57:33.001Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.001Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:57:33.002Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.002Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:57:33.003Z CNTRLR The controller is using RF region Europe -2024-09-06T10:57:33.003Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:57:33.004Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:57:33.005Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:57:33.009Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.009Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:57:33.010Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.010Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:57:33.011Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:57:33.011Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:57:33.012Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:57:33.012Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:57:33.016Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.016Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:57:33.017Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.017Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:57:33.018Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:57:33.019Z CNTRLR Performing soft reset... -2024-09-06T10:57:33.020Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:57:33.020Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:57:33.024Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.025Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:57:33.026Z DRIVER all queues idle -2024-09-06T10:57:33.248Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:57:33.249Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.249Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:57:33.250Z CNTRLR reconnected and restarted -2024-09-06T10:57:33.250Z CNTRLR Starting hardware watchdog... -2024-09-06T10:57:33.250Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:57:33.251Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:57:33.251Z DRIVER all queues busy -2024-09-06T10:57:33.251Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:57:33.252Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:57:33.253Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:57:33.253Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:57:33.254Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.255Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.257Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:33.257Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.258Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:33.258Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:57:33.259Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:57:33.259Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:57:33.261Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.263Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:33.263Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.264Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:33.265Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:57:33.266Z CNTRLR querying controller IDs... -2024-09-06T10:57:33.267Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:57:33.267Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:57:33.271Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.271Z SERIAL « 0x01080120de273aaf01bb (10 bytes) -2024-09-06T10:57:33.272Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.272Z DRIVER « [RES] [GetControllerId] - home ID: 0xde273aaf - own node ID: 1 -2024-09-06T10:57:33.273Z CNTRLR received controller IDs: - home ID: 0xde273aaf - own node ID: 1 -2024-09-06T10:57:33.273Z CNTRLR Enabling TX status report... -2024-09-06T10:57:33.274Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:57:33.274Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:57:33.277Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.278Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:57:33.278Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.279Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:57:33.279Z CNTRLR Enabling TX status report successful... -2024-09-06T10:57:33.279Z CNTRLR finding SUC... -2024-09-06T10:57:33.280Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:57:33.280Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:57:33.287Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.288Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:57:33.288Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.289Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:57:33.290Z CNTRLR This is the SUC -2024-09-06T10:57:33.290Z DRIVER all queues idle -2024-09-06T10:57:33.298Z DRIVER Cache file for homeId 0xde273aaf found, attempting to restore the network from - cache... -2024-09-06T10:57:33.307Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:57:33.307Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:57:33.308Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:57:33.308Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:57:33.308Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:57:33.308Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:57:33.309Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:57:33.309Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:57:33.310Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:57:33.310Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:57:33.310Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:57:33.310Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:57:33.310Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:57:33.311Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:57:33.311Z CNTRLR Interview completed -2024-09-06T10:57:33.311Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:57:33.312Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:57:33.313Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:57:33.314Z DRIVER driver ready -2024-09-06T10:57:34.316Z CNTRLR Updating the controller NIF... -2024-09-06T10:57:34.318Z DRIVER all queues busy -2024-09-06T10:57:34.321Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:57:34.323Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:57:34.328Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.330Z CNTRLR performing hard reset... -2024-09-06T10:57:34.332Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:57:34.333Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:57:34.336Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.357Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:57:34.358Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.359Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:57:34.359Z CNTRLR hard reset succeeded -2024-09-06T10:57:34.360Z CNTRLR querying Serial API capabilities... -2024-09-06T10:57:34.361Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:57:34.361Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:57:34.363Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.368Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:57:34.368Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.369Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:57:34.370Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:57:34.370Z CNTRLR querying additional controller information... -2024-09-06T10:57:34.371Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:57:34.371Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:57:34.373Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.378Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:57:34.379Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.379Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:57:34.380Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:57:34.380Z CNTRLR querying version info... -2024-09-06T10:57:34.381Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:57:34.382Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:57:34.384Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.386Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:57:34.387Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.387Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:57:34.388Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:57:34.388Z CNTRLR querying protocol version info... -2024-09-06T10:57:34.389Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:57:34.389Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:57:34.391Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.394Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:57:34.395Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.395Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:57:34.396Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:57:34.396Z CNTRLR querying controller capabilities... -2024-09-06T10:57:34.397Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:57:34.397Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:57:34.399Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.400Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:57:34.401Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.401Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:57:34.402Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:57:34.402Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:57:34.403Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:57:34.403Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:57:34.408Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.409Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:57:34.409Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.410Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:57:34.410Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:57:34.410Z CNTRLR querying max. payload size... -2024-09-06T10:57:34.411Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:57:34.412Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:57:34.414Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.415Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:57:34.416Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.416Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:57:34.417Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:57:34.417Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:57:34.418Z CNTRLR Querying configured RF region... -2024-09-06T10:57:34.418Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:57:34.419Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:57:34.421Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.422Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:57:34.423Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.423Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:57:34.424Z CNTRLR The controller is using RF region Europe -2024-09-06T10:57:34.424Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:57:34.425Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:57:34.425Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:57:34.428Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.429Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:57:34.429Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.429Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:57:34.430Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:57:34.430Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:57:34.431Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:57:34.431Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:57:34.433Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.434Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:57:34.435Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.435Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:57:34.436Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:57:34.436Z CNTRLR Performing soft reset... -2024-09-06T10:57:34.437Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:57:34.437Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:57:34.439Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.440Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:57:34.441Z DRIVER all queues idle -2024-09-06T10:57:34.659Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:57:34.659Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.660Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:57:34.661Z CNTRLR reconnected and restarted -2024-09-06T10:57:34.661Z CNTRLR Starting hardware watchdog... -2024-09-06T10:57:34.661Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:57:34.662Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:57:34.662Z DRIVER all queues busy -2024-09-06T10:57:34.663Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:57:34.664Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:57:34.665Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:57:34.666Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:57:34.667Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.668Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.670Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:34.670Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.671Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:34.671Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:57:34.672Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:57:34.672Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:57:34.675Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.676Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:34.677Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.677Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:34.678Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:57:34.679Z CNTRLR querying controller IDs... -2024-09-06T10:57:34.679Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:57:34.680Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:57:34.682Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.683Z SERIAL « 0x01080120f6cb98710103 (10 bytes) -2024-09-06T10:57:34.684Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.684Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6cb9871 - own node ID: 1 -2024-09-06T10:57:34.685Z CNTRLR received controller IDs: - home ID: 0xf6cb9871 - own node ID: 1 -2024-09-06T10:57:34.685Z CNTRLR Enabling TX status report... -2024-09-06T10:57:34.686Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:57:34.686Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:57:34.690Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.690Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:57:34.691Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.691Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:57:34.692Z CNTRLR Enabling TX status report successful... -2024-09-06T10:57:34.692Z CNTRLR finding SUC... -2024-09-06T10:57:34.693Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:57:34.693Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:57:34.695Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.696Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:57:34.697Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.697Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:57:34.698Z CNTRLR No SUC present in the network -2024-09-06T10:57:34.698Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:57:34.699Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:57:34.699Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:57:34.702Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:34.704Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:57:34.705Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:34.705Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:57:34.706Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:57:34.706Z DRIVER all queues idle -2024-09-06T10:57:34.712Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:57:34.712Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:57:34.713Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:57:34.713Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:57:34.713Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:57:34.713Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:57:34.714Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:57:34.714Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:57:34.714Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:57:34.714Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:57:34.715Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:57:34.715Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:57:34.715Z CNTRLR Interview completed -2024-09-06T10:57:34.715Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:57:34.716Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:57:34.717Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:57:34.718Z DRIVER driver ready -2024-09-06T10:57:39.362Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:57:39.364Z DRIVER all queues busy -2024-09-06T10:57:39.366Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:57:39.367Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:57:39.370Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:39.376Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:57:39.378Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:39.379Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:57:39.381Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:57:39.382Z DRIVER all queues idle -2024-09-06T10:57:43.417Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:57:43.419Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.420Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:57:43.421Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:57:43.422Z DRIVER 1 handler registered! -2024-09-06T10:57:43.422Z DRIVER invoking handler #0 -2024-09-06T10:57:43.423Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:57:43.521Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:57:43.523Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.524Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:57:43.525Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:57:43.526Z DRIVER 1 handler registered! -2024-09-06T10:57:43.526Z DRIVER invoking handler #0 -2024-09-06T10:57:43.526Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:57:43.531Z DRIVER the message was handled -2024-09-06T10:57:43.939Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:57:43.941Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.942Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:57:43.943Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:57:43.944Z DRIVER 1 handler registered! -2024-09-06T10:57:43.944Z DRIVER invoking handler #0 -2024-09-06T10:57:43.945Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:57:43.945Z CNTRLR finishing inclusion process... -2024-09-06T10:57:43.947Z DRIVER all queues busy -2024-09-06T10:57:43.949Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:57:43.950Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:57:43.953Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:43.993Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:57:43.994Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.995Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:57:43.996Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:57:43.996Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:57:44.001Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.002Z CNTRLR The inclusion process was stopped -2024-09-06T10:57:44.003Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:57:44.003Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:57:44.003Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:57:44.004Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:57:44.005Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:57:44.009Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.013Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:57:44.014Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.014Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:57:44.078Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:57:44.080Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.082Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:57:44.086Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:57:44.087Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:57:44.090Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.096Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:57:44.097Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.098Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:57:44.170Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:57:44.171Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.174Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:57:44.179Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:57:44.179Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:57:44.183Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.190Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:57:44.191Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.191Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:57:44.203Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T10:57:44.203Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.204Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:57:54.232Z CNTRLR [Node 002] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T10:57:54.233Z CNTRLR [Node 002] Security S2 bootstrapping failed: did not receive the node's desire - d security classes. -2024-09-06T10:57:54.235Z DRIVER the message was handled -2024-09-06T10:57:54.236Z DRIVER all queues idle -2024-09-06T10:59:17.023Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:59:17.025Z DRIVER version 13.2.0 -2024-09-06T10:59:17.026Z DRIVER -2024-09-06T10:59:17.026Z DRIVER starting driver... -2024-09-06T10:59:17.026Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T10:59:17.035Z DRIVER serial port opened -2024-09-06T10:59:17.036Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:59:18.040Z DRIVER loading configuration... -2024-09-06T10:59:18.042Z CONFIG version 13.2.0 -2024-09-06T10:59:18.358Z DRIVER beginning interview... -2024-09-06T10:59:18.359Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:59:18.359Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:59:18.359Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:59:18.359Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:59:18.359Z CNTRLR querying Serial API capabilities... -2024-09-06T10:59:18.361Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:59:18.361Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:59:18.364Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.375Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:59:18.375Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.376Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:59:18.377Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:59:18.377Z CNTRLR querying additional controller information... -2024-09-06T10:59:18.378Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:59:18.378Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:59:18.383Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.385Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T10:59:18.386Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.386Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:59:18.387Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:59:18.388Z CNTRLR querying version info... -2024-09-06T10:59:18.389Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:59:18.389Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:59:18.394Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.395Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:59:18.395Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.395Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:59:18.396Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:59:18.396Z CNTRLR querying protocol version info... -2024-09-06T10:59:18.397Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:59:18.398Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:59:18.401Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.405Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:59:18.406Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.406Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:59:18.407Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:59:18.407Z CNTRLR querying controller capabilities... -2024-09-06T10:59:18.408Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:59:18.408Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:59:18.413Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.414Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T10:59:18.414Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.414Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T10:59:18.415Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T10:59:18.415Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:59:18.416Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:59:18.417Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:59:18.423Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.424Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:59:18.424Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.425Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:59:18.425Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:59:18.425Z CNTRLR querying max. payload size... -2024-09-06T10:59:18.426Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:59:18.426Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:59:18.432Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.432Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:59:18.433Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.433Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:59:18.434Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:59:18.435Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:59:18.435Z CNTRLR Querying configured RF region... -2024-09-06T10:59:18.436Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:59:18.436Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:59:18.440Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.441Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:59:18.441Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.442Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:59:18.442Z CNTRLR The controller is using RF region Europe -2024-09-06T10:59:18.442Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:59:18.443Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:59:18.443Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:59:18.448Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.449Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:59:18.449Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.450Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:59:18.451Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:59:18.451Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:59:18.452Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:59:18.452Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:59:18.457Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.458Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:59:18.458Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.458Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:59:18.459Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:59:18.459Z CNTRLR Performing soft reset... -2024-09-06T10:59:18.460Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:59:18.460Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:59:18.463Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.464Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:59:18.464Z DRIVER all queues idle -2024-09-06T10:59:18.685Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:59:18.686Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.686Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:59:18.687Z CNTRLR reconnected and restarted -2024-09-06T10:59:18.687Z CNTRLR Starting hardware watchdog... -2024-09-06T10:59:18.687Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:59:18.687Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:59:18.688Z DRIVER all queues busy -2024-09-06T10:59:18.688Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:59:18.688Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:59:18.689Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:59:18.690Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:59:18.691Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.694Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.694Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:18.695Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.695Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:18.696Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:59:18.697Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:59:18.698Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:59:18.702Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.703Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:18.703Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.704Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:18.705Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:59:18.705Z CNTRLR querying controller IDs... -2024-09-06T10:59:18.706Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:59:18.706Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:59:18.709Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.710Z SERIAL « 0x01080120f6cb98710103 (10 bytes) -2024-09-06T10:59:18.710Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.711Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6cb9871 - own node ID: 1 -2024-09-06T10:59:18.711Z CNTRLR received controller IDs: - home ID: 0xf6cb9871 - own node ID: 1 -2024-09-06T10:59:18.712Z CNTRLR Enabling TX status report... -2024-09-06T10:59:18.712Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:59:18.713Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:59:18.717Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.717Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:59:18.718Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.718Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:59:18.719Z CNTRLR Enabling TX status report successful... -2024-09-06T10:59:18.719Z CNTRLR finding SUC... -2024-09-06T10:59:18.720Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:59:18.721Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:59:18.724Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.725Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:59:18.726Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.726Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:59:18.727Z CNTRLR This is the SUC -2024-09-06T10:59:18.728Z DRIVER all queues idle -2024-09-06T10:59:18.744Z DRIVER Cache file for homeId 0xf6cb9871 found, attempting to restore the network from - cache... -2024-09-06T10:59:18.746Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:59:18.747Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:59:18.747Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:59:18.748Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:59:18.748Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:59:18.748Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T10:59:18.748Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:59:18.748Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T10:59:18.749Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:59:18.749Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T10:59:18.749Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:59:18.749Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T10:59:18.750Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:59:18.750Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T10:59:18.750Z CNTRLR Interview completed -2024-09-06T10:59:18.750Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:59:18.751Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:59:18.753Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:59:18.753Z DRIVER driver ready -2024-09-06T10:59:19.754Z CNTRLR Updating the controller NIF... -2024-09-06T10:59:19.757Z DRIVER all queues busy -2024-09-06T10:59:19.759Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:59:19.761Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:59:19.765Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.768Z CNTRLR performing hard reset... -2024-09-06T10:59:19.770Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T10:59:19.771Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T10:59:19.773Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.795Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T10:59:19.795Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.796Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T10:59:19.797Z CNTRLR hard reset succeeded -2024-09-06T10:59:19.797Z CNTRLR querying Serial API capabilities... -2024-09-06T10:59:19.798Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:59:19.798Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:59:19.812Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.817Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T10:59:19.817Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.818Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:59:19.819Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:59:19.819Z CNTRLR querying additional controller information... -2024-09-06T10:59:19.820Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:59:19.821Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:59:19.823Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.827Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:59:19.828Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.828Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:59:19.829Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:59:19.829Z CNTRLR querying version info... -2024-09-06T10:59:19.830Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:59:19.830Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:59:19.833Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.834Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T10:59:19.835Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.835Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T10:59:19.836Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T10:59:19.836Z CNTRLR querying protocol version info... -2024-09-06T10:59:19.837Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:59:19.838Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:59:19.842Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.843Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T10:59:19.843Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.844Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T10:59:19.844Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T10:59:19.845Z CNTRLR querying controller capabilities... -2024-09-06T10:59:19.845Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:59:19.846Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:59:19.848Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.849Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:59:19.850Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.850Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:59:19.851Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:59:19.851Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:59:19.852Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:59:19.852Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:59:19.854Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.857Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:59:19.857Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.858Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:59:19.858Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:59:19.858Z CNTRLR querying max. payload size... -2024-09-06T10:59:19.859Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:59:19.859Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:59:19.863Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.863Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:59:19.864Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.864Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:59:19.865Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:59:19.865Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:59:19.865Z CNTRLR Querying configured RF region... -2024-09-06T10:59:19.866Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:59:19.866Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:59:19.869Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.870Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:59:19.870Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.871Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:59:19.872Z CNTRLR The controller is using RF region Europe -2024-09-06T10:59:19.872Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:59:19.872Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:59:19.873Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:59:19.875Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.876Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:59:19.877Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.878Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:59:19.878Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:59:19.878Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:59:19.879Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:59:19.879Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:59:19.881Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.882Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:59:19.883Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:19.883Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:59:19.884Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:59:19.884Z CNTRLR Performing soft reset... -2024-09-06T10:59:19.885Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:59:19.885Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:59:19.887Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:19.888Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:59:19.889Z DRIVER all queues idle -2024-09-06T10:59:20.112Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T10:59:20.114Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.116Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:59:20.117Z CNTRLR reconnected and restarted -2024-09-06T10:59:20.117Z CNTRLR Starting hardware watchdog... -2024-09-06T10:59:20.118Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:59:20.120Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:59:20.121Z DRIVER all queues busy -2024-09-06T10:59:20.123Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:59:20.125Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:59:20.128Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:59:20.128Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:59:20.130Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.131Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.132Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:20.133Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.134Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:20.134Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:59:20.135Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:59:20.135Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:59:20.138Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.139Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:20.140Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.141Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:20.141Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:59:20.142Z CNTRLR querying controller IDs... -2024-09-06T10:59:20.142Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:59:20.143Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:59:20.145Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.146Z SERIAL « 0x01080120cdaf1be0014e (10 bytes) -2024-09-06T10:59:20.147Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.147Z DRIVER « [RES] [GetControllerId] - home ID: 0xcdaf1be0 - own node ID: 1 -2024-09-06T10:59:20.148Z CNTRLR received controller IDs: - home ID: 0xcdaf1be0 - own node ID: 1 -2024-09-06T10:59:20.148Z CNTRLR Enabling TX status report... -2024-09-06T10:59:20.149Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:59:20.150Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:59:20.152Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.153Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:59:20.154Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.154Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:59:20.155Z CNTRLR Enabling TX status report successful... -2024-09-06T10:59:20.155Z CNTRLR finding SUC... -2024-09-06T10:59:20.156Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:59:20.156Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:59:20.159Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.160Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:59:20.160Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.161Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:59:20.161Z CNTRLR No SUC present in the network -2024-09-06T10:59:20.161Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:59:20.162Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T10:59:20.163Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T10:59:20.166Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:20.168Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:59:20.168Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:20.169Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:59:20.170Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:59:20.170Z DRIVER all queues idle -2024-09-06T10:59:20.175Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:59:20.175Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:59:20.175Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:59:20.175Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T10:59:20.176Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:59:20.176Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T10:59:20.176Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:59:20.176Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T10:59:20.176Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:59:20.176Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T10:59:20.177Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:59:20.177Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T10:59:20.177Z CNTRLR Interview completed -2024-09-06T10:59:20.177Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:59:20.178Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:59:20.178Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:59:20.179Z DRIVER driver ready -2024-09-06T10:59:24.799Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T10:59:24.801Z DRIVER all queues busy -2024-09-06T10:59:24.803Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T10:59:24.805Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T10:59:24.808Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:24.814Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T10:59:24.815Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:24.817Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T10:59:24.818Z CNTRLR The controller is now ready to add nodes -2024-09-06T10:59:24.818Z DRIVER all queues idle -2024-09-06T10:59:28.855Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T10:59:28.856Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:28.857Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T10:59:28.858Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:59:28.859Z DRIVER 1 handler registered! -2024-09-06T10:59:28.859Z DRIVER invoking handler #0 -2024-09-06T10:59:28.861Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T10:59:28.960Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T10:59:28.961Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:28.963Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T10:59:28.964Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:59:28.964Z DRIVER 1 handler registered! -2024-09-06T10:59:28.964Z DRIVER invoking handler #0 -2024-09-06T10:59:28.965Z CNTRLR handling add node request (status = AddingController) -2024-09-06T10:59:28.969Z DRIVER the message was handled -2024-09-06T10:59:29.378Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T10:59:29.379Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.381Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T10:59:29.381Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T10:59:29.382Z DRIVER 1 handler registered! -2024-09-06T10:59:29.382Z DRIVER invoking handler #0 -2024-09-06T10:59:29.383Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T10:59:29.383Z CNTRLR finishing inclusion process... -2024-09-06T10:59:29.385Z DRIVER all queues busy -2024-09-06T10:59:29.386Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T10:59:29.388Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T10:59:29.390Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.428Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T10:59:29.428Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.429Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T10:59:29.430Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T10:59:29.430Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T10:59:29.432Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.433Z CNTRLR The inclusion process was stopped -2024-09-06T10:59:29.434Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T10:59:29.434Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T10:59:29.434Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T10:59:29.435Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T10:59:29.436Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T10:59:29.441Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.444Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T10:59:29.445Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.446Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T10:59:29.510Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T10:59:29.510Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.511Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T10:59:29.513Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T10:59:29.514Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T10:59:29.516Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.523Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T10:59:29.524Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.525Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T10:59:29.596Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T10:59:29.598Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.600Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T10:59:29.607Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T10:59:29.608Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T10:59:29.612Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.618Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:29.619Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.621Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.519Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T10:59:31.520Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.520Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T10:59:31.521Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.522Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.523Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.524Z DRIVER handling request SendDataBridge (169) -2024-09-06T10:59:31.524Z DRIVER no handlers registered! -2024-09-06T10:59:31.528Z SERIAL « 0x010f00a8000102069f050002018700e0a3 (17 bytes) -2024-09-06T10:59:31.528Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.529Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T10:59:31.531Z SERIAL » 0x011200a90102069f060002018725000000000871 (20 bytes) -2024-09-06T10:59:31.531Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T10:59:31.538Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.541Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.542Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.542Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.560Z SERIAL « 0x011d00a90800000100e07f7f7f7f00000300000000030100007f7f7f7f7fdc (31 bytes) -2024-09-06T10:59:31.560Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.561Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.562Z DRIVER all queues idle -2024-09-06T10:59:31.585Z SERIAL « 0x012c00a8000102239f08000000e5c77047befd9186c3e9b149d76b6a24478fb3b (46 bytes) - f6edfcf07a45dd684715d00e077 -2024-09-06T10:59:31.586Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.587Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x0000e5c77047befd9186c3e9b149d76b6a24478fb3bf6edfcf07a - 45dd684715d -2024-09-06T10:59:31.588Z DRIVER all queues busy -2024-09-06T10:59:31.588Z SERIAL » 0x012f00a90102239f08017c2906e00e061e3f6f7d227f5b1db140bafac28e9d1bc (49 bytes) - f98beec29253f53703b25000000000925 -2024-09-06T10:59:31.589Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0x7c2906e00e061e3f6f7d227f5b1db140bafac28e9d1bcf98beec2 - 9253f53703b -2024-09-06T10:59:31.598Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.604Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.605Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.605Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.626Z SERIAL « 0x011d00a90900000200e07f7f7f7f00000300000000030100007f7f7f7f7fde (31 bytes) -2024-09-06T10:59:31.627Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.627Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.628Z DRIVER all queues idle -2024-09-06T10:59:31.644Z SERIAL « 0x010c00a8000102039f012500e000 (14 bytes) -2024-09-06T10:59:31.645Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.646Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceGet] - sequence number: 37 -2024-09-06T10:59:31.648Z DRIVER all queues busy -2024-09-06T10:59:31.649Z SERIAL » 0x012000a90102149f024d01716f34f4e50e84f9ebcaefe9ccc5957c05000000000 (34 bytes) - a30 -2024-09-06T10:59:31.649Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 10 - └─[Security2CCNonceReport] - sequence number: 77 - SOS: true - MOS: false - receiver entropy: 0x716f34f4e50e84f9ebcaefe9ccc5957c -2024-09-06T10:59:31.655Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.662Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.663Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.663Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.678Z SERIAL « 0x011d00a90a00000100e07f7f7f7f00000300000000030100007f7f7f7f7fde (31 bytes) -2024-09-06T10:59:31.679Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.680Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.680Z DRIVER all queues idle -2024-09-06T10:59:31.707Z SERIAL « 0x012d00a8000102249f032601124195e514d76c422a4164b98ff1cdfc4fa56dc29 (47 bytes) - c878e6af217c099e380ecf700e04f -2024-09-06T10:59:31.710Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.711Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] [INVALID] - error: Security2CC_CannotDecode -2024-09-06T10:59:31.711Z CNTRLR « [Node 002] Ignoring KEXSet because the DSK has not been verified yet -2024-09-06T10:59:36.682Z DRIVER all queues busy -2024-09-06T10:59:36.685Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:59:36.687Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:59:36.689Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:36.692Z SERIAL « 0x0107013b9593937f28 (9 bytes) -2024-09-06T10:59:36.693Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:36.694Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -107 dBm - channel 1: -109 dBm - channel 2: -109 dBm - channel 3: N/A -2024-09-06T10:59:36.698Z DRIVER all queues idle -2024-09-06T10:59:41.805Z SERIAL « 0x011b00a8000102129f032700801ff10de6f6395905fa5a12d39500e0e4 (29 bytes) -2024-09-06T10:59:41.808Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:41.810Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] [INVALID] - error: Security2CC_NoSPAN -2024-09-06T10:59:41.811Z CNTRLR « [Node 002] Ignoring KEXSet because the DSK has not been verified yet -2024-09-06T10:59:51.877Z SERIAL « 0x011b00a8000102129f03280062143123038d8f0b1e8dac5787c800df7f (29 bytes) -2024-09-06T10:59:51.878Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:51.879Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] [INVALID] - error: Security2CC_NoSPAN -2024-09-06T10:59:51.880Z CNTRLR « [Node 002] Ignoring KEXSet because the DSK has not been verified yet -2024-09-06T11:00:01.940Z SERIAL « 0x011b00a8000102129f0329007b1f11dcdb069cd1958ecb16ed5300e049 (29 bytes) -2024-09-06T11:00:01.941Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:01.941Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] [INVALID] - error: Security2CC_NoSPAN -2024-09-06T11:00:01.942Z CNTRLR « [Node 002] Ignoring KEXSet because the DSK has not been verified yet -2024-09-06T11:00:06.683Z DRIVER all queues busy -2024-09-06T11:00:06.685Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:00:06.687Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:00:06.690Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:06.692Z SERIAL « 0x0107013b9693937f2b (9 bytes) -2024-09-06T11:00:06.692Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:06.693Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -106 dBm - channel 1: -109 dBm - channel 2: -109 dBm - channel 3: N/A -2024-09-06T11:00:06.694Z DRIVER all queues idle -2024-09-06T11:00:13.678Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:00:13.680Z DRIVER version 13.2.0 -2024-09-06T11:00:13.680Z DRIVER -2024-09-06T11:00:13.680Z DRIVER starting driver... -2024-09-06T11:00:13.681Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T11:00:13.689Z DRIVER serial port opened -2024-09-06T11:00:13.690Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:00:14.695Z DRIVER loading configuration... -2024-09-06T11:00:14.701Z CONFIG version 13.2.0 -2024-09-06T11:00:15.022Z DRIVER beginning interview... -2024-09-06T11:00:15.023Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:00:15.023Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:00:15.024Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:00:15.024Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:00:15.024Z CNTRLR querying Serial API capabilities... -2024-09-06T11:00:15.033Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:00:15.034Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:00:15.037Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.044Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:00:15.045Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.046Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:00:15.048Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:00:15.048Z CNTRLR querying additional controller information... -2024-09-06T11:00:15.049Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:00:15.050Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:00:15.062Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.064Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T11:00:15.065Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.065Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:00:15.066Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:00:15.066Z CNTRLR querying version info... -2024-09-06T11:00:15.067Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:00:15.068Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:00:15.073Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.074Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:00:15.075Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.076Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:00:15.076Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:00:15.077Z CNTRLR querying protocol version info... -2024-09-06T11:00:15.078Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:00:15.078Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:00:15.083Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.084Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:00:15.084Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.085Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:00:15.086Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:00:15.086Z CNTRLR querying controller capabilities... -2024-09-06T11:00:15.088Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:00:15.088Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:00:15.093Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.093Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T11:00:15.094Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.095Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T11:00:15.096Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T11:00:15.096Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:00:15.097Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:00:15.098Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:00:15.103Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.103Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:00:15.104Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.105Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:00:15.106Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:00:15.106Z CNTRLR querying max. payload size... -2024-09-06T11:00:15.107Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:00:15.107Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:00:15.112Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.113Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:00:15.113Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.114Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:00:15.114Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:00:15.115Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:00:15.115Z CNTRLR Querying configured RF region... -2024-09-06T11:00:15.116Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:00:15.117Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:00:15.122Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.122Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:00:15.123Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.123Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:00:15.124Z CNTRLR The controller is using RF region Europe -2024-09-06T11:00:15.124Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:00:15.125Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:00:15.126Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:00:15.130Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.131Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:00:15.131Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.132Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:00:15.133Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:00:15.133Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:00:15.134Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:00:15.134Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:00:15.139Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.139Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:00:15.139Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.140Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:00:15.141Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:00:15.141Z CNTRLR Performing soft reset... -2024-09-06T11:00:15.142Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:00:15.143Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:00:15.148Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.149Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:00:15.150Z DRIVER all queues idle -2024-09-06T11:00:15.373Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:00:15.374Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.374Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:00:15.375Z CNTRLR reconnected and restarted -2024-09-06T11:00:15.375Z CNTRLR Starting hardware watchdog... -2024-09-06T11:00:15.376Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:00:15.376Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:00:15.377Z DRIVER all queues busy -2024-09-06T11:00:15.377Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:00:15.378Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:00:15.379Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:00:15.380Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:00:15.383Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.384Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.387Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:15.388Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.389Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:15.390Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:00:15.391Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:00:15.392Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:00:15.394Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.395Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:15.396Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.397Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:15.398Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:00:15.398Z CNTRLR querying controller IDs... -2024-09-06T11:00:15.399Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:00:15.400Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:00:15.406Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.407Z SERIAL « 0x01080120cdaf1be0014e (10 bytes) -2024-09-06T11:00:15.408Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.409Z DRIVER « [RES] [GetControllerId] - home ID: 0xcdaf1be0 - own node ID: 1 -2024-09-06T11:00:15.410Z CNTRLR received controller IDs: - home ID: 0xcdaf1be0 - own node ID: 1 -2024-09-06T11:00:15.410Z CNTRLR Enabling TX status report... -2024-09-06T11:00:15.411Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:00:15.412Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:00:15.415Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.416Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:00:15.416Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.417Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:00:15.418Z CNTRLR Enabling TX status report successful... -2024-09-06T11:00:15.418Z CNTRLR finding SUC... -2024-09-06T11:00:15.419Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:00:15.419Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:00:15.424Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.425Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:00:15.426Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.427Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:00:15.428Z CNTRLR This is the SUC -2024-09-06T11:00:15.429Z DRIVER all queues idle -2024-09-06T11:00:15.453Z DRIVER Cache file for homeId 0xcdaf1be0 found, attempting to restore the network from - cache... -2024-09-06T11:00:15.456Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:00:15.456Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:00:15.457Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:00:15.457Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:00:15.457Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:00:15.458Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T11:00:15.458Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:00:15.458Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T11:00:15.459Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:00:15.459Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T11:00:15.459Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:00:15.460Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T11:00:15.460Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:00:15.460Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T11:00:15.461Z CNTRLR Interview completed -2024-09-06T11:00:15.461Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:00:15.462Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:00:15.463Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:00:15.464Z DRIVER driver ready -2024-09-06T11:00:16.466Z CNTRLR Updating the controller NIF... -2024-09-06T11:00:16.468Z DRIVER all queues busy -2024-09-06T11:00:16.471Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:00:16.472Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:00:16.476Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.479Z CNTRLR performing hard reset... -2024-09-06T11:00:16.481Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T11:00:16.482Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T11:00:16.484Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.505Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T11:00:16.506Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.507Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T11:00:16.507Z CNTRLR hard reset succeeded -2024-09-06T11:00:16.508Z CNTRLR querying Serial API capabilities... -2024-09-06T11:00:16.509Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:00:16.509Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:00:16.511Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.515Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:00:16.516Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.517Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:00:16.517Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:00:16.518Z CNTRLR querying additional controller information... -2024-09-06T11:00:16.518Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:00:16.519Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:00:16.521Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.526Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:00:16.527Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.527Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:00:16.528Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:00:16.529Z CNTRLR querying version info... -2024-09-06T11:00:16.529Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:00:16.530Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:00:16.532Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.534Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:00:16.535Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.535Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:00:16.536Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:00:16.536Z CNTRLR querying protocol version info... -2024-09-06T11:00:16.537Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:00:16.537Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:00:16.539Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.542Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:00:16.542Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.543Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:00:16.544Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:00:16.544Z CNTRLR querying controller capabilities... -2024-09-06T11:00:16.545Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:00:16.545Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:00:16.547Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.548Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:00:16.549Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.549Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:00:16.550Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:00:16.550Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:00:16.551Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:00:16.551Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:00:16.554Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.556Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:00:16.557Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.557Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:00:16.558Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:00:16.558Z CNTRLR querying max. payload size... -2024-09-06T11:00:16.559Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:00:16.560Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:00:16.562Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.563Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:00:16.563Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.564Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:00:16.565Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:00:16.565Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:00:16.565Z CNTRLR Querying configured RF region... -2024-09-06T11:00:16.566Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:00:16.566Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:00:16.568Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.569Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:00:16.570Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.570Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:00:16.571Z CNTRLR The controller is using RF region Europe -2024-09-06T11:00:16.571Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:00:16.572Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:00:16.572Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:00:16.574Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.576Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:00:16.576Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.577Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:00:16.578Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:00:16.578Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:00:16.579Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:00:16.579Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:00:16.581Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.582Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:00:16.583Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.583Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:00:16.584Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:00:16.584Z CNTRLR Performing soft reset... -2024-09-06T11:00:16.585Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:00:16.585Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:00:16.587Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.588Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:00:16.588Z DRIVER all queues idle -2024-09-06T11:00:16.813Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:00:16.814Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.814Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:00:16.815Z CNTRLR reconnected and restarted -2024-09-06T11:00:16.815Z CNTRLR Starting hardware watchdog... -2024-09-06T11:00:16.815Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:00:16.816Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:00:16.816Z DRIVER all queues busy -2024-09-06T11:00:16.817Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:00:16.817Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:00:16.818Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:00:16.818Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:00:16.819Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.821Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.822Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:16.823Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.823Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:16.824Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:00:16.824Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:00:16.825Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:00:16.827Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.829Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:16.829Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.830Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:16.830Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:00:16.831Z CNTRLR querying controller IDs... -2024-09-06T11:00:16.831Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:00:16.832Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:00:16.834Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.836Z SERIAL « 0x01080120d188a45e0174 (10 bytes) -2024-09-06T11:00:16.836Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.837Z DRIVER « [RES] [GetControllerId] - home ID: 0xd188a45e - own node ID: 1 -2024-09-06T11:00:16.837Z CNTRLR received controller IDs: - home ID: 0xd188a45e - own node ID: 1 -2024-09-06T11:00:16.837Z CNTRLR Enabling TX status report... -2024-09-06T11:00:16.838Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:00:16.839Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:00:16.842Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.842Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:00:16.843Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.843Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:00:16.844Z CNTRLR Enabling TX status report successful... -2024-09-06T11:00:16.844Z CNTRLR finding SUC... -2024-09-06T11:00:16.844Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:00:16.845Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:00:16.848Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.848Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:00:16.849Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.849Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:00:16.850Z CNTRLR No SUC present in the network -2024-09-06T11:00:16.850Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:00:16.851Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T11:00:16.852Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T11:00:16.854Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:16.857Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:00:16.857Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:16.858Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:00:16.859Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:00:16.860Z DRIVER all queues idle -2024-09-06T11:00:16.865Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:00:16.866Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:00:16.866Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:00:16.867Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T11:00:16.867Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:00:16.867Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T11:00:16.868Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:00:16.868Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T11:00:16.868Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:00:16.868Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T11:00:16.869Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:00:16.869Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T11:00:16.869Z CNTRLR Interview completed -2024-09-06T11:00:16.869Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:00:16.870Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:00:16.871Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:00:16.872Z DRIVER driver ready -2024-09-06T11:00:21.509Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T11:00:21.510Z DRIVER all queues busy -2024-09-06T11:00:21.511Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T11:00:21.511Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T11:00:21.513Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:21.520Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T11:00:21.520Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:21.522Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T11:00:21.523Z CNTRLR The controller is now ready to add nodes -2024-09-06T11:00:21.524Z DRIVER all queues idle -2024-09-06T11:00:25.561Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T11:00:25.562Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:25.564Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T11:00:25.565Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:00:25.565Z DRIVER 1 handler registered! -2024-09-06T11:00:25.566Z DRIVER invoking handler #0 -2024-09-06T11:00:25.567Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T11:00:25.667Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T11:00:25.669Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:25.671Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T11:00:25.671Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:00:25.672Z DRIVER 1 handler registered! -2024-09-06T11:00:25.672Z DRIVER invoking handler #0 -2024-09-06T11:00:25.673Z CNTRLR handling add node request (status = AddingController) -2024-09-06T11:00:25.676Z DRIVER the message was handled -2024-09-06T11:00:26.086Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T11:00:26.087Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.089Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T11:00:26.090Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:00:26.090Z DRIVER 1 handler registered! -2024-09-06T11:00:26.091Z DRIVER invoking handler #0 -2024-09-06T11:00:26.091Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T11:00:26.092Z CNTRLR finishing inclusion process... -2024-09-06T11:00:26.094Z DRIVER all queues busy -2024-09-06T11:00:26.095Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T11:00:26.096Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T11:00:26.099Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.137Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T11:00:26.137Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.137Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T11:00:26.139Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T11:00:26.139Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T11:00:26.145Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.146Z CNTRLR The inclusion process was stopped -2024-09-06T11:00:26.146Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T11:00:26.147Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T11:00:26.147Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T11:00:26.148Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T11:00:26.149Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T11:00:26.153Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.157Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T11:00:26.158Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.158Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T11:00:26.223Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T11:00:26.224Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.226Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T11:00:26.230Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T11:00:26.232Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T11:00:26.235Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.241Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T11:00:26.242Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.243Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T11:00:26.314Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T11:00:26.315Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.317Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T11:00:26.325Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T11:00:26.326Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T11:00:26.330Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.337Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:26.337Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.338Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:00:30.384Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:00:30.385Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.385Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:00:30.385Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.386Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:00:30.386Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.388Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:30.389Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:30.390Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:00:30.390Z DRIVER no handlers registered! -2024-09-06T11:00:30.390Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:30.390Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:00:30.390Z DRIVER no handlers registered! -2024-09-06T11:00:30.391Z SERIAL « 0x010f00a8000102069f050002018700df9c (17 bytes) -2024-09-06T11:00:30.391Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.392Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:00:30.395Z SERIAL » 0x011200a90102069f060002018725000000000871 (20 bytes) -2024-09-06T11:00:30.395Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:00:30.400Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:30.406Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:30.407Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.407Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:00:34.796Z SERIAL « 0x011d00a90800000100df7f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:00:34.797Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.799Z SERIAL « 0x011d00a90800000100df7f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:00:34.799Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.800Z SERIAL « 0x011d00a90800000100df7f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:00:34.800Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.801Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:34.804Z DRIVER all queues idle -2024-09-06T11:00:34.804Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:34.805Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:00:34.805Z DRIVER no handlers registered! -2024-09-06T11:00:34.805Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:34.806Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:00:34.806Z DRIVER no handlers registered! -2024-09-06T11:00:34.814Z SERIAL « 0x012c00a8000102239f0800000014c50b50c3c8563c3ef70eb85ae61d38f0749c6 (46 bytes) - 6b7e65f0dc109c0d2194c00e0d3 -2024-09-06T11:00:34.816Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.817Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x000014c50b50c3c8563c3ef70eb85ae61d38f0749c66b7e65f0dc - 109c0d2194c -2024-09-06T11:00:34.819Z DRIVER all queues busy -2024-09-06T11:00:34.820Z SERIAL » 0x012f00a90102239f0801d3955c17b8339bf458e7dd0c7dece81bd981ccca91987 (49 bytes) - 7ce3cc9ddd90c2d5e1c2500000000097a -2024-09-06T11:00:34.821Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0xd3955c17b8339bf458e7dd0c7dece81bd981ccca919877ce3cc9d - dd90c2d5e1c -2024-09-06T11:00:34.830Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:34.836Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:34.837Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.838Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:03:28.971Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:03:28.972Z DRIVER version 13.2.0 -2024-09-06T11:03:28.973Z DRIVER -2024-09-06T11:03:28.973Z DRIVER starting driver... -2024-09-06T11:03:28.973Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T11:03:28.982Z DRIVER serial port opened -2024-09-06T11:03:28.983Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:03:29.987Z DRIVER loading configuration... -2024-09-06T11:03:29.989Z CONFIG version 13.2.0 -2024-09-06T11:03:30.306Z DRIVER beginning interview... -2024-09-06T11:03:30.307Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:03:30.307Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:03:30.307Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:03:30.307Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:03:30.307Z CNTRLR querying Serial API capabilities... -2024-09-06T11:03:30.309Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:03:30.309Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:03:30.312Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.322Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:03:30.323Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.323Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:03:30.324Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:03:30.325Z CNTRLR querying additional controller information... -2024-09-06T11:03:30.326Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:03:30.326Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:03:30.331Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.333Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T11:03:30.334Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.334Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:03:30.335Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:03:30.335Z CNTRLR querying version info... -2024-09-06T11:03:30.336Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:03:30.337Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:03:30.344Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.344Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:03:30.345Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.345Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:03:30.346Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:03:30.347Z CNTRLR querying protocol version info... -2024-09-06T11:03:30.348Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:03:30.348Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:03:30.355Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.356Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:03:30.356Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.357Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:03:30.358Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:03:30.358Z CNTRLR querying controller capabilities... -2024-09-06T11:03:30.359Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:03:30.360Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:03:30.365Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.366Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T11:03:30.366Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.366Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T11:03:30.367Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T11:03:30.367Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:03:30.368Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:03:30.369Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:03:30.375Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.375Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:03:30.375Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.376Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:03:30.376Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:03:30.377Z CNTRLR querying max. payload size... -2024-09-06T11:03:30.377Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:03:30.378Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:03:30.383Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.384Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:03:30.384Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.385Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:03:30.385Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:03:30.386Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:03:30.386Z CNTRLR Querying configured RF region... -2024-09-06T11:03:30.387Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:03:30.387Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:03:30.392Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.392Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:03:30.392Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.393Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:03:30.393Z CNTRLR The controller is using RF region Europe -2024-09-06T11:03:30.394Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:03:30.394Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:03:30.395Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:03:30.400Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.400Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:03:30.401Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.401Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:03:30.402Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:03:30.402Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:03:30.403Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:03:30.404Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:03:30.408Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.408Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:03:30.408Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.409Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:03:30.409Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:03:30.410Z CNTRLR Performing soft reset... -2024-09-06T11:03:30.410Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:03:30.411Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:03:30.413Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.414Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:03:30.415Z DRIVER all queues idle -2024-09-06T11:03:30.633Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:03:30.634Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.634Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:03:30.635Z CNTRLR reconnected and restarted -2024-09-06T11:03:30.635Z CNTRLR Starting hardware watchdog... -2024-09-06T11:03:30.635Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:03:30.636Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:03:30.636Z DRIVER all queues busy -2024-09-06T11:03:30.637Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:03:30.637Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:03:30.638Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:03:30.639Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:03:30.640Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.641Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.657Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:30.657Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.658Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:30.659Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:03:30.659Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:03:30.660Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:03:30.666Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.667Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:30.667Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.668Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:30.669Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:03:30.669Z CNTRLR querying controller IDs... -2024-09-06T11:03:30.670Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:03:30.670Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:03:30.676Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.676Z SERIAL « 0x01080120d188a45e0174 (10 bytes) -2024-09-06T11:03:30.677Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.677Z DRIVER « [RES] [GetControllerId] - home ID: 0xd188a45e - own node ID: 1 -2024-09-06T11:03:30.678Z CNTRLR received controller IDs: - home ID: 0xd188a45e - own node ID: 1 -2024-09-06T11:03:30.678Z CNTRLR Enabling TX status report... -2024-09-06T11:03:30.679Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:03:30.680Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:03:30.689Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.689Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:03:30.689Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.690Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:03:30.691Z CNTRLR Enabling TX status report successful... -2024-09-06T11:03:30.691Z CNTRLR finding SUC... -2024-09-06T11:03:30.692Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:03:30.692Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:03:30.694Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.695Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:03:30.696Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.696Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:03:30.697Z CNTRLR This is the SUC -2024-09-06T11:03:30.700Z DRIVER all queues idle -2024-09-06T11:03:30.727Z DRIVER Cache file for homeId 0xd188a45e found, attempting to restore the network from - cache... -2024-09-06T11:03:30.729Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:03:30.730Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:03:30.730Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:03:30.730Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:03:30.731Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:03:30.731Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T11:03:30.731Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:03:30.731Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T11:03:30.732Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:03:30.732Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T11:03:30.732Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:03:30.733Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T11:03:30.733Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:03:30.733Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T11:03:30.733Z CNTRLR Interview completed -2024-09-06T11:03:30.734Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:03:30.734Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:03:30.736Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:03:30.737Z DRIVER driver ready -2024-09-06T11:03:31.738Z CNTRLR Updating the controller NIF... -2024-09-06T11:03:31.740Z DRIVER all queues busy -2024-09-06T11:03:31.743Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:03:31.744Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:03:31.748Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.751Z CNTRLR performing hard reset... -2024-09-06T11:03:31.753Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T11:03:31.754Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T11:03:31.756Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.778Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T11:03:31.778Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.779Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T11:03:31.780Z CNTRLR hard reset succeeded -2024-09-06T11:03:31.780Z CNTRLR querying Serial API capabilities... -2024-09-06T11:03:31.781Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:03:31.782Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:03:31.784Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.788Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:03:31.789Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.789Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:03:31.790Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:03:31.790Z CNTRLR querying additional controller information... -2024-09-06T11:03:31.791Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:03:31.791Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:03:31.794Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.799Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:03:31.800Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.800Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:03:31.801Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:03:31.801Z CNTRLR querying version info... -2024-09-06T11:03:31.802Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:03:31.802Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:03:31.804Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.807Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:03:31.807Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.807Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:03:31.808Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:03:31.808Z CNTRLR querying protocol version info... -2024-09-06T11:03:31.809Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:03:31.809Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:03:31.811Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.815Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:03:31.815Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.816Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:03:31.816Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:03:31.817Z CNTRLR querying controller capabilities... -2024-09-06T11:03:31.818Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:03:31.818Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:03:31.820Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.822Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:03:31.822Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.823Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:03:31.823Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:03:31.824Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:03:31.824Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:03:31.825Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:03:31.829Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.830Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:03:31.831Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.831Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:03:31.832Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:03:31.833Z CNTRLR querying max. payload size... -2024-09-06T11:03:31.834Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:03:31.834Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:03:31.836Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.838Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:03:31.838Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.839Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:03:31.839Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:03:31.839Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:03:31.840Z CNTRLR Querying configured RF region... -2024-09-06T11:03:31.840Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:03:31.841Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:03:31.843Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.844Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:03:31.844Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.845Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:03:31.845Z CNTRLR The controller is using RF region Europe -2024-09-06T11:03:31.846Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:03:31.846Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:03:31.847Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:03:31.849Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.850Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:03:31.851Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.851Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:03:31.852Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:03:31.852Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:03:31.853Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:03:31.853Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:03:31.855Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.857Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:03:31.857Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:31.857Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:03:31.858Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:03:31.858Z CNTRLR Performing soft reset... -2024-09-06T11:03:31.859Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:03:31.859Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:03:31.861Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:31.862Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:03:31.863Z DRIVER all queues idle -2024-09-06T11:03:32.080Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:03:32.082Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.083Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:03:32.084Z CNTRLR reconnected and restarted -2024-09-06T11:03:32.085Z CNTRLR Starting hardware watchdog... -2024-09-06T11:03:32.086Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:03:32.087Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:03:32.088Z DRIVER all queues busy -2024-09-06T11:03:32.090Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:03:32.091Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:03:32.092Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:03:32.093Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:03:32.094Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.095Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.096Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:32.097Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.097Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:32.098Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:03:32.099Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:03:32.099Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:03:32.101Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.102Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:32.103Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.103Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:32.104Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:03:32.104Z CNTRLR querying controller IDs... -2024-09-06T11:03:32.105Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:03:32.106Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:03:32.108Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.109Z SERIAL « 0x01080120cab0fedc018f (10 bytes) -2024-09-06T11:03:32.110Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.110Z DRIVER « [RES] [GetControllerId] - home ID: 0xcab0fedc - own node ID: 1 -2024-09-06T11:03:32.111Z CNTRLR received controller IDs: - home ID: 0xcab0fedc - own node ID: 1 -2024-09-06T11:03:32.111Z CNTRLR Enabling TX status report... -2024-09-06T11:03:32.112Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:03:32.112Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:03:32.115Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.116Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:03:32.116Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.117Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:03:32.118Z CNTRLR Enabling TX status report successful... -2024-09-06T11:03:32.118Z CNTRLR finding SUC... -2024-09-06T11:03:32.118Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:03:32.119Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:03:32.122Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.122Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:03:32.123Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.123Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:03:32.124Z CNTRLR No SUC present in the network -2024-09-06T11:03:32.124Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:03:32.125Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T11:03:32.125Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T11:03:32.129Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:32.131Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:03:32.131Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:32.132Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:03:32.133Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:03:32.133Z DRIVER all queues idle -2024-09-06T11:03:32.137Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:03:32.138Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:03:32.138Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:03:32.138Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T11:03:32.138Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:03:32.138Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T11:03:32.139Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:03:32.139Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T11:03:32.139Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:03:32.139Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T11:03:32.139Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:03:32.140Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T11:03:32.140Z CNTRLR Interview completed -2024-09-06T11:03:32.140Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:03:32.140Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:03:32.141Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:03:32.142Z DRIVER driver ready -2024-09-06T11:03:36.782Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T11:03:36.784Z DRIVER all queues busy -2024-09-06T11:03:36.786Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T11:03:36.788Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T11:03:36.790Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:36.797Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T11:03:36.799Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:36.801Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T11:03:36.802Z CNTRLR The controller is now ready to add nodes -2024-09-06T11:03:36.802Z DRIVER all queues idle -2024-09-06T11:03:40.838Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T11:03:40.839Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:40.841Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T11:03:40.842Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:03:40.842Z DRIVER 1 handler registered! -2024-09-06T11:03:40.843Z DRIVER invoking handler #0 -2024-09-06T11:03:40.844Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T11:03:40.942Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T11:03:40.944Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:40.946Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T11:03:40.947Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:03:40.947Z DRIVER 1 handler registered! -2024-09-06T11:03:40.948Z DRIVER invoking handler #0 -2024-09-06T11:03:40.948Z CNTRLR handling add node request (status = AddingController) -2024-09-06T11:03:40.952Z DRIVER the message was handled -2024-09-06T11:03:41.361Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T11:03:41.363Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.365Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T11:03:41.366Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:03:41.366Z DRIVER 1 handler registered! -2024-09-06T11:03:41.367Z DRIVER invoking handler #0 -2024-09-06T11:03:41.367Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T11:03:41.368Z CNTRLR finishing inclusion process... -2024-09-06T11:03:41.369Z DRIVER all queues busy -2024-09-06T11:03:41.371Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T11:03:41.372Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T11:03:41.374Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.412Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T11:03:41.412Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.413Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T11:03:41.414Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T11:03:41.414Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T11:03:41.420Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.421Z CNTRLR The inclusion process was stopped -2024-09-06T11:03:41.422Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T11:03:41.422Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T11:03:41.423Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T11:03:41.424Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T11:03:41.424Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T11:03:41.430Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.433Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T11:03:41.434Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.435Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T11:03:41.498Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T11:03:41.500Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.501Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T11:03:41.504Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T11:03:41.505Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T11:03:41.508Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.515Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T11:03:41.516Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.517Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T11:03:41.587Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T11:03:41.589Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.591Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T11:03:41.600Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T11:03:41.601Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T11:03:41.607Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.611Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:03:41.611Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.612Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:03:41.624Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T11:03:41.625Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.625Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:03:51.653Z CNTRLR [Node 002] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T11:03:51.654Z CNTRLR [Node 002] Security S2 bootstrapping failed: did not receive the node's desire - d security classes. -2024-09-06T11:03:51.654Z DRIVER the message was handled -2024-09-06T11:03:51.655Z DRIVER all queues idle -2024-09-06T11:03:56.657Z DRIVER all queues busy -2024-09-06T11:03:56.660Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:03:56.662Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:03:56.665Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:56.667Z SERIAL « 0x0107013b9492927f29 (9 bytes) -2024-09-06T11:03:56.668Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:56.669Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -108 dBm - channel 1: -110 dBm - channel 2: -110 dBm - channel 3: N/A -2024-09-06T11:03:56.671Z DRIVER all queues idle -2024-09-06T11:04:18.605Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:04:18.606Z DRIVER version 13.2.0 -2024-09-06T11:04:18.607Z DRIVER -2024-09-06T11:04:18.607Z DRIVER starting driver... -2024-09-06T11:04:18.607Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T11:04:18.616Z DRIVER serial port opened -2024-09-06T11:04:18.617Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:04:19.623Z DRIVER loading configuration... -2024-09-06T11:04:19.627Z CONFIG version 13.2.0 -2024-09-06T11:04:19.957Z DRIVER beginning interview... -2024-09-06T11:04:19.957Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:04:19.958Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:04:19.958Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:04:19.958Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:04:19.958Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:19.959Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:19.959Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:19.962Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:19.973Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:04:19.974Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:19.974Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:19.976Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:19.976Z CNTRLR querying additional controller information... -2024-09-06T11:04:19.977Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:19.978Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:19.979Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:19.985Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T11:04:19.985Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:19.986Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:19.986Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:04:19.987Z CNTRLR querying version info... -2024-09-06T11:04:19.987Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:19.988Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:19.993Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:19.997Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:04:19.997Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:19.998Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:04:19.999Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:04:19.999Z CNTRLR querying protocol version info... -2024-09-06T11:04:20.000Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:20.000Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:20.006Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.007Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:04:20.007Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.008Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:04:20.009Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:04:20.009Z CNTRLR querying controller capabilities... -2024-09-06T11:04:20.010Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:20.010Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:20.015Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.016Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T11:04:20.016Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.016Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T11:04:20.017Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T11:04:20.018Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:20.019Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:20.019Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:20.025Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.025Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:20.026Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.026Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:20.027Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:20.027Z CNTRLR querying max. payload size... -2024-09-06T11:04:20.028Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:20.028Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:20.033Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.034Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:20.034Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.035Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:20.036Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:20.036Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:20.036Z CNTRLR Querying configured RF region... -2024-09-06T11:04:20.037Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:20.038Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:20.042Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.042Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:20.043Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.043Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:20.044Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:20.044Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:20.045Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:20.045Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:20.050Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.050Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:20.051Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.051Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:20.052Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:20.052Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:20.053Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:20.053Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:20.058Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.058Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:20.058Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.059Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:20.059Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:20.060Z CNTRLR Performing soft reset... -2024-09-06T11:04:20.060Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:20.061Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:20.063Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.064Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:20.064Z DRIVER all queues idle -2024-09-06T11:04:20.282Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:04:20.283Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.283Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:20.284Z CNTRLR reconnected and restarted -2024-09-06T11:04:20.284Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:20.284Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:20.284Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:20.285Z DRIVER all queues busy -2024-09-06T11:04:20.285Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:20.286Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:20.286Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:20.287Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:20.288Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.289Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.291Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:20.292Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.292Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:20.293Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:20.293Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:20.294Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:20.296Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.301Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:20.301Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.302Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:20.302Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:20.302Z CNTRLR querying controller IDs... -2024-09-06T11:04:20.303Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:20.303Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:20.305Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.307Z SERIAL « 0x01080120cab0fedc018f (10 bytes) -2024-09-06T11:04:20.307Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.308Z DRIVER « [RES] [GetControllerId] - home ID: 0xcab0fedc - own node ID: 1 -2024-09-06T11:04:20.309Z CNTRLR received controller IDs: - home ID: 0xcab0fedc - own node ID: 1 -2024-09-06T11:04:20.309Z CNTRLR Enabling TX status report... -2024-09-06T11:04:20.309Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:04:20.310Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:04:20.313Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.314Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:04:20.314Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.314Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:04:20.315Z CNTRLR Enabling TX status report successful... -2024-09-06T11:04:20.315Z CNTRLR finding SUC... -2024-09-06T11:04:20.316Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:04:20.316Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:04:20.323Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.324Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:04:20.324Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.326Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:04:20.327Z CNTRLR This is the SUC -2024-09-06T11:04:20.327Z DRIVER all queues idle -2024-09-06T11:04:20.353Z DRIVER Cache file for homeId 0xcab0fedc found, attempting to restore the network from - cache... -2024-09-06T11:04:20.362Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:04:20.363Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:04:20.363Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:04:20.364Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:04:20.364Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:04:20.365Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T11:04:20.366Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:04:20.367Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T11:04:20.367Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:04:20.368Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T11:04:20.368Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:04:20.369Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T11:04:20.370Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:04:20.370Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T11:04:20.370Z CNTRLR Interview completed -2024-09-06T11:04:20.371Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:04:20.373Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:04:20.376Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:04:20.377Z DRIVER driver ready -2024-09-06T11:04:21.380Z CNTRLR Updating the controller NIF... -2024-09-06T11:04:21.382Z DRIVER all queues busy -2024-09-06T11:04:21.384Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:04:21.386Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:04:21.396Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.399Z CNTRLR performing hard reset... -2024-09-06T11:04:21.402Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T11:04:21.403Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T11:04:21.406Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.441Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T11:04:21.442Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.442Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T11:04:21.443Z CNTRLR hard reset succeeded -2024-09-06T11:04:21.444Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:21.445Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:21.445Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:21.447Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.452Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:04:21.452Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.453Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:21.453Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:21.454Z CNTRLR querying additional controller information... -2024-09-06T11:04:21.454Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:21.455Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:21.457Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.462Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:04:21.463Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.463Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:21.464Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:04:21.464Z CNTRLR querying version info... -2024-09-06T11:04:21.465Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:21.466Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:21.468Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.470Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:04:21.470Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.471Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:04:21.472Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:04:21.472Z CNTRLR querying protocol version info... -2024-09-06T11:04:21.472Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:21.473Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:21.475Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.478Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:04:21.478Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.479Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:04:21.480Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:04:21.480Z CNTRLR querying controller capabilities... -2024-09-06T11:04:21.481Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:21.481Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:21.483Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.484Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:04:21.485Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.485Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:04:21.486Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:04:21.486Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:21.487Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:21.487Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:21.492Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.493Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:21.493Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.494Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:21.494Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:21.495Z CNTRLR querying max. payload size... -2024-09-06T11:04:21.495Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:21.496Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:21.498Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.499Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:21.499Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.500Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:21.501Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:21.501Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:21.501Z CNTRLR Querying configured RF region... -2024-09-06T11:04:21.502Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:21.502Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:21.504Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.506Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:21.506Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.507Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:21.508Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:21.508Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:21.509Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:21.509Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:21.511Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.512Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:21.513Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.513Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:21.514Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:21.514Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:21.515Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:21.515Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:21.517Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.518Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:21.519Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.520Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:21.520Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:21.520Z CNTRLR Performing soft reset... -2024-09-06T11:04:21.521Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:21.522Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:21.524Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.525Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:21.525Z DRIVER all queues idle -2024-09-06T11:04:21.750Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:04:21.751Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.753Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:21.754Z CNTRLR reconnected and restarted -2024-09-06T11:04:21.755Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:21.756Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:21.757Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:21.758Z DRIVER all queues busy -2024-09-06T11:04:21.760Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:21.761Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:21.764Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:21.765Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:21.767Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.768Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.769Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:21.770Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.771Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:21.772Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:21.772Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:21.773Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:21.776Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.777Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:21.777Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.778Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:21.779Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:21.779Z CNTRLR querying controller IDs... -2024-09-06T11:04:21.780Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:21.780Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:21.782Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.784Z SERIAL « 0x01080120e18c56950179 (10 bytes) -2024-09-06T11:04:21.784Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.785Z DRIVER « [RES] [GetControllerId] - home ID: 0xe18c5695 - own node ID: 1 -2024-09-06T11:04:21.786Z CNTRLR received controller IDs: - home ID: 0xe18c5695 - own node ID: 1 -2024-09-06T11:04:21.786Z CNTRLR Enabling TX status report... -2024-09-06T11:04:21.787Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:04:21.787Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:04:21.789Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.790Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:04:21.791Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.792Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:04:21.793Z CNTRLR Enabling TX status report successful... -2024-09-06T11:04:21.793Z CNTRLR finding SUC... -2024-09-06T11:04:21.794Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:04:21.794Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:04:21.796Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.797Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:04:21.798Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.798Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:04:21.799Z CNTRLR No SUC present in the network -2024-09-06T11:04:21.799Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:04:21.800Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T11:04:21.800Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T11:04:21.803Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:21.805Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:04:21.806Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:21.806Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:04:21.807Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:04:21.808Z DRIVER all queues idle -2024-09-06T11:04:21.813Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:04:21.814Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:04:21.814Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:04:21.814Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T11:04:21.814Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:04:21.814Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T11:04:21.815Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:04:21.815Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T11:04:21.815Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:04:21.815Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T11:04:21.815Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:04:21.816Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T11:04:21.816Z CNTRLR Interview completed -2024-09-06T11:04:21.816Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:04:21.816Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:04:21.817Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:04:21.818Z DRIVER driver ready -2024-09-06T11:04:26.444Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T11:04:26.446Z DRIVER all queues busy -2024-09-06T11:04:26.448Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T11:04:26.450Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T11:04:26.453Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:26.462Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T11:04:26.464Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:26.466Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T11:04:26.467Z CNTRLR The controller is now ready to add nodes -2024-09-06T11:04:26.468Z DRIVER all queues idle -2024-09-06T11:04:30.499Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T11:04:30.500Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:30.502Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T11:04:30.503Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:04:30.503Z DRIVER 1 handler registered! -2024-09-06T11:04:30.504Z DRIVER invoking handler #0 -2024-09-06T11:04:30.506Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T11:04:30.605Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T11:04:30.606Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:30.608Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T11:04:30.609Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:04:30.609Z DRIVER 1 handler registered! -2024-09-06T11:04:30.610Z DRIVER invoking handler #0 -2024-09-06T11:04:30.610Z CNTRLR handling add node request (status = AddingController) -2024-09-06T11:04:30.615Z DRIVER the message was handled -2024-09-06T11:04:31.024Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T11:04:31.025Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.027Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T11:04:31.028Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:04:31.029Z DRIVER 1 handler registered! -2024-09-06T11:04:31.029Z DRIVER invoking handler #0 -2024-09-06T11:04:31.030Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T11:04:31.031Z CNTRLR finishing inclusion process... -2024-09-06T11:04:31.032Z DRIVER all queues busy -2024-09-06T11:04:31.034Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T11:04:31.036Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T11:04:31.038Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.081Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T11:04:31.082Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.085Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T11:04:31.088Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T11:04:31.089Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T11:04:31.102Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.104Z CNTRLR The inclusion process was stopped -2024-09-06T11:04:31.104Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T11:04:31.105Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T11:04:31.106Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T11:04:31.108Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T11:04:31.109Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T11:04:31.118Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.119Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T11:04:31.119Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.121Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T11:04:31.182Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T11:04:31.183Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.184Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T11:04:31.185Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T11:04:31.186Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T11:04:31.188Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.195Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T11:04:31.196Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.197Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T11:04:31.268Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T11:04:31.269Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.270Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T11:04:31.273Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T11:04:31.274Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T11:04:31.278Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.284Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:04:31.285Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.286Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:04:31.297Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T11:04:31.298Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.299Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:04:41.328Z CNTRLR [Node 002] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T11:04:41.330Z CNTRLR [Node 002] Security S2 bootstrapping failed: did not receive the node's desire - d security classes. -2024-09-06T11:04:41.332Z DRIVER the message was handled -2024-09-06T11:04:41.333Z DRIVER all queues idle -2024-09-06T11:04:46.334Z DRIVER all queues busy -2024-09-06T11:04:46.338Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:04:46.339Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:04:46.342Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:46.344Z SERIAL « 0x0107013b9392927f2e (9 bytes) -2024-09-06T11:04:46.345Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:46.346Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -109 dBm - channel 1: -110 dBm - channel 2: -110 dBm - channel 3: N/A -2024-09-06T11:04:46.348Z DRIVER all queues idle -2024-09-06T11:04:56.865Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:04:56.867Z DRIVER version 13.2.0 -2024-09-06T11:04:56.867Z DRIVER -2024-09-06T11:04:56.868Z DRIVER starting driver... -2024-09-06T11:04:56.868Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T11:04:56.876Z DRIVER serial port opened -2024-09-06T11:04:56.877Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:04:57.883Z DRIVER loading configuration... -2024-09-06T11:04:57.889Z CONFIG version 13.2.0 -2024-09-06T11:04:58.207Z DRIVER beginning interview... -2024-09-06T11:04:58.209Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:04:58.209Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:04:58.209Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:04:58.209Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:04:58.210Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:58.221Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:58.222Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:58.226Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.230Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:04:58.231Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.232Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:58.234Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:58.234Z CNTRLR querying additional controller information... -2024-09-06T11:04:58.236Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:58.236Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:58.242Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.247Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T11:04:58.248Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.249Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:58.250Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:04:58.251Z CNTRLR querying version info... -2024-09-06T11:04:58.252Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:58.253Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:58.258Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.258Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:04:58.259Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.260Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:04:58.261Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:04:58.261Z CNTRLR querying protocol version info... -2024-09-06T11:04:58.263Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:58.263Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:58.269Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.269Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:04:58.270Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.270Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:04:58.271Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:04:58.271Z CNTRLR querying controller capabilities... -2024-09-06T11:04:58.273Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:58.273Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:58.278Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.279Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T11:04:58.279Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.280Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T11:04:58.281Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T11:04:58.281Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:58.282Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:58.282Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:58.287Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.287Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:58.288Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.289Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:58.289Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:58.290Z CNTRLR querying max. payload size... -2024-09-06T11:04:58.291Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:58.291Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:58.296Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.296Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:58.297Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.297Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:58.298Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:58.298Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:58.299Z CNTRLR Querying configured RF region... -2024-09-06T11:04:58.300Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:58.300Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:58.304Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.305Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:58.305Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.305Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:58.306Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:58.306Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:58.307Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:58.308Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:58.312Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.312Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:58.313Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.313Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:58.314Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:58.314Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:58.315Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:58.315Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:58.319Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.320Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:58.320Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.320Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:58.321Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:58.321Z CNTRLR Performing soft reset... -2024-09-06T11:04:58.322Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:58.323Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:58.326Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.327Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:58.328Z DRIVER all queues idle -2024-09-06T11:04:58.552Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:04:58.553Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.553Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:58.554Z CNTRLR reconnected and restarted -2024-09-06T11:04:58.554Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:58.554Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:58.554Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:58.555Z DRIVER all queues busy -2024-09-06T11:04:58.555Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:58.556Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:58.556Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:58.557Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:58.558Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.559Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.561Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:58.561Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.562Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:58.563Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:58.563Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:58.564Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:58.568Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.570Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:58.570Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.571Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:58.571Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:58.572Z CNTRLR querying controller IDs... -2024-09-06T11:04:58.572Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:58.573Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:58.574Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.576Z SERIAL « 0x01080120e18c56950179 (10 bytes) -2024-09-06T11:04:58.576Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.577Z DRIVER « [RES] [GetControllerId] - home ID: 0xe18c5695 - own node ID: 1 -2024-09-06T11:04:58.577Z CNTRLR received controller IDs: - home ID: 0xe18c5695 - own node ID: 1 -2024-09-06T11:04:58.578Z CNTRLR Enabling TX status report... -2024-09-06T11:04:58.578Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:04:58.579Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:04:58.582Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.583Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:04:58.583Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.583Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:04:58.584Z CNTRLR Enabling TX status report successful... -2024-09-06T11:04:58.584Z CNTRLR finding SUC... -2024-09-06T11:04:58.585Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:04:58.585Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:04:58.587Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.588Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:04:58.589Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.589Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:04:58.590Z CNTRLR This is the SUC -2024-09-06T11:04:58.590Z DRIVER all queues idle -2024-09-06T11:04:58.603Z DRIVER Cache file for homeId 0xe18c5695 found, attempting to restore the network from - cache... -2024-09-06T11:04:58.607Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:04:58.607Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:04:58.607Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:04:58.608Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:04:58.608Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:04:58.608Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T11:04:58.609Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:04:58.609Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T11:04:58.610Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:04:58.610Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T11:04:58.611Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:04:58.611Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T11:04:58.611Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:04:58.612Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T11:04:58.612Z CNTRLR Interview completed -2024-09-06T11:04:58.612Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:04:58.613Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:04:58.615Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:04:58.615Z DRIVER driver ready -2024-09-06T11:04:59.617Z CNTRLR Updating the controller NIF... -2024-09-06T11:04:59.619Z DRIVER all queues busy -2024-09-06T11:04:59.622Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:04:59.623Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:04:59.628Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.631Z CNTRLR performing hard reset... -2024-09-06T11:04:59.633Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T11:04:59.634Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T11:04:59.636Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.657Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T11:04:59.658Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.659Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T11:04:59.659Z CNTRLR hard reset succeeded -2024-09-06T11:04:59.660Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:59.661Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:59.662Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:59.664Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.668Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:04:59.669Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.670Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:59.671Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:59.671Z CNTRLR querying additional controller information... -2024-09-06T11:04:59.672Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:59.672Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:59.674Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.679Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:04:59.680Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.680Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:59.681Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:04:59.681Z CNTRLR querying version info... -2024-09-06T11:04:59.682Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:59.683Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:59.685Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.687Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:04:59.688Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.688Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:04:59.689Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:04:59.689Z CNTRLR querying protocol version info... -2024-09-06T11:04:59.689Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:59.690Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:59.692Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.695Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:04:59.695Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.696Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:04:59.697Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:04:59.697Z CNTRLR querying controller capabilities... -2024-09-06T11:04:59.698Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:59.698Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:59.701Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.702Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:04:59.702Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.703Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:04:59.704Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:04:59.704Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:59.705Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:59.705Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:59.710Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.710Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:59.711Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.712Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:59.713Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:59.713Z CNTRLR querying max. payload size... -2024-09-06T11:04:59.714Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:59.715Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:59.717Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.718Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:59.718Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.719Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:59.720Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:59.720Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:59.721Z CNTRLR Querying configured RF region... -2024-09-06T11:04:59.722Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:59.722Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:59.724Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.726Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:59.726Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.727Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:59.728Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:59.729Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:59.730Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:59.730Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:59.733Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.734Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:59.735Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.735Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:59.736Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:59.737Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:59.737Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:59.738Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:59.740Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.741Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:59.741Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.742Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:59.743Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:59.743Z CNTRLR Performing soft reset... -2024-09-06T11:04:59.744Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:59.744Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:59.746Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.748Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:59.748Z DRIVER all queues idle -2024-09-06T11:04:59.965Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:04:59.966Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.968Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:59.969Z CNTRLR reconnected and restarted -2024-09-06T11:04:59.970Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:59.971Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:59.972Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:59.973Z DRIVER all queues busy -2024-09-06T11:04:59.974Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:59.975Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:59.978Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:59.979Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:59.981Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.983Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.984Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:59.984Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.985Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:59.986Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:59.987Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:59.987Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:59.990Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.991Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:59.992Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.992Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:59.993Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:59.993Z CNTRLR querying controller IDs... -2024-09-06T11:04:59.994Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:59.994Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:59.996Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:59.997Z SERIAL « 0x01080120c80a10c501c0 (10 bytes) -2024-09-06T11:04:59.998Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:59.998Z DRIVER « [RES] [GetControllerId] - home ID: 0xc80a10c5 - own node ID: 1 -2024-09-06T11:04:59.999Z CNTRLR received controller IDs: - home ID: 0xc80a10c5 - own node ID: 1 -2024-09-06T11:04:59.999Z CNTRLR Enabling TX status report... -2024-09-06T11:05:00.000Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:05:00.000Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:05:00.003Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:00.004Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:05:00.004Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:00.005Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:05:00.006Z CNTRLR Enabling TX status report successful... -2024-09-06T11:05:00.006Z CNTRLR finding SUC... -2024-09-06T11:05:00.006Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:05:00.007Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:05:00.009Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:00.009Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:05:00.010Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:00.010Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:05:00.011Z CNTRLR No SUC present in the network -2024-09-06T11:05:00.011Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:05:00.012Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T11:05:00.013Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T11:05:00.016Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:00.018Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:05:00.018Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:00.019Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:05:00.020Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:05:00.020Z DRIVER all queues idle -2024-09-06T11:05:00.024Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:00.025Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:00.025Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:00.025Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T11:05:00.025Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:05:00.025Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T11:05:00.026Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:00.026Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T11:05:00.026Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:00.026Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T11:05:00.026Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:05:00.026Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T11:05:00.026Z CNTRLR Interview completed -2024-09-06T11:05:00.027Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:05:00.027Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:05:00.028Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:05:00.028Z DRIVER driver ready -2024-09-06T11:05:04.662Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T11:05:04.664Z DRIVER all queues busy -2024-09-06T11:05:04.666Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T11:05:04.667Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T11:05:04.670Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:04.677Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T11:05:04.678Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:04.680Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T11:05:04.681Z CNTRLR The controller is now ready to add nodes -2024-09-06T11:05:04.682Z DRIVER all queues idle -2024-09-06T11:05:08.716Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T11:05:08.718Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:08.719Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T11:05:08.720Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:05:08.721Z DRIVER 1 handler registered! -2024-09-06T11:05:08.721Z DRIVER invoking handler #0 -2024-09-06T11:05:08.722Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T11:05:08.822Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T11:05:08.823Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:08.824Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T11:05:08.825Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:05:08.825Z DRIVER 1 handler registered! -2024-09-06T11:05:08.825Z DRIVER invoking handler #0 -2024-09-06T11:05:08.825Z CNTRLR handling add node request (status = AddingController) -2024-09-06T11:05:08.827Z DRIVER the message was handled -2024-09-06T11:05:09.240Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T11:05:09.242Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.243Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T11:05:09.244Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:05:09.244Z DRIVER 1 handler registered! -2024-09-06T11:05:09.245Z DRIVER invoking handler #0 -2024-09-06T11:05:09.245Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T11:05:09.246Z CNTRLR finishing inclusion process... -2024-09-06T11:05:09.247Z DRIVER all queues busy -2024-09-06T11:05:09.249Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T11:05:09.250Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T11:05:09.252Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.291Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T11:05:09.292Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.293Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T11:05:09.294Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T11:05:09.294Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T11:05:09.299Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.300Z CNTRLR The inclusion process was stopped -2024-09-06T11:05:09.300Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T11:05:09.301Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T11:05:09.301Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T11:05:09.302Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T11:05:09.302Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T11:05:09.307Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.311Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T11:05:09.311Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.312Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T11:05:09.377Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T11:05:09.378Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.380Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T11:05:09.384Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T11:05:09.385Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T11:05:09.388Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.395Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T11:05:09.395Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.396Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T11:05:09.468Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T11:05:09.470Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.472Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T11:05:09.479Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T11:05:09.480Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T11:05:09.484Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.490Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:09.491Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.492Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.417Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T11:05:24.418Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.418Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T11:05:24.419Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.419Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T11:05:24.419Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.420Z SERIAL « 0x011d00a90700000100e07f7f7f7f00000300000000030100007f7f7f7f7fd3 (31 bytes) -2024-09-06T11:05:24.420Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.420Z SERIAL « 0x010f00a8000102069f050002018700e0a3 (17 bytes) -2024-09-06T11:05:24.421Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.422Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.424Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.424Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:05:24.425Z DRIVER no handlers registered! -2024-09-06T11:05:24.425Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.425Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:05:24.425Z DRIVER no handlers registered! -2024-09-06T11:05:24.426Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.426Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:05:24.426Z DRIVER no handlers registered! -2024-09-06T11:05:24.426Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.429Z SERIAL » 0x011200a90102069f060002018725000000000871 (20 bytes) -2024-09-06T11:05:24.429Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.433Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.439Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.440Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.441Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.456Z SERIAL « 0x011d00a90800000100e07f7f7f7f00000300000000030100007f7f7f7f7fdc (31 bytes) -2024-09-06T11:05:24.457Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.457Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.458Z DRIVER all queues idle -2024-09-06T11:05:24.481Z SERIAL « 0x012c00a8000102239f080000004d2fbeb6c2b5b7622a32ff6946734809975b3d0 (46 bytes) - 0ce7d639056f7fd7f837500e07a -2024-09-06T11:05:24.482Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.483Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x00004d2fbeb6c2b5b7622a32ff6946734809975b3d00ce7d63905 - 6f7fd7f8375 -2024-09-06T11:05:24.484Z DRIVER all queues busy -2024-09-06T11:05:24.484Z SERIAL » 0x012f00a90102239f08014b2d67c5fc1c4760172137de73c0be95f4d6c3544af03 (49 bytes) - 7a442da5c6309354d41250000000009ac -2024-09-06T11:05:24.485Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0x4b2d67c5fc1c4760172137de73c0be95f4d6c3544af037a442da5 - c6309354d41 -2024-09-06T11:05:24.494Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.500Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.501Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.501Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.522Z SERIAL « 0x011d00a90900000200e07f7f7f7f00000300000000030100007f7f7f7f7fde (31 bytes) -2024-09-06T11:05:24.522Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.523Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.525Z DRIVER all queues idle -2024-09-06T11:05:24.538Z SERIAL « 0x010c00a8000102039f01a700e082 (14 bytes) -2024-09-06T11:05:24.540Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.541Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceGet] - sequence number: 167 -2024-09-06T11:05:24.543Z DRIVER all queues busy -2024-09-06T11:05:24.545Z SERIAL » 0x012000a90102149f02e40141268356a2061d10d0a567b6aa11a14305000000000 (34 bytes) - af0 -2024-09-06T11:05:24.546Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 10 - └─[Security2CCNonceReport] - sequence number: 228 - SOS: true - MOS: false - receiver entropy: 0x41268356a2061d10d0a567b6aa11a143 -2024-09-06T11:05:24.552Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.558Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.559Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.560Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.577Z SERIAL « 0x011d00a90a00000100e07f7f7f7f00000300000000030100007f7f7f7f7fde (31 bytes) -2024-09-06T11:05:24.577Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.578Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.579Z DRIVER all queues idle -2024-09-06T11:05:24.604Z SERIAL « 0x012d00a8000102249f03a8011241f8e3d97f8f9dd68d05e5ce20f70a0949f6908 (47 bytes) - 91a8669ae5a58faafde586500e09c -2024-09-06T11:05:24.606Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.607Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 168 - │ extensions: - │ · type: SPAN - │ sender EI: 0xf8e3d97f8f9dd68d05e5ce20f70a0949 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x5345c0699cc4f877eb61b24e37 - │ plaintext: 0x9f0601020187 - │ auth tag: 0xae5a58faafde5865 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.609Z DRIVER all queues busy -2024-09-06T11:05:24.610Z SERIAL » 0x011e00a90102129f03e500428f5533ac14822bab5ec23b45ac25000000000b51 (32 bytes) -2024-09-06T11:05:24.611Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 229 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x4e4ceb14e04905965a92d6b9ef - │ ciphertext: 0x428f5533ac14 - │ auth data: 0x0102c80a10c50012e500 - │ auth tag: 0x822bab5ec23b45ac - │ security class: Temporary - └─[Security2CCKEXReport] - echo: true - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.617Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.624Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.624Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.625Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.642Z SERIAL « 0x011d00a90b00000100e07f7f7f7f00000300000000030100007f7f7f7f7fdf (31 bytes) -2024-09-06T11:05:24.643Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.644Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.645Z DRIVER all queues idle -2024-09-06T11:05:24.661Z SERIAL « 0x011800a80001020f9f03a9004cb4a70c38d3a9b3497c5700e056 (26 bytes) -2024-09-06T11:05:24.662Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.663Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 169 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x96181e40d56a9edac90701af73 - │ plaintext: 0x9f0901 - │ auth tag: 0x0c38d3a9b3497c57 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Unauthenticated -2024-09-06T11:05:24.664Z DRIVER all queues busy -2024-09-06T11:05:24.666Z SERIAL » 0x012b00a901021f9f03e6005af2a8d2443d73153404f665f7a1363109a3141477a (45 bytes) - 4f05885e8e825000000000c59 -2024-09-06T11:05:24.666Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 12 - └─[Security2CCMessageEncapsulation] - │ sequence number: 230 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x45f6be582e90028e2ec202248e - │ ciphertext: 0x5af2a8d2443d73153404f665f7a1363109a314 - │ auth data: 0x0102c80a10c5001fe600 - │ auth tag: 0x1477a4f05885e8e8 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Unauthenticated -2024-09-06T11:05:24.675Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.681Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.681Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.682Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.698Z SERIAL « 0x011d00a90c00000100e07f7f7f7f00000300000000030100007f7f7f7f7fd8 (31 bytes) -2024-09-06T11:05:24.699Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.699Z DRIVER « [REQ] [SendDataBridge] - callback id: 12 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.700Z DRIVER all queues idle -2024-09-06T11:05:24.714Z SERIAL « 0x010c00a8000102039f01aa00e08f (14 bytes) -2024-09-06T11:05:24.715Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.715Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceGet] - sequence number: 170 -2024-09-06T11:05:24.717Z DRIVER all queues busy -2024-09-06T11:05:24.717Z SERIAL » 0x012000a90102149f02e7017f3e13d7d4f217de0d2a5c69245ab00505000000000 (34 bytes) - da1 -2024-09-06T11:05:24.718Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 13 - └─[Security2CCNonceReport] - sequence number: 231 - SOS: true - MOS: false - receiver entropy: 0x7f3e13d7d4f217de0d2a5c69245ab005 -2024-09-06T11:05:24.724Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.730Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.731Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.732Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.745Z SERIAL « 0x011d00a90d00000100e07f7f7f7f00000300000000030100007f7f7f7f7fd9 (31 bytes) -2024-09-06T11:05:24.746Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.746Z DRIVER « [REQ] [SendDataBridge] - callback id: 13 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.747Z DRIVER all queues idle -2024-09-06T11:05:24.770Z SERIAL « 0x012900a8000102209f03ab0112416c9053070ea7cbd892365571bb8f567098a6e (43 bytes) - 6cd81aeeae5d3d600e068 -2024-09-06T11:05:24.772Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.772Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 171 - │ extensions: - │ · type: SPAN - │ sender EI: 0x6c9053070ea7cbd892365571bb8f5670 - │ key: 0x44b45806725f2a6ebc3e2641f36f6caa - │ IV: 0x0ea53396a858f7caa64da81545 - │ plaintext: 0x9f0b - │ auth tag: 0xe6cd81aeeae5d3d6 - │ security class: S2_Unauthenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:24.774Z DRIVER all queues busy -2024-09-06T11:05:24.775Z SERIAL » 0x010f00a90102039f01e825000000000e04 (17 bytes) -2024-09-06T11:05:24.775Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 14 - └─[Security2CCNonceGet] - sequence number: 232 -2024-09-06T11:05:24.779Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.786Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.786Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.787Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.799Z SERIAL « 0x011d00a90e00000100e07f7f7f7f00000300000000030100007f7f7f7f7fda (31 bytes) -2024-09-06T11:05:24.799Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.800Z DRIVER « [REQ] [SendDataBridge] - callback id: 14 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.818Z SERIAL « 0x011d00a8000102149f02ac017ce365eb0aeee30f265dcfaca3503bae00e0ea (31 bytes) -2024-09-06T11:05:24.819Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.820Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceReport] - sequence number: 172 - SOS: true - MOS: false - receiver entropy: 0x7ce365eb0aeee30f265dcfaca3503bae -2024-09-06T11:05:24.821Z SERIAL » 0x012d00a90102219f03e9011241e3ecc76c91f66723a2cf918c908f12aac640847 (47 bytes) - a688928fdf72cc424000000000059 -2024-09-06T11:05:24.821Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 233 - │ extensions: - │ · type: SPAN - │ sender EI: 0xe3ecc76c91f66723a2cf918c908f12aa - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x506425ba50dbfe1af3850973dc - │ ciphertext: 0xc64084 - │ auth data: 0x0102c80a10c50021e9011241e3ecc76c91f66723a2cf918c908f12a - a - │ auth tag: 0x7a688928fdf72cc4 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:24.830Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.836Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.836Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.837Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.837Z DRIVER all queues idle -2024-09-06T11:05:24.876Z SERIAL « 0x011800a80001020f9f03ad0032c7a9153ceaf3e3fde96600e06f (26 bytes) -2024-09-06T11:05:24.877Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.879Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 173 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x1690d623380bbe423060815569 - │ plaintext: 0x9f0902 - │ auth tag: 0x153ceaf3e3fde966 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Authenticated -2024-09-06T11:05:24.880Z DRIVER all queues busy -2024-09-06T11:05:24.881Z SERIAL » 0x012b00a901021f9f03ea0072c676cf8c27c4fe4f34ec4fc8eb31c340d8f1fca58 (45 bytes) - a7c176d544c25000000000f0c -2024-09-06T11:05:24.882Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 15 - └─[Security2CCMessageEncapsulation] - │ sequence number: 234 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x7da23cea0a62d4f4e1800adb6c - │ ciphertext: 0x72c676cf8c27c4fe4f34ec4fc8eb31c340d8f1 - │ auth data: 0x0102c80a10c5001fea00 - │ auth tag: 0xfca58a7c176d544c - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Authenticated -2024-09-06T11:05:24.890Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.897Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.897Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.898Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.916Z SERIAL « 0x011d00a90f00000100e07f7f7f7f00000300000000030100007f7f7f7f7fdb (31 bytes) -2024-09-06T11:05:24.917Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.918Z DRIVER « [REQ] [SendDataBridge] - callback id: 15 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.919Z DRIVER all queues idle -2024-09-06T11:05:24.932Z SERIAL « 0x010c00a8000102039f01ae00e08b (14 bytes) -2024-09-06T11:05:24.934Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.936Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceGet] - sequence number: 174 -2024-09-06T11:05:24.940Z DRIVER all queues busy -2024-09-06T11:05:24.941Z SERIAL » 0x012000a90102149f02eb019f0c81c8baa966dbf855f4ec10791d2a05000000001 (34 bytes) - 09c -2024-09-06T11:05:24.942Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 16 - └─[Security2CCNonceReport] - sequence number: 235 - SOS: true - MOS: false - receiver entropy: 0x9f0c81c8baa966dbf855f4ec10791d2a -2024-09-06T11:05:24.953Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.962Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.963Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.967Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.978Z SERIAL « 0x011d00a91000000100e07f7f7f7f00000300000000030100007f7f7f7f7fc4 (31 bytes) -2024-09-06T11:05:24.979Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.980Z DRIVER « [REQ] [SendDataBridge] - callback id: 16 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.982Z DRIVER all queues idle -2024-09-06T11:05:25.003Z SERIAL « 0x012900a8000102209f03af01124129942536bfabf27b9238ad36bf05a60871818 (43 bytes) - b659c8eff6c23c900e1be -2024-09-06T11:05:25.005Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.007Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -31 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 175 - │ extensions: - │ · type: SPAN - │ sender EI: 0x29942536bfabf27b9238ad36bf05a608 - │ key: 0xdda415256006027530b2d9548c898f93 - │ IV: 0x449ba0b4965628c1b636f66f45 - │ plaintext: 0x9f0b - │ auth tag: 0x8b659c8eff6c23c9 - │ security class: S2_Authenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:25.008Z DRIVER all queues busy -2024-09-06T11:05:25.009Z SERIAL » 0x010f00a90102039f01ec2500000000111f (17 bytes) -2024-09-06T11:05:25.010Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 17 - └─[Security2CCNonceGet] - sequence number: 236 -2024-09-06T11:05:25.014Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.021Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.021Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.022Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.035Z SERIAL « 0x011d00a91100000100e07f7f7f7f00000300000000030100007f7f7f7f7fc5 (31 bytes) -2024-09-06T11:05:25.035Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.036Z DRIVER « [REQ] [SendDataBridge] - callback id: 17 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.053Z SERIAL « 0x011d00a8000102149f02b001517dafb42bab9df98a5e8058039a790300e0ad (31 bytes) -2024-09-06T11:05:25.054Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.055Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceReport] - sequence number: 176 - SOS: true - MOS: false - receiver entropy: 0x517dafb42bab9df98a5e8058039a7903 -2024-09-06T11:05:25.056Z SERIAL » 0x012d00a90102219f03ed01124124a1abcb9a02883058d24d40247cb572472c62f (47 bytes) - 4bd8b7448084d98240000000000a9 -2024-09-06T11:05:25.057Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 237 - │ extensions: - │ · type: SPAN - │ sender EI: 0x24a1abcb9a02883058d24d40247cb572 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x3c10ed8c02588f8a544e741506 - │ ciphertext: 0x472c62 - │ auth data: 0x0102c80a10c50021ed01124124a1abcb9a02883058d24d40247cb57 - 2 - │ auth tag: 0xf4bd8b7448084d98 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:25.065Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.071Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.071Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.072Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.073Z DRIVER all queues idle -2024-09-06T11:05:25.112Z SERIAL « 0x011800a80001020f9f03b100b7a7cba4fee41a55ceb6a600e07a (26 bytes) -2024-09-06T11:05:25.113Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.114Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 177 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x3f4ca78d9d7b8772913260ddf6 - │ plaintext: 0x9f0904 - │ auth tag: 0xa4fee41a55ceb6a6 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_AccessControl -2024-09-06T11:05:25.114Z DRIVER all queues busy -2024-09-06T11:05:25.115Z SERIAL » 0x012b00a901021f9f03ee00a81baed2e377c75a785675d80aa2d4d965fc702d943 (45 bytes) - e7cc53334e2250000000012f6 -2024-09-06T11:05:25.116Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 18 - └─[Security2CCMessageEncapsulation] - │ sequence number: 238 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x2b5242176fd36b74ebd2588a69 - │ ciphertext: 0xa81baed2e377c75a785675d80aa2d4d965fc70 - │ auth data: 0x0102c80a10c5001fee00 - │ auth tag: 0x2d943e7cc53334e2 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_AccessControl -2024-09-06T11:05:25.124Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.130Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.131Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.131Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.149Z SERIAL « 0x011d00a91200000200e07f7f7f7f00000300000000030100007f7f7f7f7fc5 (31 bytes) -2024-09-06T11:05:25.149Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.150Z DRIVER « [REQ] [SendDataBridge] - callback id: 18 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.151Z DRIVER all queues idle -2024-09-06T11:05:25.167Z SERIAL « 0x010c00a8000102039f01b200e097 (14 bytes) -2024-09-06T11:05:25.168Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.169Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceGet] - sequence number: 178 -2024-09-06T11:05:25.170Z DRIVER all queues busy -2024-09-06T11:05:25.171Z SERIAL » 0x012000a90102149f02ef0192b1bb0e0bf8ebf23b3e23d2f5f6d12505000000001 (34 bytes) - 37b -2024-09-06T11:05:25.171Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 19 - └─[Security2CCNonceReport] - sequence number: 239 - SOS: true - MOS: false - receiver entropy: 0x92b1bb0e0bf8ebf23b3e23d2f5f6d125 -2024-09-06T11:05:25.177Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.183Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.184Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.184Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.200Z SERIAL « 0x011d00a91300000100e07f7f7f7f00000300000000030100007f7f7f7f7fc7 (31 bytes) -2024-09-06T11:05:25.201Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.201Z DRIVER « [REQ] [SendDataBridge] - callback id: 19 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.202Z DRIVER all queues idle -2024-09-06T11:05:25.226Z SERIAL « 0x012900a8000102209f03b3011241d644fd7aceb92302b2458014f83422c1f9d0d (43 bytes) - f9730abc69c3aa900e1fd -2024-09-06T11:05:25.228Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.229Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -31 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 179 - │ extensions: - │ · type: SPAN - │ sender EI: 0xd644fd7aceb92302b2458014f83422c1 - │ key: 0xfca06923982033f3af9dfc7c1e4ad45a - │ IV: 0x428af89b733a090b8fa86a7ef8 - │ plaintext: 0x9f0b - │ auth tag: 0xdf9730abc69c3aa9 - │ security class: S2_AccessControl - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:25.229Z DRIVER all queues busy -2024-09-06T11:05:25.230Z SERIAL » 0x010f00a90102039f01f025000000001406 (17 bytes) -2024-09-06T11:05:25.231Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 20 - └─[Security2CCNonceGet] - sequence number: 240 -2024-09-06T11:05:25.234Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.241Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.242Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.242Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.254Z SERIAL « 0x011d00a91400000100e07f7f7f7f00000300000000030100007f7f7f7f7fc0 (31 bytes) -2024-09-06T11:05:25.255Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.255Z DRIVER « [REQ] [SendDataBridge] - callback id: 20 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.274Z SERIAL « 0x011d00a8000102149f02b4011a41624d9611356de8b7ce83dca9993800e0f8 (31 bytes) -2024-09-06T11:05:25.274Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.275Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceReport] - sequence number: 180 - SOS: true - MOS: false - receiver entropy: 0x1a41624d9611356de8b7ce83dca99938 -2024-09-06T11:05:25.276Z SERIAL » 0x012d00a90102219f03f10112419bf94bd8ff38c1d1155ab536c92c5f7acc19325 (47 bytes) - 6e46a0c62ed6d8824000000000031 -2024-09-06T11:05:25.276Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 241 - │ extensions: - │ · type: SPAN - │ sender EI: 0x9bf94bd8ff38c1d1155ab536c92c5f7a - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x1b1c27ccd3e078d4cb788a7ef0 - │ ciphertext: 0xcc1932 - │ auth data: 0x0102c80a10c50021f10112419bf94bd8ff38c1d1155ab536c92c5f7 - a - │ auth tag: 0x56e46a0c62ed6d88 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:25.285Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.291Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.292Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.292Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.293Z DRIVER all queues idle -2024-09-06T11:05:25.328Z SERIAL « 0x011800a80001020f9f03b50027ab0a469c4b6c5b1416f800e050 (26 bytes) -2024-09-06T11:05:25.329Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.330Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 181 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x23b368bfa4ba5dd44b7b68b0b6 - │ plaintext: 0x9f0980 - │ auth tag: 0x469c4b6c5b1416f8 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S0_Legacy -2024-09-06T11:05:25.331Z DRIVER all queues busy -2024-09-06T11:05:25.331Z SERIAL » 0x012b00a901021f9f03f200f959ad8b13753eb8237cd2990a5edbdc4f37305e920 (45 bytes) - 15d8cb4d34b25000000001566 -2024-09-06T11:05:25.332Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 21 - └─[Security2CCMessageEncapsulation] - │ sequence number: 242 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x8af07c0e552fccd1990e26a2e2 - │ ciphertext: 0xf959ad8b13753eb8237cd2990a5edbdc4f3730 - │ auth data: 0x0102c80a10c5001ff200 - │ auth tag: 0x5e92015d8cb4d34b - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S0_Legacy -2024-09-06T11:05:25.340Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.346Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.346Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.347Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.364Z SERIAL « 0x011d00a91500000100e07f7f7f7f00000300000000030100007f7f7f7f7fc1 (31 bytes) -2024-09-06T11:05:25.365Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.365Z DRIVER « [REQ] [SendDataBridge] - callback id: 21 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.366Z DRIVER all queues idle -2024-09-06T11:05:25.380Z SERIAL « 0x010c00a8000102039f01b600e093 (14 bytes) -2024-09-06T11:05:25.381Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.382Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceGet] - sequence number: 182 -2024-09-06T11:05:25.382Z DRIVER all queues busy -2024-09-06T11:05:25.383Z SERIAL » 0x012000a90102149f02f301591072502cc06bfdc1b985fc8b7e9f7505000000001 (34 bytes) - 612 -2024-09-06T11:05:25.383Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 22 - └─[Security2CCNonceReport] - sequence number: 243 - SOS: true - MOS: false - receiver entropy: 0x591072502cc06bfdc1b985fc8b7e9f75 -2024-09-06T11:05:25.391Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.396Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.397Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.398Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.415Z SERIAL « 0x011d00a91600000100e07f7f7f7f00000300000000030100007f7f7f7f7fc2 (31 bytes) -2024-09-06T11:05:25.415Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.416Z DRIVER « [REQ] [SendDataBridge] - callback id: 22 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.417Z DRIVER all queues idle -2024-09-06T11:05:25.440Z SERIAL « 0x012900a8000102209f03b70112417b17ee5e7fd64614f64846ccf4c83a0260f29 (43 bytes) - c5680a3c8ae605200e0fc -2024-09-06T11:05:25.442Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.443Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 183 - │ extensions: - │ · type: SPAN - │ sender EI: 0x7b17ee5e7fd64614f64846ccf4c83a02 - │ key: 0xece479ca82cc867c1db471e86eab2248 - │ IV: 0x6e2e5d911ea903206d6d1f38b8 - │ plaintext: 0x9f0b - │ auth tag: 0x9c5680a3c8ae6052 - │ security class: S0_Legacy - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:25.444Z DRIVER all queues busy -2024-09-06T11:05:25.444Z SERIAL » 0x010f00a90102039f01f425000000001701 (17 bytes) -2024-09-06T11:05:25.445Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 23 - └─[Security2CCNonceGet] - sequence number: 244 -2024-09-06T11:05:25.449Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.455Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.456Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.456Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.469Z SERIAL « 0x011d00a91700000100e07f7f7f7f00000300000000030100007f7f7f7f7fc3 (31 bytes) -2024-09-06T11:05:25.470Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.470Z DRIVER « [REQ] [SendDataBridge] - callback id: 23 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.490Z SERIAL « 0x011d00a8000102149f02b801fdce68f693b0caefa4c7bc60935f633f00e01d (31 bytes) -2024-09-06T11:05:25.491Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.491Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCNonceReport] - sequence number: 184 - SOS: true - MOS: false - receiver entropy: 0xfdce68f693b0caefa4c7bc60935f633f -2024-09-06T11:05:25.492Z SERIAL » 0x012d00a90102219f03f5011241c2f0ffb5a7f3c01f8b52f8255358c660513bdc2 (47 bytes) - b90b0602c845b2324000000000011 -2024-09-06T11:05:25.493Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 245 - │ extensions: - │ · type: SPAN - │ sender EI: 0xc2f0ffb5a7f3c01f8b52f8255358c660 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x5fe047a15c4f3a56b698cb51f4 - │ ciphertext: 0x513bdc - │ auth data: 0x0102c80a10c50021f5011241c2f0ffb5a7f3c01f8b52f8255358c66 - 0 - │ auth tag: 0x2b90b0602c845b23 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:25.501Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.508Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.509Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.509Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.510Z DRIVER all queues idle -2024-09-06T11:05:25.546Z SERIAL « 0x011800a80001020f9f03b900d21d0f61da2ac33d0ed74400e0b4 (26 bytes) -2024-09-06T11:05:25.548Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.549Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 185 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x239de663297e35472ac380463b - │ plaintext: 0x9f0c01 - │ auth tag: 0x61da2ac33d0ed744 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: false - request complete: true -2024-09-06T11:05:25.550Z CNTRLR [Node 002] Security S2 bootstrapping successful with these security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:05:25.550Z DRIVER the message was handled -2024-09-06T11:05:30.512Z DRIVER all queues busy -2024-09-06T11:05:30.514Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:05:30.515Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:05:30.518Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:30.520Z SERIAL « 0x0107013b9492927f29 (9 bytes) -2024-09-06T11:05:30.522Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:30.524Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -108 dBm - channel 1: -110 dBm - channel 2: -110 dBm - channel 3: N/A -2024-09-06T11:05:30.527Z DRIVER all queues idle -2024-09-06T11:05:45.880Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:05:45.882Z DRIVER version 13.2.0 -2024-09-06T11:05:45.883Z DRIVER -2024-09-06T11:05:45.883Z DRIVER starting driver... -2024-09-06T11:05:45.883Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T11:05:45.893Z DRIVER serial port opened -2024-09-06T11:05:45.894Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:05:46.899Z DRIVER loading configuration... -2024-09-06T11:05:46.905Z CONFIG version 13.2.0 -2024-09-06T11:05:47.225Z DRIVER beginning interview... -2024-09-06T11:05:47.225Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:05:47.226Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:05:47.226Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:05:47.226Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:05:47.226Z CNTRLR querying Serial API capabilities... -2024-09-06T11:05:47.227Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:05:47.228Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:05:47.231Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.241Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:05:47.242Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.243Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:05:47.244Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:05:47.244Z CNTRLR querying additional controller information... -2024-09-06T11:05:47.245Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:47.245Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:47.251Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.252Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T11:05:47.253Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.253Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:47.254Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:05:47.255Z CNTRLR querying version info... -2024-09-06T11:05:47.256Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:05:47.256Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:05:47.261Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.262Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:05:47.262Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.262Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:05:47.263Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:05:47.263Z CNTRLR querying protocol version info... -2024-09-06T11:05:47.264Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:05:47.265Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:05:47.272Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.272Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:05:47.273Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.273Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:05:47.274Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:05:47.274Z CNTRLR querying controller capabilities... -2024-09-06T11:05:47.275Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:47.275Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:47.280Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.280Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T11:05:47.281Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.281Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T11:05:47.282Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T11:05:47.282Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:05:47.283Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:05:47.283Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:05:47.290Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.290Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:05:47.291Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.291Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:05:47.292Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:05:47.292Z CNTRLR querying max. payload size... -2024-09-06T11:05:47.293Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:05:47.293Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:05:47.298Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.298Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:05:47.299Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.299Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:05:47.300Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:05:47.300Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:05:47.301Z CNTRLR Querying configured RF region... -2024-09-06T11:05:47.301Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:05:47.302Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:05:47.307Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.307Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:05:47.308Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.308Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:05:47.309Z CNTRLR The controller is using RF region Europe -2024-09-06T11:05:47.309Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:05:47.310Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:05:47.310Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:05:47.315Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.315Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:05:47.315Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.316Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:05:47.316Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:05:47.317Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:05:47.317Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:05:47.318Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:05:47.323Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.323Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:05:47.323Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.324Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:05:47.325Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:05:47.325Z CNTRLR Performing soft reset... -2024-09-06T11:05:47.326Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:05:47.326Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:05:47.328Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.329Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:05:47.330Z DRIVER all queues idle -2024-09-06T11:05:47.548Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:05:47.548Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.549Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:05:47.549Z CNTRLR reconnected and restarted -2024-09-06T11:05:47.550Z CNTRLR Starting hardware watchdog... -2024-09-06T11:05:47.550Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:05:47.550Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:05:47.551Z DRIVER all queues busy -2024-09-06T11:05:47.551Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:05:47.551Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:05:47.552Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:05:47.553Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:05:47.554Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.554Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.556Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:47.557Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.557Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:47.558Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:05:47.558Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:05:47.559Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:05:47.564Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.566Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:47.566Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.567Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:47.567Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:05:47.568Z CNTRLR querying controller IDs... -2024-09-06T11:05:47.568Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:47.569Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:47.570Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.572Z SERIAL « 0x01080120c80a10c501c0 (10 bytes) -2024-09-06T11:05:47.572Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.573Z DRIVER « [RES] [GetControllerId] - home ID: 0xc80a10c5 - own node ID: 1 -2024-09-06T11:05:47.574Z CNTRLR received controller IDs: - home ID: 0xc80a10c5 - own node ID: 1 -2024-09-06T11:05:47.574Z CNTRLR Enabling TX status report... -2024-09-06T11:05:47.574Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:05:47.575Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:05:47.579Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.579Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:05:47.580Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.580Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:05:47.581Z CNTRLR Enabling TX status report successful... -2024-09-06T11:05:47.581Z CNTRLR finding SUC... -2024-09-06T11:05:47.582Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:05:47.582Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:05:47.586Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.586Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:05:47.587Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.587Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:05:47.588Z CNTRLR This is the SUC -2024-09-06T11:05:47.588Z DRIVER all queues idle -2024-09-06T11:05:47.607Z DRIVER Cache file for homeId 0xc80a10c5 found, attempting to restore the network from - cache... -2024-09-06T11:05:47.609Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:05:47.610Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:05:47.610Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:47.611Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:47.611Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:47.611Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T11:05:47.611Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:05:47.611Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T11:05:47.612Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:47.612Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T11:05:47.612Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:47.612Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T11:05:47.613Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:05:47.613Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T11:05:47.613Z CNTRLR Interview completed -2024-09-06T11:05:47.613Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:05:47.614Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:05:47.615Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:05:47.615Z DRIVER driver ready -2024-09-06T11:05:48.616Z CNTRLR Updating the controller NIF... -2024-09-06T11:05:48.618Z DRIVER all queues busy -2024-09-06T11:05:48.621Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:05:48.622Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:05:48.627Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.630Z CNTRLR performing hard reset... -2024-09-06T11:05:48.633Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T11:05:48.634Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T11:05:48.636Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.657Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T11:05:48.657Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.658Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T11:05:48.659Z CNTRLR hard reset succeeded -2024-09-06T11:05:48.659Z CNTRLR querying Serial API capabilities... -2024-09-06T11:05:48.660Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:05:48.661Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:05:48.674Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.679Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:05:48.679Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.680Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:05:48.681Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:05:48.681Z CNTRLR querying additional controller information... -2024-09-06T11:05:48.682Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:48.682Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:48.685Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.689Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:05:48.690Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.691Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:48.692Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:05:48.692Z CNTRLR querying version info... -2024-09-06T11:05:48.693Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:05:48.693Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:05:48.695Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.697Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:05:48.698Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.698Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:05:48.699Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:05:48.699Z CNTRLR querying protocol version info... -2024-09-06T11:05:48.700Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:05:48.701Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:05:48.703Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.706Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:05:48.706Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.707Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:05:48.707Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:05:48.708Z CNTRLR querying controller capabilities... -2024-09-06T11:05:48.708Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:48.709Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:48.711Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.712Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:05:48.713Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.713Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:05:48.714Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:05:48.714Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:05:48.715Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:05:48.715Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:05:48.718Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.721Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:05:48.721Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.722Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:05:48.723Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:05:48.723Z CNTRLR querying max. payload size... -2024-09-06T11:05:48.724Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:05:48.725Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:05:48.727Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.728Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:05:48.728Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.729Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:05:48.730Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:05:48.730Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:05:48.730Z CNTRLR Querying configured RF region... -2024-09-06T11:05:48.731Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:05:48.731Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:05:48.733Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.734Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:05:48.735Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.735Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:05:48.736Z CNTRLR The controller is using RF region Europe -2024-09-06T11:05:48.736Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:05:48.737Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:05:48.737Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:05:48.739Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.740Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:05:48.741Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.741Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:05:48.742Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:05:48.742Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:05:48.743Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:05:48.743Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:05:48.745Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.746Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:05:48.747Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.747Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:05:48.748Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:05:48.748Z CNTRLR Performing soft reset... -2024-09-06T11:05:48.749Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:05:48.749Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:05:48.751Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.751Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:05:48.752Z DRIVER all queues idle -2024-09-06T11:05:48.976Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:05:48.977Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.979Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:05:48.980Z CNTRLR reconnected and restarted -2024-09-06T11:05:48.980Z CNTRLR Starting hardware watchdog... -2024-09-06T11:05:48.981Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:05:48.982Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:05:48.983Z DRIVER all queues busy -2024-09-06T11:05:48.985Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:05:48.986Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:05:48.988Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:05:48.990Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:05:48.992Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.993Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:48.994Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:48.995Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:48.996Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:48.997Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:05:48.998Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:05:48.998Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:05:49.000Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:49.002Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:49.002Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:49.003Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:49.003Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:05:49.004Z CNTRLR querying controller IDs... -2024-09-06T11:05:49.004Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:49.005Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:49.008Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:49.009Z SERIAL « 0x01080120f6b51bac0123 (10 bytes) -2024-09-06T11:05:49.009Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:49.009Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6b51bac - own node ID: 1 -2024-09-06T11:05:49.010Z CNTRLR received controller IDs: - home ID: 0xf6b51bac - own node ID: 1 -2024-09-06T11:05:49.010Z CNTRLR Enabling TX status report... -2024-09-06T11:05:49.011Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:05:49.011Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:05:49.014Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:49.015Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:05:49.015Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:49.016Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:05:49.016Z CNTRLR Enabling TX status report successful... -2024-09-06T11:05:49.017Z CNTRLR finding SUC... -2024-09-06T11:05:49.017Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:05:49.018Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:05:49.020Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:49.021Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:05:49.022Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:49.022Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:05:49.023Z CNTRLR No SUC present in the network -2024-09-06T11:05:49.023Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:05:49.024Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T11:05:49.024Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T11:05:49.028Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:49.030Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:05:49.030Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:49.031Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:05:49.032Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:05:49.032Z DRIVER all queues idle -2024-09-06T11:05:49.037Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:49.037Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:49.037Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:49.038Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T11:05:49.038Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:05:49.038Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T11:05:49.038Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:49.038Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T11:05:49.039Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:49.039Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T11:05:49.039Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:05:49.039Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T11:05:49.040Z CNTRLR Interview completed -2024-09-06T11:05:49.040Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:05:49.040Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:05:49.041Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:05:49.041Z DRIVER driver ready -2024-09-06T11:05:53.660Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T11:05:53.662Z DRIVER all queues busy -2024-09-06T11:05:53.664Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T11:05:53.665Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T11:05:53.668Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:53.675Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T11:05:53.677Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:53.679Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T11:05:53.680Z CNTRLR The controller is now ready to add nodes -2024-09-06T11:05:53.681Z DRIVER all queues idle -2024-09-06T11:05:57.715Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T11:05:57.715Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:57.716Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T11:05:57.716Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:05:57.716Z DRIVER 1 handler registered! -2024-09-06T11:05:57.717Z DRIVER invoking handler #0 -2024-09-06T11:05:57.717Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T11:05:57.820Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T11:05:57.822Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:57.824Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T11:05:57.824Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:05:57.825Z DRIVER 1 handler registered! -2024-09-06T11:05:57.825Z DRIVER invoking handler #0 -2024-09-06T11:05:57.826Z CNTRLR handling add node request (status = AddingController) -2024-09-06T11:05:57.831Z DRIVER the message was handled -2024-09-06T11:05:58.240Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T11:05:58.241Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.243Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T11:05:58.244Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:05:58.244Z DRIVER 1 handler registered! -2024-09-06T11:05:58.245Z DRIVER invoking handler #0 -2024-09-06T11:05:58.245Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T11:05:58.246Z CNTRLR finishing inclusion process... -2024-09-06T11:05:58.247Z DRIVER all queues busy -2024-09-06T11:05:58.249Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T11:05:58.250Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T11:05:58.253Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.290Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T11:05:58.290Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.291Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T11:05:58.292Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T11:05:58.293Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T11:05:58.298Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.298Z CNTRLR The inclusion process was stopped -2024-09-06T11:05:58.299Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T11:05:58.299Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T11:05:58.299Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T11:05:58.300Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T11:05:58.301Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T11:05:58.306Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.309Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T11:05:58.310Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.310Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T11:05:58.374Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T11:05:58.375Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.376Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T11:05:58.377Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T11:05:58.378Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T11:05:58.380Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.387Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T11:05:58.388Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.389Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T11:05:58.460Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T11:05:58.462Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.464Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T11:05:58.471Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T11:05:58.473Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T11:05:58.476Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.483Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:58.483Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.484Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.595Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:06:01.596Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.596Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:06:01.597Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.597Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:06:01.597Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.599Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.601Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.602Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:06:01.602Z DRIVER no handlers registered! -2024-09-06T11:06:01.602Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.603Z DRIVER handling request SendDataBridge (169) -2024-09-06T11:06:01.603Z DRIVER no handlers registered! -2024-09-06T11:06:01.604Z SERIAL « 0x010f00a8000102069f050002018700df9c (17 bytes) -2024-09-06T11:06:01.605Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.606Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.608Z SERIAL » 0x011200a90102069f060002018725000000000871 (20 bytes) -2024-09-06T11:06:01.609Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.615Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.621Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.622Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.624Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.640Z SERIAL « 0x011d00a90800000100df7f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:06:01.640Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.641Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.642Z DRIVER all queues idle -2024-09-06T11:06:01.665Z SERIAL « 0x012c00a8000102239f0800000016326db7f17b665ff37e1510eaeeced1cd3d320 (46 bytes) - 0ee627b76f02fb82ad74600df52 -2024-09-06T11:06:01.666Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.667Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x000016326db7f17b665ff37e1510eaeeced1cd3d3200ee627b76f - 02fb82ad746 -2024-09-06T11:06:01.668Z DRIVER all queues busy -2024-09-06T11:06:01.669Z SERIAL » 0x012f00a90102239f0801fde52acde7bf333072b0d32512f8d3ed9f97f1cdc0139 (49 bytes) - 676e5a988b7aad15809250000000009f9 -2024-09-06T11:06:01.669Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0xfde52acde7bf333072b0d32512f8d3ed9f97f1cdc0139676e5a98 - 8b7aad15809 -2024-09-06T11:06:01.679Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.684Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.684Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.685Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.706Z SERIAL « 0x011d00a90900000200df7f7f7f7f00000300000000030100007f7f7f7f7fe1 (31 bytes) -2024-09-06T11:06:01.706Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.707Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.709Z DRIVER all queues idle -2024-09-06T11:06:01.723Z SERIAL « 0x010c00a8000102039f01fd00dfe7 (14 bytes) -2024-09-06T11:06:01.724Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.724Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 253 -2024-09-06T11:06:01.726Z DRIVER all queues busy -2024-09-06T11:06:01.727Z SERIAL » 0x012000a90102149f020601e68611a022589a58c26524d318ea85e105000000000 (34 bytes) - a5b -2024-09-06T11:06:01.728Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 10 - └─[Security2CCNonceReport] - sequence number: 6 - SOS: true - MOS: false - receiver entropy: 0xe68611a022589a58c26524d318ea85e1 -2024-09-06T11:06:01.734Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.740Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.741Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.741Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.757Z SERIAL « 0x011d00a90a00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe1 (31 bytes) -2024-09-06T11:06:01.758Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.758Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.759Z DRIVER all queues idle -2024-09-06T11:06:01.785Z SERIAL « 0x012d00a8000102249f03fe0112415291a211d5aa969a469363af95164ec59537f (47 bytes) - c5d5bc3cb4554f274f1ecc300e086 -2024-09-06T11:06:01.787Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.788Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 254 - │ extensions: - │ · type: SPAN - │ sender EI: 0x5291a211d5aa969a469363af95164ec5 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x05f2c238b27c7229b6259f98cf - │ plaintext: 0x9f0601020187 - │ auth tag: 0xcb4554f274f1ecc3 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.789Z DRIVER all queues busy -2024-09-06T11:06:01.790Z SERIAL » 0x011e00a90102129f030700e70b239a84c507dfc350c154a3cc25000000000b49 (32 bytes) -2024-09-06T11:06:01.791Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 7 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x77104b86cc59fedb418c8467cb - │ ciphertext: 0xe70b239a84c5 - │ auth data: 0x0102f6b51bac00120700 - │ auth tag: 0x07dfc350c154a3cc - │ security class: Temporary - └─[Security2CCKEXReport] - echo: true - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.797Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.804Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.804Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.805Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.821Z SERIAL « 0x011d00a90b00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe0 (31 bytes) -2024-09-06T11:06:01.821Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.822Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.824Z DRIVER all queues idle -2024-09-06T11:06:01.840Z SERIAL « 0x011800a80001020f9f03ff007cbaacabfa461fdc88216600df8e (26 bytes) -2024-09-06T11:06:01.841Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.843Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 255 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x40e1bf0161b0dd7eba59f12e31 - │ plaintext: 0x9f0901 - │ auth tag: 0xabfa461fdc882166 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Unauthenticated -2024-09-06T11:06:01.844Z DRIVER all queues busy -2024-09-06T11:06:01.845Z SERIAL » 0x012b00a901021f9f0308007a731f9da8c841a0629f6bebbcfd350238c0b569752 (45 bytes) - 93f7455284125000000000cd2 -2024-09-06T11:06:01.846Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 12 - └─[Security2CCMessageEncapsulation] - │ sequence number: 8 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x10304918fbe84810ffe3027341 - │ ciphertext: 0x7a731f9da8c841a0629f6bebbcfd350238c0b5 - │ auth data: 0x0102f6b51bac001f0800 - │ auth tag: 0x6975293f74552841 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Unauthenticated -2024-09-06T11:06:01.854Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.861Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.861Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.862Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.881Z SERIAL « 0x011d00a90c00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:06:01.882Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.883Z DRIVER « [REQ] [SendDataBridge] - callback id: 12 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.883Z DRIVER all queues idle -2024-09-06T11:06:01.895Z SERIAL « 0x010c00a8000102039f010000df1a (14 bytes) -2024-09-06T11:06:01.896Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.897Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 0 -2024-09-06T11:06:01.898Z DRIVER all queues busy -2024-09-06T11:06:01.898Z SERIAL » 0x012000a90102149f02090152202eaa5dcf9a821fff7e55bf58043205000000000 (34 bytes) - d9a -2024-09-06T11:06:01.899Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 13 - └─[Security2CCNonceReport] - sequence number: 9 - SOS: true - MOS: false - receiver entropy: 0x52202eaa5dcf9a821fff7e55bf580432 -2024-09-06T11:06:01.905Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.911Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.912Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.913Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.927Z SERIAL « 0x011d00a90d00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T11:06:01.927Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.928Z DRIVER « [REQ] [SendDataBridge] - callback id: 13 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.934Z DRIVER all queues idle -2024-09-06T11:06:01.952Z SERIAL « 0x012900a8000102209f030101124163c9abbad297243227bb7640f0c1df134c0ce (43 bytes) - 7d2be38ee26e6e400dfcb -2024-09-06T11:06:01.953Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.954Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 1 - │ extensions: - │ · type: SPAN - │ sender EI: 0x63c9abbad297243227bb7640f0c1df13 - │ key: 0x44b45806725f2a6ebc3e2641f36f6caa - │ IV: 0x31e3c9f88a6d07b6fa1b7a487e - │ plaintext: 0x9f0b - │ auth tag: 0xe7d2be38ee26e6e4 - │ security class: S2_Unauthenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:01.956Z DRIVER all queues busy -2024-09-06T11:06:01.957Z SERIAL » 0x010f00a90102039f010a25000000000ee6 (17 bytes) -2024-09-06T11:06:01.957Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 14 - └─[Security2CCNonceGet] - sequence number: 10 -2024-09-06T11:06:01.961Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.967Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.968Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.968Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.981Z SERIAL « 0x011d00a90e00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe5 (31 bytes) -2024-09-06T11:06:01.982Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.982Z DRIVER « [REQ] [SendDataBridge] - callback id: 14 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.000Z SERIAL « 0x011d00a8000102149f02020128bd40dff9dd41d38759d7bbda0424c600df2e (31 bytes) -2024-09-06T11:06:02.001Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.002Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 2 - SOS: true - MOS: false - receiver entropy: 0x28bd40dff9dd41d38759d7bbda0424c6 -2024-09-06T11:06:02.003Z SERIAL » 0x012d00a90102219f030b01124149eeea66ad49472de177aaae06fc83ba6e281d9 (47 bytes) - 195ec24d3dd5ecc24000000000047 -2024-09-06T11:06:02.003Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 11 - │ extensions: - │ · type: SPAN - │ sender EI: 0x49eeea66ad49472de177aaae06fc83ba - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x9d9b899fcc011daf96936fd0d4 - │ ciphertext: 0x6e281d - │ auth data: 0x0102f6b51bac00210b01124149eeea66ad49472de177aaae06fc83b - a - │ auth tag: 0x9195ec24d3dd5ecc - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.012Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.018Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.018Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.019Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.020Z DRIVER all queues idle -2024-09-06T11:06:02.055Z SERIAL « 0x011800a80001020f9f030300a35d4b6dacc81a65e9f39c00df46 (26 bytes) -2024-09-06T11:06:02.056Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.057Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 3 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x6d755fb03128713909b22ac4a5 - │ plaintext: 0x9f0902 - │ auth tag: 0x6dacc81a65e9f39c - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Authenticated -2024-09-06T11:06:02.058Z DRIVER all queues busy -2024-09-06T11:06:02.059Z SERIAL » 0x012b00a901021f9f030c00bb00ffbd6830ec49380fa18b3da543a8c688eeb2f25 (45 bytes) - c256536bb8825000000000f48 -2024-09-06T11:06:02.060Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 15 - └─[Security2CCMessageEncapsulation] - │ sequence number: 12 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x12efb6c27224f675626dc98e3e - │ ciphertext: 0xbb00ffbd6830ec49380fa18b3da543a8c688ee - │ auth data: 0x0102f6b51bac001f0c00 - │ auth tag: 0xb2f25c256536bb88 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Authenticated -2024-09-06T11:06:02.068Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.074Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.074Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.075Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.092Z SERIAL « 0x011d00a90f00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe4 (31 bytes) -2024-09-06T11:06:02.092Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.093Z DRIVER « [REQ] [SendDataBridge] - callback id: 15 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.094Z DRIVER all queues idle -2024-09-06T11:06:02.107Z SERIAL « 0x010c00a8000102039f010400df1e (14 bytes) -2024-09-06T11:06:02.108Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.109Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 4 -2024-09-06T11:06:02.110Z DRIVER all queues busy -2024-09-06T11:06:02.110Z SERIAL » 0x012000a90102149f020d0111bd97b743c81c935b2802eece0f698d05000000001 (34 bytes) - 0d7 -2024-09-06T11:06:02.111Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 16 - └─[Security2CCNonceReport] - sequence number: 13 - SOS: true - MOS: false - receiver entropy: 0x11bd97b743c81c935b2802eece0f698d -2024-09-06T11:06:02.118Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.123Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.124Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.124Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.140Z SERIAL « 0x011d00a91000000100df7f7f7f7f00000300000000030100007f7f7f7f7ffb (31 bytes) -2024-09-06T11:06:02.141Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.141Z DRIVER « [REQ] [SendDataBridge] - callback id: 16 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.142Z DRIVER all queues idle -2024-09-06T11:06:02.165Z SERIAL « 0x012900a8000102209f0305011241f2440a66e5c2598eb31421baa7e4f74ead929 (43 bytes) - 26cfb9c0db765cf00df13 -2024-09-06T11:06:02.167Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.168Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 5 - │ extensions: - │ · type: SPAN - │ sender EI: 0xf2440a66e5c2598eb31421baa7e4f74e - │ key: 0xdda415256006027530b2d9548c898f93 - │ IV: 0x77f78076a8ba454b8be39ed4d7 - │ plaintext: 0x9f0b - │ auth tag: 0x926cfb9c0db765cf - │ security class: S2_Authenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:02.169Z DRIVER all queues busy -2024-09-06T11:06:02.169Z SERIAL » 0x010f00a90102039f010e250000000011fd (17 bytes) -2024-09-06T11:06:02.170Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 17 - └─[Security2CCNonceGet] - sequence number: 14 -2024-09-06T11:06:02.174Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.180Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.181Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.181Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.194Z SERIAL « 0x011d00a91100000100df7f7f7f7f00000300000000030100007f7f7f7f7ffa (31 bytes) -2024-09-06T11:06:02.194Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.195Z DRIVER « [REQ] [SendDataBridge] - callback id: 17 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.213Z SERIAL « 0x011d00a8000102149f0206015ce666ecdfec4de70ad7539bb456014a00df0d (31 bytes) -2024-09-06T11:06:02.214Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.215Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 6 - SOS: true - MOS: false - receiver entropy: 0x5ce666ecdfec4de70ad7539bb456014a -2024-09-06T11:06:02.216Z SERIAL » 0x012d00a90102219f030f0112418e325bd8dad4d37b513cef4cb21dc3ced80444f (47 bytes) - ea60c22c869e41d240000000000ff -2024-09-06T11:06:02.216Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 15 - │ extensions: - │ · type: SPAN - │ sender EI: 0x8e325bd8dad4d37b513cef4cb21dc3ce - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x65f3e112721d30625d04fcef75 - │ ciphertext: 0xd80444 - │ auth data: 0x0102f6b51bac00210f0112418e325bd8dad4d37b513cef4cb21dc3c - e - │ auth tag: 0xfea60c22c869e41d - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.225Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.231Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.232Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.232Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.233Z DRIVER all queues idle -2024-09-06T11:06:02.271Z SERIAL « 0x011800a80001020f9f030700aea3fa37ba236d7efa9f2a00df02 (26 bytes) -2024-09-06T11:06:02.272Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.273Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 7 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x296a7a7016d2f5b9cc1bee6c97 - │ plaintext: 0x9f0904 - │ auth tag: 0x37ba236d7efa9f2a - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_AccessControl -2024-09-06T11:06:02.273Z DRIVER all queues busy -2024-09-06T11:06:02.274Z SERIAL » 0x012b00a901021f9f031000277e517f2f48795adca604f18c3c03afbcbe3c235ad (45 bytes) - f97ebea850b250000000012fa -2024-09-06T11:06:02.275Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 18 - └─[Security2CCMessageEncapsulation] - │ sequence number: 16 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0xf2a09412a5eac0907757890c7b - │ ciphertext: 0x277e517f2f48795adca604f18c3c03afbcbe3c - │ auth data: 0x0102f6b51bac001f1000 - │ auth tag: 0x235adf97ebea850b - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_AccessControl -2024-09-06T11:06:02.283Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.289Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.290Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.290Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.308Z SERIAL « 0x011d00a91200000100df7f7f7f7f00000300000000030100007f7f7f7f7ff9 (31 bytes) -2024-09-06T11:06:02.308Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.309Z DRIVER « [REQ] [SendDataBridge] - callback id: 18 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.312Z DRIVER all queues idle -2024-09-06T11:06:02.325Z SERIAL « 0x010c00a8000102039f010800df12 (14 bytes) -2024-09-06T11:06:02.326Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.327Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 8 -2024-09-06T11:06:02.328Z DRIVER all queues busy -2024-09-06T11:06:02.329Z SERIAL » 0x012000a90102149f021101763d177bb16b85299b32ff75d44f1c8605000000001 (34 bytes) - 389 -2024-09-06T11:06:02.329Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 19 - └─[Security2CCNonceReport] - sequence number: 17 - SOS: true - MOS: false - receiver entropy: 0x763d177bb16b85299b32ff75d44f1c86 -2024-09-06T11:06:02.336Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.341Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.342Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.342Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.358Z SERIAL « 0x011d00a91300000100df7f7f7f7f00000300000000030100007f7f7f7f7ff8 (31 bytes) -2024-09-06T11:06:02.359Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.359Z DRIVER « [REQ] [SendDataBridge] - callback id: 19 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.360Z DRIVER all queues idle -2024-09-06T11:06:02.385Z SERIAL « 0x012900a8000102209f0309011241f8ff20c6f7337e9d0d61e8ae5925f597752ce (43 bytes) - feb2ff06de9b44200df47 -2024-09-06T11:06:02.386Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.387Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 9 - │ extensions: - │ · type: SPAN - │ sender EI: 0xf8ff20c6f7337e9d0d61e8ae5925f597 - │ key: 0xfca06923982033f3af9dfc7c1e4ad45a - │ IV: 0x9ffcc90d68eca7fd9d90c814d6 - │ plaintext: 0x9f0b - │ auth tag: 0xefeb2ff06de9b442 - │ security class: S2_AccessControl - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:02.388Z DRIVER all queues busy -2024-09-06T11:06:02.388Z SERIAL » 0x010f00a90102039f0112250000000014e4 (17 bytes) -2024-09-06T11:06:02.389Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 20 - └─[Security2CCNonceGet] - sequence number: 18 -2024-09-06T11:06:02.392Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.399Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.399Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.400Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.412Z SERIAL « 0x011d00a91400000100df7f7f7f7f00000300000000030100007f7f7f7f7fff (31 bytes) -2024-09-06T11:06:02.413Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.413Z DRIVER « [REQ] [SendDataBridge] - callback id: 20 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.431Z SERIAL « 0x011d00a8000102149f020a0124e98c5e0a68b23a67afa3b6037a4e1400df1f (31 bytes) -2024-09-06T11:06:02.432Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.433Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 10 - SOS: true - MOS: false - receiver entropy: 0x24e98c5e0a68b23a67afa3b6037a4e14 -2024-09-06T11:06:02.434Z SERIAL » 0x012d00a90102219f0313011241953713e93e8173a9bf90bc14fc9e3b8a8e80823 (47 bytes) - a74ac77a52be26c240000000000d0 -2024-09-06T11:06:02.435Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 19 - │ extensions: - │ · type: SPAN - │ sender EI: 0x953713e93e8173a9bf90bc14fc9e3b8a - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x9fef4b9232ec7fb741cf1852a6 - │ ciphertext: 0x8e8082 - │ auth data: 0x0102f6b51bac002113011241953713e93e8173a9bf90bc14fc9e3b8 - a - │ auth tag: 0x3a74ac77a52be26c - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.443Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.450Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.451Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.451Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.452Z DRIVER all queues idle -2024-09-06T11:06:02.486Z SERIAL « 0x011800a80001020f9f030b0063a31c7a2f98a43aa2b8f700df69 (26 bytes) -2024-09-06T11:06:02.487Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.488Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 11 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0xe6121ae308a3774662a9aa1ef1 - │ plaintext: 0x9f0980 - │ auth tag: 0x7a2f98a43aa2b8f7 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S0_Legacy -2024-09-06T11:06:02.489Z DRIVER all queues busy -2024-09-06T11:06:02.489Z SERIAL » 0x012b00a901021f9f0314006e6919ed5ab8638d2979744b1a68bbd43284bb535e8 (45 bytes) - 763078b4e89250000000015fb -2024-09-06T11:06:02.490Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 21 - └─[Security2CCMessageEncapsulation] - │ sequence number: 20 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x00204748ed62431b4aa3e83a48 - │ ciphertext: 0x6e6919ed5ab8638d2979744b1a68bbd43284bb - │ auth data: 0x0102f6b51bac001f1400 - │ auth tag: 0x535e8763078b4e89 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S0_Legacy -2024-09-06T11:06:02.498Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.504Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.505Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.505Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.521Z SERIAL « 0x011d00a91500000100df7f7f7f7f00000300000000030100007f7f7f7f7ffe (31 bytes) -2024-09-06T11:06:02.522Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.523Z DRIVER « [REQ] [SendDataBridge] - callback id: 21 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.524Z DRIVER all queues idle -2024-09-06T11:06:02.537Z SERIAL « 0x010c00a8000102039f010c00df16 (14 bytes) -2024-09-06T11:06:02.538Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.539Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 12 -2024-09-06T11:06:02.540Z DRIVER all queues busy -2024-09-06T11:06:02.541Z SERIAL » 0x012000a90102149f02150161354b97efb7a67d462d9a888063575605000000001 (34 bytes) - 66b -2024-09-06T11:06:02.541Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 22 - └─[Security2CCNonceReport] - sequence number: 21 - SOS: true - MOS: false - receiver entropy: 0x61354b97efb7a67d462d9a8880635756 -2024-09-06T11:06:02.548Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.554Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.554Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.555Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.570Z SERIAL « 0x011d00a91600000100df7f7f7f7f00000300000000030100007f7f7f7f7ffd (31 bytes) -2024-09-06T11:06:02.570Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.570Z DRIVER « [REQ] [SendDataBridge] - callback id: 22 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.571Z DRIVER all queues idle -2024-09-06T11:06:02.596Z SERIAL « 0x012900a8000102209f030d011241870f126da9776b3cd1412ae3717afa48e06e0 (43 bytes) - 80c32e190aed6c800dfa6 -2024-09-06T11:06:02.597Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.598Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 13 - │ extensions: - │ · type: SPAN - │ sender EI: 0x870f126da9776b3cd1412ae3717afa48 - │ key: 0xece479ca82cc867c1db471e86eab2248 - │ IV: 0x86be5f7ddf89e0a9244e16f9aa - │ plaintext: 0x9f0b - │ auth tag: 0x080c32e190aed6c8 - │ security class: S0_Legacy - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:02.599Z DRIVER all queues busy -2024-09-06T11:06:02.599Z SERIAL » 0x010f00a90102039f0116250000000017e3 (17 bytes) -2024-09-06T11:06:02.600Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 23 - └─[Security2CCNonceGet] - sequence number: 22 -2024-09-06T11:06:02.604Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.610Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.610Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.611Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.623Z SERIAL « 0x011d00a91700000100df7f7f7f7f00000300000000030100007f7f7f7f7ffc (31 bytes) -2024-09-06T11:06:02.624Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.625Z DRIVER « [REQ] [SendDataBridge] - callback id: 23 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.646Z SERIAL « 0x011d00a8000102149f020e0136f954b3af5bacd7af45140619de332c00df97 (31 bytes) -2024-09-06T11:06:02.646Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.647Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 14 - SOS: true - MOS: false - receiver entropy: 0x36f954b3af5bacd7af45140619de332c -2024-09-06T11:06:02.648Z SERIAL » 0x012d00a90102219f03170112413ea321fe7ab403923c0d12693f29ab8e33bfbca (47 bytes) - 625b7a9dad56f562400000000005b -2024-09-06T11:06:02.649Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 23 - │ extensions: - │ · type: SPAN - │ sender EI: 0x3ea321fe7ab403923c0d12693f29ab8e - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x800c0f6dcfd1dee8148199ed3c - │ ciphertext: 0x33bfbc - │ auth data: 0x0102f6b51bac0021170112413ea321fe7ab403923c0d12693f29ab8 - e - │ auth tag: 0xa625b7a9dad56f56 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.657Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.663Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.664Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.665Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.665Z DRIVER all queues idle -2024-09-06T11:06:02.702Z SERIAL « 0x011800a80001020f9f030f00ebdd5e55166e9212fcf5e200df21 (26 bytes) -2024-09-06T11:06:02.703Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.704Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 15 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x09ed6aae312b67ed9b87e9760d - │ plaintext: 0x9f0c01 - │ auth tag: 0x55166e9212fcf5e2 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: false - request complete: true -2024-09-06T11:06:02.705Z CNTRLR [Node 002] Security S2 bootstrapping successful with these security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:06:02.705Z DRIVER the message was handled -2024-09-06T11:06:07.371Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:06:07.373Z DRIVER version 13.2.0 -2024-09-06T11:06:07.374Z DRIVER -2024-09-06T11:06:07.374Z DRIVER starting driver... -2024-09-06T11:06:07.374Z DRIVER opening serial port /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if0 - 0 -2024-09-06T11:06:07.383Z DRIVER serial port opened -2024-09-06T11:06:07.384Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:06:08.389Z DRIVER loading configuration... -2024-09-06T11:06:08.394Z CONFIG version 13.2.0 -2024-09-06T11:06:08.696Z DRIVER beginning interview... -2024-09-06T11:06:08.698Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:06:08.698Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:06:08.698Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:06:08.698Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:06:08.699Z CNTRLR querying Serial API capabilities... -2024-09-06T11:06:08.707Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:06:08.708Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:06:08.711Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.716Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:06:08.717Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.718Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:06:08.720Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:06:08.721Z CNTRLR querying additional controller information... -2024-09-06T11:06:08.722Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:06:08.723Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:06:08.731Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.732Z SERIAL « 0x012501020a081d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800cd -2024-09-06T11:06:08.733Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.734Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a081d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:06:08.734Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: true - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:06:08.735Z CNTRLR querying version info... -2024-09-06T11:06:08.736Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:06:08.736Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:06:08.738Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.743Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:06:08.743Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.744Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:06:08.745Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:06:08.745Z CNTRLR querying protocol version info... -2024-09-06T11:06:08.746Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:06:08.746Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:06:08.752Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.752Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:06:08.753Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.753Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:06:08.754Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:06:08.754Z CNTRLR querying controller capabilities... -2024-09-06T11:06:08.755Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:06:08.756Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:06:08.761Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.761Z SERIAL « 0x010401051ce3 (6 bytes) -2024-09-06T11:06:08.762Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.762Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x1c -2024-09-06T11:06:08.763Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: true - started this network: true - SIS is present: true - was real primary: true -2024-09-06T11:06:08.763Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:06:08.764Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:06:08.765Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:06:08.769Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.770Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:06:08.770Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.771Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:06:08.772Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:06:08.772Z CNTRLR querying max. payload size... -2024-09-06T11:06:08.773Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:06:08.773Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:06:08.778Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.778Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:06:08.778Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.779Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:06:08.780Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:06:08.780Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:06:08.781Z CNTRLR Querying configured RF region... -2024-09-06T11:06:08.781Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:06:08.782Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:06:08.786Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.787Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:06:08.787Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.788Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:06:08.788Z CNTRLR The controller is using RF region Europe -2024-09-06T11:06:08.788Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:06:08.789Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:06:08.790Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:06:08.793Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.794Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:06:08.794Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.795Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:06:08.795Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:06:08.796Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:06:08.796Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:06:08.797Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:06:08.801Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.802Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:06:08.802Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.803Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:06:08.804Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:06:08.804Z CNTRLR Performing soft reset... -2024-09-06T11:06:08.805Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:06:08.805Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:06:08.809Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.810Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:06:08.811Z DRIVER all queues idle -2024-09-06T11:06:09.037Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:06:09.037Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.038Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:06:09.038Z CNTRLR reconnected and restarted -2024-09-06T11:06:09.038Z CNTRLR Starting hardware watchdog... -2024-09-06T11:06:09.038Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:06:09.039Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:06:09.039Z DRIVER all queues busy -2024-09-06T11:06:09.039Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:06:09.040Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:06:09.041Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:06:09.041Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:06:09.042Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.043Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.045Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:09.045Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.046Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:09.047Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:06:09.047Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:06:09.048Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:06:09.053Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.054Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:09.054Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.055Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:09.056Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:06:09.056Z CNTRLR querying controller IDs... -2024-09-06T11:06:09.056Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:06:09.057Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:06:09.059Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.060Z SERIAL « 0x01080120f6b51bac0123 (10 bytes) -2024-09-06T11:06:09.061Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.061Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6b51bac - own node ID: 1 -2024-09-06T11:06:09.062Z CNTRLR received controller IDs: - home ID: 0xf6b51bac - own node ID: 1 -2024-09-06T11:06:09.062Z CNTRLR Enabling TX status report... -2024-09-06T11:06:09.063Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:06:09.063Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:06:09.068Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.068Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:06:09.068Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.069Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:06:09.070Z CNTRLR Enabling TX status report successful... -2024-09-06T11:06:09.070Z CNTRLR finding SUC... -2024-09-06T11:06:09.070Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:06:09.071Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:06:09.074Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.075Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:06:09.075Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.076Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:06:09.077Z CNTRLR This is the SUC -2024-09-06T11:06:09.078Z DRIVER all queues idle -2024-09-06T11:06:09.095Z DRIVER Cache file for homeId 0xf6b51bac found, attempting to restore the network from - cache... -2024-09-06T11:06:09.097Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:06:09.098Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:06:09.098Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:06:09.098Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:06:09.099Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:06:09.099Z CNTRLR [Node 001] [~] [Manufacturer Specific] manufacturerId: 634 => 634 -2024-09-06T11:06:09.099Z CNTRLR [Node 001] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:06:09.099Z CNTRLR [Node 001] [~] [Manufacturer Specific] productId: 1552 => 1552 -2024-09-06T11:06:09.100Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:06:09.100Z CNTRLR [Node 001] [~] [Version] firmwareVersions: 1.30 => 1.30 -2024-09-06T11:06:09.100Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:06:09.100Z CNTRLR [Node 001] [~] [Version] zWaveProtocolVersion: "7.21.3" => "7.21.3" -2024-09-06T11:06:09.101Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:06:09.101Z CNTRLR [Node 001] [~] [Version] sdkVersion: "7.21.3" => "7.21.3" -2024-09-06T11:06:09.101Z CNTRLR Interview completed -2024-09-06T11:06:09.101Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:06:09.102Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:06:09.103Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:06:09.104Z DRIVER driver ready -2024-09-06T11:06:10.104Z CNTRLR Updating the controller NIF... -2024-09-06T11:06:10.106Z DRIVER all queues busy -2024-09-06T11:06:10.109Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:06:10.111Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:06:10.114Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.117Z CNTRLR performing hard reset... -2024-09-06T11:06:10.119Z SERIAL » 0x0104004201b8 (6 bytes) -2024-09-06T11:06:10.120Z DRIVER » [REQ] [HardReset] - callback id: 1 -2024-09-06T11:06:10.123Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.144Z SERIAL « 0x0104004201b8 (6 bytes) -2024-09-06T11:06:10.144Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.145Z DRIVER « [REQ] [HardReset] - callback id: 1 -2024-09-06T11:06:10.146Z CNTRLR hard reset succeeded -2024-09-06T11:06:10.146Z CNTRLR querying Serial API capabilities... -2024-09-06T11:06:10.147Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:06:10.147Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:06:10.150Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.154Z SERIAL « 0x012b0107011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000035 -2024-09-06T11:06:10.155Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.155Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x011e027a00040610f6873e88cf2bc04ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:06:10.156Z CNTRLR received API capabilities: - firmware version: 1.30 - manufacturer ID: 0x027a - product type: 0x04 - product ID: 0x0610 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:06:10.156Z CNTRLR querying additional controller information... -2024-09-06T11:06:10.157Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:06:10.158Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:06:10.159Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.164Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:06:10.165Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.166Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:06:10.167Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:06:10.167Z CNTRLR querying version info... -2024-09-06T11:06:10.168Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:06:10.168Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:06:10.170Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.173Z SERIAL « 0x011001155a2d5761766520372e3231000794 (18 bytes) -2024-09-06T11:06:10.173Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.174Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32310007 -2024-09-06T11:06:10.174Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.21 -2024-09-06T11:06:10.174Z CNTRLR querying protocol version info... -2024-09-06T11:06:10.175Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:06:10.176Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:06:10.177Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.180Z SERIAL « 0x011901090007150300f4353162666237323665306662383733380f (27 bytes) -2024-09-06T11:06:10.181Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.181Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x0007150300f435316266623732366530666238373338 -2024-09-06T11:06:10.182Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.21.3 - appl. framework build no.: 244 - git commit hash: 35316266623732366530666238373338 -2024-09-06T11:06:10.182Z CNTRLR querying controller capabilities... -2024-09-06T11:06:10.183Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:06:10.184Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:06:10.186Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.187Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:06:10.188Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.188Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:06:10.189Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:06:10.189Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:06:10.190Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:06:10.190Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:06:10.192Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.195Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:06:10.195Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.196Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:06:10.197Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:06:10.197Z CNTRLR querying max. payload size... -2024-09-06T11:06:10.198Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:06:10.198Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:06:10.200Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.201Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:06:10.202Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.202Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:06:10.203Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:06:10.203Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:06:10.203Z CNTRLR Querying configured RF region... -2024-09-06T11:06:10.204Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:06:10.205Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:06:10.207Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.208Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:06:10.208Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.209Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:06:10.210Z CNTRLR The controller is using RF region Europe -2024-09-06T11:06:10.210Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:06:10.210Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:06:10.211Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:06:10.213Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.214Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:06:10.215Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.215Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:06:10.216Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:06:10.216Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:06:10.217Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:06:10.218Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:06:10.219Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.221Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:06:10.221Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.222Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:06:10.222Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:06:10.223Z CNTRLR Performing soft reset... -2024-09-06T11:06:10.223Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:06:10.224Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:06:10.226Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.227Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:06:10.227Z DRIVER all queues idle -2024-09-06T11:06:10.452Z SERIAL « 0x0112000a0700010100085e989f556c568f740025 (20 bytes) -2024-09-06T11:06:10.454Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.455Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:06:10.456Z CNTRLR reconnected and restarted -2024-09-06T11:06:10.457Z CNTRLR Starting hardware watchdog... -2024-09-06T11:06:10.458Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:06:10.459Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:06:10.459Z DRIVER all queues busy -2024-09-06T11:06:10.461Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:06:10.462Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:06:10.465Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:06:10.466Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:06:10.468Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.469Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.470Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:10.471Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.471Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:10.472Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:06:10.473Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:06:10.473Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:06:10.476Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.477Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:10.478Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.478Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:10.479Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:06:10.479Z CNTRLR querying controller IDs... -2024-09-06T11:06:10.480Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:06:10.481Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:06:10.483Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.484Z SERIAL « 0x01080120e37018550109 (10 bytes) -2024-09-06T11:06:10.485Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.485Z DRIVER « [RES] [GetControllerId] - home ID: 0xe3701855 - own node ID: 1 -2024-09-06T11:06:10.486Z CNTRLR received controller IDs: - home ID: 0xe3701855 - own node ID: 1 -2024-09-06T11:06:10.486Z CNTRLR Enabling TX status report... -2024-09-06T11:06:10.487Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:06:10.487Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:06:10.490Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.491Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:06:10.491Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.491Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:06:10.492Z CNTRLR Enabling TX status report successful... -2024-09-06T11:06:10.492Z CNTRLR finding SUC... -2024-09-06T11:06:10.493Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:06:10.493Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:06:10.496Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.497Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:06:10.497Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.498Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:06:10.499Z CNTRLR No SUC present in the network -2024-09-06T11:06:10.499Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:06:10.500Z SERIAL » 0x01080054010125010285 (10 bytes) -2024-09-06T11:06:10.500Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250102 -2024-09-06T11:06:10.503Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:10.505Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:06:10.505Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:10.506Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:06:10.507Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:06:10.507Z DRIVER all queues idle -2024-09-06T11:06:10.512Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:06:10.513Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:06:10.513Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:06:10.513Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 634 -2024-09-06T11:06:10.514Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:06:10.514Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 1552 -2024-09-06T11:06:10.514Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:06:10.515Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 1.30 -2024-09-06T11:06:10.515Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:06:10.515Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.21.3" -2024-09-06T11:06:10.516Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:06:10.516Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.21.3" -2024-09-06T11:06:10.516Z CNTRLR Interview completed -2024-09-06T11:06:10.517Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:06:10.517Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:06:10.517Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:06:10.518Z DRIVER driver ready -2024-09-06T11:06:15.148Z CNTRLR Starting inclusion process with strategy Default... -2024-09-06T11:06:15.149Z DRIVER all queues busy -2024-09-06T11:06:15.151Z SERIAL » 0x0105004ac10372 (7 bytes) -2024-09-06T11:06:15.152Z DRIVER » [REQ] [AddNodeToNetwork] - node type: Any - high power: true - network wide: true - callback id: 3 -2024-09-06T11:06:15.158Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:15.161Z SERIAL « 0x0107004a03010000b0 (9 bytes) -2024-09-06T11:06:15.162Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:15.163Z DRIVER « [REQ] [AddNodeToNetwork] - status: Ready - callback id: 3 -2024-09-06T11:06:15.164Z CNTRLR The controller is now ready to add nodes -2024-09-06T11:06:15.165Z DRIVER all queues idle -2024-09-06T11:06:19.201Z SERIAL « 0x0107004a03020000b3 (9 bytes) -2024-09-06T11:06:19.202Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.204Z DRIVER « [REQ] [AddNodeToNetwork] - status: NodeFound - callback id: 3 -2024-09-06T11:06:19.205Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:06:19.205Z DRIVER 1 handler registered! -2024-09-06T11:06:19.206Z DRIVER invoking handler #0 -2024-09-06T11:06:19.207Z CNTRLR handling add node request (status = NodeFound) -2024-09-06T11:06:19.307Z SERIAL « 0x0112004a0304020b0201005e989f556c568f7467 (20 bytes) -2024-09-06T11:06:19.308Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.310Z DRIVER « [REQ] [AddNodeToNetwork] - status: AddingController - callback id: 3 -2024-09-06T11:06:19.311Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:06:19.311Z DRIVER 1 handler registered! -2024-09-06T11:06:19.312Z DRIVER invoking handler #0 -2024-09-06T11:06:19.312Z CNTRLR handling add node request (status = AddingController) -2024-09-06T11:06:19.315Z DRIVER the message was handled -2024-09-06T11:06:19.727Z SERIAL « 0x0107004a03050200b6 (9 bytes) -2024-09-06T11:06:19.728Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.730Z DRIVER « [REQ] [AddNodeToNetwork] - status: ProtocolDone - callback id: 3 -2024-09-06T11:06:19.730Z DRIVER handling request AddNodeToNetwork (74) -2024-09-06T11:06:19.731Z DRIVER 1 handler registered! -2024-09-06T11:06:19.731Z DRIVER invoking handler #0 -2024-09-06T11:06:19.731Z CNTRLR handling add node request (status = ProtocolDone) -2024-09-06T11:06:19.732Z CNTRLR finishing inclusion process... -2024-09-06T11:06:19.733Z DRIVER all queues busy -2024-09-06T11:06:19.733Z SERIAL » 0x0105004ac50471 (7 bytes) -2024-09-06T11:06:19.734Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 4 -2024-09-06T11:06:19.736Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.775Z SERIAL « 0x0107004a04060200b2 (9 bytes) -2024-09-06T11:06:19.776Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.776Z DRIVER « [REQ] [AddNodeToNetwork] - status: Done - callback id: 4 -2024-09-06T11:06:19.778Z SERIAL » 0x0105004ac50075 (7 bytes) -2024-09-06T11:06:19.778Z DRIVER » [REQ] [AddNodeToNetwork] - action: Stop - high power: true - network wide: true - callback id: 0 -2024-09-06T11:06:19.782Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.784Z CNTRLR The inclusion process was stopped -2024-09-06T11:06:19.784Z CNTRLR finished adding node 2: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - supported CCs: - · Z-Wave Plus Info (0x5e) - · Security (0x98) - · Security 2 (0x9f) - · Transport Service (0x55) - · Supervision (0x6c) - · CRC-16 Encapsulation (0x56) - · Multi Command (0x8f) - · Inclusion Controller (0x74) - controlled CCs: -2024-09-06T11:06:19.785Z CNTRLR » [Node 002] Assigning SUC return route... -2024-09-06T11:06:19.785Z CNTRLR » [Node 002] Deleting SUC return route... -2024-09-06T11:06:19.786Z SERIAL » 0x010500550205a8 (7 bytes) -2024-09-06T11:06:19.786Z DRIVER » [Node 002] [REQ] [DeleteSUCReturnRoute] - payload: 0x0205 -2024-09-06T11:06:19.791Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.794Z SERIAL « 0x0104015501ae (6 bytes) -2024-09-06T11:06:19.795Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.796Z DRIVER « [RES] [DeleteSUCReturnRoute] - was executed: true -2024-09-06T11:06:19.860Z SERIAL « 0x01210055050000000000000000000000000000000000000000000000000000000 (35 bytes) - 0008e -2024-09-06T11:06:19.862Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.863Z DRIVER « [REQ] [DeleteSUCReturnRoute] - callback id: 5 - transmit status: OK -2024-09-06T11:06:19.867Z SERIAL » 0x010500510206af (7 bytes) -2024-09-06T11:06:19.868Z DRIVER » [Node 002] [REQ] [AssignSUCReturnRoute] - payload: 0x0206 -2024-09-06T11:06:19.871Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.878Z SERIAL « 0x0104015101aa (6 bytes) -2024-09-06T11:06:19.879Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.880Z DRIVER « [RES] [AssignSUCReturnRoute] - was executed: true -2024-09-06T11:06:19.951Z SERIAL « 0x01210051060000000000000000000000000000000000000000000000000000000 (35 bytes) - 00089 -2024-09-06T11:06:19.953Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.955Z DRIVER « [REQ] [AssignSUCReturnRoute] - callback id: 6 - transmit status: OK -2024-09-06T11:06:19.961Z SERIAL » 0x010e00a90102029f04250000000007e0 (16 bytes) -2024-09-06T11:06:19.962Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCKEXGet] -2024-09-06T11:06:19.966Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.972Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:19.973Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.973Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:19.986Z SERIAL « 0x011d00a90700000100df7f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T11:06:19.987Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.988Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.004Z SERIAL « 0x010f00a8000102069f050002018700df9c (17 bytes) -2024-09-06T11:06:20.004Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.005Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.007Z SERIAL » 0x011200a90102069f060002018725000000000871 (20 bytes) -2024-09-06T11:06:20.008Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.014Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.018Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.018Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.019Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.036Z SERIAL « 0x011d00a90800000100df7f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:06:20.037Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.037Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.038Z DRIVER all queues idle -2024-09-06T11:06:20.062Z SERIAL « 0x012c00a8000102239f08000000bf5edfebd6784f403f15f121756d2df395bdbcf (46 bytes) - 111e387a444fb6afab70100e049 -2024-09-06T11:06:20.063Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.064Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -32 dBm - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x0000bf5edfebd6784f403f15f121756d2df395bdbcf111e387a44 - 4fb6afab701 -2024-09-06T11:06:20.066Z DRIVER all queues busy -2024-09-06T11:06:20.067Z SERIAL » 0x012f00a90102239f0801de9b0ee1328c7c3b73cfdf9f874a4121e9c401af73908 (49 bytes) - e305bb4031efbc3770525000000000987 -2024-09-06T11:06:20.067Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0xde9b0ee1328c7c3b73cfdf9f874a4121e9c401af73908e305bb40 - 31efbc37705 -2024-09-06T11:06:20.076Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.082Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.083Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.084Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.105Z SERIAL « 0x011d00a90900000200e07f7f7f7f00000300000000030100007f7f7f7f7fde (31 bytes) -2024-09-06T11:06:20.105Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.106Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -32 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.107Z DRIVER all queues idle -2024-09-06T11:06:20.122Z SERIAL « 0x010c00a8000102039f01f400dfee (14 bytes) -2024-09-06T11:06:20.123Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.124Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 244 -2024-09-06T11:06:20.125Z DRIVER all queues busy -2024-09-06T11:06:20.126Z SERIAL » 0x012000a90102149f02060148446689447e919ae8a61f0582c1056f05000000000 (34 bytes) - a5b -2024-09-06T11:06:20.127Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 10 - └─[Security2CCNonceReport] - sequence number: 6 - SOS: true - MOS: false - receiver entropy: 0x48446689447e919ae8a61f0582c1056f -2024-09-06T11:06:20.133Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.139Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.140Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.141Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.155Z SERIAL « 0x011d00a90a00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe1 (31 bytes) -2024-09-06T11:06:20.156Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.156Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.157Z DRIVER all queues idle -2024-09-06T11:06:20.183Z SERIAL « 0x012d00a8000102249f03f501124172eef773dea56da96df42bc68018fa16dcf43 (47 bytes) - 1be55eb0bf37c2963cd052b00df2a -2024-09-06T11:06:20.185Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.186Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 245 - │ extensions: - │ · type: SPAN - │ sender EI: 0x72eef773dea56da96df42bc68018fa16 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xa7995dee387747f2be0cfc52ec - │ plaintext: 0x9f0601020187 - │ auth tag: 0x0bf37c2963cd052b - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.187Z DRIVER all queues busy -2024-09-06T11:06:20.188Z SERIAL » 0x011e00a90102129f030700f4ef49df31c71e5925aa2202363725000000000b7e (32 bytes) -2024-09-06T11:06:20.188Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 7 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xae5b349b0cde71dc89318305ad - │ ciphertext: 0xf4ef49df31c7 - │ auth data: 0x0102e370185500120700 - │ auth tag: 0x1e5925aa22023637 - │ security class: Temporary - └─[Security2CCKEXReport] - echo: true - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.194Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.201Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.201Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.202Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.217Z SERIAL « 0x011d00a90b00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe0 (31 bytes) -2024-09-06T11:06:20.217Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.218Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.219Z DRIVER all queues idle -2024-09-06T11:06:20.236Z SERIAL « 0x011800a80001020f9f03f600269cfeee210e1a7a38912800df92 (26 bytes) -2024-09-06T11:06:20.237Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.238Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 246 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x16a1f588a794e7367490cc15a2 - │ plaintext: 0x9f0901 - │ auth tag: 0xee210e1a7a389128 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Unauthenticated -2024-09-06T11:06:20.239Z DRIVER all queues busy -2024-09-06T11:06:20.240Z SERIAL » 0x012b00a901021f9f0308001c35db416f1f673ca2e464a9deccad4f8d478400d06 (45 bytes) - f3aa79d6b3a25000000000c9f -2024-09-06T11:06:20.240Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 12 - └─[Security2CCMessageEncapsulation] - │ sequence number: 8 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x5db4d179cdff1ceef4f70e6aa7 - │ ciphertext: 0x1c35db416f1f673ca2e464a9deccad4f8d4784 - │ auth data: 0x0102e3701855001f0800 - │ auth tag: 0x00d06f3aa79d6b3a - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Unauthenticated -2024-09-06T11:06:20.249Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.255Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.255Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.256Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.272Z SERIAL « 0x011d00a90c00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:06:20.273Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.273Z DRIVER « [REQ] [SendDataBridge] - callback id: 12 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.274Z DRIVER all queues idle -2024-09-06T11:06:20.288Z SERIAL « 0x010c00a8000102039f01f700dfed (14 bytes) -2024-09-06T11:06:20.289Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.290Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 247 -2024-09-06T11:06:20.291Z DRIVER all queues busy -2024-09-06T11:06:20.291Z SERIAL » 0x012000a90102149f020901c8a30dd009a4738f8d73cf7a3e190c9d05000000000 (34 bytes) - de6 -2024-09-06T11:06:20.292Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 13 - └─[Security2CCNonceReport] - sequence number: 9 - SOS: true - MOS: false - receiver entropy: 0xc8a30dd009a4738f8d73cf7a3e190c9d -2024-09-06T11:06:20.298Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.304Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.305Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.305Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.319Z SERIAL « 0x011d00a90d00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T11:06:20.320Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.320Z DRIVER « [REQ] [SendDataBridge] - callback id: 13 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.321Z DRIVER all queues idle -2024-09-06T11:06:20.345Z SERIAL « 0x012900a8000102209f03f80112412d01da296b5222be69d215bc1ab47785c5f8f (43 bytes) - 96285809240f1c700dfc7 -2024-09-06T11:06:20.347Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.352Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 248 - │ extensions: - │ · type: SPAN - │ sender EI: 0x2d01da296b5222be69d215bc1ab47785 - │ key: 0x44b45806725f2a6ebc3e2641f36f6caa - │ IV: 0x87b535c2bd6fd1e06a0043af14 - │ plaintext: 0x9f0b - │ auth tag: 0xf96285809240f1c7 - │ security class: S2_Unauthenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:20.353Z DRIVER all queues busy -2024-09-06T11:06:20.356Z SERIAL » 0x010f00a90102039f010a25000000000ee6 (17 bytes) -2024-09-06T11:06:20.357Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 14 - └─[Security2CCNonceGet] - sequence number: 10 -2024-09-06T11:06:20.381Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.382Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.387Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.389Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.414Z SERIAL « 0x011d00a90e00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe5 (31 bytes) -2024-09-06T11:06:20.415Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.420Z DRIVER « [REQ] [SendDataBridge] - callback id: 14 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.425Z SERIAL « 0x011d00a8000102149f02f901aa3b193ccb0ca89d166ec6f38574b04800dfe5 (31 bytes) -2024-09-06T11:06:20.426Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.428Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 249 - SOS: true - MOS: false - receiver entropy: 0xaa3b193ccb0ca89d166ec6f38574b048 -2024-09-06T11:06:20.430Z SERIAL » 0x012d00a90102219f030b011241225e11dd3aed1a52dbd71535ed73d8c21cda4a7 (47 bytes) - 1a99d9c3a395f9b240000000000ad -2024-09-06T11:06:20.431Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 11 - │ extensions: - │ · type: SPAN - │ sender EI: 0x225e11dd3aed1a52dbd71535ed73d8c2 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xa39fcca46e8b106c62ebae3681 - │ ciphertext: 0x1cda4a - │ auth data: 0x0102e370185500210b011241225e11dd3aed1a52dbd71535ed73d8c - 2 - │ auth tag: 0x71a99d9c3a395f9b - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:20.441Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.445Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.446Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.446Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.447Z DRIVER all queues idle -2024-09-06T11:06:20.487Z SERIAL « 0x011800a80001020f9f03fa00cf52afa2509d6c2ea7994900df92 (26 bytes) -2024-09-06T11:06:20.488Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.489Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 250 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xe156e343223bf29819bbb2d422 - │ plaintext: 0x9f0902 - │ auth tag: 0xa2509d6c2ea79949 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Authenticated -2024-09-06T11:06:20.490Z DRIVER all queues busy -2024-09-06T11:06:20.491Z SERIAL » 0x012b00a901021f9f030c009c7e53ff58733226cf3cd584d3413893a4bdc6c75e6 (45 bytes) - f6ff8de26e225000000000f95 -2024-09-06T11:06:20.491Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 15 - └─[Security2CCMessageEncapsulation] - │ sequence number: 12 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x37d690bb6872a4ce0b2dd0ce90 - │ ciphertext: 0x9c7e53ff58733226cf3cd584d3413893a4bdc6 - │ auth data: 0x0102e3701855001f0c00 - │ auth tag: 0xc75e6f6ff8de26e2 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Authenticated -2024-09-06T11:06:20.499Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.506Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.506Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.507Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.523Z SERIAL « 0x011d00a90f00000100df7f7f7f7f00000300000000030100007f7f7f7f7fe4 (31 bytes) -2024-09-06T11:06:20.524Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.524Z DRIVER « [REQ] [SendDataBridge] - callback id: 15 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.525Z DRIVER all queues idle -2024-09-06T11:06:20.538Z SERIAL « 0x010c00a8000102039f01fb00dfe1 (14 bytes) -2024-09-06T11:06:20.539Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.540Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 251 -2024-09-06T11:06:20.541Z DRIVER all queues busy -2024-09-06T11:06:20.541Z SERIAL » 0x012000a90102149f020d0157511bf33a3480769c3e7d9afe122f3a05000000001 (34 bytes) - 04f -2024-09-06T11:06:20.542Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 16 - └─[Security2CCNonceReport] - sequence number: 13 - SOS: true - MOS: false - receiver entropy: 0x57511bf33a3480769c3e7d9afe122f3a -2024-09-06T11:06:20.549Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.554Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.555Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.556Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.573Z SERIAL « 0x011d00a91000000100df7f7f7f7f00000300000000030100007f7f7f7f7ffb (31 bytes) -2024-09-06T11:06:20.573Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.574Z DRIVER « [REQ] [SendDataBridge] - callback id: 16 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.575Z DRIVER all queues idle -2024-09-06T11:06:20.598Z SERIAL « 0x012900a8000102209f03fc0112418506fbb6b7acaa5d2cab7bb2e3b27383bac85 (43 bytes) - 05dce3f14b5bcf600df18 -2024-09-06T11:06:20.599Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.600Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 252 - │ extensions: - │ · type: SPAN - │ sender EI: 0x8506fbb6b7acaa5d2cab7bb2e3b27383 - │ key: 0xdda415256006027530b2d9548c898f93 - │ IV: 0x8aee8f37a57f2cc07fc0165301 - │ plaintext: 0x9f0b - │ auth tag: 0x505dce3f14b5bcf6 - │ security class: S2_Authenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:20.601Z DRIVER all queues busy -2024-09-06T11:06:20.602Z SERIAL » 0x010f00a90102039f010e250000000011fd (17 bytes) -2024-09-06T11:06:20.602Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 17 - └─[Security2CCNonceGet] - sequence number: 14 -2024-09-06T11:06:20.606Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.612Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.613Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.613Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.626Z SERIAL « 0x011d00a91100000100df7f7f7f7f00000300000000030100007f7f7f7f7ffa (31 bytes) -2024-09-06T11:06:20.627Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.627Z DRIVER « [REQ] [SendDataBridge] - callback id: 17 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.646Z SERIAL « 0x011d00a8000102149f02fd01ad34627ca5036d711ed9bda0f974a0a800df81 (31 bytes) -2024-09-06T11:06:20.646Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.647Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 253 - SOS: true - MOS: false - receiver entropy: 0xad34627ca5036d711ed9bda0f974a0a8 -2024-09-06T11:06:20.648Z SERIAL » 0x012d00a90102219f030f0112415d61103d55ec8c59e4596409a49b356aeffb88c (47 bytes) - efa034d69ed486824000000000033 -2024-09-06T11:06:20.649Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 15 - │ extensions: - │ · type: SPAN - │ sender EI: 0x5d61103d55ec8c59e4596409a49b356a - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xd22b7682253ba15c3758dbafba - │ ciphertext: 0xeffb88 - │ auth data: 0x0102e370185500210f0112415d61103d55ec8c59e4596409a49b356 - a - │ auth tag: 0xcefa034d69ed4868 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:20.657Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.663Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.663Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.664Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.665Z DRIVER all queues idle -2024-09-06T11:06:20.703Z SERIAL « 0x011800a80001020f9f03fe00dc94a1dd4047c4bdd5636300df61 (26 bytes) -2024-09-06T11:06:20.704Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.705Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 254 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x450ef19eac1f4fcc3cd60e4a22 - │ plaintext: 0x9f0904 - │ auth tag: 0xdd4047c4bdd56363 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_AccessControl -2024-09-06T11:06:20.705Z DRIVER all queues busy -2024-09-06T11:06:20.706Z SERIAL » 0x012b00a901021f9f0310007b887158e82fd8f28813ca7ad7252bbc57be23329ad (45 bytes) - dab8955f5942500000000120a -2024-09-06T11:06:20.707Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 18 - └─[Security2CCMessageEncapsulation] - │ sequence number: 16 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x24bf53df1009ed271dc0c70083 - │ ciphertext: 0x7b887158e82fd8f28813ca7ad7252bbc57be23 - │ auth data: 0x0102e3701855001f1000 - │ auth tag: 0x329addab8955f594 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_AccessControl -2024-09-06T11:06:20.714Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.721Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.721Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.722Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.739Z SERIAL « 0x011d00a91200000100df7f7f7f7f00000300000000030100007f7f7f7f7ff9 (31 bytes) -2024-09-06T11:06:20.740Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.740Z DRIVER « [REQ] [SendDataBridge] - callback id: 18 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.741Z DRIVER all queues idle -2024-09-06T11:06:20.757Z SERIAL « 0x010c00a8000102039f01ff00dfe5 (14 bytes) -2024-09-06T11:06:20.758Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.759Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 255 -2024-09-06T11:06:20.760Z DRIVER all queues busy -2024-09-06T11:06:20.761Z SERIAL » 0x012000a90102149f0211017043a279fa75f948f7efb04f19ba2b6405000000001 (34 bytes) - 327 -2024-09-06T11:06:20.761Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 19 - └─[Security2CCNonceReport] - sequence number: 17 - SOS: true - MOS: false - receiver entropy: 0x7043a279fa75f948f7efb04f19ba2b64 -2024-09-06T11:06:20.768Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.774Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.774Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.775Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.790Z SERIAL « 0x011d00a91300000100df7f7f7f7f00000300000000030100007f7f7f7f7ff8 (31 bytes) -2024-09-06T11:06:20.791Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.792Z DRIVER « [REQ] [SendDataBridge] - callback id: 19 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.794Z DRIVER all queues idle -2024-09-06T11:06:20.817Z SERIAL « 0x012900a8000102209f0300011241c37f885fc30fb241169d5a07cf20e49c30358 (43 bytes) - d9f187271abe72900df30 -2024-09-06T11:06:20.818Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.819Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 0 - │ extensions: - │ · type: SPAN - │ sender EI: 0xc37f885fc30fb241169d5a07cf20e49c - │ key: 0xfca06923982033f3af9dfc7c1e4ad45a - │ IV: 0x9d5c9f2165fee2958c4706dcb2 - │ plaintext: 0x9f0b - │ auth tag: 0x8d9f187271abe729 - │ security class: S2_AccessControl - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:20.820Z DRIVER all queues busy -2024-09-06T11:06:20.821Z SERIAL » 0x010f00a90102039f0112250000000014e4 (17 bytes) -2024-09-06T11:06:20.821Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 20 - └─[Security2CCNonceGet] - sequence number: 18 -2024-09-06T11:06:20.825Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.831Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.832Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.833Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.844Z SERIAL « 0x011d00a91400000100df7f7f7f7f00000300000000030100007f7f7f7f7fff (31 bytes) -2024-09-06T11:06:20.845Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.845Z DRIVER « [REQ] [SendDataBridge] - callback id: 20 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.863Z SERIAL « 0x011d00a8000102149f02010107cacc9410ba384e1bc41726646a0f4300dffa (31 bytes) -2024-09-06T11:06:20.864Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.864Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 1 - SOS: true - MOS: false - receiver entropy: 0x07cacc9410ba384e1bc41726646a0f43 -2024-09-06T11:06:20.866Z SERIAL » 0x012d00a90102219f03130112417fe84947259b5e2e8928b9403ba31f76e8ee7ea (47 bytes) - cf461255bd62b73240000000000ef -2024-09-06T11:06:20.866Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 19 - │ extensions: - │ · type: SPAN - │ sender EI: 0x7fe84947259b5e2e8928b9403ba31f76 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xad7af31c44e01f9e33c9a7618d - │ ciphertext: 0xe8ee7e - │ auth data: 0x0102e37018550021130112417fe84947259b5e2e8928b9403ba31f7 - 6 - │ auth tag: 0xacf461255bd62b73 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:20.874Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.881Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.881Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.882Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.883Z DRIVER all queues idle -2024-09-06T11:06:20.918Z SERIAL « 0x011800a80001020f9f0302007ba09d1d3df417a05bc5c100df78 (26 bytes) -2024-09-06T11:06:20.919Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.920Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 2 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xafeda3f17e2a549bcf64140ddf - │ plaintext: 0x9f0980 - │ auth tag: 0x1d3df417a05bc5c1 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S0_Legacy -2024-09-06T11:06:20.921Z DRIVER all queues busy -2024-09-06T11:06:20.921Z SERIAL » 0x012b00a901021f9f031400416f80eb7bb315bd0231aa5f1607dfbff3f62ea9d4b (45 bytes) - f77d292be262500000000150d -2024-09-06T11:06:20.922Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 21 - └─[Security2CCMessageEncapsulation] - │ sequence number: 20 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x0135b5b4649df09d0248f90521 - │ ciphertext: 0x416f80eb7bb315bd0231aa5f1607dfbff3f62e - │ auth data: 0x0102e3701855001f1400 - │ auth tag: 0xa9d4bf77d292be26 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S0_Legacy -2024-09-06T11:06:20.930Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.936Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.937Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.937Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.953Z SERIAL « 0x011d00a91500000100df7f7f7f7f00000300000000030100007f7f7f7f7ffe (31 bytes) -2024-09-06T11:06:20.953Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.954Z DRIVER « [REQ] [SendDataBridge] - callback id: 21 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.954Z DRIVER all queues idle -2024-09-06T11:06:20.969Z SERIAL « 0x010c00a8000102039f010300df19 (14 bytes) -2024-09-06T11:06:20.970Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.971Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceGet] - sequence number: 3 -2024-09-06T11:06:20.972Z DRIVER all queues busy -2024-09-06T11:06:20.972Z SERIAL » 0x012000a90102149f021501091c800986edf36a0ce9bf0661115d0205000000001 (34 bytes) - 6e6 -2024-09-06T11:06:20.973Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x05 - │ callback id: 22 - └─[Security2CCNonceReport] - sequence number: 21 - SOS: true - MOS: false - receiver entropy: 0x091c800986edf36a0ce9bf0661115d02 -2024-09-06T11:06:20.980Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.986Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.986Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.987Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:21.002Z SERIAL « 0x011d00a91600000100df7f7f7f7f00000300000000030100007f7f7f7f7ffd (31 bytes) -2024-09-06T11:06:21.002Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.003Z DRIVER « [REQ] [SendDataBridge] - callback id: 22 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:21.003Z DRIVER all queues idle -2024-09-06T11:06:21.029Z SERIAL « 0x012900a8000102209f03040112416290fb8a42a89951ce81afe6cdd48ca4a917e (43 bytes) - 61456b1fa93b4c300df6b -2024-09-06T11:06:21.031Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.031Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 4 - │ extensions: - │ · type: SPAN - │ sender EI: 0x6290fb8a42a89951ce81afe6cdd48ca4 - │ key: 0xece479ca82cc867c1db471e86eab2248 - │ IV: 0x1e8989f03565943a6ea872458f - │ plaintext: 0x9f0b - │ auth tag: 0xe61456b1fa93b4c3 - │ security class: S0_Legacy - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:21.032Z DRIVER all queues busy -2024-09-06T11:06:21.033Z SERIAL » 0x010f00a90102039f0116250000000017e3 (17 bytes) -2024-09-06T11:06:21.033Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 23 - └─[Security2CCNonceGet] - sequence number: 22 -2024-09-06T11:06:21.037Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:21.044Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:21.044Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.045Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:21.058Z SERIAL « 0x011d00a91700000100df7f7f7f7f00000300000000030100007f7f7f7f7ffc (31 bytes) -2024-09-06T11:06:21.058Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.059Z DRIVER « [REQ] [SendDataBridge] - callback id: 23 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -33 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:21.079Z SERIAL « 0x011d00a8000102149f020501571ca2fca15ce3f4bcaf85fba9bb5baf00df6f (31 bytes) -2024-09-06T11:06:21.080Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.081Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCNonceReport] - sequence number: 5 - SOS: true - MOS: false - receiver entropy: 0x571ca2fca15ce3f4bcaf85fba9bb5baf -2024-09-06T11:06:21.082Z SERIAL » 0x012d00a90102219f03170112412df2186d0c12da2220d6068b9e71eaf22ac48d2 (47 bytes) - 68675166ac0ffca2400000000005b -2024-09-06T11:06:21.083Z DRIVER » [Node 002] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x24 - │ callback id: 0 - └─[Security2CCMessageEncapsulation] - │ sequence number: 23 - │ extensions: - │ · type: SPAN - │ sender EI: 0x2df2186d0c12da2220d6068b9e71eaf2 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xae171ae0b28a0017cb37cd11ac - │ ciphertext: 0x2ac48d - │ auth data: 0x0102e37018550021170112412df2186d0c12da2220d6068b9e71eaf - 2 - │ auth tag: 0x268675166ac0ffca - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:21.092Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:21.098Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:21.099Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.099Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:21.100Z DRIVER all queues idle -2024-09-06T11:06:21.136Z SERIAL « 0x011800a80001020f9f03060091f4995c5a4d73611d4bf800df0d (26 bytes) -2024-09-06T11:06:21.137Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.138Z DRIVER « [Node 002] [REQ] [BridgeApplicationCommand] - │ RSSI: -33 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 6 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xe799eb8dcddb0a4233c9cf3a80 - │ plaintext: 0x9f0c01 - │ auth tag: 0x5c5a4d73611d4bf8 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: false - request complete: true -2024-09-06T11:06:21.138Z CNTRLR [Node 002] Security S2 bootstrapping successful with these security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:06:21.139Z DRIVER the message was handled diff --git a/test/primary_current.log b/test/primary_current.log deleted file mode 120000 index a96af5ff9673..000000000000 --- a/test/primary_current.log +++ /dev/null @@ -1 +0,0 @@ -primary_2024-09-06.log \ No newline at end of file diff --git a/test/run.ts b/test/run.ts index 551207409ae6..185bda23d839 100644 --- a/test/run.ts +++ b/test/run.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ import { wait as _wait } from "alcalzone-shared/async"; import path from "node:path"; import "reflect-metadata"; @@ -66,6 +65,8 @@ const driver = new Driver(port, { .on("error", console.error) .once("driver ready", async () => { // Test code goes here + await wait(5000); + await driver.controller.hardReset(); }) .once("bootloader ready", async () => { // What to do when stuck in the bootloader diff --git a/test/run_duplex.ts b/test/run_duplex.ts index b00ae82f8f58..b788fdbb165f 100644 --- a/test/run_duplex.ts +++ b/test/run_duplex.ts @@ -1,8 +1,7 @@ -import { SecurityClass } from "@zwave-js/core"; import { wait as _wait } from "alcalzone-shared/async"; import path from "node:path"; import "reflect-metadata"; -import { Driver, InclusionStrategy, RFRegion } from "zwave-js"; +import { Driver, RFRegion } from "zwave-js"; const wait = _wait; @@ -22,7 +21,7 @@ const port_primary = const port_secondary = "/dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0"; -let pin: string | undefined; +// let pin: string | undefined; const driver_primary = new Driver(port_primary, { logConfig: { @@ -71,36 +70,36 @@ const driver_primary = new Driver(port_primary, { .on("error", console.error) .once("driver ready", async () => { // Test code goes here - await wait(1000); - await driver_primary.hardReset(); - await wait(5000); - await driver_primary.controller.beginInclusion({ - strategy: InclusionStrategy.Default, - userCallbacks: { - abort() {}, - async grantSecurityClasses(requested) { - return { - clientSideAuth: false, - securityClasses: [ - SecurityClass.S0_Legacy, - SecurityClass.S2_Unauthenticated, - SecurityClass.S2_Authenticated, - SecurityClass.S2_AccessControl, - ], - }; - }, - async validateDSKAndEnterPIN(dsk) { - // Try to read PIN from the file pin.txt - for (let i = 0; i < 100; i++) { - if (typeof pin === "string" && pin?.length === 5) { - return pin; - } - await wait(1000); - } - return false; - }, - }, - }); + // await wait(1000); + // await driver_primary.hardReset(); + // await wait(5000); + // await driver_primary.controller.beginInclusion({ + // strategy: InclusionStrategy.Default, + // userCallbacks: { + // abort() {}, + // async grantSecurityClasses(requested) { + // return { + // clientSideAuth: false, + // securityClasses: [ + // SecurityClass.S0_Legacy, + // SecurityClass.S2_Unauthenticated, + // SecurityClass.S2_Authenticated, + // SecurityClass.S2_AccessControl, + // ], + // }; + // }, + // async validateDSKAndEnterPIN(dsk) { + // // Try to read PIN from the file pin.txt + // for (let i = 0; i < 100; i++) { + // if (typeof pin === "string" && pin?.length === 5) { + // return pin; + // } + // await wait(1000); + // } + // return false; + // }, + // }, + // }); }) .once("bootloader ready", async () => { // What to do when stuck in the bootloader @@ -151,22 +150,22 @@ const driver_secondary = new Driver(port_secondary, { lockDir: path.join(__dirname, "cache2/locks"), }, allowBootloaderOnly: true, - joinNetworkUserCallbacks: { - showDSK(dsk) { - pin = dsk.split("-")[0]; - }, - done() { - pin = undefined; - }, - }, + // joinNetworkUserCallbacks: { + // showDSK(dsk) { + // pin = dsk.split("-")[0]; + // }, + // done() { + // pin = undefined; + // }, + // }, }) .on("error", console.error) .once("driver ready", async () => { // Test code goes here - await wait(5000); - await driver_secondary.hardReset(); - await wait(5000); - await driver_secondary.controller.beginJoiningNetwork(); + // await wait(5000); + // await driver_secondary.hardReset(); + // await wait(5000); + // await driver_secondary.controller.beginJoiningNetwork(); }) .once("bootloader ready", async () => { // What to do when stuck in the bootloader diff --git a/test/secondary_2024-09-06.log b/test/secondary_2024-09-06.log deleted file mode 100644 index 8105c6f6f5b0..000000000000 --- a/test/secondary_2024-09-06.log +++ /dev/null @@ -1,15772 +0,0 @@ -2024-09-06T10:02:42.069Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:02:42.069Z DRIVER version 13.2.0 -2024-09-06T10:02:42.069Z DRIVER -2024-09-06T10:02:42.070Z DRIVER starting driver... -2024-09-06T10:02:42.070Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:02:42.078Z DRIVER serial port opened -2024-09-06T10:02:42.078Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:02:43.084Z DRIVER loading configuration... -2024-09-06T10:02:43.088Z CONFIG version 13.2.0 -2024-09-06T10:02:43.299Z CONFIG Device configuration files on disk changed - regenerating index... -2024-09-06T10:02:47.283Z CONFIG Device index regenerated -2024-09-06T10:02:47.283Z DRIVER beginning interview... -2024-09-06T10:02:47.284Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:02:47.284Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:02:47.284Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:02:47.284Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:02:47.285Z CNTRLR querying Serial API capabilities... -2024-09-06T10:02:47.292Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:02:47.293Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:02:47.303Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.303Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:02:47.304Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.305Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:02:47.306Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:02:47.306Z CNTRLR querying additional controller information... -2024-09-06T10:02:47.308Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:02:47.308Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:02:47.317Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.318Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:02:47.318Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.319Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:02:47.320Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:02:47.320Z CNTRLR querying version info... -2024-09-06T10:02:47.322Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:02:47.322Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:02:47.329Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.329Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:02:47.330Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.330Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:02:47.331Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:02:47.331Z CNTRLR querying protocol version info... -2024-09-06T10:02:47.332Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:02:47.332Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:02:47.339Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.339Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:02:47.340Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.340Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:02:47.341Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:02:47.341Z CNTRLR querying controller capabilities... -2024-09-06T10:02:47.342Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:02:47.342Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:02:47.349Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.350Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:02:47.350Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.351Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:02:47.352Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:02:47.352Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:02:47.353Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:02:47.353Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:02:47.359Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.360Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:02:47.360Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.361Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:02:47.361Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:02:47.361Z CNTRLR querying max. payload size... -2024-09-06T10:02:47.362Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:02:47.362Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:02:47.367Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.368Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:02:47.368Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.368Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:02:47.369Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:02:47.369Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:02:47.370Z CNTRLR Querying configured RF region... -2024-09-06T10:02:47.371Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:02:47.372Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:02:47.377Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.377Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:02:47.377Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.378Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:02:47.378Z CNTRLR The controller is using RF region Europe -2024-09-06T10:02:47.379Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:02:47.380Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:02:47.380Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:02:47.385Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.385Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:02:47.386Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.386Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:02:47.387Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:02:47.387Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:02:47.388Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:02:47.389Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:02:47.396Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.396Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:02:47.397Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.397Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:02:47.398Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:02:47.398Z CNTRLR Performing soft reset... -2024-09-06T10:02:47.399Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:02:47.399Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:02:47.405Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.406Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:02:47.406Z DRIVER all queues idle -2024-09-06T10:02:47.519Z SERIAL « 0x0115000a0700010100075e9f556c568f7400031d0000ab (23 bytes) -2024-09-06T10:02:47.520Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.522Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:02:47.523Z CNTRLR reconnected and restarted -2024-09-06T10:02:47.524Z CNTRLR Starting hardware watchdog... -2024-09-06T10:02:47.525Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:02:47.526Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:02:47.527Z DRIVER all queues busy -2024-09-06T10:02:47.528Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:02:47.529Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:02:47.531Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:02:47.531Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:02:47.533Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.537Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.537Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:47.538Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.538Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:47.539Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:02:47.539Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:02:47.540Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:02:47.545Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.546Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:47.546Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.547Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:47.547Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:02:47.548Z CNTRLR querying controller IDs... -2024-09-06T10:02:47.548Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:02:47.549Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:02:47.554Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.554Z SERIAL « 0x01080120e8ddb79602c0 (10 bytes) -2024-09-06T10:02:47.554Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.555Z DRIVER « [RES] [GetControllerId] - home ID: 0xe8ddb796 - own node ID: 2 -2024-09-06T10:02:47.556Z CNTRLR received controller IDs: - home ID: 0xe8ddb796 - own node ID: 2 -2024-09-06T10:02:47.556Z CNTRLR Enabling TX status report... -2024-09-06T10:02:47.557Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:02:47.557Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:02:47.562Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.562Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:02:47.562Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.563Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:02:47.563Z CNTRLR Enabling TX status report successful... -2024-09-06T10:02:47.564Z CNTRLR finding SUC... -2024-09-06T10:02:47.564Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:02:47.564Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:02:47.569Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.569Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:02:47.570Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.570Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:02:47.571Z CNTRLR SUC has node ID 1 -2024-09-06T10:02:47.572Z DRIVER all queues idle -2024-09-06T10:02:47.580Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:02:47.580Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:02:47.580Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:02:47.581Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:02:47.581Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:02:47.581Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:02:47.581Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:02:47.581Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:02:47.582Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:02:47.582Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:02:47.582Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:02:47.582Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:02:47.582Z CNTRLR Interview completed -2024-09-06T10:02:47.582Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:02:47.582Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:02:47.582Z DRIVER driver ready -2024-09-06T10:02:47.583Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:02:47.583Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:02:47.583Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:02:47.585Z DRIVER all queues busy -2024-09-06T10:02:47.585Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:02:47.586Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:02:47.591Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.592Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:02:47.592Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.593Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:02:47.594Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:02:47.594Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:02:47.595Z DRIVER all queues idle -2024-09-06T10:02:47.598Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:02:47.598Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:02:47.598Z CNTRLR [Node 002] Interview completed -2024-09-06T10:02:47.599Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:02:47.599Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:02:47.599Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:02:47.600Z DRIVER all queues busy -2024-09-06T10:02:47.600Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:02:47.600Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:02:47.606Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.607Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:02:47.607Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.607Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:02:47.608Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:02:47.608Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:02:47.608Z CNTRLR Determining node status: 1 -2024-09-06T10:02:47.608Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:02:47.611Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:02:47.611Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:02:47.616Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:47.618Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:02:47.619Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.619Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:02:47.678Z SERIAL « 0x011d00a90100000500d97f7f7f7f00000300000000030200007f7f7f7f7feb (31 bytes) -2024-09-06T10:02:47.678Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:47.679Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 50 ms - routing attempts: 2 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:02:47.681Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:02:47.681Z CNTRLR « [Node 001] ping successful -2024-09-06T10:02:47.682Z DRIVER all queues idle -2024-09-06T10:02:52.582Z CNTRLR Updating the controller NIF... -2024-09-06T10:02:52.583Z DRIVER all queues busy -2024-09-06T10:02:52.584Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:02:52.591Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:02:52.595Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.598Z CNTRLR performing hard reset... -2024-09-06T10:02:52.603Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:02:52.604Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:02:52.614Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.635Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:02:52.635Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.636Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:02:52.637Z CNTRLR hard reset succeeded -2024-09-06T10:02:52.637Z CNTRLR querying Serial API capabilities... -2024-09-06T10:02:52.638Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:02:52.644Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:02:52.652Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.653Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:02:52.653Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.654Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:02:52.655Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:02:52.655Z CNTRLR querying additional controller information... -2024-09-06T10:02:52.656Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:02:52.656Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:02:52.665Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.666Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:02:52.666Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.667Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:02:52.668Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:02:52.668Z CNTRLR querying version info... -2024-09-06T10:02:52.669Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:02:52.670Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:02:52.675Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.676Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:02:52.676Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.678Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:02:52.678Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:02:52.679Z CNTRLR querying protocol version info... -2024-09-06T10:02:52.680Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:02:52.680Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:02:52.687Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.688Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:02:52.688Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.689Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:02:52.690Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:02:52.690Z CNTRLR querying controller capabilities... -2024-09-06T10:02:52.691Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:02:52.691Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:02:52.696Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.697Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:02:52.697Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.698Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:02:52.698Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:02:52.698Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:02:52.699Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:02:52.700Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:02:52.706Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.707Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:02:52.707Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.708Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:02:52.709Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:02:52.709Z CNTRLR querying max. payload size... -2024-09-06T10:02:52.710Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:02:52.710Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:02:52.715Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.716Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:02:52.716Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.717Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:02:52.718Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:02:52.718Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:02:52.718Z CNTRLR Querying configured RF region... -2024-09-06T10:02:52.719Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:02:52.719Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:02:52.724Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.725Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:02:52.725Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.726Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:02:52.726Z CNTRLR The controller is using RF region Europe -2024-09-06T10:02:52.727Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:02:52.727Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:02:52.727Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:02:52.732Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.733Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:02:52.733Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.733Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:02:52.734Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:02:52.734Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:02:52.734Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:02:52.735Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:02:52.740Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.740Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:02:52.740Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.741Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:02:52.741Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:02:52.741Z CNTRLR Performing soft reset... -2024-09-06T10:02:52.742Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:02:52.742Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:02:52.746Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.747Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:02:52.747Z DRIVER all queues idle -2024-09-06T10:02:52.852Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:02:52.853Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.855Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:02:52.855Z CNTRLR reconnected and restarted -2024-09-06T10:02:52.856Z CNTRLR Starting hardware watchdog... -2024-09-06T10:02:52.857Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:02:52.857Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:02:52.858Z DRIVER all queues busy -2024-09-06T10:02:52.859Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:02:52.860Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:02:52.862Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:02:52.863Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:02:52.864Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.868Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.869Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:52.869Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.870Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:52.871Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:02:52.871Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:02:52.872Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:02:52.878Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.878Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:02:52.879Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.879Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:02:52.880Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:02:52.880Z CNTRLR querying controller IDs... -2024-09-06T10:02:52.881Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:02:52.881Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:02:52.886Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.887Z SERIAL « 0x01080120edeeff8401af (10 bytes) -2024-09-06T10:02:52.887Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.887Z DRIVER « [RES] [GetControllerId] - home ID: 0xedeeff84 - own node ID: 1 -2024-09-06T10:02:52.888Z CNTRLR received controller IDs: - home ID: 0xedeeff84 - own node ID: 1 -2024-09-06T10:02:52.888Z CNTRLR Enabling TX status report... -2024-09-06T10:02:52.889Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:02:52.890Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:02:52.894Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.895Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:02:52.895Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.895Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:02:52.896Z CNTRLR Enabling TX status report successful... -2024-09-06T10:02:52.896Z CNTRLR finding SUC... -2024-09-06T10:02:52.896Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:02:52.896Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:02:52.901Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.901Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:02:52.901Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.902Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:02:52.902Z CNTRLR No SUC present in the network -2024-09-06T10:02:52.902Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:02:52.903Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:02:52.903Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:02:52.909Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.910Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:02:52.910Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.910Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:02:52.911Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:02:52.911Z DRIVER all queues idle -2024-09-06T10:02:52.914Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:02:52.914Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:02:52.915Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:02:52.915Z CNTRLR Interview completed -2024-09-06T10:02:52.915Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:02:52.916Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:02:52.916Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:02:52.916Z DRIVER driver ready -2024-09-06T10:02:52.917Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:02:52.917Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:02:52.917Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:02:52.917Z DRIVER all queues busy -2024-09-06T10:02:52.917Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:02:52.918Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:02:52.923Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:52.924Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:02:52.924Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:52.924Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:02:52.925Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:02:52.925Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:02:52.926Z DRIVER all queues idle -2024-09-06T10:02:52.927Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:02:52.927Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:02:52.927Z CNTRLR [Node 001] Interview completed -2024-09-06T10:02:52.927Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:02:52.927Z CNTRLR All nodes are ready to be used -2024-09-06T10:02:52.928Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:02:57.639Z DRIVER all queues busy -2024-09-06T10:02:57.641Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:02:57.642Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:02:57.647Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:57.649Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:02:57.649Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:57.650Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:02:57.652Z DRIVER all queues idle -2024-09-06T10:02:57.831Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:02:57.832Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:57.832Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:02:57.832Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:02:57.833Z DRIVER 1 handler registered! -2024-09-06T10:02:57.833Z DRIVER invoking handler #0 -2024-09-06T10:02:57.833Z DRIVER the message was handled -2024-09-06T10:02:57.927Z DRIVER all queues busy -2024-09-06T10:02:57.928Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:02:57.928Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:02:57.935Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:57.935Z SERIAL « 0x0107013bf098987f4d (9 bytes) -2024-09-06T10:02:57.936Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:57.936Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -16 dBm - channel 1: -104 dBm - channel 2: -104 dBm - channel 3: N/A -2024-09-06T10:02:57.937Z DRIVER all queues idle -2024-09-06T10:02:58.350Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:02:58.351Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.351Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:02:58.367Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:02:58.368Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.368Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:02:58.368Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:02:58.368Z DRIVER 1 handler registered! -2024-09-06T10:02:58.368Z DRIVER invoking handler #0 -2024-09-06T10:02:58.369Z DRIVER the message was handled -2024-09-06T10:02:58.369Z DRIVER waiting for security bootstrapping... -2024-09-06T10:02:58.369Z CNTRLR querying controller IDs... -2024-09-06T10:02:58.370Z DRIVER all queues busy -2024-09-06T10:02:58.371Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:02:58.371Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:02:58.376Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.377Z SERIAL « 0x01080120f346aed70218 (10 bytes) -2024-09-06T10:02:58.377Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.377Z DRIVER « [RES] [GetControllerId] - home ID: 0xf346aed7 - own node ID: 2 -2024-09-06T10:02:58.378Z CNTRLR received controller IDs: - home ID: 0xf346aed7 - own node ID: 2 -2024-09-06T10:02:58.378Z DRIVER Joined network with home ID 0xf346aed7, switching to new network cache... -2024-09-06T10:02:58.378Z CNTRLR querying controller capabilities... -2024-09-06T10:02:58.379Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:02:58.379Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:02:58.385Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.386Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:02:58.386Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.386Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:02:58.387Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:02:58.387Z CNTRLR querying additional controller information... -2024-09-06T10:02:58.388Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:02:58.388Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:02:58.396Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.396Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:02:58.396Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.397Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:02:58.397Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:02:58.399Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:02:58.399Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:02:58.400Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:02:58.401Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:02:58.401Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:02:58.401Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:02:58.401Z CNTRLR Interview completed -2024-09-06T10:02:58.401Z DRIVER all queues idle -2024-09-06T10:02:58.580Z SERIAL « 0x010b00a8000201029f0400d91f (13 bytes) -2024-09-06T10:02:58.581Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.582Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCKEXGet] -2024-09-06T10:02:58.583Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:02:58.583Z DRIVER all queues busy -2024-09-06T10:02:58.583Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:02:58.584Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:02:58.589Z SERIAL « [ACK] (0x06) -2024-09-06T10:02:58.589Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:02:58.590Z SERIAL » [ACK] (0x06) -2024-09-06T10:02:58.590Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:02:58.591Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:02:58.591Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:02:58.591Z DRIVER Finished joining network -2024-09-06T10:02:58.591Z DRIVER all queues idle -2024-09-06T10:03:18.243Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:03:18.243Z DRIVER version 13.2.0 -2024-09-06T10:03:18.243Z DRIVER -2024-09-06T10:03:18.243Z DRIVER starting driver... -2024-09-06T10:03:18.244Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:03:18.252Z DRIVER serial port opened -2024-09-06T10:03:18.252Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:03:19.257Z DRIVER loading configuration... -2024-09-06T10:03:19.260Z CONFIG version 13.2.0 -2024-09-06T10:03:19.595Z DRIVER beginning interview... -2024-09-06T10:03:19.595Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:03:19.595Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:03:19.595Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:03:19.595Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:03:19.595Z CNTRLR querying Serial API capabilities... -2024-09-06T10:03:19.596Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:03:19.597Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:03:19.608Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.609Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:03:19.609Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.609Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:03:19.610Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:03:19.610Z CNTRLR querying additional controller information... -2024-09-06T10:03:19.611Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:03:19.611Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:03:19.625Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.625Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:03:19.626Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.628Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:03:19.629Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:03:19.630Z CNTRLR querying version info... -2024-09-06T10:03:19.631Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:03:19.631Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:03:19.638Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.638Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:03:19.638Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.639Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:03:19.640Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:03:19.640Z CNTRLR querying protocol version info... -2024-09-06T10:03:19.641Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:03:19.641Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:03:19.648Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.648Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:03:19.649Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.649Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:03:19.650Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:03:19.650Z CNTRLR querying controller capabilities... -2024-09-06T10:03:19.651Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:03:19.652Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:03:19.657Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.658Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:03:19.658Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.658Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:03:19.659Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:03:19.659Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:03:19.660Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:03:19.660Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:03:19.667Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.667Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:03:19.667Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.668Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:03:19.668Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:03:19.668Z CNTRLR querying max. payload size... -2024-09-06T10:03:19.669Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:03:19.669Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:03:19.676Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.676Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:03:19.676Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.677Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:03:19.678Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:03:19.678Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:03:19.678Z CNTRLR Querying configured RF region... -2024-09-06T10:03:19.679Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:03:19.679Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:03:19.684Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.685Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:03:19.685Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.685Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:03:19.686Z CNTRLR The controller is using RF region Europe -2024-09-06T10:03:19.686Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:03:19.687Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:03:19.687Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:03:19.692Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.693Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:03:19.693Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.693Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:03:19.694Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:03:19.694Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:03:19.695Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:03:19.696Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:03:19.703Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.703Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:03:19.704Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.704Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:03:19.705Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:03:19.705Z CNTRLR Performing soft reset... -2024-09-06T10:03:19.706Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:03:19.707Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:03:19.711Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.712Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:03:19.712Z DRIVER all queues idle -2024-09-06T10:03:19.818Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:03:19.819Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.820Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:03:19.821Z CNTRLR reconnected and restarted -2024-09-06T10:03:19.821Z CNTRLR Starting hardware watchdog... -2024-09-06T10:03:19.821Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:03:19.822Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:03:19.822Z DRIVER all queues busy -2024-09-06T10:03:19.823Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:03:19.823Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:03:19.825Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:03:19.825Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:03:19.827Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.830Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.831Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:19.831Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.832Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:19.832Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:03:19.833Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:03:19.833Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:03:19.839Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.839Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:19.840Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.840Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:19.841Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:03:19.841Z CNTRLR querying controller IDs... -2024-09-06T10:03:19.841Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:03:19.842Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:03:19.847Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.847Z SERIAL « 0x01080120f346aed70218 (10 bytes) -2024-09-06T10:03:19.848Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.848Z DRIVER « [RES] [GetControllerId] - home ID: 0xf346aed7 - own node ID: 2 -2024-09-06T10:03:19.849Z CNTRLR received controller IDs: - home ID: 0xf346aed7 - own node ID: 2 -2024-09-06T10:03:19.849Z CNTRLR Enabling TX status report... -2024-09-06T10:03:19.850Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:03:19.850Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:03:19.855Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.855Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:03:19.855Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.856Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:03:19.857Z CNTRLR Enabling TX status report successful... -2024-09-06T10:03:19.857Z CNTRLR finding SUC... -2024-09-06T10:03:19.858Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:03:19.858Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:03:19.863Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.863Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:03:19.864Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.864Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:03:19.865Z CNTRLR SUC has node ID 1 -2024-09-06T10:03:19.866Z DRIVER all queues idle -2024-09-06T10:03:19.877Z DRIVER Cache file for homeId 0xf346aed7 found, attempting to restore the network from - cache... -2024-09-06T10:03:19.885Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:03:19.886Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:03:19.887Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:03:19.887Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:03:19.888Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:03:19.888Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T10:03:19.888Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:03:19.889Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T10:03:19.889Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:03:19.889Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T10:03:19.889Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:03:19.889Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T10:03:19.890Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:03:19.890Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T10:03:19.890Z CNTRLR Interview completed -2024-09-06T10:03:19.890Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:03:19.890Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:03:19.890Z DRIVER driver ready -2024-09-06T10:03:19.891Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:03:19.891Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:03:19.892Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:03:19.893Z DRIVER all queues busy -2024-09-06T10:03:19.894Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:03:19.894Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:03:19.900Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.900Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:03:19.901Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.901Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:03:19.902Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:03:19.903Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:03:19.904Z DRIVER all queues idle -2024-09-06T10:03:19.905Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:03:19.906Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:03:19.906Z CNTRLR [Node 002] Interview completed -2024-09-06T10:03:19.906Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:03:19.907Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:03:19.907Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:03:19.908Z DRIVER all queues busy -2024-09-06T10:03:19.908Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:03:19.908Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:03:19.914Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.914Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:03:19.915Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.915Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:03:19.916Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:03:19.916Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:03:19.916Z CNTRLR Determining node status: 1 -2024-09-06T10:03:19.916Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:03:19.919Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:03:19.919Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:03:19.929Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:19.929Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:03:19.929Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.930Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:03:19.946Z SERIAL « 0x011d00a90100000100d97f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T10:03:19.947Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:19.947Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:03:19.948Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:03:19.949Z CNTRLR « [Node 001] ping successful -2024-09-06T10:03:19.949Z DRIVER all queues idle -2024-09-06T10:03:24.891Z CNTRLR Updating the controller NIF... -2024-09-06T10:03:24.892Z DRIVER all queues busy -2024-09-06T10:03:24.894Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:03:24.895Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:03:24.901Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.903Z CNTRLR performing hard reset... -2024-09-06T10:03:24.904Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:03:24.905Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:03:24.910Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.930Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:03:24.931Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:24.932Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:03:24.933Z CNTRLR hard reset succeeded -2024-09-06T10:03:24.934Z CNTRLR querying Serial API capabilities... -2024-09-06T10:03:24.936Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:03:24.936Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:03:24.945Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.947Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:03:24.947Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:24.948Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:03:24.950Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:03:24.950Z CNTRLR querying additional controller information... -2024-09-06T10:03:24.951Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:03:24.952Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:03:24.961Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.962Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:03:24.963Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:24.964Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:03:24.965Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:03:24.965Z CNTRLR querying version info... -2024-09-06T10:03:24.967Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:03:24.967Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:03:24.973Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.974Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:03:24.975Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:24.975Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:03:24.976Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:03:24.977Z CNTRLR querying protocol version info... -2024-09-06T10:03:24.977Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:03:24.978Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:03:24.984Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.985Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:03:24.985Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:24.986Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:03:24.987Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:03:24.987Z CNTRLR querying controller capabilities... -2024-09-06T10:03:24.988Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:03:24.989Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:03:24.994Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:24.995Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:03:24.995Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:24.996Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:03:24.997Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:03:24.997Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:03:24.998Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:03:24.998Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:03:25.005Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.006Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:03:25.006Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.007Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:03:25.008Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:03:25.008Z CNTRLR querying max. payload size... -2024-09-06T10:03:25.009Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:03:25.009Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:03:25.014Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.015Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:03:25.016Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.016Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:03:25.017Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:03:25.017Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:03:25.017Z CNTRLR Querying configured RF region... -2024-09-06T10:03:25.018Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:03:25.018Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:03:25.023Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.024Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:03:25.024Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.025Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:03:25.025Z CNTRLR The controller is using RF region Europe -2024-09-06T10:03:25.025Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:03:25.026Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:03:25.026Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:03:25.032Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.033Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:03:25.033Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.034Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:03:25.034Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:03:25.034Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:03:25.035Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:03:25.035Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:03:25.041Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.041Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:03:25.041Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.042Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:03:25.042Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:03:25.043Z CNTRLR Performing soft reset... -2024-09-06T10:03:25.043Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:03:25.043Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:03:25.047Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.048Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:03:25.048Z DRIVER all queues idle -2024-09-06T10:03:25.160Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:03:25.161Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.162Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:03:25.163Z CNTRLR reconnected and restarted -2024-09-06T10:03:25.163Z CNTRLR Starting hardware watchdog... -2024-09-06T10:03:25.164Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:03:25.164Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:03:25.165Z DRIVER all queues busy -2024-09-06T10:03:25.166Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:03:25.167Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:03:25.170Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:03:25.170Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:03:25.172Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.176Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.177Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:25.177Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.178Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:25.179Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:03:25.180Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:03:25.180Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:03:25.185Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.186Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:03:25.186Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.186Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:03:25.187Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:03:25.187Z CNTRLR querying controller IDs... -2024-09-06T10:03:25.188Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:03:25.188Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:03:25.193Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.194Z SERIAL « 0x01080120e807928e0124 (10 bytes) -2024-09-06T10:03:25.194Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.194Z DRIVER « [RES] [GetControllerId] - home ID: 0xe807928e - own node ID: 1 -2024-09-06T10:03:25.195Z CNTRLR received controller IDs: - home ID: 0xe807928e - own node ID: 1 -2024-09-06T10:03:25.195Z CNTRLR Enabling TX status report... -2024-09-06T10:03:25.195Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:03:25.196Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:03:25.201Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.202Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:03:25.202Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.203Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:03:25.203Z CNTRLR Enabling TX status report successful... -2024-09-06T10:03:25.204Z CNTRLR finding SUC... -2024-09-06T10:03:25.204Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:03:25.204Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:03:25.210Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.210Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:03:25.210Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.211Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:03:25.211Z CNTRLR No SUC present in the network -2024-09-06T10:03:25.212Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:03:25.212Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:03:25.213Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:03:25.219Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.220Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:03:25.220Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.221Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:03:25.221Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:03:25.225Z DRIVER all queues idle -2024-09-06T10:03:25.229Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:03:25.229Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:03:25.229Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:03:25.229Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:03:25.229Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:03:25.229Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:03:25.230Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:03:25.230Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:03:25.230Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:03:25.230Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:03:25.230Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:03:25.230Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:03:25.230Z CNTRLR Interview completed -2024-09-06T10:03:25.230Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:03:25.230Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:03:25.231Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:03:25.231Z DRIVER driver ready -2024-09-06T10:03:25.231Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:03:25.232Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:03:25.232Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:03:25.232Z DRIVER all queues busy -2024-09-06T10:03:25.232Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:03:25.233Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:03:25.238Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:25.239Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:03:25.239Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:25.240Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:03:25.240Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:03:25.240Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:03:25.241Z DRIVER all queues idle -2024-09-06T10:03:25.242Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:03:25.243Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:03:25.243Z CNTRLR [Node 001] Interview completed -2024-09-06T10:03:25.243Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:03:25.243Z CNTRLR All nodes are ready to be used -2024-09-06T10:03:25.243Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:03:29.936Z DRIVER all queues busy -2024-09-06T10:03:29.938Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:03:29.939Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:03:29.945Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:29.947Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:03:29.947Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:29.948Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:03:29.951Z DRIVER all queues idle -2024-09-06T10:03:30.128Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:03:30.129Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.130Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:03:30.130Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:03:30.130Z DRIVER 1 handler registered! -2024-09-06T10:03:30.130Z DRIVER invoking handler #0 -2024-09-06T10:03:30.130Z DRIVER the message was handled -2024-09-06T10:03:30.242Z DRIVER all queues busy -2024-09-06T10:03:30.242Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:03:30.243Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:03:30.248Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.248Z SERIAL « 0x0107013b9bc3c37f26 (9 bytes) -2024-09-06T10:03:30.249Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.249Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -101 dBm - channel 1: -61 dBm - channel 2: -61 dBm - channel 3: N/A -2024-09-06T10:03:30.250Z DRIVER all queues idle -2024-09-06T10:03:30.648Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:03:30.649Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.650Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:03:30.665Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:03:30.665Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.666Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:03:30.666Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:03:30.666Z DRIVER 1 handler registered! -2024-09-06T10:03:30.666Z DRIVER invoking handler #0 -2024-09-06T10:03:30.666Z DRIVER the message was handled -2024-09-06T10:03:30.667Z DRIVER waiting for security bootstrapping... -2024-09-06T10:03:30.667Z CNTRLR querying controller IDs... -2024-09-06T10:03:30.667Z DRIVER all queues busy -2024-09-06T10:03:30.668Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:03:30.668Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:03:30.673Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.674Z SERIAL « 0x01080120f41ad2d2023a (10 bytes) -2024-09-06T10:03:30.674Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.674Z DRIVER « [RES] [GetControllerId] - home ID: 0xf41ad2d2 - own node ID: 2 -2024-09-06T10:03:30.675Z CNTRLR received controller IDs: - home ID: 0xf41ad2d2 - own node ID: 2 -2024-09-06T10:03:30.675Z DRIVER Joined network with home ID 0xf41ad2d2, switching to new network cache... -2024-09-06T10:03:30.675Z CNTRLR querying controller capabilities... -2024-09-06T10:03:30.676Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:03:30.676Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:03:30.681Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.682Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:03:30.682Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.682Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:03:30.683Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:03:30.683Z CNTRLR querying additional controller information... -2024-09-06T10:03:30.683Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:03:30.683Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:03:30.691Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.692Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:03:30.692Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.692Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:03:30.693Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:03:30.694Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:03:30.695Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:03:30.695Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:03:30.695Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:03:30.695Z CNTRLR Interview completed -2024-09-06T10:03:30.695Z DRIVER all queues idle -2024-09-06T10:03:30.882Z SERIAL « 0x010b00a8000201029f0400da1c (13 bytes) -2024-09-06T10:03:30.883Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.885Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -38 dBm - └─[Security2CCKEXGet] -2024-09-06T10:03:30.886Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:03:30.886Z DRIVER all queues busy -2024-09-06T10:03:30.887Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:03:30.888Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:03:30.897Z SERIAL « [ACK] (0x06) -2024-09-06T10:03:30.898Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:03:30.898Z SERIAL » [ACK] (0x06) -2024-09-06T10:03:30.899Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:03:30.900Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:03:30.900Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:03:30.900Z DRIVER Finished joining network -2024-09-06T10:03:30.901Z DRIVER all queues idle -2024-09-06T10:04:11.389Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:04:11.390Z DRIVER version 13.2.0 -2024-09-06T10:04:11.390Z DRIVER -2024-09-06T10:04:11.390Z DRIVER starting driver... -2024-09-06T10:04:11.391Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:04:11.404Z DRIVER serial port opened -2024-09-06T10:04:11.404Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:04:12.412Z DRIVER loading configuration... -2024-09-06T10:04:12.414Z CONFIG version 13.2.0 -2024-09-06T10:04:12.738Z DRIVER beginning interview... -2024-09-06T10:04:12.739Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:04:12.739Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:04:12.739Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:04:12.739Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:04:12.739Z CNTRLR querying Serial API capabilities... -2024-09-06T10:04:12.741Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:04:12.741Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:04:12.755Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.756Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:04:12.756Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.757Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:04:12.758Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:04:12.759Z CNTRLR querying additional controller information... -2024-09-06T10:04:12.759Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:04:12.760Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:04:12.768Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.768Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:04:12.769Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.769Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:04:12.770Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:04:12.770Z CNTRLR querying version info... -2024-09-06T10:04:12.771Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:04:12.771Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:04:12.777Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.777Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:04:12.777Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.778Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:04:12.778Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:04:12.779Z CNTRLR querying protocol version info... -2024-09-06T10:04:12.779Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:04:12.780Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:04:12.787Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.787Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:04:12.788Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.788Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:04:12.789Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:04:12.789Z CNTRLR querying controller capabilities... -2024-09-06T10:04:12.790Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:04:12.790Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:04:12.799Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.800Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:04:12.800Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.800Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:04:12.801Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:04:12.802Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:04:12.803Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:04:12.803Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:04:12.812Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.812Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:04:12.812Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.813Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:04:12.814Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:04:12.814Z CNTRLR querying max. payload size... -2024-09-06T10:04:12.814Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:04:12.815Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:04:12.821Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.821Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:04:12.821Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.822Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:04:12.822Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:04:12.822Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:04:12.823Z CNTRLR Querying configured RF region... -2024-09-06T10:04:12.823Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:04:12.824Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:04:12.829Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.829Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:04:12.829Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.830Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:04:12.830Z CNTRLR The controller is using RF region Europe -2024-09-06T10:04:12.830Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:04:12.831Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:04:12.831Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:04:12.836Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.836Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:04:12.837Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.837Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:04:12.838Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:04:12.838Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:04:12.839Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:04:12.839Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:04:12.844Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.845Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:04:12.845Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.845Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:04:12.846Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:04:12.846Z CNTRLR Performing soft reset... -2024-09-06T10:04:12.846Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:04:12.847Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:04:12.850Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.851Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:04:12.851Z DRIVER all queues idle -2024-09-06T10:04:12.967Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:04:12.968Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.970Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:04:12.972Z CNTRLR reconnected and restarted -2024-09-06T10:04:12.973Z CNTRLR Starting hardware watchdog... -2024-09-06T10:04:12.974Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:04:12.975Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:04:12.976Z DRIVER all queues busy -2024-09-06T10:04:12.977Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:04:12.978Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:04:12.984Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:04:12.984Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:04:12.985Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.989Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.990Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:12.990Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:12.991Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:12.992Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:04:12.992Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:04:12.993Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:04:12.998Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:12.999Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:12.999Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.000Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:13.001Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:04:13.001Z CNTRLR querying controller IDs... -2024-09-06T10:04:13.002Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:04:13.002Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:04:13.007Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.008Z SERIAL « 0x01080120f41ad2d2023a (10 bytes) -2024-09-06T10:04:13.009Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.009Z DRIVER « [RES] [GetControllerId] - home ID: 0xf41ad2d2 - own node ID: 2 -2024-09-06T10:04:13.010Z CNTRLR received controller IDs: - home ID: 0xf41ad2d2 - own node ID: 2 -2024-09-06T10:04:13.010Z CNTRLR Enabling TX status report... -2024-09-06T10:04:13.011Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:04:13.012Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:04:13.017Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.017Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:04:13.018Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.018Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:04:13.019Z CNTRLR Enabling TX status report successful... -2024-09-06T10:04:13.019Z CNTRLR finding SUC... -2024-09-06T10:04:13.020Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:04:13.020Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:04:13.025Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.026Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:04:13.026Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.027Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:04:13.028Z CNTRLR SUC has node ID 1 -2024-09-06T10:04:13.028Z DRIVER all queues idle -2024-09-06T10:04:13.039Z DRIVER Cache file for homeId 0xf41ad2d2 found, attempting to restore the network from - cache... -2024-09-06T10:04:13.047Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:04:13.047Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:04:13.049Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:04:13.049Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:04:13.049Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:04:13.050Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T10:04:13.050Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:04:13.050Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T10:04:13.050Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:04:13.050Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T10:04:13.051Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:04:13.051Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T10:04:13.051Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:04:13.051Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T10:04:13.051Z CNTRLR Interview completed -2024-09-06T10:04:13.051Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:04:13.052Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:04:13.052Z DRIVER driver ready -2024-09-06T10:04:13.052Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:04:13.052Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:04:13.053Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:04:13.054Z DRIVER all queues busy -2024-09-06T10:04:13.054Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:04:13.055Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:04:13.060Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.061Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:04:13.061Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.061Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:04:13.062Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:04:13.062Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:04:13.063Z DRIVER all queues idle -2024-09-06T10:04:13.065Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:04:13.065Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:04:13.066Z CNTRLR [Node 002] Interview completed -2024-09-06T10:04:13.066Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:04:13.067Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:04:13.067Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:04:13.067Z DRIVER all queues busy -2024-09-06T10:04:13.067Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:04:13.068Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:04:13.077Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.077Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:04:13.077Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.077Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:04:13.078Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:04:13.078Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:04:13.078Z CNTRLR Determining node status: 1 -2024-09-06T10:04:13.079Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:04:13.081Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:04:13.081Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:04:13.086Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:13.088Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:04:13.089Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.089Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:04:13.110Z SERIAL « 0x011d00a90100000100d97f7f7f7f00000300000000030100007f7f7f7f7fec (31 bytes) -2024-09-06T10:04:13.111Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:13.112Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:04:13.113Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:04:13.113Z CNTRLR « [Node 001] ping successful -2024-09-06T10:04:13.117Z DRIVER all queues idle -2024-09-06T10:04:18.052Z CNTRLR Updating the controller NIF... -2024-09-06T10:04:18.053Z DRIVER all queues busy -2024-09-06T10:04:18.055Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:04:18.056Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:04:18.062Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.064Z CNTRLR performing hard reset... -2024-09-06T10:04:18.066Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:04:18.067Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:04:18.071Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.092Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:04:18.093Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.094Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:04:18.096Z CNTRLR hard reset succeeded -2024-09-06T10:04:18.096Z CNTRLR querying Serial API capabilities... -2024-09-06T10:04:18.098Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:04:18.099Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:04:18.108Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.109Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:04:18.110Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.111Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:04:18.112Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:04:18.113Z CNTRLR querying additional controller information... -2024-09-06T10:04:18.114Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:04:18.115Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:04:18.123Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.124Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:04:18.125Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.126Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:04:18.127Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:04:18.128Z CNTRLR querying version info... -2024-09-06T10:04:18.129Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:04:18.129Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:04:18.135Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.135Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:04:18.136Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.136Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:04:18.137Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:04:18.137Z CNTRLR querying protocol version info... -2024-09-06T10:04:18.138Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:04:18.138Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:04:18.145Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.146Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:04:18.146Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.146Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:04:18.147Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:04:18.147Z CNTRLR querying controller capabilities... -2024-09-06T10:04:18.147Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:04:18.148Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:04:18.152Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.153Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:04:18.153Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.153Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:04:18.153Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:04:18.154Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:04:18.154Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:04:18.154Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:04:18.161Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.161Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:04:18.161Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.162Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:04:18.162Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:04:18.162Z CNTRLR querying max. payload size... -2024-09-06T10:04:18.163Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:04:18.163Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:04:18.168Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.169Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:04:18.169Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.170Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:04:18.170Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:04:18.170Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:04:18.171Z CNTRLR Querying configured RF region... -2024-09-06T10:04:18.171Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:04:18.172Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:04:18.177Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.177Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:04:18.177Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.178Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:04:18.178Z CNTRLR The controller is using RF region Europe -2024-09-06T10:04:18.179Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:04:18.179Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:04:18.180Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:04:18.185Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.186Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:04:18.186Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.186Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:04:18.187Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:04:18.187Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:04:18.188Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:04:18.188Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:04:18.194Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.195Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:04:18.195Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.196Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:04:18.196Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:04:18.196Z CNTRLR Performing soft reset... -2024-09-06T10:04:18.197Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:04:18.197Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:04:18.201Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.202Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:04:18.202Z DRIVER all queues idle -2024-09-06T10:04:18.308Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:04:18.309Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.311Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:04:18.311Z CNTRLR reconnected and restarted -2024-09-06T10:04:18.312Z CNTRLR Starting hardware watchdog... -2024-09-06T10:04:18.312Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:04:18.313Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:04:18.313Z DRIVER all queues busy -2024-09-06T10:04:18.315Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:04:18.316Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:04:18.318Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:04:18.319Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:04:18.321Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.324Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.325Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:18.325Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.325Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:18.326Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:04:18.326Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:04:18.326Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:04:18.332Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.333Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:04:18.333Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.333Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:04:18.334Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:04:18.335Z CNTRLR querying controller IDs... -2024-09-06T10:04:18.335Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:04:18.336Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:04:18.341Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.342Z SERIAL « 0x01080120ddd877f40151 (10 bytes) -2024-09-06T10:04:18.342Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.343Z DRIVER « [RES] [GetControllerId] - home ID: 0xddd877f4 - own node ID: 1 -2024-09-06T10:04:18.343Z CNTRLR received controller IDs: - home ID: 0xddd877f4 - own node ID: 1 -2024-09-06T10:04:18.344Z CNTRLR Enabling TX status report... -2024-09-06T10:04:18.344Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:04:18.345Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:04:18.350Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.350Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:04:18.350Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.351Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:04:18.351Z CNTRLR Enabling TX status report successful... -2024-09-06T10:04:18.351Z CNTRLR finding SUC... -2024-09-06T10:04:18.352Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:04:18.352Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:04:18.357Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.358Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:04:18.358Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.359Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:04:18.359Z CNTRLR No SUC present in the network -2024-09-06T10:04:18.359Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:04:18.360Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:04:18.360Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:04:18.367Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.368Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:04:18.368Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.369Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:04:18.370Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:04:18.370Z DRIVER all queues idle -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:04:18.374Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:04:18.375Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:04:18.375Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:04:18.375Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:04:18.375Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:04:18.375Z CNTRLR Interview completed -2024-09-06T10:04:18.375Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:04:18.375Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:04:18.376Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:04:18.376Z DRIVER driver ready -2024-09-06T10:04:18.376Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:04:18.376Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:04:18.376Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:04:18.377Z DRIVER all queues busy -2024-09-06T10:04:18.377Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:04:18.377Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:04:18.382Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:18.383Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:04:18.383Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:18.383Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:04:18.384Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:04:18.384Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:04:18.385Z DRIVER all queues idle -2024-09-06T10:04:18.386Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:04:18.386Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:04:18.386Z CNTRLR [Node 001] Interview completed -2024-09-06T10:04:18.386Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:04:18.387Z CNTRLR All nodes are ready to be used -2024-09-06T10:04:18.387Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:04:23.098Z DRIVER all queues busy -2024-09-06T10:04:23.100Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:04:23.101Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:04:23.107Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:23.108Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:04:23.109Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.110Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:04:23.112Z DRIVER all queues idle -2024-09-06T10:04:23.284Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:04:23.285Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.285Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:04:23.285Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:04:23.286Z DRIVER 1 handler registered! -2024-09-06T10:04:23.286Z DRIVER invoking handler #0 -2024-09-06T10:04:23.286Z DRIVER the message was handled -2024-09-06T10:04:23.386Z DRIVER all queues busy -2024-09-06T10:04:23.387Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:04:23.388Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:04:23.393Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:23.393Z SERIAL « 0x0107013bf197977f4c (9 bytes) -2024-09-06T10:04:23.394Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.394Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -15 dBm - channel 1: -105 dBm - channel 2: -105 dBm - channel 3: N/A -2024-09-06T10:04:23.395Z DRIVER all queues idle -2024-09-06T10:04:23.806Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:04:23.806Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.807Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:04:23.827Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:04:23.827Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:23.831Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:04:23.832Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:04:23.832Z DRIVER 1 handler registered! -2024-09-06T10:04:23.832Z DRIVER invoking handler #0 -2024-09-06T10:04:23.832Z DRIVER the message was handled -2024-09-06T10:04:23.833Z DRIVER waiting for security bootstrapping... -2024-09-06T10:04:33.832Z CNTRLR querying controller IDs... -2024-09-06T10:04:33.833Z DRIVER all queues busy -2024-09-06T10:04:33.833Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:04:33.834Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:04:33.893Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.894Z SERIAL « 0x01080120d1f692e50284 (10 bytes) -2024-09-06T10:04:33.894Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.896Z DRIVER « [RES] [GetControllerId] - home ID: 0xd1f692e5 - own node ID: 2 -2024-09-06T10:04:33.897Z CNTRLR received controller IDs: - home ID: 0xd1f692e5 - own node ID: 2 -2024-09-06T10:04:33.897Z DRIVER Joined network with home ID 0xd1f692e5, switching to new network cache... -2024-09-06T10:04:33.897Z CNTRLR querying controller capabilities... -2024-09-06T10:04:33.899Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:04:33.899Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:04:33.907Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.908Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:04:33.908Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.909Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:04:33.909Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:04:33.910Z CNTRLR querying additional controller information... -2024-09-06T10:04:33.911Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:04:33.911Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:04:33.920Z SERIAL « [ACK] (0x06) -2024-09-06T10:04:33.921Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:04:33.922Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:33.923Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:04:33.924Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:04:33.927Z DRIVER all queues idle -2024-09-06T10:04:34.108Z SERIAL « 0x010b00a8000201029f0400da1c (13 bytes) -2024-09-06T10:04:34.110Z SERIAL » [ACK] (0x06) -2024-09-06T10:04:34.112Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -38 dBm - └─[Security2CCKEXGet] -2024-09-06T10:05:09.136Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:05:09.136Z DRIVER version 13.2.0 -2024-09-06T10:05:09.136Z DRIVER -2024-09-06T10:05:09.136Z DRIVER starting driver... -2024-09-06T10:05:09.136Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:05:09.145Z DRIVER serial port opened -2024-09-06T10:05:09.145Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:05:10.151Z DRIVER loading configuration... -2024-09-06T10:05:10.156Z CONFIG version 13.2.0 -2024-09-06T10:05:10.492Z DRIVER beginning interview... -2024-09-06T10:05:10.492Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:05:10.492Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:05:10.492Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:05:10.492Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:05:10.492Z CNTRLR querying Serial API capabilities... -2024-09-06T10:05:10.494Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:05:10.494Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:05:10.507Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.507Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:05:10.508Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.509Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:05:10.510Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:05:10.510Z CNTRLR querying additional controller information... -2024-09-06T10:05:10.511Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:05:10.511Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:05:10.519Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.520Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:05:10.520Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.520Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:05:10.521Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:05:10.521Z CNTRLR querying version info... -2024-09-06T10:05:10.522Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:05:10.522Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:05:10.528Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.528Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:05:10.529Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.529Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:05:10.530Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:05:10.530Z CNTRLR querying protocol version info... -2024-09-06T10:05:10.530Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:05:10.531Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:05:10.537Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.538Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:05:10.538Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.538Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:05:10.539Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:05:10.539Z CNTRLR querying controller capabilities... -2024-09-06T10:05:10.540Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:05:10.540Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:05:10.546Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.547Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:05:10.547Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.547Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:05:10.548Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:05:10.548Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:05:10.549Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:05:10.549Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:05:10.558Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.559Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:05:10.559Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.560Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:05:10.560Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:05:10.561Z CNTRLR querying max. payload size... -2024-09-06T10:05:10.562Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:05:10.562Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:05:10.571Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.571Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:05:10.571Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.572Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:05:10.573Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:05:10.573Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:05:10.574Z CNTRLR Querying configured RF region... -2024-09-06T10:05:10.575Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:05:10.575Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:05:10.583Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.584Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:05:10.584Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.585Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:05:10.586Z CNTRLR The controller is using RF region Europe -2024-09-06T10:05:10.586Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:05:10.587Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:05:10.587Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:05:10.595Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.595Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:05:10.596Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.596Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:05:10.597Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:05:10.597Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:05:10.597Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:05:10.598Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:05:10.603Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.604Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:05:10.604Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.604Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:05:10.605Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:05:10.605Z CNTRLR Performing soft reset... -2024-09-06T10:05:10.606Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:05:10.606Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:05:10.610Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.610Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:05:10.610Z DRIVER all queues idle -2024-09-06T10:05:10.719Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:05:10.721Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.722Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:05:10.724Z CNTRLR reconnected and restarted -2024-09-06T10:05:10.724Z CNTRLR Starting hardware watchdog... -2024-09-06T10:05:10.725Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:05:10.726Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:05:10.727Z DRIVER all queues busy -2024-09-06T10:05:10.729Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:05:10.730Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:05:10.735Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:05:10.735Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:05:10.736Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.741Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.741Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:10.742Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.742Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:10.743Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:05:10.744Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:05:10.744Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:05:10.750Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.750Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:10.750Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.751Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:10.751Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:05:10.752Z CNTRLR querying controller IDs... -2024-09-06T10:05:10.752Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:05:10.753Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:05:10.758Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.758Z SERIAL « 0x01080120d1f692e50284 (10 bytes) -2024-09-06T10:05:10.759Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.759Z DRIVER « [RES] [GetControllerId] - home ID: 0xd1f692e5 - own node ID: 2 -2024-09-06T10:05:10.760Z CNTRLR received controller IDs: - home ID: 0xd1f692e5 - own node ID: 2 -2024-09-06T10:05:10.760Z CNTRLR Enabling TX status report... -2024-09-06T10:05:10.761Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:05:10.762Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:05:10.767Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.767Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:05:10.767Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.768Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:05:10.769Z CNTRLR Enabling TX status report successful... -2024-09-06T10:05:10.769Z CNTRLR finding SUC... -2024-09-06T10:05:10.769Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:05:10.770Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:05:10.774Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.775Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:05:10.775Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.775Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:05:10.776Z CNTRLR SUC has node ID 1 -2024-09-06T10:05:10.777Z DRIVER all queues idle -2024-09-06T10:05:10.786Z DRIVER Cache file for homeId 0xd1f692e5 found, attempting to restore the network from - cache... -2024-09-06T10:05:10.787Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:05:10.788Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:05:10.788Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:05:10.788Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:05:10.789Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:05:10.789Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:05:10.789Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:05:10.789Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:05:10.789Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:05:10.790Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:05:10.790Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:05:10.790Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:05:10.790Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:05:10.790Z CNTRLR Interview completed -2024-09-06T10:05:10.790Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:05:10.790Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:05:10.791Z DRIVER driver ready -2024-09-06T10:05:10.791Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:05:10.791Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:05:10.791Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:05:10.792Z DRIVER all queues busy -2024-09-06T10:05:10.793Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:05:10.793Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:05:10.799Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.799Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:05:10.799Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.800Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:05:10.801Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:05:10.801Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:05:10.803Z DRIVER all queues idle -2024-09-06T10:05:10.809Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:05:10.810Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:05:10.810Z CNTRLR [Node 002] Interview completed -2024-09-06T10:05:10.810Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:05:10.811Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:05:10.811Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:05:10.811Z DRIVER all queues busy -2024-09-06T10:05:10.812Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:05:10.812Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:05:10.818Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.818Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:05:10.818Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.819Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:05:10.819Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:05:10.820Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:05:10.820Z CNTRLR Determining node status: 1 -2024-09-06T10:05:10.820Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:05:10.822Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:05:10.822Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:05:10.828Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:10.830Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:05:10.830Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.831Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:05:10.851Z SERIAL « 0x011d00a90100000100da7f7f7f7f00000300000000030100007f7f7f7f7fef (31 bytes) -2024-09-06T10:05:10.852Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:10.852Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -38 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:05:10.853Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:05:10.853Z CNTRLR « [Node 001] ping successful -2024-09-06T10:05:10.853Z DRIVER all queues idle -2024-09-06T10:05:15.791Z CNTRLR Updating the controller NIF... -2024-09-06T10:05:15.792Z DRIVER all queues busy -2024-09-06T10:05:15.794Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:05:15.795Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:05:15.801Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.803Z CNTRLR performing hard reset... -2024-09-06T10:05:15.805Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:05:15.806Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:05:15.810Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.831Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:05:15.832Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.833Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:05:15.834Z CNTRLR hard reset succeeded -2024-09-06T10:05:15.835Z CNTRLR querying Serial API capabilities... -2024-09-06T10:05:15.836Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:05:15.837Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:05:15.855Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.856Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:05:15.857Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.858Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:05:15.859Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:05:15.860Z CNTRLR querying additional controller information... -2024-09-06T10:05:15.861Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:05:15.862Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:05:15.871Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.872Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:05:15.873Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.874Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:05:15.875Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:05:15.875Z CNTRLR querying version info... -2024-09-06T10:05:15.876Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:05:15.877Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:05:15.883Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.884Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:05:15.885Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.886Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:05:15.887Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:05:15.887Z CNTRLR querying protocol version info... -2024-09-06T10:05:15.888Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:05:15.888Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:05:15.895Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.896Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:05:15.897Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.897Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:05:15.899Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:05:15.899Z CNTRLR querying controller capabilities... -2024-09-06T10:05:15.900Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:05:15.900Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:05:15.906Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.906Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:05:15.907Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.907Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:05:15.908Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:05:15.908Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:05:15.909Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:05:15.910Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:05:15.916Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.917Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:05:15.917Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.918Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:05:15.919Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:05:15.919Z CNTRLR querying max. payload size... -2024-09-06T10:05:15.920Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:05:15.920Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:05:15.926Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.927Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:05:15.927Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.927Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:05:15.928Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:05:15.928Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:05:15.928Z CNTRLR Querying configured RF region... -2024-09-06T10:05:15.929Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:05:15.929Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:05:15.935Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.935Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:05:15.936Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.936Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:05:15.937Z CNTRLR The controller is using RF region Europe -2024-09-06T10:05:15.937Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:05:15.938Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:05:15.938Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:05:15.944Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.944Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:05:15.945Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.945Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:05:15.946Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:05:15.946Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:05:15.947Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:05:15.947Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:05:15.953Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.953Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:05:15.954Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:15.954Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:05:15.955Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:05:15.955Z CNTRLR Performing soft reset... -2024-09-06T10:05:15.955Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:05:15.956Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:05:15.960Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:15.960Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:05:15.960Z DRIVER all queues idle -2024-09-06T10:05:16.073Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:05:16.074Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.075Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:05:16.076Z CNTRLR reconnected and restarted -2024-09-06T10:05:16.076Z CNTRLR Starting hardware watchdog... -2024-09-06T10:05:16.077Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:05:16.077Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:05:16.078Z DRIVER all queues busy -2024-09-06T10:05:16.079Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:05:16.080Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:05:16.082Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:05:16.083Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:05:16.084Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.089Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.089Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:16.090Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.091Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:16.092Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:05:16.093Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:05:16.094Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:05:16.100Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.101Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:05:16.101Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.102Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:05:16.103Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:05:16.104Z CNTRLR querying controller IDs... -2024-09-06T10:05:16.105Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:05:16.105Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:05:16.111Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.112Z SERIAL « 0x01080120d395cb2e0174 (10 bytes) -2024-09-06T10:05:16.112Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.113Z DRIVER « [RES] [GetControllerId] - home ID: 0xd395cb2e - own node ID: 1 -2024-09-06T10:05:16.114Z CNTRLR received controller IDs: - home ID: 0xd395cb2e - own node ID: 1 -2024-09-06T10:05:16.114Z CNTRLR Enabling TX status report... -2024-09-06T10:05:16.115Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:05:16.115Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:05:16.120Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.121Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:05:16.121Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.122Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:05:16.123Z CNTRLR Enabling TX status report successful... -2024-09-06T10:05:16.123Z CNTRLR finding SUC... -2024-09-06T10:05:16.123Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:05:16.124Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:05:16.128Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.129Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:05:16.129Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.130Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:05:16.131Z CNTRLR No SUC present in the network -2024-09-06T10:05:16.131Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:05:16.131Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:05:16.132Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:05:16.138Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.139Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:05:16.139Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.139Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:05:16.140Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:05:16.140Z DRIVER all queues idle -2024-09-06T10:05:16.144Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:05:16.145Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:05:16.146Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:05:16.146Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:05:16.146Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:05:16.146Z CNTRLR Interview completed -2024-09-06T10:05:16.146Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:05:16.146Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:05:16.147Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:05:16.147Z DRIVER driver ready -2024-09-06T10:05:16.147Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:05:16.147Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:05:16.147Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:05:16.147Z DRIVER all queues busy -2024-09-06T10:05:16.148Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:05:16.148Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:05:16.154Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:16.154Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:05:16.154Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:16.155Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:05:16.155Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:05:16.156Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:05:16.156Z DRIVER all queues idle -2024-09-06T10:05:16.158Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:05:16.158Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:05:16.158Z CNTRLR [Node 001] Interview completed -2024-09-06T10:05:16.158Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:05:16.158Z CNTRLR All nodes are ready to be used -2024-09-06T10:05:16.159Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:05:20.837Z DRIVER all queues busy -2024-09-06T10:05:20.839Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:05:20.840Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:05:20.845Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:20.847Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:05:20.847Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:20.848Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:05:20.850Z DRIVER all queues idle -2024-09-06T10:05:21.014Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:05:21.015Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:21.015Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:05:21.015Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:05:21.015Z DRIVER 1 handler registered! -2024-09-06T10:05:21.016Z DRIVER invoking handler #0 -2024-09-06T10:05:21.016Z DRIVER the message was handled -2024-09-06T10:05:21.157Z DRIVER all queues busy -2024-09-06T10:05:21.159Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:05:21.159Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:05:21.169Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:21.169Z SERIAL « 0x0107013b9d99997f20 (9 bytes) -2024-09-06T10:05:21.170Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:21.171Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -99 dBm - channel 1: -103 dBm - channel 2: -103 dBm - channel 3: N/A -2024-09-06T10:05:21.176Z DRIVER all queues idle -2024-09-06T10:05:21.539Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:05:21.539Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:21.540Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:05:21.555Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:05:21.555Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:21.556Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:05:21.556Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:05:21.556Z DRIVER 1 handler registered! -2024-09-06T10:05:21.556Z DRIVER invoking handler #0 -2024-09-06T10:05:21.557Z DRIVER the message was handled -2024-09-06T10:05:21.557Z DRIVER waiting for security bootstrapping... -2024-09-06T10:05:24.081Z CNTRLR querying controller IDs... -2024-09-06T10:05:24.083Z DRIVER all queues busy -2024-09-06T10:05:24.084Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:05:24.085Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:05:24.097Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.098Z SERIAL « 0x01080120fd37611c0263 (10 bytes) -2024-09-06T10:05:24.098Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.099Z DRIVER « [RES] [GetControllerId] - home ID: 0xfd37611c - own node ID: 2 -2024-09-06T10:05:24.099Z CNTRLR received controller IDs: - home ID: 0xfd37611c - own node ID: 2 -2024-09-06T10:05:24.100Z DRIVER Joined network with home ID 0xfd37611c, switching to new network cache... -2024-09-06T10:05:24.100Z CNTRLR querying controller capabilities... -2024-09-06T10:05:24.101Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:05:24.101Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:05:24.109Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.109Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:05:24.109Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.110Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:05:24.111Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:05:24.111Z CNTRLR querying additional controller information... -2024-09-06T10:05:24.112Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:05:24.112Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:05:24.120Z SERIAL « [ACK] (0x06) -2024-09-06T10:05:24.121Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:05:24.121Z SERIAL » [ACK] (0x06) -2024-09-06T10:05:24.122Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:05:24.122Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:05:24.123Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:05:24.123Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:05:24.124Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:05:24.125Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:05:24.125Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:05:24.125Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:05:24.125Z CNTRLR Interview completed -2024-09-06T10:05:24.125Z DRIVER all queues idle -2024-09-06T10:05:24.304Z SERIAL « 0x010b00a8000201029f0400da1c (13 bytes) -2024-09-06T10:05:24.305Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:42.106Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:06:42.107Z DRIVER version 13.2.0 -2024-09-06T10:06:42.107Z DRIVER -2024-09-06T10:06:42.107Z DRIVER starting driver... -2024-09-06T10:06:42.107Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:06:42.115Z DRIVER serial port opened -2024-09-06T10:06:42.115Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:06:43.118Z DRIVER loading configuration... -2024-09-06T10:06:43.120Z CONFIG version 13.2.0 -2024-09-06T10:06:43.437Z DRIVER beginning interview... -2024-09-06T10:06:43.438Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:06:43.438Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:06:43.438Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:06:43.438Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:06:43.438Z CNTRLR querying Serial API capabilities... -2024-09-06T10:06:43.439Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:06:43.440Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:06:43.453Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.453Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:06:43.453Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.454Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:06:43.455Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:06:43.455Z CNTRLR querying additional controller information... -2024-09-06T10:06:43.456Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:06:43.456Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:06:43.464Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.465Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:06:43.465Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.466Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:06:43.466Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:06:43.466Z CNTRLR querying version info... -2024-09-06T10:06:43.467Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:06:43.467Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:06:43.473Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.473Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:06:43.474Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.474Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:06:43.475Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:06:43.475Z CNTRLR querying protocol version info... -2024-09-06T10:06:43.476Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:06:43.476Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:06:43.482Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.483Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:06:43.483Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.483Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:06:43.484Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:06:43.484Z CNTRLR querying controller capabilities... -2024-09-06T10:06:43.485Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:06:43.485Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:06:43.490Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.491Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:06:43.491Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.491Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:06:43.492Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:06:43.492Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:06:43.493Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:06:43.493Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:06:43.499Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.500Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:06:43.500Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.500Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:06:43.501Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:06:43.501Z CNTRLR querying max. payload size... -2024-09-06T10:06:43.502Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:06:43.502Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:06:43.508Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.508Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:06:43.508Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.509Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:06:43.509Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:06:43.509Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:06:43.510Z CNTRLR Querying configured RF region... -2024-09-06T10:06:43.510Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:06:43.511Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:06:43.516Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.516Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:06:43.517Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.517Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:06:43.518Z CNTRLR The controller is using RF region Europe -2024-09-06T10:06:43.518Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:06:43.518Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:06:43.519Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:06:43.524Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.524Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:06:43.524Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.525Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:06:43.525Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:06:43.525Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:06:43.526Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:06:43.526Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:06:43.531Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.532Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:06:43.532Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.532Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:06:43.533Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:06:43.533Z CNTRLR Performing soft reset... -2024-09-06T10:06:43.533Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:06:43.534Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:06:43.537Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.538Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:06:43.538Z DRIVER all queues idle -2024-09-06T10:06:43.654Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:06:43.656Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.657Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:06:43.659Z CNTRLR reconnected and restarted -2024-09-06T10:06:43.659Z CNTRLR Starting hardware watchdog... -2024-09-06T10:06:43.660Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:06:43.661Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:06:43.662Z DRIVER all queues busy -2024-09-06T10:06:43.664Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:06:43.664Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:06:43.671Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:06:43.671Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:06:43.673Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.677Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.677Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:43.678Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.678Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:43.679Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:06:43.680Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:06:43.680Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:06:43.686Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.687Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:43.688Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.688Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:43.689Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:06:43.689Z CNTRLR querying controller IDs... -2024-09-06T10:06:43.690Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:06:43.691Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:06:43.696Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.697Z SERIAL « 0x01080120fd37611c0263 (10 bytes) -2024-09-06T10:06:43.697Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.698Z DRIVER « [RES] [GetControllerId] - home ID: 0xfd37611c - own node ID: 2 -2024-09-06T10:06:43.698Z CNTRLR received controller IDs: - home ID: 0xfd37611c - own node ID: 2 -2024-09-06T10:06:43.698Z CNTRLR Enabling TX status report... -2024-09-06T10:06:43.699Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:06:43.700Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:06:43.705Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.706Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:06:43.706Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.707Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:06:43.707Z CNTRLR Enabling TX status report successful... -2024-09-06T10:06:43.707Z CNTRLR finding SUC... -2024-09-06T10:06:43.708Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:06:43.708Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:06:43.713Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.714Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:06:43.714Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.714Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:06:43.715Z CNTRLR SUC has node ID 1 -2024-09-06T10:06:43.715Z DRIVER all queues idle -2024-09-06T10:06:43.724Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:06:43.724Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:06:43.725Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:06:43.725Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:06:43.725Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:06:43.725Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:06:43.726Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:06:43.726Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:06:43.726Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:06:43.726Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:06:43.726Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:06:43.726Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:06:43.726Z CNTRLR Interview completed -2024-09-06T10:06:43.727Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:06:43.727Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:06:43.727Z DRIVER driver ready -2024-09-06T10:06:43.727Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:06:43.728Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:06:43.728Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:06:43.729Z DRIVER all queues busy -2024-09-06T10:06:43.729Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:06:43.730Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:06:43.735Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.735Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:06:43.736Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.736Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:06:43.737Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:06:43.737Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:06:43.739Z DRIVER all queues idle -2024-09-06T10:06:43.745Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:06:43.745Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:06:43.746Z CNTRLR [Node 002] Interview completed -2024-09-06T10:06:43.746Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:06:43.747Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:06:43.747Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:06:43.747Z DRIVER all queues busy -2024-09-06T10:06:43.747Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:06:43.748Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:06:43.757Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.758Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:06:43.758Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.758Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:06:43.759Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:06:43.759Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:06:43.760Z CNTRLR Determining node status: 1 -2024-09-06T10:06:43.760Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:06:43.763Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:06:43.764Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:06:43.770Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:43.771Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:06:43.772Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.772Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:06:43.804Z SERIAL « 0x011d00a90100000200d97f7f7f7f00000300000000030100007f7f7f7f7fef (31 bytes) -2024-09-06T10:06:43.805Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:43.806Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:06:43.807Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:06:43.808Z CNTRLR « [Node 001] ping successful -2024-09-06T10:06:43.808Z DRIVER all queues idle -2024-09-06T10:06:48.727Z CNTRLR Updating the controller NIF... -2024-09-06T10:06:48.729Z DRIVER all queues busy -2024-09-06T10:06:48.730Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:06:48.731Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:06:48.737Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.739Z CNTRLR performing hard reset... -2024-09-06T10:06:48.741Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:06:48.742Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:06:48.746Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.766Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:06:48.767Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.769Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:06:48.770Z CNTRLR hard reset succeeded -2024-09-06T10:06:48.770Z CNTRLR querying Serial API capabilities... -2024-09-06T10:06:48.772Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:06:48.773Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:06:48.782Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.783Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:06:48.783Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.785Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:06:48.786Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:06:48.786Z CNTRLR querying additional controller information... -2024-09-06T10:06:48.788Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:06:48.789Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:06:48.798Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.799Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:06:48.800Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.801Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:06:48.802Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:06:48.802Z CNTRLR querying version info... -2024-09-06T10:06:48.803Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:06:48.804Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:06:48.810Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.811Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:06:48.812Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.813Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:06:48.814Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:06:48.814Z CNTRLR querying protocol version info... -2024-09-06T10:06:48.815Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:06:48.815Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:06:48.822Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.824Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:06:48.824Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.825Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:06:48.826Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:06:48.826Z CNTRLR querying controller capabilities... -2024-09-06T10:06:48.827Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:06:48.827Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:06:48.832Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.833Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:06:48.833Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.834Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:06:48.834Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:06:48.834Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:06:48.835Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:06:48.835Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:06:48.842Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.842Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:06:48.842Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.842Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:06:48.843Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:06:48.843Z CNTRLR querying max. payload size... -2024-09-06T10:06:48.844Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:06:48.844Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:06:48.849Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.850Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:06:48.850Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.851Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:06:48.851Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:06:48.851Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:06:48.851Z CNTRLR Querying configured RF region... -2024-09-06T10:06:48.852Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:06:48.852Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:06:48.858Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.859Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:06:48.859Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.859Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:06:48.860Z CNTRLR The controller is using RF region Europe -2024-09-06T10:06:48.860Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:06:48.861Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:06:48.861Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:06:48.866Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.866Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:06:48.867Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.867Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:06:48.868Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:06:48.868Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:06:48.868Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:06:48.869Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:06:48.874Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.875Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:06:48.875Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.875Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:06:48.876Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:06:48.876Z CNTRLR Performing soft reset... -2024-09-06T10:06:48.877Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:06:48.877Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:06:48.881Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:48.882Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:06:48.882Z DRIVER all queues idle -2024-09-06T10:06:48.988Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:06:48.989Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:48.990Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:06:48.990Z CNTRLR reconnected and restarted -2024-09-06T10:06:48.991Z CNTRLR Starting hardware watchdog... -2024-09-06T10:06:48.991Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:06:48.992Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:06:48.992Z DRIVER all queues busy -2024-09-06T10:06:48.993Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:06:48.993Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:06:48.994Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:06:48.994Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:06:49.000Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.000Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.001Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:49.001Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.002Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:49.003Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:06:49.003Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:06:49.004Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:06:49.009Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.010Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:06:49.010Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.010Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:06:49.011Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:06:49.011Z CNTRLR querying controller IDs... -2024-09-06T10:06:49.011Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:06:49.012Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:06:49.017Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.017Z SERIAL « 0x01080120d02b0322010d (10 bytes) -2024-09-06T10:06:49.018Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.018Z DRIVER « [RES] [GetControllerId] - home ID: 0xd02b0322 - own node ID: 1 -2024-09-06T10:06:49.018Z CNTRLR received controller IDs: - home ID: 0xd02b0322 - own node ID: 1 -2024-09-06T10:06:49.019Z CNTRLR Enabling TX status report... -2024-09-06T10:06:49.019Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:06:49.019Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:06:49.024Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.025Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:06:49.025Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.025Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:06:49.026Z CNTRLR Enabling TX status report successful... -2024-09-06T10:06:49.026Z CNTRLR finding SUC... -2024-09-06T10:06:49.027Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:06:49.027Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:06:49.032Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.032Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:06:49.032Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.032Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:06:49.033Z CNTRLR No SUC present in the network -2024-09-06T10:06:49.033Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:06:49.033Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:06:49.034Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:06:49.041Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.041Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:06:49.041Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.042Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:06:49.042Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:06:49.043Z DRIVER all queues idle -2024-09-06T10:06:49.046Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:06:49.046Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:06:49.047Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:06:49.047Z CNTRLR Interview completed -2024-09-06T10:06:49.047Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:06:49.048Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:06:49.048Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:06:49.048Z DRIVER driver ready -2024-09-06T10:06:49.049Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:06:49.049Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:06:49.049Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:06:49.049Z DRIVER all queues busy -2024-09-06T10:06:49.049Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:06:49.050Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:06:49.055Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:49.056Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:06:49.056Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:49.056Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:06:49.057Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:06:49.057Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:06:49.058Z DRIVER all queues idle -2024-09-06T10:06:49.059Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:06:49.059Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:06:49.059Z CNTRLR [Node 001] Interview completed -2024-09-06T10:06:49.059Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:06:49.060Z CNTRLR All nodes are ready to be used -2024-09-06T10:06:49.060Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:06:53.772Z DRIVER all queues busy -2024-09-06T10:06:53.774Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:06:53.775Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:06:53.781Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:53.782Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:06:53.783Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:53.784Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:06:53.786Z DRIVER all queues idle -2024-09-06T10:06:53.986Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:06:53.986Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:53.987Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:06:53.987Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:06:53.987Z DRIVER 1 handler registered! -2024-09-06T10:06:53.987Z DRIVER invoking handler #0 -2024-09-06T10:06:53.987Z DRIVER the message was handled -2024-09-06T10:06:54.059Z DRIVER all queues busy -2024-09-06T10:06:54.061Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:06:54.062Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:06:54.073Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.074Z SERIAL « 0x0107013b8080807f3d (9 bytes) -2024-09-06T10:06:54.074Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.075Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -128 dBm - channel 1: -128 dBm - channel 2: -128 dBm - channel 3: N/A -2024-09-06T10:06:54.076Z DRIVER all queues idle -2024-09-06T10:06:54.509Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:06:54.510Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.510Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:06:54.526Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:06:54.527Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.527Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:06:54.527Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:06:54.527Z DRIVER 1 handler registered! -2024-09-06T10:06:54.527Z DRIVER invoking handler #0 -2024-09-06T10:06:54.528Z DRIVER the message was handled -2024-09-06T10:06:54.528Z DRIVER waiting for security bootstrapping... -2024-09-06T10:06:54.529Z CNTRLR querying controller IDs... -2024-09-06T10:06:54.529Z DRIVER all queues busy -2024-09-06T10:06:54.530Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:06:54.530Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:06:54.535Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.536Z SERIAL « 0x01080120de273aaf02b8 (10 bytes) -2024-09-06T10:06:54.536Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.536Z DRIVER « [RES] [GetControllerId] - home ID: 0xde273aaf - own node ID: 2 -2024-09-06T10:06:54.537Z CNTRLR received controller IDs: - home ID: 0xde273aaf - own node ID: 2 -2024-09-06T10:06:54.537Z DRIVER Joined network with home ID 0xde273aaf, switching to new network cache... -2024-09-06T10:06:54.537Z CNTRLR querying controller capabilities... -2024-09-06T10:06:54.538Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:06:54.538Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:06:54.543Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.543Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:06:54.543Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.544Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:06:54.544Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:06:54.544Z CNTRLR querying additional controller information... -2024-09-06T10:06:54.545Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:06:54.545Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:06:54.553Z SERIAL « [ACK] (0x06) -2024-09-06T10:06:54.554Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:06:54.554Z SERIAL » [ACK] (0x06) -2024-09-06T10:06:54.554Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:06:54.555Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:06:54.556Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:06:54.557Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:06:54.557Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:06:54.557Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:06:54.557Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:06:54.557Z CNTRLR Interview completed -2024-09-06T10:06:54.557Z DRIVER all queues idle -2024-09-06T10:06:54.734Z SERIAL « 0x010b00a8000201029f0400d91f (13 bytes) -2024-09-06T10:06:54.735Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:31.577Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:57:31.577Z DRIVER version 13.2.0 -2024-09-06T10:57:31.577Z DRIVER -2024-09-06T10:57:31.577Z DRIVER starting driver... -2024-09-06T10:57:31.577Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:57:31.586Z DRIVER serial port opened -2024-09-06T10:57:31.586Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:57:32.592Z DRIVER loading configuration... -2024-09-06T10:57:32.597Z CONFIG version 13.2.0 -2024-09-06T10:57:32.929Z DRIVER beginning interview... -2024-09-06T10:57:32.929Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:57:32.929Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:57:32.929Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:57:32.929Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:57:32.929Z CNTRLR querying Serial API capabilities... -2024-09-06T10:57:32.931Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:57:32.931Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:57:32.941Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.941Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:57:32.942Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.942Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:57:32.943Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:57:32.943Z CNTRLR querying additional controller information... -2024-09-06T10:57:32.944Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:57:32.944Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:57:32.953Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.954Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:57:32.954Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.955Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:57:32.955Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:57:32.955Z CNTRLR querying version info... -2024-09-06T10:57:32.956Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:57:32.957Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:57:32.962Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.963Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:57:32.963Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.963Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:57:32.964Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:57:32.964Z CNTRLR querying protocol version info... -2024-09-06T10:57:32.965Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:57:32.965Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:57:32.972Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.972Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:57:32.972Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.973Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:57:32.973Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:57:32.974Z CNTRLR querying controller capabilities... -2024-09-06T10:57:32.975Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:57:32.975Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:57:32.980Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.981Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:57:32.981Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.981Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:57:32.982Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:57:32.982Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:57:32.983Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:57:32.983Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:57:32.989Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.989Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:57:32.989Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.990Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:57:32.990Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:57:32.990Z CNTRLR querying max. payload size... -2024-09-06T10:57:32.991Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:57:32.992Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:57:32.997Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:32.998Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:57:32.998Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:32.998Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:57:32.999Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:57:32.999Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:57:32.999Z CNTRLR Querying configured RF region... -2024-09-06T10:57:33.000Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:57:33.000Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:57:33.006Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.006Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:57:33.006Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.007Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:57:33.007Z CNTRLR The controller is using RF region Europe -2024-09-06T10:57:33.007Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:57:33.008Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:57:33.008Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:57:33.013Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.013Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:57:33.014Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.014Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:57:33.014Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:57:33.015Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:57:33.015Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:57:33.015Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:57:33.021Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.021Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:57:33.021Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.022Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:57:33.022Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:57:33.022Z CNTRLR Performing soft reset... -2024-09-06T10:57:33.023Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:57:33.023Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:57:33.027Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.028Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:57:33.028Z DRIVER all queues idle -2024-09-06T10:57:33.136Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:57:33.137Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.139Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:57:33.140Z CNTRLR reconnected and restarted -2024-09-06T10:57:33.141Z CNTRLR Starting hardware watchdog... -2024-09-06T10:57:33.142Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:57:33.143Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:57:33.144Z DRIVER all queues busy -2024-09-06T10:57:33.145Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:57:33.146Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:57:33.148Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:57:33.149Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:57:33.150Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.154Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.155Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:33.156Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.156Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:33.157Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:57:33.158Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:57:33.158Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:57:33.163Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.164Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:33.164Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.164Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:33.165Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:57:33.165Z CNTRLR querying controller IDs... -2024-09-06T10:57:33.166Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:57:33.166Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:57:33.171Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.172Z SERIAL « 0x01080120de273aaf02b8 (10 bytes) -2024-09-06T10:57:33.172Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.173Z DRIVER « [RES] [GetControllerId] - home ID: 0xde273aaf - own node ID: 2 -2024-09-06T10:57:33.173Z CNTRLR received controller IDs: - home ID: 0xde273aaf - own node ID: 2 -2024-09-06T10:57:33.173Z CNTRLR Enabling TX status report... -2024-09-06T10:57:33.174Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:57:33.174Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:57:33.179Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.180Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:57:33.180Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.180Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:57:33.181Z CNTRLR Enabling TX status report successful... -2024-09-06T10:57:33.181Z CNTRLR finding SUC... -2024-09-06T10:57:33.182Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:57:33.182Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:57:33.187Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.187Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:57:33.187Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.188Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:57:33.188Z CNTRLR SUC has node ID 1 -2024-09-06T10:57:33.189Z DRIVER all queues idle -2024-09-06T10:57:33.197Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:57:33.198Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:57:33.198Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:57:33.198Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:57:33.199Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:57:33.199Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:57:33.199Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:57:33.199Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:57:33.199Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:57:33.200Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:57:33.200Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:57:33.200Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:57:33.200Z CNTRLR Interview completed -2024-09-06T10:57:33.200Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:57:33.200Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:57:33.200Z DRIVER driver ready -2024-09-06T10:57:33.201Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:57:33.201Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:57:33.201Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:57:33.202Z DRIVER all queues busy -2024-09-06T10:57:33.203Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:57:33.203Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:57:33.209Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.209Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:57:33.209Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.210Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:57:33.211Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:57:33.211Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:57:33.212Z DRIVER all queues idle -2024-09-06T10:57:33.219Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:57:33.219Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:57:33.220Z CNTRLR [Node 002] Interview completed -2024-09-06T10:57:33.220Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:57:33.220Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:57:33.221Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:57:33.221Z DRIVER all queues busy -2024-09-06T10:57:33.221Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:57:33.222Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:57:33.228Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.228Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:57:33.228Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.229Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:57:33.229Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:57:33.229Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:57:33.229Z CNTRLR Determining node status: 1 -2024-09-06T10:57:33.230Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:57:33.232Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:57:33.232Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:57:33.237Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:33.240Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:57:33.240Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.241Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:57:33.300Z SERIAL « 0x011d00a90100000500d87f7f7f7f00000300000000030200007f7f7f7f7fea (31 bytes) -2024-09-06T10:57:33.301Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:33.301Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 50 ms - routing attempts: 2 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:57:33.303Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:57:33.303Z CNTRLR « [Node 001] ping successful -2024-09-06T10:57:33.303Z DRIVER all queues idle -2024-09-06T10:57:38.201Z CNTRLR Updating the controller NIF... -2024-09-06T10:57:38.202Z DRIVER all queues busy -2024-09-06T10:57:38.204Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:57:38.205Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:57:38.210Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.212Z CNTRLR performing hard reset... -2024-09-06T10:57:38.214Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:57:38.215Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:57:38.219Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.240Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:57:38.241Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.242Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:57:38.243Z CNTRLR hard reset succeeded -2024-09-06T10:57:38.244Z CNTRLR querying Serial API capabilities... -2024-09-06T10:57:38.245Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:57:38.246Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:57:38.255Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.256Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:57:38.257Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.258Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:57:38.259Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:57:38.259Z CNTRLR querying additional controller information... -2024-09-06T10:57:38.260Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:57:38.261Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:57:38.270Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.272Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:57:38.272Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.273Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:57:38.275Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:57:38.275Z CNTRLR querying version info... -2024-09-06T10:57:38.276Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:57:38.277Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:57:38.283Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.284Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:57:38.284Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.285Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:57:38.286Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:57:38.286Z CNTRLR querying protocol version info... -2024-09-06T10:57:38.287Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:57:38.288Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:57:38.294Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.295Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:57:38.296Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.297Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:57:38.298Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:57:38.298Z CNTRLR querying controller capabilities... -2024-09-06T10:57:38.299Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:57:38.299Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:57:38.304Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.305Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:57:38.305Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.306Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:57:38.307Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:57:38.307Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:57:38.308Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:57:38.308Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:57:38.315Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.315Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:57:38.316Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.316Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:57:38.317Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:57:38.318Z CNTRLR querying max. payload size... -2024-09-06T10:57:38.319Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:57:38.319Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:57:38.324Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.324Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:57:38.325Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.325Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:57:38.326Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:57:38.326Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:57:38.326Z CNTRLR Querying configured RF region... -2024-09-06T10:57:38.327Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:57:38.327Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:57:38.333Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.333Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:57:38.333Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.334Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:57:38.334Z CNTRLR The controller is using RF region Europe -2024-09-06T10:57:38.334Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:57:38.335Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:57:38.335Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:57:38.341Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.341Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:57:38.341Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.341Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:57:38.342Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:57:38.342Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:57:38.342Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:57:38.343Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:57:38.348Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.348Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:57:38.348Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.349Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:57:38.350Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:57:38.350Z CNTRLR Performing soft reset... -2024-09-06T10:57:38.351Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:57:38.351Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:57:38.355Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.355Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:57:38.356Z DRIVER all queues idle -2024-09-06T10:57:38.468Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:57:38.469Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.471Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:57:38.471Z CNTRLR reconnected and restarted -2024-09-06T10:57:38.471Z CNTRLR Starting hardware watchdog... -2024-09-06T10:57:38.472Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:57:38.472Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:57:38.473Z DRIVER all queues busy -2024-09-06T10:57:38.474Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:57:38.475Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:57:38.478Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:57:38.478Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:57:38.480Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.484Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.485Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:38.485Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.486Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:38.488Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:57:38.489Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:57:38.490Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:57:38.496Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.496Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:57:38.497Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.497Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:57:38.498Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:57:38.498Z CNTRLR querying controller IDs... -2024-09-06T10:57:38.499Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:57:38.499Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:57:38.505Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.505Z SERIAL « 0x01080120da7caa1b01c0 (10 bytes) -2024-09-06T10:57:38.505Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.506Z DRIVER « [RES] [GetControllerId] - home ID: 0xda7caa1b - own node ID: 1 -2024-09-06T10:57:38.507Z CNTRLR received controller IDs: - home ID: 0xda7caa1b - own node ID: 1 -2024-09-06T10:57:38.507Z CNTRLR Enabling TX status report... -2024-09-06T10:57:38.508Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:57:38.508Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:57:38.513Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.514Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:57:38.514Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.514Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:57:38.515Z CNTRLR Enabling TX status report successful... -2024-09-06T10:57:38.515Z CNTRLR finding SUC... -2024-09-06T10:57:38.516Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:57:38.516Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:57:38.521Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.521Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:57:38.522Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.522Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:57:38.523Z CNTRLR No SUC present in the network -2024-09-06T10:57:38.523Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:57:38.524Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:57:38.524Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:57:38.531Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.532Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:57:38.532Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.533Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:57:38.533Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:57:38.534Z DRIVER all queues idle -2024-09-06T10:57:38.538Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:57:38.539Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:57:38.540Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:57:38.540Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:57:38.540Z CNTRLR Interview completed -2024-09-06T10:57:38.540Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:57:38.540Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:57:38.541Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:57:38.541Z DRIVER driver ready -2024-09-06T10:57:38.541Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:57:38.541Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:57:38.541Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:57:38.542Z DRIVER all queues busy -2024-09-06T10:57:38.542Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:57:38.542Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:57:38.548Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:38.548Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:57:38.548Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:38.549Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:57:38.549Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:57:38.549Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:57:38.550Z DRIVER all queues idle -2024-09-06T10:57:38.552Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:57:38.552Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:57:38.552Z CNTRLR [Node 001] Interview completed -2024-09-06T10:57:38.552Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:57:38.552Z CNTRLR All nodes are ready to be used -2024-09-06T10:57:38.553Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:57:43.246Z DRIVER all queues busy -2024-09-06T10:57:43.248Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:57:43.249Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:57:43.254Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:43.256Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:57:43.256Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.257Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:57:43.259Z DRIVER all queues idle -2024-09-06T10:57:43.448Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:57:43.449Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.450Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:57:43.450Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:57:43.450Z DRIVER 1 handler registered! -2024-09-06T10:57:43.450Z DRIVER invoking handler #0 -2024-09-06T10:57:43.450Z DRIVER the message was handled -2024-09-06T10:57:43.551Z DRIVER all queues busy -2024-09-06T10:57:43.552Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:57:43.553Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:57:43.559Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:43.560Z SERIAL « 0x0107013b9d9a9a7f20 (9 bytes) -2024-09-06T10:57:43.561Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.561Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -99 dBm - channel 1: -102 dBm - channel 2: -102 dBm - channel 3: N/A -2024-09-06T10:57:43.563Z DRIVER all queues idle -2024-09-06T10:57:43.969Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:57:43.970Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.971Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:57:43.987Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:57:43.987Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.988Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:57:43.989Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:57:43.989Z DRIVER 1 handler registered! -2024-09-06T10:57:43.989Z DRIVER invoking handler #0 -2024-09-06T10:57:43.989Z DRIVER the message was handled -2024-09-06T10:57:43.990Z DRIVER waiting for security bootstrapping... -2024-09-06T10:57:43.991Z CNTRLR querying controller IDs... -2024-09-06T10:57:43.991Z DRIVER all queues busy -2024-09-06T10:57:43.992Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:57:43.992Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:57:43.998Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:43.998Z SERIAL « 0x01080120f6cb98710200 (10 bytes) -2024-09-06T10:57:43.998Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:43.999Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6cb9871 - own node ID: 2 -2024-09-06T10:57:43.999Z CNTRLR received controller IDs: - home ID: 0xf6cb9871 - own node ID: 2 -2024-09-06T10:57:43.999Z DRIVER Joined network with home ID 0xf6cb9871, switching to new network cache... -2024-09-06T10:57:43.999Z CNTRLR querying controller capabilities... -2024-09-06T10:57:44.000Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:57:44.000Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:57:44.006Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.006Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:57:44.006Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.007Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:57:44.007Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:57:44.008Z CNTRLR querying additional controller information... -2024-09-06T10:57:44.008Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:57:44.008Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:57:44.016Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.017Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:57:44.017Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.017Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:57:44.018Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:57:44.019Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:57:44.020Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:57:44.020Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:57:44.020Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:57:44.020Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:57:44.020Z CNTRLR Interview completed -2024-09-06T10:57:44.020Z DRIVER all queues idle -2024-09-06T10:57:44.198Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T10:57:44.199Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.200Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T10:57:44.201Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:57:44.201Z DRIVER all queues busy -2024-09-06T10:57:44.202Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:57:44.202Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:57:44.207Z SERIAL « [ACK] (0x06) -2024-09-06T10:57:44.208Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:57:44.208Z SERIAL » [ACK] (0x06) -2024-09-06T10:57:44.209Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:57:44.209Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:57:44.210Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:57:44.210Z DRIVER Finished joining network -2024-09-06T10:57:44.210Z DRIVER all queues idle -2024-09-06T10:59:17.029Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T10:59:17.029Z DRIVER version 13.2.0 -2024-09-06T10:59:17.029Z DRIVER -2024-09-06T10:59:17.029Z DRIVER starting driver... -2024-09-06T10:59:17.030Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T10:59:17.038Z DRIVER serial port opened -2024-09-06T10:59:17.038Z SERIAL » 0x15 (1 bytes) -2024-09-06T10:59:18.041Z DRIVER loading configuration... -2024-09-06T10:59:18.043Z CONFIG version 13.2.0 -2024-09-06T10:59:18.346Z DRIVER beginning interview... -2024-09-06T10:59:18.347Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T10:59:18.347Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T10:59:18.347Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T10:59:18.347Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T10:59:18.347Z CNTRLR querying Serial API capabilities... -2024-09-06T10:59:18.356Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:59:18.357Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:59:18.366Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.366Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:59:18.367Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.368Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:59:18.369Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:59:18.370Z CNTRLR querying additional controller information... -2024-09-06T10:59:18.371Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:59:18.371Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:59:18.379Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.379Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:59:18.380Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.380Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:59:18.381Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:59:18.381Z CNTRLR querying version info... -2024-09-06T10:59:18.382Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:59:18.382Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:59:18.390Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.390Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:59:18.391Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.391Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:59:18.392Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:59:18.392Z CNTRLR querying protocol version info... -2024-09-06T10:59:18.393Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:59:18.393Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:59:18.400Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.400Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:59:18.401Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.402Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:59:18.402Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:59:18.403Z CNTRLR querying controller capabilities... -2024-09-06T10:59:18.404Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:59:18.404Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:59:18.409Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.409Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:59:18.410Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.410Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:59:18.411Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:59:18.411Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:59:18.412Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:59:18.413Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:59:18.419Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.419Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:59:18.420Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.421Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:59:18.421Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:59:18.422Z CNTRLR querying max. payload size... -2024-09-06T10:59:18.422Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:59:18.423Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:59:18.428Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.428Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:59:18.428Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.429Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:59:18.429Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:59:18.430Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:59:18.430Z CNTRLR Querying configured RF region... -2024-09-06T10:59:18.431Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:59:18.431Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:59:18.437Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.437Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:59:18.438Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.438Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:59:18.439Z CNTRLR The controller is using RF region Europe -2024-09-06T10:59:18.439Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:59:18.440Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:59:18.440Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:59:18.445Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.445Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:59:18.445Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.446Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:59:18.447Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:59:18.447Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:59:18.447Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:59:18.448Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:59:18.453Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.453Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:59:18.454Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.454Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:59:18.455Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:59:18.455Z CNTRLR Performing soft reset... -2024-09-06T10:59:18.456Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:59:18.457Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:59:18.461Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.462Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:59:18.462Z DRIVER all queues idle -2024-09-06T10:59:18.576Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:59:18.578Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.580Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:59:18.581Z CNTRLR reconnected and restarted -2024-09-06T10:59:18.582Z CNTRLR Starting hardware watchdog... -2024-09-06T10:59:18.583Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:59:18.585Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:59:18.586Z DRIVER all queues busy -2024-09-06T10:59:18.588Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:59:18.588Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:59:18.594Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:59:18.594Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:59:18.595Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.600Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.600Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:18.600Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.601Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:18.601Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:59:18.602Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:59:18.602Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:59:18.608Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.608Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:18.608Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.609Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:18.609Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:59:18.610Z CNTRLR querying controller IDs... -2024-09-06T10:59:18.610Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:59:18.611Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:59:18.616Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.617Z SERIAL « 0x01080120f6cb98710200 (10 bytes) -2024-09-06T10:59:18.617Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.618Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6cb9871 - own node ID: 2 -2024-09-06T10:59:18.618Z CNTRLR received controller IDs: - home ID: 0xf6cb9871 - own node ID: 2 -2024-09-06T10:59:18.618Z CNTRLR Enabling TX status report... -2024-09-06T10:59:18.619Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:59:18.620Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:59:18.624Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.625Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:59:18.625Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.625Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:59:18.626Z CNTRLR Enabling TX status report successful... -2024-09-06T10:59:18.626Z CNTRLR finding SUC... -2024-09-06T10:59:18.627Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:59:18.627Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:59:18.631Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.632Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T10:59:18.632Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.632Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T10:59:18.633Z CNTRLR SUC has node ID 1 -2024-09-06T10:59:18.634Z DRIVER all queues idle -2024-09-06T10:59:18.645Z DRIVER Cache file for homeId 0xf6cb9871 found, attempting to restore the network from - cache... -2024-09-06T10:59:18.653Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:59:18.653Z DRIVER Restoring the network from cache was successful! -2024-09-06T10:59:18.654Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:59:18.655Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:59:18.655Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:59:18.655Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T10:59:18.655Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T10:59:18.656Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T10:59:18.656Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:59:18.656Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T10:59:18.656Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:59:18.657Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T10:59:18.657Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:59:18.657Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T10:59:18.657Z CNTRLR Interview completed -2024-09-06T10:59:18.657Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T10:59:18.657Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T10:59:18.657Z DRIVER driver ready -2024-09-06T10:59:18.658Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T10:59:18.658Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T10:59:18.658Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T10:59:18.659Z DRIVER all queues busy -2024-09-06T10:59:18.660Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T10:59:18.660Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T10:59:18.666Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.666Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:59:18.667Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.667Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:59:18.668Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:59:18.668Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T10:59:18.669Z DRIVER all queues idle -2024-09-06T10:59:18.671Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T10:59:18.671Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T10:59:18.671Z CNTRLR [Node 002] Interview completed -2024-09-06T10:59:18.672Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T10:59:18.672Z CNTRLR [Node 002] The node is alive. -2024-09-06T10:59:18.672Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:59:18.673Z DRIVER all queues busy -2024-09-06T10:59:18.673Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:59:18.673Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:59:18.679Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.679Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:59:18.680Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.680Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:59:18.681Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:59:18.681Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:59:18.682Z CNTRLR Determining node status: 1 -2024-09-06T10:59:18.682Z CNTRLR » [Node 001] pinging the node... -2024-09-06T10:59:18.684Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T10:59:18.685Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T10:59:18.690Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:18.692Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:18.693Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.693Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:18.714Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T10:59:18.714Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:18.715Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:18.716Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:59:18.716Z CNTRLR « [Node 001] ping successful -2024-09-06T10:59:18.716Z DRIVER all queues idle -2024-09-06T10:59:23.658Z CNTRLR Updating the controller NIF... -2024-09-06T10:59:23.660Z DRIVER all queues busy -2024-09-06T10:59:23.661Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T10:59:23.662Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T10:59:23.668Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.670Z CNTRLR performing hard reset... -2024-09-06T10:59:23.672Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T10:59:23.673Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T10:59:23.677Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.698Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T10:59:23.699Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.701Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T10:59:23.703Z CNTRLR hard reset succeeded -2024-09-06T10:59:23.703Z CNTRLR querying Serial API capabilities... -2024-09-06T10:59:23.705Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T10:59:23.705Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T10:59:23.714Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.716Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T10:59:23.716Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.717Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T10:59:23.719Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T10:59:23.719Z CNTRLR querying additional controller information... -2024-09-06T10:59:23.720Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:59:23.721Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:59:23.730Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.731Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T10:59:23.732Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.733Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:59:23.734Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T10:59:23.735Z CNTRLR querying version info... -2024-09-06T10:59:23.736Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T10:59:23.737Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T10:59:23.743Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.744Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T10:59:23.744Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.745Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T10:59:23.747Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T10:59:23.747Z CNTRLR querying protocol version info... -2024-09-06T10:59:23.748Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T10:59:23.749Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T10:59:23.756Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.757Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T10:59:23.758Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.759Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T10:59:23.760Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T10:59:23.760Z CNTRLR querying controller capabilities... -2024-09-06T10:59:23.761Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:59:23.762Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:59:23.767Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.768Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T10:59:23.768Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.769Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T10:59:23.770Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T10:59:23.770Z CNTRLR querying serial API setup capabilities... -2024-09-06T10:59:23.771Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T10:59:23.771Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T10:59:23.778Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.779Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T10:59:23.779Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.780Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T10:59:23.780Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T10:59:23.781Z CNTRLR querying max. payload size... -2024-09-06T10:59:23.782Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T10:59:23.782Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T10:59:23.787Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.788Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T10:59:23.788Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.789Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T10:59:23.789Z CNTRLR maximum payload size: 46 bytes -2024-09-06T10:59:23.790Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T10:59:23.790Z CNTRLR Querying configured RF region... -2024-09-06T10:59:23.790Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T10:59:23.791Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T10:59:23.796Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.797Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T10:59:23.797Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.798Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T10:59:23.799Z CNTRLR The controller is using RF region Europe -2024-09-06T10:59:23.799Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T10:59:23.799Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T10:59:23.800Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T10:59:23.805Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.806Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T10:59:23.806Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.807Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T10:59:23.808Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T10:59:23.808Z CNTRLR Querying configured Long Range channel information... -2024-09-06T10:59:23.809Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T10:59:23.809Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T10:59:23.814Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.815Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T10:59:23.815Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.816Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T10:59:23.816Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T10:59:23.816Z CNTRLR Performing soft reset... -2024-09-06T10:59:23.817Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T10:59:23.817Z DRIVER » [REQ] [SoftReset] -2024-09-06T10:59:23.821Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.822Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T10:59:23.822Z DRIVER all queues idle -2024-09-06T10:59:23.928Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T10:59:23.929Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.930Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T10:59:23.930Z CNTRLR reconnected and restarted -2024-09-06T10:59:23.931Z CNTRLR Starting hardware watchdog... -2024-09-06T10:59:23.931Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T10:59:23.932Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T10:59:23.932Z DRIVER all queues busy -2024-09-06T10:59:23.933Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T10:59:23.934Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T10:59:23.937Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T10:59:23.937Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T10:59:23.939Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.943Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.943Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:23.944Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.945Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:23.946Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T10:59:23.947Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T10:59:23.948Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T10:59:23.953Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.954Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T10:59:23.954Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.954Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T10:59:23.955Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T10:59:23.955Z CNTRLR querying controller IDs... -2024-09-06T10:59:23.955Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:59:23.956Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:59:23.961Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.961Z SERIAL « 0x01080120f0d4e1a501b7 (10 bytes) -2024-09-06T10:59:23.961Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.962Z DRIVER « [RES] [GetControllerId] - home ID: 0xf0d4e1a5 - own node ID: 1 -2024-09-06T10:59:23.962Z CNTRLR received controller IDs: - home ID: 0xf0d4e1a5 - own node ID: 1 -2024-09-06T10:59:23.962Z CNTRLR Enabling TX status report... -2024-09-06T10:59:23.963Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T10:59:23.963Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T10:59:23.968Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.969Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T10:59:23.969Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.970Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T10:59:23.970Z CNTRLR Enabling TX status report successful... -2024-09-06T10:59:23.970Z CNTRLR finding SUC... -2024-09-06T10:59:23.971Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T10:59:23.971Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T10:59:23.976Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.977Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T10:59:23.977Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.978Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T10:59:23.978Z CNTRLR No SUC present in the network -2024-09-06T10:59:23.978Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T10:59:23.979Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T10:59:23.979Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T10:59:23.986Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:23.986Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T10:59:23.987Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:23.987Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T10:59:23.988Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T10:59:23.988Z DRIVER all queues idle -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T10:59:23.992Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:59:23.993Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:59:23.993Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:59:23.993Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T10:59:23.993Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:59:23.993Z CNTRLR Interview completed -2024-09-06T10:59:23.993Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T10:59:23.993Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T10:59:23.994Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T10:59:23.994Z DRIVER driver ready -2024-09-06T10:59:23.994Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T10:59:23.994Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T10:59:23.994Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T10:59:23.994Z DRIVER all queues busy -2024-09-06T10:59:23.995Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T10:59:23.995Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T10:59:24.001Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:24.001Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T10:59:24.001Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:24.002Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T10:59:24.002Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T10:59:24.003Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T10:59:24.003Z DRIVER all queues idle -2024-09-06T10:59:24.005Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T10:59:24.005Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T10:59:24.005Z CNTRLR [Node 001] Interview completed -2024-09-06T10:59:24.005Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T10:59:24.005Z CNTRLR All nodes are ready to be used -2024-09-06T10:59:24.006Z CNTRLR [Node 001] The node is alive. -2024-09-06T10:59:28.705Z DRIVER all queues busy -2024-09-06T10:59:28.707Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T10:59:28.708Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T10:59:28.713Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:28.714Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T10:59:28.715Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:28.716Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T10:59:28.718Z DRIVER all queues idle -2024-09-06T10:59:28.886Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T10:59:28.887Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:28.887Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T10:59:28.887Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:59:28.887Z DRIVER 1 handler registered! -2024-09-06T10:59:28.888Z DRIVER invoking handler #0 -2024-09-06T10:59:28.888Z DRIVER the message was handled -2024-09-06T10:59:29.004Z DRIVER all queues busy -2024-09-06T10:59:29.005Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T10:59:29.005Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T10:59:29.011Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.012Z SERIAL « 0x0107013b9895957f25 (9 bytes) -2024-09-06T10:59:29.012Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.013Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -104 dBm - channel 1: -107 dBm - channel 2: -107 dBm - channel 3: N/A -2024-09-06T10:59:29.013Z DRIVER all queues idle -2024-09-06T10:59:29.407Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T10:59:29.408Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.409Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T10:59:29.424Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T10:59:29.424Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.425Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T10:59:29.425Z DRIVER handling request SetLearnMode (80) -2024-09-06T10:59:29.425Z DRIVER 1 handler registered! -2024-09-06T10:59:29.425Z DRIVER invoking handler #0 -2024-09-06T10:59:29.426Z DRIVER the message was handled -2024-09-06T10:59:29.426Z DRIVER waiting for security bootstrapping... -2024-09-06T10:59:29.426Z CNTRLR querying controller IDs... -2024-09-06T10:59:29.426Z DRIVER all queues busy -2024-09-06T10:59:29.427Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T10:59:29.427Z DRIVER » [REQ] [GetControllerId] -2024-09-06T10:59:29.437Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.437Z SERIAL « 0x01080120cdaf1be0024d (10 bytes) -2024-09-06T10:59:29.438Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.438Z DRIVER « [RES] [GetControllerId] - home ID: 0xcdaf1be0 - own node ID: 2 -2024-09-06T10:59:29.438Z CNTRLR received controller IDs: - home ID: 0xcdaf1be0 - own node ID: 2 -2024-09-06T10:59:29.439Z DRIVER Joined network with home ID 0xcdaf1be0, switching to new network cache... -2024-09-06T10:59:29.439Z CNTRLR querying controller capabilities... -2024-09-06T10:59:29.440Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T10:59:29.440Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T10:59:29.447Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.447Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T10:59:29.448Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.448Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T10:59:29.448Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T10:59:29.449Z CNTRLR querying additional controller information... -2024-09-06T10:59:29.449Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T10:59:29.449Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T10:59:29.458Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:29.459Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T10:59:29.459Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.460Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T10:59:29.460Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T10:59:29.461Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T10:59:29.461Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T10:59:29.461Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T10:59:29.461Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T10:59:29.461Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T10:59:29.461Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T10:59:29.462Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T10:59:29.462Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T10:59:29.462Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T10:59:29.462Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T10:59:29.462Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T10:59:29.462Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T10:59:29.462Z CNTRLR Interview completed -2024-09-06T10:59:29.462Z DRIVER all queues idle -2024-09-06T10:59:29.627Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T10:59:29.628Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:29.629Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T10:59:31.505Z CNTRLR [Node 001] Received S2 bootstrap initiation, requesting keys: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy - client-side auth: false -2024-09-06T10:59:31.508Z DRIVER all queues busy -2024-09-06T10:59:31.510Z SERIAL » 0x011200a90201069f05000201872500000000057f (20 bytes) -2024-09-06T10:59:31.510Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 5 - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T10:59:31.521Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.521Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.521Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.523Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.536Z SERIAL « 0x011d00a90500000100d87f7f7f7f00000300000000030100007f7f7f7f7fe9 (31 bytes) -2024-09-06T10:59:31.536Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.537Z DRIVER « [REQ] [SendDataBridge] - callback id: 5 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.538Z DRIVER all queues idle -2024-09-06T10:59:31.553Z SERIAL « 0x010f00a8000201069f060002018700d898 (17 bytes) -2024-09-06T10:59:31.554Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.555Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T10:59:31.558Z DRIVER all queues busy -2024-09-06T10:59:31.558Z SERIAL » 0x012f00a90201239f08000000e5c77047befd9186c3e9b149d76b6a24478fb3bf6 (49 bytes) - edfcf07a45dd684715d250000000006b6 -2024-09-06T10:59:31.559Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 6 - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x0000e5c77047befd9186c3e9b149d76b6a24478fb3bf6edfcf07a - 45dd684715d -2024-09-06T10:59:31.569Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.571Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.571Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.572Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.590Z SERIAL « 0x011d00a90600000100d87f7f7f7f00000300000000030100007f7f7f7f7fea (31 bytes) -2024-09-06T10:59:31.591Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.591Z DRIVER « [REQ] [SendDataBridge] - callback id: 6 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.592Z DRIVER all queues idle -2024-09-06T10:59:31.620Z SERIAL « 0x012c00a8000201239f08017c2906e00e061e3f6f7d227f5b1db140bafac28e9d1 (46 bytes) - bcf98beec29253f53703b00d8d3 -2024-09-06T10:59:31.621Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.622Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0x7c2906e00e061e3f6f7d227f5b1db140bafac28e9d1bcf98beec2 - 9253f53703b -2024-09-06T10:59:31.624Z DRIVER all queues busy -2024-09-06T10:59:31.625Z SERIAL » 0x010f00a90201039f0125250000000007c0 (17 bytes) -2024-09-06T10:59:31.626Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCNonceGet] - sequence number: 37 -2024-09-06T10:59:31.631Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.634Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.634Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.634Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.652Z SERIAL « 0x011d00a90700000100d87f7f7f7f00000300000000030100007f7f7f7f7feb (31 bytes) -2024-09-06T10:59:31.652Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.653Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:31.674Z SERIAL « 0x011d00a8000201149f024d01716f34f4e50e84f9ebcaefe9ccc5957c00d8db (31 bytes) -2024-09-06T10:59:31.675Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.675Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 77 - SOS: true - MOS: false - receiver entropy: 0x716f34f4e50e84f9ebcaefe9ccc5957c -2024-09-06T10:59:31.677Z SERIAL » 0x013000a90201249f032601124195e514d76c422a4164b98ff1cdfc4fa56dc29c8 (50 bytes) - 78e6af217c099e380ecf72500000000089e -2024-09-06T10:59:31.678Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCMessageEncapsulation] - │ sequence number: 38 - │ extensions: - │ · type: SPAN - │ sender EI: 0x95e514d76c422a4164b98ff1cdfc4fa5 - │ key: 0x5f009c5fa24b14ce22bab343222d0618 - │ IV: 0xacff254b307079bf81d11f0435 - │ ciphertext: 0x6dc29c878e6a - │ auth data: 0x0201cdaf1be000242601124195e514d76c422a4164b98ff1cdfc4fa - 5 - │ auth tag: 0xf217c099e380ecf7 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T10:59:31.687Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:31.690Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:31.690Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.691Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:31.712Z SERIAL « 0x011d00a90800000200d87f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T10:59:31.712Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:31.712Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:41.778Z CNTRLR [Node 001] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T10:59:41.782Z SERIAL » 0x011e00a90201129f032700801ff10de6f6395905fa5a12d3952500000000092c (32 bytes) -2024-09-06T10:59:41.784Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCMessageEncapsulation] - │ sequence number: 39 - │ key: 0x5f009c5fa24b14ce22bab343222d0618 - │ IV: 0xb64e805b634dad584ba988800c - │ ciphertext: 0x801ff10de6f6 - │ auth data: 0x0201cdaf1be000122700 - │ auth tag: 0x395905fa5a12d395 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T10:59:41.792Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:41.794Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:41.795Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:41.796Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:41.813Z SERIAL « 0x011d00a90900000100d87f7f7f7f00000300000000030100007f7f7f7f7fe5 (31 bytes) -2024-09-06T10:59:41.814Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:41.815Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T10:59:51.852Z CNTRLR [Node 001] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T10:59:51.855Z SERIAL » 0x011e00a90201129f03280062143123038d8f0b1e8dac5787c825000000000a8b (32 bytes) -2024-09-06T10:59:51.857Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 10 - └─[Security2CCMessageEncapsulation] - │ sequence number: 40 - │ key: 0x5f009c5fa24b14ce22bab343222d0618 - │ IV: 0xa1e46f4b39e61c8b80f7bc6ff9 - │ ciphertext: 0x62143123038d - │ auth data: 0x0201cdaf1be000122800 - │ auth tag: 0x8f0b1e8dac5787c8 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T10:59:51.864Z SERIAL « [ACK] (0x06) -2024-09-06T10:59:51.867Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T10:59:51.867Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:51.868Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T10:59:51.884Z SERIAL « 0x011d00a90a00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T10:59:51.884Z SERIAL » [ACK] (0x06) -2024-09-06T10:59:51.884Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:01.915Z CNTRLR [Node 001] Timed out while waiting for a response from the node (ZW0201) -2024-09-06T11:00:01.917Z SERIAL » 0x011e00a90201129f0329007b1f11dcdb069cd1958ecb16ed5325000000000b83 (32 bytes) -2024-09-06T11:00:01.917Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 41 - │ key: 0x5f009c5fa24b14ce22bab343222d0618 - │ IV: 0xfd631a8ed8d18dd61fb7abfa6f - │ ciphertext: 0x7b1f11dcdb06 - │ auth data: 0x0201cdaf1be000122900 - │ auth tag: 0x9cd1958ecb16ed53 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:00:01.925Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:01.927Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:01.927Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:01.928Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:00:01.946Z SERIAL « 0x011d00a90b00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:00:01.947Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:01.947Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:13.683Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:00:13.683Z DRIVER version 13.2.0 -2024-09-06T11:00:13.684Z DRIVER -2024-09-06T11:00:13.684Z DRIVER starting driver... -2024-09-06T11:00:13.684Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T11:00:13.692Z DRIVER serial port opened -2024-09-06T11:00:13.692Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:00:14.698Z DRIVER loading configuration... -2024-09-06T11:00:14.704Z CONFIG version 13.2.0 -2024-09-06T11:00:15.040Z DRIVER beginning interview... -2024-09-06T11:00:15.040Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:00:15.040Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:00:15.040Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:00:15.040Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:00:15.040Z CNTRLR querying Serial API capabilities... -2024-09-06T11:00:15.042Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:00:15.043Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:00:15.056Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.057Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:00:15.057Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.058Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:00:15.060Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:00:15.060Z CNTRLR querying additional controller information... -2024-09-06T11:00:15.061Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:00:15.062Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:00:15.069Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.070Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:00:15.070Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.071Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:00:15.071Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:00:15.072Z CNTRLR querying version info... -2024-09-06T11:00:15.072Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:00:15.073Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:00:15.079Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.080Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:00:15.080Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.081Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:00:15.081Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:00:15.081Z CNTRLR querying protocol version info... -2024-09-06T11:00:15.082Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:00:15.082Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:00:15.089Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.090Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:00:15.090Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.090Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:00:15.091Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:00:15.091Z CNTRLR querying controller capabilities... -2024-09-06T11:00:15.092Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:00:15.092Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:00:15.099Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.099Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:00:15.099Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.100Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:00:15.101Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:00:15.101Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:00:15.102Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:00:15.102Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:00:15.108Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.108Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:00:15.109Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.109Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:00:15.110Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:00:15.110Z CNTRLR querying max. payload size... -2024-09-06T11:00:15.111Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:00:15.111Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:00:15.118Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.118Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:00:15.118Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.119Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:00:15.120Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:00:15.120Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:00:15.120Z CNTRLR Querying configured RF region... -2024-09-06T11:00:15.121Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:00:15.121Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:00:15.127Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.127Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:00:15.127Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.128Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:00:15.128Z CNTRLR The controller is using RF region Europe -2024-09-06T11:00:15.128Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:00:15.129Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:00:15.130Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:00:15.135Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.135Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:00:15.136Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.136Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:00:15.137Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:00:15.137Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:00:15.138Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:00:15.138Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:00:15.144Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.144Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:00:15.144Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.145Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:00:15.145Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:00:15.146Z CNTRLR Performing soft reset... -2024-09-06T11:00:15.146Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:00:15.147Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:00:15.151Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.151Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:00:15.152Z DRIVER all queues idle -2024-09-06T11:00:15.260Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:00:15.262Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.264Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:00:15.265Z CNTRLR reconnected and restarted -2024-09-06T11:00:15.266Z CNTRLR Starting hardware watchdog... -2024-09-06T11:00:15.267Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:00:15.268Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:00:15.269Z DRIVER all queues busy -2024-09-06T11:00:15.270Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:00:15.271Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:00:15.277Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:00:15.278Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:00:15.279Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.283Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.283Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:15.284Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.284Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:15.285Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:00:15.286Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:00:15.287Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:00:15.292Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.292Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:15.293Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.293Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:15.294Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:00:15.294Z CNTRLR querying controller IDs... -2024-09-06T11:00:15.295Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:00:15.296Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:00:15.301Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.301Z SERIAL « 0x01080120cdaf1be0024d (10 bytes) -2024-09-06T11:00:15.302Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.302Z DRIVER « [RES] [GetControllerId] - home ID: 0xcdaf1be0 - own node ID: 2 -2024-09-06T11:00:15.303Z CNTRLR received controller IDs: - home ID: 0xcdaf1be0 - own node ID: 2 -2024-09-06T11:00:15.303Z CNTRLR Enabling TX status report... -2024-09-06T11:00:15.304Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:00:15.304Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:00:15.310Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.310Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:00:15.311Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.311Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:00:15.312Z CNTRLR Enabling TX status report successful... -2024-09-06T11:00:15.312Z CNTRLR finding SUC... -2024-09-06T11:00:15.313Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:00:15.313Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:00:15.318Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.319Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:00:15.319Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.319Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:00:15.320Z CNTRLR SUC has node ID 1 -2024-09-06T11:00:15.321Z DRIVER all queues idle -2024-09-06T11:00:15.330Z DRIVER Cache file for homeId 0xcdaf1be0 found, attempting to restore the network from - cache... -2024-09-06T11:00:15.338Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:00:15.339Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:00:15.340Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:00:15.340Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:00:15.340Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:00:15.341Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T11:00:15.341Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:00:15.341Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T11:00:15.342Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:00:15.342Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T11:00:15.342Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:00:15.342Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T11:00:15.342Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:00:15.342Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T11:00:15.342Z CNTRLR Interview completed -2024-09-06T11:00:15.343Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T11:00:15.343Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T11:00:15.343Z DRIVER driver ready -2024-09-06T11:00:15.344Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T11:00:15.344Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T11:00:15.344Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T11:00:15.345Z DRIVER all queues busy -2024-09-06T11:00:15.346Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T11:00:15.346Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T11:00:15.352Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.352Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:00:15.353Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.353Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:00:15.354Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:00:15.354Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T11:00:15.355Z DRIVER all queues idle -2024-09-06T11:00:15.357Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:00:15.358Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T11:00:15.358Z CNTRLR [Node 002] Interview completed -2024-09-06T11:00:15.358Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T11:00:15.359Z CNTRLR [Node 002] The node is alive. -2024-09-06T11:00:15.359Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:00:15.359Z DRIVER all queues busy -2024-09-06T11:00:15.360Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:00:15.360Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:00:15.366Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.366Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:00:15.366Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.367Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:00:15.367Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:00:15.367Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:00:15.368Z CNTRLR Determining node status: 1 -2024-09-06T11:00:15.368Z CNTRLR » [Node 001] pinging the node... -2024-09-06T11:00:15.371Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T11:00:15.372Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T11:00:15.381Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:15.381Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:15.382Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.382Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:00:15.401Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T11:00:15.402Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:15.403Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:15.405Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:00:15.406Z CNTRLR « [Node 001] ping successful -2024-09-06T11:00:15.406Z DRIVER all queues idle -2024-09-06T11:00:20.343Z CNTRLR Updating the controller NIF... -2024-09-06T11:00:20.344Z DRIVER all queues busy -2024-09-06T11:00:20.346Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:00:20.347Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:00:20.353Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.356Z CNTRLR performing hard reset... -2024-09-06T11:00:20.358Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T11:00:20.359Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T11:00:20.363Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.399Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T11:00:20.400Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.401Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T11:00:20.402Z CNTRLR hard reset succeeded -2024-09-06T11:00:20.403Z CNTRLR querying Serial API capabilities... -2024-09-06T11:00:20.404Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:00:20.405Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:00:20.414Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.415Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:00:20.416Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.417Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:00:20.419Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:00:20.419Z CNTRLR querying additional controller information... -2024-09-06T11:00:20.421Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:00:20.421Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:00:20.431Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.432Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:00:20.433Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.434Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:00:20.435Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:00:20.436Z CNTRLR querying version info... -2024-09-06T11:00:20.437Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:00:20.438Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:00:20.443Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.444Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:00:20.444Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.445Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:00:20.446Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:00:20.446Z CNTRLR querying protocol version info... -2024-09-06T11:00:20.447Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:00:20.447Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:00:20.453Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.454Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:00:20.454Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.455Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:00:20.456Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:00:20.456Z CNTRLR querying controller capabilities... -2024-09-06T11:00:20.457Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:00:20.457Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:00:20.463Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.463Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:00:20.464Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.464Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:00:20.465Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:00:20.465Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:00:20.466Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:00:20.466Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:00:20.473Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.474Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:00:20.474Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.475Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:00:20.475Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:00:20.476Z CNTRLR querying max. payload size... -2024-09-06T11:00:20.476Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:00:20.477Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:00:20.482Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.483Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:00:20.483Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.484Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:00:20.484Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:00:20.485Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:00:20.485Z CNTRLR Querying configured RF region... -2024-09-06T11:00:20.485Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:00:20.486Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:00:20.491Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.491Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:00:20.491Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.492Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:00:20.492Z CNTRLR The controller is using RF region Europe -2024-09-06T11:00:20.492Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:00:20.493Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:00:20.493Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:00:20.499Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.499Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:00:20.500Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.500Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:00:20.501Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:00:20.501Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:00:20.502Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:00:20.502Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:00:20.508Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.509Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:00:20.509Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.509Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:00:20.510Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:00:20.511Z CNTRLR Performing soft reset... -2024-09-06T11:00:20.511Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:00:20.512Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:00:20.516Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.517Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:00:20.517Z DRIVER all queues idle -2024-09-06T11:00:20.629Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:00:20.630Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.632Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:00:20.632Z CNTRLR reconnected and restarted -2024-09-06T11:00:20.632Z CNTRLR Starting hardware watchdog... -2024-09-06T11:00:20.633Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:00:20.633Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:00:20.634Z DRIVER all queues busy -2024-09-06T11:00:20.635Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:00:20.635Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:00:20.637Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:00:20.637Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:00:20.639Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.647Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.647Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:20.648Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.650Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:20.651Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:00:20.652Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:00:20.652Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:00:20.660Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.660Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:00:20.661Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.664Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:00:20.665Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:00:20.665Z CNTRLR querying controller IDs... -2024-09-06T11:00:20.666Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:00:20.668Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:00:20.675Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.676Z SERIAL « 0x01080120cf5c814c0189 (10 bytes) -2024-09-06T11:00:20.677Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.679Z DRIVER « [RES] [GetControllerId] - home ID: 0xcf5c814c - own node ID: 1 -2024-09-06T11:00:20.680Z CNTRLR received controller IDs: - home ID: 0xcf5c814c - own node ID: 1 -2024-09-06T11:00:20.681Z CNTRLR Enabling TX status report... -2024-09-06T11:00:20.681Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:00:20.682Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:00:20.689Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.690Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:00:20.690Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.691Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:00:20.692Z CNTRLR Enabling TX status report successful... -2024-09-06T11:00:20.692Z CNTRLR finding SUC... -2024-09-06T11:00:20.693Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:00:20.693Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:00:20.698Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.699Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:00:20.699Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.700Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:00:20.700Z CNTRLR No SUC present in the network -2024-09-06T11:00:20.700Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:00:20.701Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T11:00:20.702Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T11:00:20.713Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.715Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:00:20.715Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.720Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:00:20.722Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:00:20.722Z DRIVER all queues idle -2024-09-06T11:00:20.731Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:00:20.732Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:00:20.733Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:00:20.733Z CNTRLR Interview completed -2024-09-06T11:00:20.733Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:00:20.733Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:00:20.733Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:00:20.734Z DRIVER driver ready -2024-09-06T11:00:20.734Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T11:00:20.734Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T11:00:20.734Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:00:20.735Z DRIVER all queues busy -2024-09-06T11:00:20.735Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:00:20.735Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:00:20.741Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:20.742Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:00:20.742Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:20.743Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:00:20.744Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:00:20.744Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:00:20.745Z DRIVER all queues idle -2024-09-06T11:00:20.748Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:00:20.748Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T11:00:20.749Z CNTRLR [Node 001] Interview completed -2024-09-06T11:00:20.749Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T11:00:20.749Z CNTRLR All nodes are ready to be used -2024-09-06T11:00:20.750Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:00:25.406Z DRIVER all queues busy -2024-09-06T11:00:25.407Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T11:00:25.408Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T11:00:25.415Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:25.416Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T11:00:25.416Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:25.418Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T11:00:25.419Z DRIVER all queues idle -2024-09-06T11:00:25.592Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T11:00:25.592Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:25.593Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T11:00:25.593Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:00:25.593Z DRIVER 1 handler registered! -2024-09-06T11:00:25.593Z DRIVER invoking handler #0 -2024-09-06T11:00:25.593Z DRIVER the message was handled -2024-09-06T11:00:25.747Z DRIVER all queues busy -2024-09-06T11:00:25.749Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:00:25.750Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:00:25.756Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:25.757Z SERIAL « 0x0107013ba3c1c17f1e (9 bytes) -2024-09-06T11:00:25.758Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:25.759Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -93 dBm - channel 1: -63 dBm - channel 2: -63 dBm - channel 3: N/A -2024-09-06T11:00:25.761Z DRIVER all queues idle -2024-09-06T11:00:26.116Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T11:00:26.117Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.118Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T11:00:26.132Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T11:00:26.133Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.134Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T11:00:26.134Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:00:26.134Z DRIVER 1 handler registered! -2024-09-06T11:00:26.134Z DRIVER invoking handler #0 -2024-09-06T11:00:26.134Z DRIVER the message was handled -2024-09-06T11:00:26.135Z DRIVER waiting for security bootstrapping... -2024-09-06T11:00:26.135Z CNTRLR querying controller IDs... -2024-09-06T11:00:26.135Z DRIVER all queues busy -2024-09-06T11:00:26.136Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:00:26.136Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:00:26.141Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.141Z SERIAL « 0x01080120d188a45e0277 (10 bytes) -2024-09-06T11:00:26.142Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.142Z DRIVER « [RES] [GetControllerId] - home ID: 0xd188a45e - own node ID: 2 -2024-09-06T11:00:26.142Z CNTRLR received controller IDs: - home ID: 0xd188a45e - own node ID: 2 -2024-09-06T11:00:26.143Z DRIVER Joined network with home ID 0xd188a45e, switching to new network cache... -2024-09-06T11:00:26.143Z CNTRLR querying controller capabilities... -2024-09-06T11:00:26.144Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:00:26.144Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:00:26.149Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.150Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:00:26.150Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.150Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:00:26.151Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:00:26.151Z CNTRLR querying additional controller information... -2024-09-06T11:00:26.152Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:00:26.152Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:00:26.160Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:26.161Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:00:26.161Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.161Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:00:26.162Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:00:26.162Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:00:26.163Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:00:26.163Z CNTRLR Interview completed -2024-09-06T11:00:26.164Z DRIVER all queues idle -2024-09-06T11:00:26.345Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T11:00:26.346Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:26.347Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T11:00:30.338Z CNTRLR [Node 001] Received S2 bootstrap initiation, requesting keys: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy - client-side auth: false -2024-09-06T11:00:30.343Z DRIVER all queues busy -2024-09-06T11:00:30.346Z SERIAL » 0x011200a90201069f05000201872500000000057f (20 bytes) -2024-09-06T11:00:30.348Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 5 - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:00:30.386Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:30.387Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:30.387Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.389Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:00:30.396Z SERIAL « 0x011d00a90500000100d77f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T11:00:30.397Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.397Z DRIVER « [REQ] [SendDataBridge] - callback id: 5 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -41 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:30.398Z DRIVER all queues idle -2024-09-06T11:00:30.418Z SERIAL « 0x010f00a8000201069f060002018700d797 (17 bytes) -2024-09-06T11:00:30.419Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:30.420Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -41 dBm - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:00:34.781Z DRIVER all queues busy -2024-09-06T11:00:34.783Z SERIAL » 0x012f00a90201239f0800000014c50b50c3c8563c3ef70eb85ae61d38f0749c66b (49 bytes) - 7e65f0dc109c0d2194c25000000000612 -2024-09-06T11:00:34.784Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 6 - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x000014c50b50c3c8563c3ef70eb85ae61d38f0749c66b7e65f0dc - 109c0d2194c -2024-09-06T11:00:34.803Z SERIAL « [ACK] (0x06) -2024-09-06T11:00:34.803Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:00:34.804Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.806Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:00:34.822Z SERIAL « 0x011d00a90600000100d87f7f7f7f00000300000000030100007f7f7f7f7fea (31 bytes) -2024-09-06T11:00:34.822Z SERIAL » [ACK] (0x06) -2024-09-06T11:00:34.823Z DRIVER « [REQ] [SendDataBridge] - callback id: 6 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:00:34.824Z DRIVER all queues idle -2024-09-06T11:00:34.852Z SERIAL « 0x012c00a8000201239f0801d3955c17b8339bf458e7dd0c7dece81bd981ccca919 (46 bytes) - 877ce3cc9ddd90c2d5e1c00d88c -2024-09-06T11:00:34.853Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:28.976Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:03:28.976Z DRIVER version 13.2.0 -2024-09-06T11:03:28.976Z DRIVER -2024-09-06T11:03:28.976Z DRIVER starting driver... -2024-09-06T11:03:28.977Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T11:03:28.985Z DRIVER serial port opened -2024-09-06T11:03:28.985Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:03:29.988Z DRIVER loading configuration... -2024-09-06T11:03:29.990Z CONFIG version 13.2.0 -2024-09-06T11:03:30.295Z DRIVER beginning interview... -2024-09-06T11:03:30.296Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:03:30.297Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:03:30.297Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:03:30.297Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:03:30.297Z CNTRLR querying Serial API capabilities... -2024-09-06T11:03:30.305Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:03:30.306Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:03:30.314Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.314Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:03:30.315Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.316Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:03:30.317Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:03:30.317Z CNTRLR querying additional controller information... -2024-09-06T11:03:30.318Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:03:30.319Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:03:30.327Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.328Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:03:30.328Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.329Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:03:30.329Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:03:30.330Z CNTRLR querying version info... -2024-09-06T11:03:30.330Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:03:30.331Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:03:30.338Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.339Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:03:30.339Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.340Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:03:30.341Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:03:30.341Z CNTRLR querying protocol version info... -2024-09-06T11:03:30.342Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:03:30.343Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:03:30.349Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.350Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:03:30.350Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.351Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:03:30.352Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:03:30.352Z CNTRLR querying controller capabilities... -2024-09-06T11:03:30.354Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:03:30.354Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:03:30.360Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.361Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:03:30.361Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.362Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:03:30.363Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:03:30.363Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:03:30.364Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:03:30.364Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:03:30.370Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.371Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:03:30.372Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.372Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:03:30.373Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:03:30.373Z CNTRLR querying max. payload size... -2024-09-06T11:03:30.374Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:03:30.374Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:03:30.379Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.379Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:03:30.380Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.380Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:03:30.381Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:03:30.381Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:03:30.382Z CNTRLR Querying configured RF region... -2024-09-06T11:03:30.382Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:03:30.383Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:03:30.388Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.388Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:03:30.389Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.389Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:03:30.390Z CNTRLR The controller is using RF region Europe -2024-09-06T11:03:30.390Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:03:30.391Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:03:30.391Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:03:30.396Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.396Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:03:30.397Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.397Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:03:30.398Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:03:30.398Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:03:30.399Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:03:30.399Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:03:30.404Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.405Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:03:30.405Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.405Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:03:30.406Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:03:30.406Z CNTRLR Performing soft reset... -2024-09-06T11:03:30.407Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:03:30.407Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:03:30.411Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.412Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:03:30.413Z DRIVER all queues idle -2024-09-06T11:03:30.532Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:03:30.533Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.537Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:03:30.538Z CNTRLR reconnected and restarted -2024-09-06T11:03:30.538Z CNTRLR Starting hardware watchdog... -2024-09-06T11:03:30.539Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:03:30.544Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:03:30.545Z DRIVER all queues busy -2024-09-06T11:03:30.545Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:03:30.546Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:03:30.556Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:03:30.557Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:03:30.564Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.565Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.566Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:30.566Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.567Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:30.568Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:03:30.568Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:03:30.574Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:03:30.582Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.583Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:30.583Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.584Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:30.585Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:03:30.585Z CNTRLR querying controller IDs... -2024-09-06T11:03:30.588Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:03:30.588Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:03:30.593Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.594Z SERIAL « 0x01080120d188a45e0277 (10 bytes) -2024-09-06T11:03:30.595Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.595Z DRIVER « [RES] [GetControllerId] - home ID: 0xd188a45e - own node ID: 2 -2024-09-06T11:03:30.596Z CNTRLR received controller IDs: - home ID: 0xd188a45e - own node ID: 2 -2024-09-06T11:03:30.596Z CNTRLR Enabling TX status report... -2024-09-06T11:03:30.597Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:03:30.597Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:03:30.602Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.603Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:03:30.603Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.605Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:03:30.606Z CNTRLR Enabling TX status report successful... -2024-09-06T11:03:30.606Z CNTRLR finding SUC... -2024-09-06T11:03:30.607Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:03:30.608Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:03:30.614Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.615Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:03:30.615Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.616Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:03:30.617Z CNTRLR SUC has node ID 1 -2024-09-06T11:03:30.618Z DRIVER all queues idle -2024-09-06T11:03:30.630Z DRIVER Cache file for homeId 0xd188a45e found, attempting to restore the network from - cache... -2024-09-06T11:03:30.647Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:03:30.648Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:03:30.649Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:03:30.650Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:03:30.650Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:03:30.650Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T11:03:30.651Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:03:30.651Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T11:03:30.651Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:03:30.651Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T11:03:30.652Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:03:30.652Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T11:03:30.652Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:03:30.652Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T11:03:30.652Z CNTRLR Interview completed -2024-09-06T11:03:30.652Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T11:03:30.653Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T11:03:30.653Z DRIVER driver ready -2024-09-06T11:03:30.654Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T11:03:30.654Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T11:03:30.654Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T11:03:30.655Z DRIVER all queues busy -2024-09-06T11:03:30.656Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T11:03:30.656Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T11:03:30.661Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.662Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:03:30.662Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.663Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:03:30.664Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:03:30.664Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T11:03:30.665Z DRIVER all queues idle -2024-09-06T11:03:30.672Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:03:30.673Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T11:03:30.673Z CNTRLR [Node 002] Interview completed -2024-09-06T11:03:30.673Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T11:03:30.674Z CNTRLR [Node 002] The node is alive. -2024-09-06T11:03:30.674Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:03:30.674Z DRIVER all queues busy -2024-09-06T11:03:30.675Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:03:30.675Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:03:30.681Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.682Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:03:30.682Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.683Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:03:30.683Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:03:30.684Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:03:30.684Z CNTRLR Determining node status: 1 -2024-09-06T11:03:30.684Z CNTRLR » [Node 001] pinging the node... -2024-09-06T11:03:30.687Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T11:03:30.688Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T11:03:30.693Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:30.701Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:03:30.702Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.703Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:03:30.714Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T11:03:30.715Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:30.716Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:03:30.718Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:03:30.719Z CNTRLR « [Node 001] ping successful -2024-09-06T11:03:30.724Z DRIVER all queues idle -2024-09-06T11:03:35.653Z CNTRLR Updating the controller NIF... -2024-09-06T11:03:35.655Z DRIVER all queues busy -2024-09-06T11:03:35.656Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:03:35.657Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:03:35.663Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.666Z CNTRLR performing hard reset... -2024-09-06T11:03:35.668Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T11:03:35.668Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T11:03:35.672Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.694Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T11:03:35.695Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.696Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T11:03:35.697Z CNTRLR hard reset succeeded -2024-09-06T11:03:35.698Z CNTRLR querying Serial API capabilities... -2024-09-06T11:03:35.699Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:03:35.700Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:03:35.709Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.710Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:03:35.711Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.712Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:03:35.714Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:03:35.714Z CNTRLR querying additional controller information... -2024-09-06T11:03:35.715Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:03:35.716Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:03:35.725Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.726Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:03:35.727Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.728Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:03:35.729Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:03:35.729Z CNTRLR querying version info... -2024-09-06T11:03:35.731Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:03:35.731Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:03:35.738Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.739Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:03:35.739Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.740Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:03:35.741Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:03:35.741Z CNTRLR querying protocol version info... -2024-09-06T11:03:35.742Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:03:35.743Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:03:35.750Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.751Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:03:35.751Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.752Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:03:35.753Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:03:35.753Z CNTRLR querying controller capabilities... -2024-09-06T11:03:35.754Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:03:35.755Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:03:35.760Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.761Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:03:35.761Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.762Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:03:35.762Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:03:35.763Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:03:35.763Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:03:35.764Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:03:35.771Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.771Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:03:35.772Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.772Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:03:35.774Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:03:35.774Z CNTRLR querying max. payload size... -2024-09-06T11:03:35.775Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:03:35.776Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:03:35.781Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.783Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:03:35.783Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.784Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:03:35.786Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:03:35.786Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:03:35.786Z CNTRLR Querying configured RF region... -2024-09-06T11:03:35.788Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:03:35.788Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:03:35.794Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.795Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:03:35.795Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.796Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:03:35.797Z CNTRLR The controller is using RF region Europe -2024-09-06T11:03:35.798Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:03:35.799Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:03:35.799Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:03:35.805Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.806Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:03:35.806Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.807Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:03:35.808Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:03:35.808Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:03:35.809Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:03:35.809Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:03:35.814Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.815Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:03:35.815Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.816Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:03:35.817Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:03:35.817Z CNTRLR Performing soft reset... -2024-09-06T11:03:35.818Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:03:35.818Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:03:35.822Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.823Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:03:35.823Z DRIVER all queues idle -2024-09-06T11:03:35.928Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:03:35.929Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.931Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:03:35.931Z CNTRLR reconnected and restarted -2024-09-06T11:03:35.931Z CNTRLR Starting hardware watchdog... -2024-09-06T11:03:35.932Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:03:35.933Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:03:35.933Z DRIVER all queues busy -2024-09-06T11:03:35.934Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:03:35.935Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:03:35.937Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:03:35.938Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:03:35.940Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.944Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.945Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:35.945Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.946Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:35.947Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:03:35.948Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:03:35.949Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:03:35.955Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.956Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:03:35.956Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.957Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:03:35.958Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:03:35.958Z CNTRLR querying controller IDs... -2024-09-06T11:03:35.959Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:03:35.959Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:03:35.965Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.965Z SERIAL « 0x01080120f234f82c01c5 (10 bytes) -2024-09-06T11:03:35.965Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.966Z DRIVER « [RES] [GetControllerId] - home ID: 0xf234f82c - own node ID: 1 -2024-09-06T11:03:35.966Z CNTRLR received controller IDs: - home ID: 0xf234f82c - own node ID: 1 -2024-09-06T11:03:35.966Z CNTRLR Enabling TX status report... -2024-09-06T11:03:35.967Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:03:35.967Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:03:35.972Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.972Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:03:35.973Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.973Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:03:35.973Z CNTRLR Enabling TX status report successful... -2024-09-06T11:03:35.973Z CNTRLR finding SUC... -2024-09-06T11:03:35.974Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:03:35.974Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:03:35.979Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.979Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:03:35.979Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.980Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:03:35.980Z CNTRLR No SUC present in the network -2024-09-06T11:03:35.980Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:03:35.981Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T11:03:35.981Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T11:03:35.988Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:35.988Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:03:35.989Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:35.989Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:03:35.990Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:03:35.990Z DRIVER all queues idle -2024-09-06T11:03:35.994Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:03:35.994Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:03:35.994Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:03:35.995Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:03:35.995Z CNTRLR Interview completed -2024-09-06T11:03:35.995Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:03:35.996Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:03:35.996Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:03:35.997Z DRIVER driver ready -2024-09-06T11:03:35.997Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T11:03:35.997Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T11:03:35.997Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:03:35.998Z DRIVER all queues busy -2024-09-06T11:03:35.998Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:03:35.998Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:03:36.004Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:36.004Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:03:36.004Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:36.004Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:03:36.005Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:03:36.005Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:03:36.006Z DRIVER all queues idle -2024-09-06T11:03:36.007Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:03:36.007Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T11:03:36.007Z CNTRLR [Node 001] Interview completed -2024-09-06T11:03:36.008Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T11:03:36.008Z CNTRLR All nodes are ready to be used -2024-09-06T11:03:36.008Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:03:40.700Z DRIVER all queues busy -2024-09-06T11:03:40.702Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T11:03:40.703Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T11:03:40.709Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:40.710Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T11:03:40.711Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:40.712Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T11:03:40.714Z DRIVER all queues idle -2024-09-06T11:03:40.869Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T11:03:40.870Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:40.870Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T11:03:40.870Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:03:40.870Z DRIVER 1 handler registered! -2024-09-06T11:03:40.870Z DRIVER invoking handler #0 -2024-09-06T11:03:40.871Z DRIVER the message was handled -2024-09-06T11:03:41.007Z DRIVER all queues busy -2024-09-06T11:03:41.008Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:03:41.008Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:03:41.014Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.015Z SERIAL « 0x0107013befb9b97f52 (9 bytes) -2024-09-06T11:03:41.016Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.017Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -17 dBm - channel 1: -71 dBm - channel 2: -71 dBm - channel 3: N/A -2024-09-06T11:03:41.019Z DRIVER all queues idle -2024-09-06T11:03:41.391Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T11:03:41.391Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.392Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T11:03:41.407Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T11:03:41.408Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.408Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T11:03:41.408Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:03:41.408Z DRIVER 1 handler registered! -2024-09-06T11:03:41.409Z DRIVER invoking handler #0 -2024-09-06T11:03:41.409Z DRIVER the message was handled -2024-09-06T11:03:41.409Z DRIVER waiting for security bootstrapping... -2024-09-06T11:03:41.410Z CNTRLR querying controller IDs... -2024-09-06T11:03:41.410Z DRIVER all queues busy -2024-09-06T11:03:41.411Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:03:41.411Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:03:41.416Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.417Z SERIAL « 0x01080120cab0fedc028c (10 bytes) -2024-09-06T11:03:41.417Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.418Z DRIVER « [RES] [GetControllerId] - home ID: 0xcab0fedc - own node ID: 2 -2024-09-06T11:03:41.418Z CNTRLR received controller IDs: - home ID: 0xcab0fedc - own node ID: 2 -2024-09-06T11:03:41.418Z DRIVER Joined network with home ID 0xcab0fedc, switching to new network cache... -2024-09-06T11:03:41.419Z CNTRLR querying controller capabilities... -2024-09-06T11:03:41.419Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:03:41.419Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:03:41.425Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.426Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:03:41.426Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.426Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:03:41.427Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:03:41.427Z CNTRLR querying additional controller information... -2024-09-06T11:03:41.428Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:03:41.429Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:03:41.437Z SERIAL « [ACK] (0x06) -2024-09-06T11:03:41.438Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:03:41.438Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.439Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:03:41.439Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:03:41.440Z DRIVER all queues idle -2024-09-06T11:03:41.619Z SERIAL « 0x010b00a8000201029f0400d91f (13 bytes) -2024-09-06T11:03:41.620Z SERIAL » [ACK] (0x06) -2024-09-06T11:03:41.621Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCKEXGet] -2024-09-06T11:04:11.007Z DRIVER all queues busy -2024-09-06T11:04:11.008Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:04:11.008Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:04:11.014Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:11.014Z SERIAL « 0x0107013b9896967f25 (9 bytes) -2024-09-06T11:04:11.014Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:11.015Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -104 dBm - channel 1: -106 dBm - channel 2: -106 dBm - channel 3: N/A -2024-09-06T11:04:11.016Z DRIVER all queues idle -2024-09-06T11:04:18.610Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:04:18.610Z DRIVER version 13.2.0 -2024-09-06T11:04:18.610Z DRIVER -2024-09-06T11:04:18.610Z DRIVER starting driver... -2024-09-06T11:04:18.611Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T11:04:18.619Z DRIVER serial port opened -2024-09-06T11:04:18.619Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:04:19.626Z DRIVER loading configuration... -2024-09-06T11:04:19.628Z CONFIG version 13.2.0 -2024-09-06T11:04:19.945Z DRIVER beginning interview... -2024-09-06T11:04:19.946Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:04:19.946Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:04:19.946Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:04:19.947Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:04:19.947Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:19.955Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:19.955Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:19.965Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:19.966Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:04:19.967Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:19.967Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:19.970Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:19.970Z CNTRLR querying additional controller information... -2024-09-06T11:04:19.972Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:19.972Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:19.981Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:19.981Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:04:19.982Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:19.982Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:19.983Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:04:19.983Z CNTRLR querying version info... -2024-09-06T11:04:19.984Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:19.984Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:19.992Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:19.992Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:04:19.993Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:19.994Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:04:19.994Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:04:19.995Z CNTRLR querying protocol version info... -2024-09-06T11:04:19.995Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:19.996Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:20.002Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.003Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:04:20.003Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.003Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:04:20.004Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:04:20.004Z CNTRLR querying controller capabilities... -2024-09-06T11:04:20.005Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:20.006Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:20.011Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.011Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:04:20.012Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.012Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:04:20.013Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:04:20.013Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:20.014Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:20.015Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:20.021Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.021Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:20.022Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.022Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:20.023Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:20.023Z CNTRLR querying max. payload size... -2024-09-06T11:04:20.024Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:20.024Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:20.029Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.029Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:20.030Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.030Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:20.031Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:20.031Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:20.032Z CNTRLR Querying configured RF region... -2024-09-06T11:04:20.032Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:20.033Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:20.038Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.039Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:20.039Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.040Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:20.040Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:20.040Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:20.041Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:20.041Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:20.046Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.047Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:20.047Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.047Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:20.048Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:20.048Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:20.049Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:20.049Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:20.054Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.054Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:20.055Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.055Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:20.056Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:20.056Z CNTRLR Performing soft reset... -2024-09-06T11:04:20.057Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:20.057Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:20.062Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.062Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:20.063Z DRIVER all queues idle -2024-09-06T11:04:20.170Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:04:20.172Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.174Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:20.176Z CNTRLR reconnected and restarted -2024-09-06T11:04:20.176Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:20.177Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:20.178Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:20.180Z DRIVER all queues busy -2024-09-06T11:04:20.181Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:20.181Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:20.183Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:20.184Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:20.185Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.189Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.190Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:20.190Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.191Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:20.192Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:20.193Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:20.193Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:20.198Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.199Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:20.199Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.199Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:20.200Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:20.200Z CNTRLR querying controller IDs... -2024-09-06T11:04:20.201Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:20.201Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:20.206Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.207Z SERIAL « 0x01080120cab0fedc028c (10 bytes) -2024-09-06T11:04:20.207Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.208Z DRIVER « [RES] [GetControllerId] - home ID: 0xcab0fedc - own node ID: 2 -2024-09-06T11:04:20.208Z CNTRLR received controller IDs: - home ID: 0xcab0fedc - own node ID: 2 -2024-09-06T11:04:20.208Z CNTRLR Enabling TX status report... -2024-09-06T11:04:20.209Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:04:20.210Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:04:20.214Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.215Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:04:20.215Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.216Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:04:20.216Z CNTRLR Enabling TX status report successful... -2024-09-06T11:04:20.216Z CNTRLR finding SUC... -2024-09-06T11:04:20.217Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:04:20.217Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:04:20.222Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.222Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:04:20.222Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.223Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:04:20.223Z CNTRLR SUC has node ID 1 -2024-09-06T11:04:20.224Z DRIVER all queues idle -2024-09-06T11:04:20.234Z DRIVER Cache file for homeId 0xcab0fedc found, attempting to restore the network from - cache... -2024-09-06T11:04:20.235Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:04:20.236Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:04:20.237Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:04:20.237Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:04:20.238Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:04:20.238Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:04:20.238Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:04:20.238Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:04:20.239Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:04:20.239Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:04:20.239Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:04:20.239Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:04:20.239Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:04:20.239Z CNTRLR Interview completed -2024-09-06T11:04:20.239Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T11:04:20.240Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T11:04:20.240Z DRIVER driver ready -2024-09-06T11:04:20.241Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T11:04:20.241Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T11:04:20.241Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T11:04:20.242Z DRIVER all queues busy -2024-09-06T11:04:20.243Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T11:04:20.243Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T11:04:20.249Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.249Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:04:20.249Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.250Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:04:20.250Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:04:20.251Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T11:04:20.252Z DRIVER all queues idle -2024-09-06T11:04:20.258Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:04:20.258Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T11:04:20.259Z CNTRLR [Node 002] Interview completed -2024-09-06T11:04:20.259Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T11:04:20.260Z CNTRLR [Node 002] The node is alive. -2024-09-06T11:04:20.260Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:04:20.260Z DRIVER all queues busy -2024-09-06T11:04:20.261Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:04:20.261Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:04:20.267Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.267Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:04:20.267Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.268Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:04:20.268Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:04:20.268Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:04:20.269Z CNTRLR Determining node status: 1 -2024-09-06T11:04:20.269Z CNTRLR » [Node 001] pinging the node... -2024-09-06T11:04:20.271Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T11:04:20.271Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T11:04:20.276Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:20.279Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:04:20.279Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.280Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:04:20.297Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T11:04:20.298Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:20.299Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:04:20.300Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:04:20.300Z CNTRLR « [Node 001] ping successful -2024-09-06T11:04:20.300Z DRIVER all queues idle -2024-09-06T11:04:25.240Z CNTRLR Updating the controller NIF... -2024-09-06T11:04:25.241Z DRIVER all queues busy -2024-09-06T11:04:25.243Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:04:25.244Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:04:25.252Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.255Z CNTRLR performing hard reset... -2024-09-06T11:04:25.256Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T11:04:25.257Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T11:04:25.260Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.302Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T11:04:25.303Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.304Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T11:04:25.306Z CNTRLR hard reset succeeded -2024-09-06T11:04:25.306Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:25.308Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:25.309Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:25.318Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.319Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:04:25.319Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.320Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:25.322Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:25.322Z CNTRLR querying additional controller information... -2024-09-06T11:04:25.324Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:25.325Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:25.333Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.335Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:04:25.335Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.337Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:25.338Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:04:25.338Z CNTRLR querying version info... -2024-09-06T11:04:25.339Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:25.340Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:25.346Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.347Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:04:25.347Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.348Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:04:25.349Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:04:25.349Z CNTRLR querying protocol version info... -2024-09-06T11:04:25.350Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:25.350Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:25.357Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.357Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:04:25.358Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.358Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:04:25.359Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:04:25.359Z CNTRLR querying controller capabilities... -2024-09-06T11:04:25.360Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:25.361Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:25.366Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.366Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:04:25.366Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.367Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:04:25.368Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:04:25.368Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:25.368Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:25.369Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:25.375Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.376Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:25.376Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.377Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:25.377Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:25.377Z CNTRLR querying max. payload size... -2024-09-06T11:04:25.378Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:25.379Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:25.384Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.384Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:25.384Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.385Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:25.386Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:25.386Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:25.386Z CNTRLR Querying configured RF region... -2024-09-06T11:04:25.387Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:25.387Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:25.393Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.394Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:25.394Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.395Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:25.396Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:25.396Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:25.397Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:25.397Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:25.402Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.402Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:25.403Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.403Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:25.404Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:25.404Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:25.405Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:25.405Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:25.410Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.411Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:25.411Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.411Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:25.412Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:25.412Z CNTRLR Performing soft reset... -2024-09-06T11:04:25.413Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:25.413Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:25.417Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.418Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:25.418Z DRIVER all queues idle -2024-09-06T11:04:25.530Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:04:25.531Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.533Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:25.533Z CNTRLR reconnected and restarted -2024-09-06T11:04:25.534Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:25.534Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:25.535Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:25.535Z DRIVER all queues busy -2024-09-06T11:04:25.536Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:25.537Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:25.539Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:25.540Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:25.542Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.545Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.546Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:25.546Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.547Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:25.549Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:25.550Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:25.551Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:25.556Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.556Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:25.557Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.557Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:25.558Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:25.558Z CNTRLR querying controller IDs... -2024-09-06T11:04:25.558Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:25.559Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:25.564Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.564Z SERIAL « 0x01080120f4d01c2701c8 (10 bytes) -2024-09-06T11:04:25.564Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.565Z DRIVER « [RES] [GetControllerId] - home ID: 0xf4d01c27 - own node ID: 1 -2024-09-06T11:04:25.565Z CNTRLR received controller IDs: - home ID: 0xf4d01c27 - own node ID: 1 -2024-09-06T11:04:25.566Z CNTRLR Enabling TX status report... -2024-09-06T11:04:25.566Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:04:25.567Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:04:25.572Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.573Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:04:25.573Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.573Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:04:25.574Z CNTRLR Enabling TX status report successful... -2024-09-06T11:04:25.574Z CNTRLR finding SUC... -2024-09-06T11:04:25.575Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:04:25.575Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:04:25.580Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.581Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:04:25.581Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.582Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:04:25.583Z CNTRLR No SUC present in the network -2024-09-06T11:04:25.583Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:04:25.583Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T11:04:25.584Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T11:04:25.590Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.591Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:04:25.591Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.592Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:04:25.592Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:04:25.593Z DRIVER all queues idle -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:04:25.597Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:04:25.598Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:04:25.598Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:04:25.598Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:04:25.598Z CNTRLR Interview completed -2024-09-06T11:04:25.598Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:04:25.598Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:04:25.599Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:04:25.599Z DRIVER driver ready -2024-09-06T11:04:25.599Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T11:04:25.599Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T11:04:25.599Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:04:25.599Z DRIVER all queues busy -2024-09-06T11:04:25.600Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:04:25.600Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:04:25.606Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:25.606Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:04:25.606Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:25.607Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:04:25.607Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:04:25.607Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:04:25.610Z DRIVER all queues idle -2024-09-06T11:04:25.612Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:04:25.612Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T11:04:25.612Z CNTRLR [Node 001] Interview completed -2024-09-06T11:04:25.613Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T11:04:25.613Z CNTRLR All nodes are ready to be used -2024-09-06T11:04:25.613Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:04:30.308Z DRIVER all queues busy -2024-09-06T11:04:30.310Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T11:04:30.311Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T11:04:30.316Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:30.318Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T11:04:30.318Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:30.319Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T11:04:30.321Z DRIVER all queues idle -2024-09-06T11:04:30.530Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T11:04:30.531Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:30.532Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T11:04:30.532Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:04:30.532Z DRIVER 1 handler registered! -2024-09-06T11:04:30.532Z DRIVER invoking handler #0 -2024-09-06T11:04:30.532Z DRIVER the message was handled -2024-09-06T11:04:30.617Z DRIVER all queues busy -2024-09-06T11:04:30.619Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:04:30.620Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:04:30.625Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:30.625Z SERIAL « 0x0107013b9a96967f27 (9 bytes) -2024-09-06T11:04:30.626Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:30.627Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -102 dBm - channel 1: -106 dBm - channel 2: -106 dBm - channel 3: N/A -2024-09-06T11:04:30.628Z DRIVER all queues idle -2024-09-06T11:04:31.054Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T11:04:31.056Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.057Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T11:04:31.071Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T11:04:31.072Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.073Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T11:04:31.074Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:04:31.074Z DRIVER 1 handler registered! -2024-09-06T11:04:31.074Z DRIVER invoking handler #0 -2024-09-06T11:04:31.075Z DRIVER the message was handled -2024-09-06T11:04:31.075Z DRIVER waiting for security bootstrapping... -2024-09-06T11:04:31.076Z CNTRLR querying controller IDs... -2024-09-06T11:04:31.077Z DRIVER all queues busy -2024-09-06T11:04:31.079Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:31.079Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:31.091Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.092Z SERIAL « 0x01080120e18c5695027a (10 bytes) -2024-09-06T11:04:31.093Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.094Z DRIVER « [RES] [GetControllerId] - home ID: 0xe18c5695 - own node ID: 2 -2024-09-06T11:04:31.096Z CNTRLR received controller IDs: - home ID: 0xe18c5695 - own node ID: 2 -2024-09-06T11:04:31.096Z DRIVER Joined network with home ID 0xe18c5695, switching to new network cache... -2024-09-06T11:04:31.097Z CNTRLR querying controller capabilities... -2024-09-06T11:04:31.099Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:31.100Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:31.112Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.112Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:04:31.113Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.113Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:04:31.114Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:04:31.115Z CNTRLR querying additional controller information... -2024-09-06T11:04:31.116Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:31.117Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:31.125Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:31.125Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:04:31.125Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.126Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:31.126Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:04:31.128Z DRIVER all queues idle -2024-09-06T11:04:31.293Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T11:04:31.294Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:31.295Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T11:04:56.870Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:04:56.870Z DRIVER version 13.2.0 -2024-09-06T11:04:56.871Z DRIVER -2024-09-06T11:04:56.871Z DRIVER starting driver... -2024-09-06T11:04:56.871Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T11:04:56.879Z DRIVER serial port opened -2024-09-06T11:04:56.879Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:04:57.886Z DRIVER loading configuration... -2024-09-06T11:04:57.891Z CONFIG version 13.2.0 -2024-09-06T11:04:58.227Z DRIVER beginning interview... -2024-09-06T11:04:58.227Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:04:58.227Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:04:58.227Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:04:58.227Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:04:58.228Z CNTRLR querying Serial API capabilities... -2024-09-06T11:04:58.229Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:04:58.229Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:04:58.241Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.241Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:04:58.241Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.243Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:04:58.244Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:04:58.244Z CNTRLR querying additional controller information... -2024-09-06T11:04:58.245Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:04:58.246Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:04:58.254Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.255Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:04:58.255Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.255Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:04:58.256Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:04:58.256Z CNTRLR querying version info... -2024-09-06T11:04:58.257Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:04:58.257Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:04:58.264Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.265Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:04:58.265Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.266Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:04:58.267Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:04:58.267Z CNTRLR querying protocol version info... -2024-09-06T11:04:58.268Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:04:58.268Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:04:58.274Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.274Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:04:58.275Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.275Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:04:58.276Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:04:58.276Z CNTRLR querying controller capabilities... -2024-09-06T11:04:58.277Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:04:58.277Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:04:58.283Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.283Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:04:58.283Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.284Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:04:58.285Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:04:58.285Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:04:58.286Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:04:58.286Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:04:58.292Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.293Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:04:58.293Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.294Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:04:58.294Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:04:58.294Z CNTRLR querying max. payload size... -2024-09-06T11:04:58.295Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:04:58.295Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:04:58.301Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.301Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:04:58.301Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.302Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:04:58.302Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:04:58.303Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:04:58.303Z CNTRLR Querying configured RF region... -2024-09-06T11:04:58.303Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:04:58.304Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:04:58.308Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.309Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:04:58.309Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.309Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:04:58.310Z CNTRLR The controller is using RF region Europe -2024-09-06T11:04:58.310Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:04:58.311Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:04:58.311Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:04:58.316Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.316Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:04:58.317Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.317Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:04:58.317Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:04:58.318Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:04:58.318Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:04:58.319Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:04:58.323Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.324Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:04:58.324Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.324Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:04:58.325Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:04:58.325Z CNTRLR Performing soft reset... -2024-09-06T11:04:58.325Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:04:58.325Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:04:58.329Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.330Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:04:58.330Z DRIVER all queues idle -2024-09-06T11:04:58.445Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:04:58.446Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.448Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:04:58.449Z CNTRLR reconnected and restarted -2024-09-06T11:04:58.450Z CNTRLR Starting hardware watchdog... -2024-09-06T11:04:58.451Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:04:58.452Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:04:58.453Z DRIVER all queues busy -2024-09-06T11:04:58.454Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:04:58.455Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:04:58.461Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:04:58.462Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:04:58.463Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.467Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.468Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:58.468Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.469Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:58.470Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:04:58.470Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:04:58.471Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:04:58.477Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.477Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:04:58.478Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.478Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:04:58.479Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:04:58.479Z CNTRLR querying controller IDs... -2024-09-06T11:04:58.480Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:04:58.481Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:04:58.486Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.486Z SERIAL « 0x01080120e18c5695027a (10 bytes) -2024-09-06T11:04:58.487Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.487Z DRIVER « [RES] [GetControllerId] - home ID: 0xe18c5695 - own node ID: 2 -2024-09-06T11:04:58.488Z CNTRLR received controller IDs: - home ID: 0xe18c5695 - own node ID: 2 -2024-09-06T11:04:58.488Z CNTRLR Enabling TX status report... -2024-09-06T11:04:58.489Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:04:58.490Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:04:58.495Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.495Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:04:58.495Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.496Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:04:58.496Z CNTRLR Enabling TX status report successful... -2024-09-06T11:04:58.497Z CNTRLR finding SUC... -2024-09-06T11:04:58.497Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:04:58.498Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:04:58.503Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.504Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:04:58.504Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.505Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:04:58.505Z CNTRLR SUC has node ID 1 -2024-09-06T11:04:58.506Z DRIVER all queues idle -2024-09-06T11:04:58.516Z DRIVER Cache file for homeId 0xe18c5695 found, attempting to restore the network from - cache... -2024-09-06T11:04:58.517Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:04:58.518Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:04:58.518Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:04:58.518Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:04:58.518Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:04:58.519Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:04:58.519Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:04:58.519Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:04:58.519Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:04:58.519Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:04:58.520Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:04:58.520Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:04:58.520Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:04:58.520Z CNTRLR Interview completed -2024-09-06T11:04:58.520Z DRIVER No network key for S0 found in cache, communication with secure (S0) devices w - on't work! -2024-09-06T11:04:58.520Z DRIVER No network key for S2 found in cache, communication with secure (S2) devices w - on't work! -2024-09-06T11:04:58.520Z DRIVER driver ready -2024-09-06T11:04:58.521Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T11:04:58.521Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T11:04:58.521Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T11:04:58.522Z DRIVER all queues busy -2024-09-06T11:04:58.523Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T11:04:58.523Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T11:04:58.529Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.529Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:04:58.529Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.530Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:04:58.531Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:04:58.531Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T11:04:58.532Z DRIVER all queues idle -2024-09-06T11:04:58.538Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:04:58.539Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T11:04:58.539Z CNTRLR [Node 002] Interview completed -2024-09-06T11:04:58.539Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T11:04:58.540Z CNTRLR [Node 002] The node is alive. -2024-09-06T11:04:58.540Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:04:58.540Z DRIVER all queues busy -2024-09-06T11:04:58.541Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:04:58.541Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:04:58.547Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.548Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:04:58.548Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.548Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:04:58.549Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:04:58.549Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:04:58.549Z CNTRLR Determining node status: 1 -2024-09-06T11:04:58.549Z CNTRLR » [Node 001] pinging the node... -2024-09-06T11:04:58.551Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T11:04:58.552Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T11:04:58.557Z SERIAL « [ACK] (0x06) -2024-09-06T11:04:58.560Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:04:58.560Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.560Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:04:58.579Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T11:04:58.580Z SERIAL » [ACK] (0x06) -2024-09-06T11:04:58.581Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:04:58.581Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:04:58.582Z CNTRLR « [Node 001] ping successful -2024-09-06T11:04:58.582Z DRIVER all queues idle -2024-09-06T11:05:03.520Z CNTRLR Updating the controller NIF... -2024-09-06T11:05:03.522Z DRIVER all queues busy -2024-09-06T11:05:03.523Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:05:03.524Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:05:03.530Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.532Z CNTRLR performing hard reset... -2024-09-06T11:05:03.534Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T11:05:03.535Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T11:05:03.539Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.559Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T11:05:03.560Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.561Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T11:05:03.562Z CNTRLR hard reset succeeded -2024-09-06T11:05:03.563Z CNTRLR querying Serial API capabilities... -2024-09-06T11:05:03.565Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:05:03.565Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:05:03.574Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.576Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:05:03.576Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.577Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:05:03.579Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:05:03.579Z CNTRLR querying additional controller information... -2024-09-06T11:05:03.581Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:03.581Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:03.590Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.591Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:05:03.592Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.593Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:03.594Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:05:03.594Z CNTRLR querying version info... -2024-09-06T11:05:03.595Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:05:03.596Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:05:03.602Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.603Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:05:03.603Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.604Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:05:03.606Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:05:03.606Z CNTRLR querying protocol version info... -2024-09-06T11:05:03.607Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:05:03.607Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:05:03.613Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.614Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:05:03.615Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.615Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:05:03.616Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:05:03.617Z CNTRLR querying controller capabilities... -2024-09-06T11:05:03.617Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:03.618Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:03.623Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.623Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:05:03.624Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.624Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:05:03.625Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:05:03.625Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:05:03.626Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:05:03.626Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:05:03.633Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.634Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:05:03.634Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.635Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:05:03.636Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:05:03.636Z CNTRLR querying max. payload size... -2024-09-06T11:05:03.636Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:05:03.637Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:05:03.642Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.643Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:05:03.643Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.644Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:05:03.645Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:05:03.645Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:05:03.645Z CNTRLR Querying configured RF region... -2024-09-06T11:05:03.646Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:05:03.646Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:05:03.652Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.652Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:05:03.652Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.653Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:05:03.654Z CNTRLR The controller is using RF region Europe -2024-09-06T11:05:03.654Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:05:03.655Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:05:03.655Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:05:03.661Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.661Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:05:03.661Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.662Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:05:03.663Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:05:03.663Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:05:03.663Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:05:03.664Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:05:03.669Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.670Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:05:03.670Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.670Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:05:03.671Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:05:03.671Z CNTRLR Performing soft reset... -2024-09-06T11:05:03.672Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:05:03.672Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:05:03.676Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.676Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:05:03.677Z DRIVER all queues idle -2024-09-06T11:05:03.782Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:05:03.783Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.785Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:05:03.785Z CNTRLR reconnected and restarted -2024-09-06T11:05:03.786Z CNTRLR Starting hardware watchdog... -2024-09-06T11:05:03.786Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:05:03.787Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:05:03.787Z DRIVER all queues busy -2024-09-06T11:05:03.789Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:05:03.789Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:05:03.792Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:05:03.793Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:05:03.794Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.798Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.799Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:03.799Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.800Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:03.802Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:05:03.803Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:05:03.803Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:05:03.809Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.809Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:03.809Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.810Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:03.810Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:05:03.810Z CNTRLR querying controller IDs... -2024-09-06T11:05:03.811Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:03.811Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:03.816Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.817Z SERIAL « 0x01080120c4083e2b010e (10 bytes) -2024-09-06T11:05:03.817Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.817Z DRIVER « [RES] [GetControllerId] - home ID: 0xc4083e2b - own node ID: 1 -2024-09-06T11:05:03.818Z CNTRLR received controller IDs: - home ID: 0xc4083e2b - own node ID: 1 -2024-09-06T11:05:03.818Z CNTRLR Enabling TX status report... -2024-09-06T11:05:03.818Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:05:03.819Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:05:03.823Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.824Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:05:03.824Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.824Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:05:03.825Z CNTRLR Enabling TX status report successful... -2024-09-06T11:05:03.825Z CNTRLR finding SUC... -2024-09-06T11:05:03.825Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:05:03.825Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:05:03.830Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.830Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:05:03.830Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.831Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:05:03.831Z CNTRLR No SUC present in the network -2024-09-06T11:05:03.831Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:05:03.832Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T11:05:03.832Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T11:05:03.839Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.839Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:05:03.839Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.840Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:05:03.840Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:05:03.841Z DRIVER all queues idle -2024-09-06T11:05:03.844Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:03.844Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:03.844Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:03.844Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:05:03.844Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:05:03.844Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:05:03.845Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:03.845Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:05:03.845Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:03.845Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:05:03.845Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:05:03.845Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:05:03.845Z CNTRLR Interview completed -2024-09-06T11:05:03.845Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:05:03.845Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:05:03.846Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:05:03.846Z DRIVER driver ready -2024-09-06T11:05:03.846Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T11:05:03.846Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T11:05:03.846Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:05:03.847Z DRIVER all queues busy -2024-09-06T11:05:03.847Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:05:03.847Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:05:03.852Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:03.853Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:05:03.853Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:03.854Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:05:03.854Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:05:03.854Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:05:03.855Z DRIVER all queues idle -2024-09-06T11:05:03.857Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:05:03.857Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T11:05:03.857Z CNTRLR [Node 001] Interview completed -2024-09-06T11:05:03.857Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T11:05:03.857Z CNTRLR All nodes are ready to be used -2024-09-06T11:05:03.857Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:05:08.565Z DRIVER all queues busy -2024-09-06T11:05:08.567Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T11:05:08.568Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T11:05:08.574Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:08.575Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T11:05:08.576Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:08.577Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T11:05:08.579Z DRIVER all queues idle -2024-09-06T11:05:08.748Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T11:05:08.749Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:08.749Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T11:05:08.749Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:05:08.749Z DRIVER 1 handler registered! -2024-09-06T11:05:08.749Z DRIVER invoking handler #0 -2024-09-06T11:05:08.750Z DRIVER the message was handled -2024-09-06T11:05:08.856Z DRIVER all queues busy -2024-09-06T11:05:08.857Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:05:08.858Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:05:08.863Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:08.863Z SERIAL « 0x0107013b97a7a77f2a (9 bytes) -2024-09-06T11:05:08.864Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:08.865Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -105 dBm - channel 1: -89 dBm - channel 2: -89 dBm - channel 3: N/A -2024-09-06T11:05:08.866Z DRIVER all queues idle -2024-09-06T11:05:09.269Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T11:05:09.269Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.270Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T11:05:09.286Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T11:05:09.286Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.287Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T11:05:09.287Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:05:09.287Z DRIVER 1 handler registered! -2024-09-06T11:05:09.287Z DRIVER invoking handler #0 -2024-09-06T11:05:09.288Z DRIVER the message was handled -2024-09-06T11:05:09.288Z DRIVER waiting for security bootstrapping... -2024-09-06T11:05:09.289Z CNTRLR querying controller IDs... -2024-09-06T11:05:09.289Z DRIVER all queues busy -2024-09-06T11:05:09.290Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:09.290Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:09.295Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.296Z SERIAL « 0x01080120c80a10c502c3 (10 bytes) -2024-09-06T11:05:09.296Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.296Z DRIVER « [RES] [GetControllerId] - home ID: 0xc80a10c5 - own node ID: 2 -2024-09-06T11:05:09.297Z CNTRLR received controller IDs: - home ID: 0xc80a10c5 - own node ID: 2 -2024-09-06T11:05:09.297Z DRIVER Joined network with home ID 0xc80a10c5, switching to new network cache... -2024-09-06T11:05:09.297Z CNTRLR querying controller capabilities... -2024-09-06T11:05:09.298Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:09.298Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:09.303Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.304Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:05:09.304Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.304Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:05:09.305Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:05:09.305Z CNTRLR querying additional controller information... -2024-09-06T11:05:09.306Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:09.306Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:09.315Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:09.315Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:05:09.315Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.316Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:09.316Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:05:09.317Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:09.317Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:09.317Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:05:09.318Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:05:09.318Z CNTRLR Interview completed -2024-09-06T11:05:09.318Z DRIVER all queues idle -2024-09-06T11:05:09.499Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T11:05:09.500Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:09.501Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T11:05:22.139Z CNTRLR [Node 001] Received S2 bootstrap initiation, requesting keys: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy - client-side auth: false -2024-09-06T11:05:24.375Z DRIVER all queues busy -2024-09-06T11:05:24.377Z SERIAL » 0x011200a90201069f05000201872500000000057f (20 bytes) -2024-09-06T11:05:24.379Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 5 - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:05:24.421Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.421Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.421Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.423Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.430Z SERIAL « 0x011d00a90500000100d97f7f7f7f00000300000000030100007f7f7f7f7fe8 (31 bytes) -2024-09-06T11:05:24.430Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.431Z DRIVER « [REQ] [SendDataBridge] - callback id: 5 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.432Z DRIVER all queues idle -2024-09-06T11:05:24.451Z SERIAL « 0x010f00a8000201069f060002018700d999 (17 bytes) -2024-09-06T11:05:24.451Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.452Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.454Z DRIVER all queues busy -2024-09-06T11:05:24.455Z SERIAL » 0x012f00a90201239f080000004d2fbeb6c2b5b7622a32ff6946734809975b3d00c (49 bytes) - e7d639056f7fd7f8375250000000006bb -2024-09-06T11:05:24.455Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 6 - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x00004d2fbeb6c2b5b7622a32ff6946734809975b3d00ce7d63905 - 6f7fd7f8375 -2024-09-06T11:05:24.466Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.467Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.468Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.468Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.487Z SERIAL « 0x011d00a90600000100d97f7f7f7f00000300000000030100007f7f7f7f7feb (31 bytes) -2024-09-06T11:05:24.487Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.488Z DRIVER « [REQ] [SendDataBridge] - callback id: 6 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.488Z DRIVER all queues idle -2024-09-06T11:05:24.516Z SERIAL « 0x012c00a8000201239f08014b2d67c5fc1c4760172137de73c0be95f4d6c3544af (46 bytes) - 037a442da5c6309354d4100d95b -2024-09-06T11:05:24.516Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.517Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0x4b2d67c5fc1c4760172137de73c0be95f4d6c3544af037a442da5 - c6309354d41 -2024-09-06T11:05:24.519Z DRIVER all queues busy -2024-09-06T11:05:24.520Z SERIAL » 0x010f00a90201039f01a725000000000742 (17 bytes) -2024-09-06T11:05:24.521Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCNonceGet] - sequence number: 167 -2024-09-06T11:05:24.526Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.528Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.529Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.529Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.547Z SERIAL « 0x011d00a90700000100d97f7f7f7f00000300000000030100007f7f7f7f7fea (31 bytes) -2024-09-06T11:05:24.548Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.548Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.570Z SERIAL « 0x011d00a8000201149f02e40141268356a2061d10d0a567b6aa11a14300d91a (31 bytes) -2024-09-06T11:05:24.571Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.572Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceReport] - sequence number: 228 - SOS: true - MOS: false - receiver entropy: 0x41268356a2061d10d0a567b6aa11a143 -2024-09-06T11:05:24.575Z SERIAL » 0x013000a90201249f03a8011241f8e3d97f8f9dd68d05e5ce20f70a0949f690891 (50 bytes) - a8669ae5a58faafde58652500000000084d -2024-09-06T11:05:24.576Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCMessageEncapsulation] - │ sequence number: 168 - │ extensions: - │ · type: SPAN - │ sender EI: 0xf8e3d97f8f9dd68d05e5ce20f70a0949 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x5345c0699cc4f877eb61b24e37 - │ ciphertext: 0xf690891a8669 - │ auth data: 0x0201c80a10c50024a8011241f8e3d97f8f9dd68d05e5ce20f70a094 - 9 - │ auth tag: 0xae5a58faafde5865 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.585Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.587Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.587Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.588Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.612Z SERIAL « 0x011d00a90800000100d97f7f7f7f00000300000000030100007f7f7f7f7fe5 (31 bytes) -2024-09-06T11:05:24.613Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.613Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.636Z SERIAL « 0x011b00a8000201129f03e500428f5533ac14822bab5ec23b45ac00d9a2 (29 bytes) -2024-09-06T11:05:24.637Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.638Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 229 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x4e4ceb14e04905965a92d6b9ef - │ plaintext: 0x9f0501020187 - │ auth tag: 0x822bab5ec23b45ac - │ security class: Temporary - └─[Security2CCKEXReport] - echo: true - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:05:24.641Z SERIAL » 0x011b00a902010f9f03a9004cb4a70c38d3a9b3497c5725000000000998 (29 bytes) -2024-09-06T11:05:24.641Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCMessageEncapsulation] - │ sequence number: 169 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x96181e40d56a9edac90701af73 - │ ciphertext: 0x4cb4a7 - │ auth data: 0x0201c80a10c5000fa900 - │ auth tag: 0x0c38d3a9b3497c57 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Unauthenticated -2024-09-06T11:05:24.648Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.651Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.651Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.652Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.668Z SERIAL « 0x011d00a90900000100d97f7f7f7f00000300000000030100007f7f7f7f7fe4 (31 bytes) -2024-09-06T11:05:24.668Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.669Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.669Z DRIVER all queues idle -2024-09-06T11:05:24.694Z SERIAL « 0x012800a80002011f9f03e6005af2a8d2443d73153404f665f7a1363109a314147 (42 bytes) - 7a4f05885e8e800d9ab -2024-09-06T11:05:24.695Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.696Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 230 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x45f6be582e90028e2ec202248e - │ plaintext: 0x9f0a015369389efa18ee2a4894c7fb48347fea - │ auth tag: 0x1477a4f05885e8e8 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Unauthenticated -2024-09-06T11:05:24.697Z DRIVER all queues busy -2024-09-06T11:05:24.697Z SERIAL » 0x010f00a90201039f01aa25000000000a42 (17 bytes) -2024-09-06T11:05:24.698Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 10 - └─[Security2CCNonceGet] - sequence number: 170 -2024-09-06T11:05:24.703Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.706Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.706Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.707Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.722Z SERIAL « 0x011d00a90a00000100d97f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:05:24.722Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.723Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.741Z SERIAL « 0x011d00a8000201149f02e7017f3e13d7d4f217de0d2a5c69245ab00500d94c (31 bytes) -2024-09-06T11:05:24.742Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.742Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceReport] - sequence number: 231 - SOS: true - MOS: false - receiver entropy: 0x7f3e13d7d4f217de0d2a5c69245ab005 -2024-09-06T11:05:24.744Z SERIAL » 0x012c00a90201209f03ab0112416c9053070ea7cbd892365571bb8f567098a6e6c (46 bytes) - d81aeeae5d3d625000000000ba2 -2024-09-06T11:05:24.744Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 171 - │ extensions: - │ · type: SPAN - │ sender EI: 0x6c9053070ea7cbd892365571bb8f5670 - │ key: 0x44b45806725f2a6ebc3e2641f36f6caa - │ IV: 0x0ea53396a858f7caa64da81545 - │ ciphertext: 0x98a6 - │ auth data: 0x0201c80a10c50020ab0112416c9053070ea7cbd892365571bb8f567 - 0 - │ auth tag: 0xe6cd81aeeae5d3d6 - │ security class: S2_Unauthenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:24.753Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.755Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.756Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.756Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.776Z SERIAL « 0x011d00a90b00000100d97f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T11:05:24.776Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.776Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.777Z DRIVER all queues idle -2024-09-06T11:05:24.794Z SERIAL « 0x010c00a8000201039f01e800d9f4 (14 bytes) -2024-09-06T11:05:24.795Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.796Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceGet] - sequence number: 232 -2024-09-06T11:05:24.796Z DRIVER all queues busy -2024-09-06T11:05:24.797Z SERIAL » 0x012000a90201149f02ac017ce365eb0aeee30f265dcfaca3503bae05000000000 (34 bytes) - c3f -2024-09-06T11:05:24.798Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 12 - └─[Security2CCNonceReport] - sequence number: 172 - SOS: true - MOS: false - receiver entropy: 0x7ce365eb0aeee30f265dcfaca3503bae -2024-09-06T11:05:24.805Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.807Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.808Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.808Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.825Z SERIAL « 0x011d00a90c00000100d97f7f7f7f00000300000000030100007f7f7f7f7fe1 (31 bytes) -2024-09-06T11:05:24.826Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.826Z DRIVER « [REQ] [SendDataBridge] - callback id: 12 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.828Z DRIVER all queues idle -2024-09-06T11:05:24.849Z SERIAL « 0x012a00a8000201219f03e9011241e3ecc76c91f66723a2cf918c908f12aac6408 (44 bytes) - 47a688928fdf72cc400d9a2 -2024-09-06T11:05:24.850Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.851Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 233 - │ extensions: - │ · type: SPAN - │ sender EI: 0xe3ecc76c91f66723a2cf918c908f12aa - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x506425ba50dbfe1af3850973dc - │ plaintext: 0x9f0c02 - │ auth tag: 0x7a688928fdf72cc4 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:24.851Z DRIVER all queues busy -2024-09-06T11:05:24.852Z SERIAL » 0x011b00a902010f9f03ad0032c7a9153ceaf3e3fde96625000000000da5 (29 bytes) -2024-09-06T11:05:24.852Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 13 - └─[Security2CCMessageEncapsulation] - │ sequence number: 173 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x1690d623380bbe423060815569 - │ ciphertext: 0x32c7a9 - │ auth data: 0x0201c80a10c5000fad00 - │ auth tag: 0x153ceaf3e3fde966 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Authenticated -2024-09-06T11:05:24.859Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.862Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.862Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.862Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.886Z SERIAL « 0x011d00a90d00000100d97f7f7f7f00000300000000030100007f7f7f7f7fe0 (31 bytes) -2024-09-06T11:05:24.887Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.888Z DRIVER « [REQ] [SendDataBridge] - callback id: 13 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.889Z DRIVER all queues idle -2024-09-06T11:05:24.911Z SERIAL « 0x012800a80002011f9f03ea0072c676cf8c27c4fe4f34ec4fc8eb31c340d8f1fca (42 bytes) - 58a7c176d544c00d9fd -2024-09-06T11:05:24.912Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.913Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 234 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x7da23cea0a62d4f4e1800adb6c - │ plaintext: 0x9f0a02656ef5c0f020f3c14238c04a1748b7e1 - │ auth tag: 0xfca58a7c176d544c - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Authenticated -2024-09-06T11:05:24.914Z DRIVER all queues busy -2024-09-06T11:05:24.915Z SERIAL » 0x010f00a90201039f01ae25000000000e42 (17 bytes) -2024-09-06T11:05:24.916Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 14 - └─[Security2CCNonceGet] - sequence number: 174 -2024-09-06T11:05:24.921Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.925Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.926Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.927Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:24.947Z SERIAL « 0x011d00a90e00000100d97f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:05:24.948Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.949Z DRIVER « [REQ] [SendDataBridge] - callback id: 14 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:24.973Z SERIAL « 0x011d00a8000201149f02eb019f0c81c8baa966dbf855f4ec10791d2a00d96c (31 bytes) -2024-09-06T11:05:24.974Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.975Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceReport] - sequence number: 235 - SOS: true - MOS: false - receiver entropy: 0x9f0c81c8baa966dbf855f4ec10791d2a -2024-09-06T11:05:24.976Z SERIAL » 0x012c00a90201209f03af01124129942536bfabf27b9238ad36bf05a60871818b6 (46 bytes) - 59c8eff6c23c925000000000f71 -2024-09-06T11:05:24.977Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 15 - └─[Security2CCMessageEncapsulation] - │ sequence number: 175 - │ extensions: - │ · type: SPAN - │ sender EI: 0x29942536bfabf27b9238ad36bf05a608 - │ key: 0xdda415256006027530b2d9548c898f93 - │ IV: 0x449ba0b4965628c1b636f66f45 - │ ciphertext: 0x7181 - │ auth data: 0x0201c80a10c50020af01124129942536bfabf27b9238ad36bf05a60 - 8 - │ auth tag: 0x8b659c8eff6c23c9 - │ security class: S2_Authenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:24.986Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:24.989Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:24.990Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:24.991Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.012Z SERIAL « 0x011d00a90f00000100d97f7f7f7f00000300000000030100007f7f7f7f7fe2 (31 bytes) -2024-09-06T11:05:25.012Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.013Z DRIVER « [REQ] [SendDataBridge] - callback id: 15 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.014Z DRIVER all queues idle -2024-09-06T11:05:25.030Z SERIAL « 0x010c00a8000201039f01ec00d9f0 (14 bytes) -2024-09-06T11:05:25.031Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.031Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceGet] - sequence number: 236 -2024-09-06T11:05:25.032Z DRIVER all queues busy -2024-09-06T11:05:25.033Z SERIAL » 0x012000a90201149f02b001517dafb42bab9df98a5e8058039a790305000000001 (34 bytes) - 064 -2024-09-06T11:05:25.033Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 16 - └─[Security2CCNonceReport] - sequence number: 176 - SOS: true - MOS: false - receiver entropy: 0x517dafb42bab9df98a5e8058039a7903 -2024-09-06T11:05:25.040Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.043Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.043Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.043Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.060Z SERIAL « 0x011d00a91000000100d97f7f7f7f00000300000000030100007f7f7f7f7ffd (31 bytes) -2024-09-06T11:05:25.061Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.062Z DRIVER « [REQ] [SendDataBridge] - callback id: 16 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.062Z DRIVER all queues idle -2024-09-06T11:05:25.086Z SERIAL « 0x012a00a8000201219f03ed01124124a1abcb9a02883058d24d40247cb572472c6 (44 bytes) - 2f4bd8b7448084d9800d952 -2024-09-06T11:05:25.087Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.088Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 237 - │ extensions: - │ · type: SPAN - │ sender EI: 0x24a1abcb9a02883058d24d40247cb572 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x3c10ed8c02588f8a544e741506 - │ plaintext: 0x9f0c02 - │ auth tag: 0xf4bd8b7448084d98 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:25.088Z DRIVER all queues busy -2024-09-06T11:05:25.089Z SERIAL » 0x011b00a902010f9f03b100b7a7cba4fee41a55ceb6a6250000000011ac (29 bytes) -2024-09-06T11:05:25.089Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 17 - └─[Security2CCMessageEncapsulation] - │ sequence number: 177 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x3f4ca78d9d7b8772913260ddf6 - │ ciphertext: 0xb7a7cb - │ auth data: 0x0201c80a10c5000fb100 - │ auth tag: 0xa4fee41a55ceb6a6 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_AccessControl -2024-09-06T11:05:25.096Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.099Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.099Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.099Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.119Z SERIAL « 0x011d00a91100000100d97f7f7f7f00000300000000030100007f7f7f7f7ffc (31 bytes) -2024-09-06T11:05:25.119Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.120Z DRIVER « [REQ] [SendDataBridge] - callback id: 17 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.120Z DRIVER all queues idle -2024-09-06T11:05:25.145Z SERIAL « 0x012800a80002011f9f03ee00a81baed2e377c75a785675d80aa2d4d965fc702d9 (42 bytes) - 43e7cc53334e200d91a -2024-09-06T11:05:25.146Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.147Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 238 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x2b5242176fd36b74ebd2588a69 - │ plaintext: 0x9f0a0431132050077310b6f7032f91c79c2eb8 - │ auth tag: 0x2d943e7cc53334e2 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_AccessControl -2024-09-06T11:05:25.147Z DRIVER all queues busy -2024-09-06T11:05:25.148Z SERIAL » 0x010f00a90201039f01b225000000001242 (17 bytes) -2024-09-06T11:05:25.148Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 18 - └─[Security2CCNonceGet] - sequence number: 178 -2024-09-06T11:05:25.154Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.157Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.157Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.158Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.176Z SERIAL « 0x011d00a91200000100d97f7f7f7f00000300000000030100007f7f7f7f7fff (31 bytes) -2024-09-06T11:05:25.176Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.176Z DRIVER « [REQ] [SendDataBridge] - callback id: 18 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.197Z SERIAL « 0x011d00a8000201149f02ef0192b1bb0e0bf8ebf23b3e23d2f5f6d12500d988 (31 bytes) -2024-09-06T11:05:25.198Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.198Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceReport] - sequence number: 239 - SOS: true - MOS: false - receiver entropy: 0x92b1bb0e0bf8ebf23b3e23d2f5f6d125 -2024-09-06T11:05:25.200Z SERIAL » 0x012c00a90201209f03b3011241d644fd7aceb92302b2458014f83422c1f9d0df9 (46 bytes) - 730abc69c3aa92500000000132e -2024-09-06T11:05:25.200Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 19 - └─[Security2CCMessageEncapsulation] - │ sequence number: 179 - │ extensions: - │ · type: SPAN - │ sender EI: 0xd644fd7aceb92302b2458014f83422c1 - │ key: 0xfca06923982033f3af9dfc7c1e4ad45a - │ IV: 0x428af89b733a090b8fa86a7ef8 - │ ciphertext: 0xf9d0 - │ auth data: 0x0201c80a10c50020b3011241d644fd7aceb92302b2458014f83422c - 1 - │ auth tag: 0xdf9730abc69c3aa9 - │ security class: S2_AccessControl - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:25.209Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.211Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.212Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.212Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.232Z SERIAL « 0x011d00a91300000200d97f7f7f7f00000300000000030100007f7f7f7f7ffd (31 bytes) -2024-09-06T11:05:25.232Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.233Z DRIVER « [REQ] [SendDataBridge] - callback id: 19 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.233Z DRIVER all queues idle -2024-09-06T11:05:25.249Z SERIAL « 0x010c00a8000201039f01f000d9ec (14 bytes) -2024-09-06T11:05:25.250Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.250Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceGet] - sequence number: 240 -2024-09-06T11:05:25.251Z DRIVER all queues busy -2024-09-06T11:05:25.252Z SERIAL » 0x012000a90201149f02b4011a41624d9611356de8b7ce83dca9993805000000001 (34 bytes) - 435 -2024-09-06T11:05:25.252Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 20 - └─[Security2CCNonceReport] - sequence number: 180 - SOS: true - MOS: false - receiver entropy: 0x1a41624d9611356de8b7ce83dca99938 -2024-09-06T11:05:25.260Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.262Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.263Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.263Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.280Z SERIAL « 0x011d00a91400000100d97f7f7f7f00000300000000030100007f7f7f7f7ff9 (31 bytes) -2024-09-06T11:05:25.280Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.281Z DRIVER « [REQ] [SendDataBridge] - callback id: 20 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.281Z DRIVER all queues idle -2024-09-06T11:05:25.304Z SERIAL « 0x012a00a8000201219f03f10112419bf94bd8ff38c1d1155ab536c92c5f7acc193 (44 bytes) - 256e46a0c62ed6d8800d9ca -2024-09-06T11:05:25.305Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.306Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 241 - │ extensions: - │ · type: SPAN - │ sender EI: 0x9bf94bd8ff38c1d1155ab536c92c5f7a - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x1b1c27ccd3e078d4cb788a7ef0 - │ plaintext: 0x9f0c02 - │ auth tag: 0x56e46a0c62ed6d88 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:25.306Z DRIVER all queues busy -2024-09-06T11:05:25.307Z SERIAL » 0x011b00a902010f9f03b50027ab0a469c4b6c5b1416f825000000001582 (29 bytes) -2024-09-06T11:05:25.308Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 21 - └─[Security2CCMessageEncapsulation] - │ sequence number: 181 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x23b368bfa4ba5dd44b7b68b0b6 - │ ciphertext: 0x27ab0a - │ auth data: 0x0201c80a10c5000fb500 - │ auth tag: 0x469c4b6c5b1416f8 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S0_Legacy -2024-09-06T11:05:25.314Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.317Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.317Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.318Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.335Z SERIAL « 0x011d00a91500000100d97f7f7f7f00000300000000030100007f7f7f7f7ff8 (31 bytes) -2024-09-06T11:05:25.336Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.336Z DRIVER « [REQ] [SendDataBridge] - callback id: 21 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.337Z DRIVER all queues idle -2024-09-06T11:05:25.359Z SERIAL « 0x012800a80002011f9f03f200f959ad8b13753eb8237cd2990a5edbdc4f37305e9 (42 bytes) - 2015d8cb4d34b00d98d -2024-09-06T11:05:25.360Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.361Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 242 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x8af07c0e552fccd1990e26a2e2 - │ plaintext: 0x9f0a800102030405060708090a0b0c0d0e0f10 - │ auth tag: 0x5e92015d8cb4d34b - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S0_Legacy -2024-09-06T11:05:25.362Z DRIVER all queues busy -2024-09-06T11:05:25.363Z SERIAL » 0x010f00a90201039f01b625000000001642 (17 bytes) -2024-09-06T11:05:25.363Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 22 - └─[Security2CCNonceGet] - sequence number: 182 -2024-09-06T11:05:25.369Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.371Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.371Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.372Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.388Z SERIAL « 0x011d00a91600000100d97f7f7f7f00000300000000030100007f7f7f7f7ffb (31 bytes) -2024-09-06T11:05:25.389Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.389Z DRIVER « [REQ] [SendDataBridge] - callback id: 22 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.409Z SERIAL « 0x011d00a8000201149f02f301591072502cc06bfdc1b985fc8b7e9f7500d9e4 (31 bytes) -2024-09-06T11:05:25.410Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.411Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceReport] - sequence number: 243 - SOS: true - MOS: false - receiver entropy: 0x591072502cc06bfdc1b985fc8b7e9f75 -2024-09-06T11:05:25.412Z SERIAL » 0x012c00a90201209f03b70112417b17ee5e7fd64614f64846ccf4c83a0260f29c5 (46 bytes) - 680a3c8ae60522500000000172a -2024-09-06T11:05:25.413Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 23 - └─[Security2CCMessageEncapsulation] - │ sequence number: 183 - │ extensions: - │ · type: SPAN - │ sender EI: 0x7b17ee5e7fd64614f64846ccf4c83a02 - │ key: 0xece479ca82cc867c1db471e86eab2248 - │ IV: 0x6e2e5d911ea903206d6d1f38b8 - │ ciphertext: 0x60f2 - │ auth data: 0x0201c80a10c50020b70112417b17ee5e7fd64614f64846ccf4c83a0 - 2 - │ auth tag: 0x9c5680a3c8ae6052 - │ security class: S0_Legacy - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:05:25.422Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.425Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.426Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.427Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.446Z SERIAL « 0x011d00a91700000100d97f7f7f7f00000300000000030100007f7f7f7f7ffa (31 bytes) -2024-09-06T11:05:25.446Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.447Z DRIVER « [REQ] [SendDataBridge] - callback id: 23 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.447Z DRIVER all queues idle -2024-09-06T11:05:25.464Z SERIAL « 0x010c00a8000201039f01f400d9e8 (14 bytes) -2024-09-06T11:05:25.464Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.465Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCNonceGet] - sequence number: 244 -2024-09-06T11:05:25.466Z DRIVER all queues busy -2024-09-06T11:05:25.466Z SERIAL » 0x012000a90201149f02b801fdce68f693b0caefa4c7bc60935f633f05000000001 (34 bytes) - 8dc -2024-09-06T11:05:25.467Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 24 - └─[Security2CCNonceReport] - sequence number: 184 - SOS: true - MOS: false - receiver entropy: 0xfdce68f693b0caefa4c7bc60935f633f -2024-09-06T11:05:25.474Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.477Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.477Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.477Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.496Z SERIAL « 0x011d00a91800000100d97f7f7f7f00000300000000030100007f7f7f7f7ff5 (31 bytes) -2024-09-06T11:05:25.497Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.497Z DRIVER « [REQ] [SendDataBridge] - callback id: 24 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.498Z DRIVER all queues idle -2024-09-06T11:05:25.522Z SERIAL « 0x012a00a8000201219f03f5011241c2f0ffb5a7f3c01f8b52f8255358c660513bd (44 bytes) - c2b90b0602c845b2300d9ea -2024-09-06T11:05:25.523Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.523Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -39 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 245 - │ extensions: - │ · type: SPAN - │ sender EI: 0xc2f0ffb5a7f3c01f8b52f8255358c660 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x5fe047a15c4f3a56b698cb51f4 - │ plaintext: 0x9f0c02 - │ auth tag: 0x2b90b0602c845b23 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:05:25.524Z DRIVER all queues busy -2024-09-06T11:05:25.524Z SERIAL » 0x011b00a902010f9f03b900d21d0f61da2ac33d0ed7442500000000196a (29 bytes) -2024-09-06T11:05:25.525Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 25 - └─[Security2CCMessageEncapsulation] - │ sequence number: 185 - │ key: 0xba0a768edc36f7885e51c63b3d1c8608 - │ IV: 0x239de663297e35472ac380463b - │ ciphertext: 0xd21d0f - │ auth data: 0x0201c80a10c5000fb900 - │ auth tag: 0x61da2ac33d0ed744 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: false - request complete: true -2024-09-06T11:05:25.532Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.534Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:25.535Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.535Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:25.553Z SERIAL « 0x011d00a91900000100d97f7f7f7f00000300000000030100007f7f7f7f7ff4 (31 bytes) -2024-09-06T11:05:25.553Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.554Z DRIVER « [REQ] [SendDataBridge] - callback id: 25 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -39 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:25.554Z DRIVER Security S2 bootstrapping successful with these security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:05:25.554Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:05:25.555Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:05:25.555Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:05:25.561Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:25.562Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:05:25.562Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:25.563Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:05:25.563Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:05:25.564Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:05:25.564Z DRIVER Finished joining network -2024-09-06T11:05:25.564Z DRIVER all queues idle -2024-09-06T11:05:38.856Z DRIVER all queues busy -2024-09-06T11:05:38.857Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:05:38.857Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:05:38.863Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:38.863Z SERIAL « 0x0107013b9997977f24 (9 bytes) -2024-09-06T11:05:38.863Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:38.864Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -103 dBm - channel 1: -105 dBm - channel 2: -105 dBm - channel 3: N/A -2024-09-06T11:05:38.865Z DRIVER all queues idle -2024-09-06T11:05:45.886Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:05:45.886Z DRIVER version 13.2.0 -2024-09-06T11:05:45.887Z DRIVER -2024-09-06T11:05:45.887Z DRIVER starting driver... -2024-09-06T11:05:45.887Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T11:05:45.895Z DRIVER serial port opened -2024-09-06T11:05:45.896Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:05:46.902Z DRIVER loading configuration... -2024-09-06T11:05:46.907Z CONFIG version 13.2.0 -2024-09-06T11:05:47.213Z DRIVER beginning interview... -2024-09-06T11:05:47.214Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:05:47.214Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:05:47.214Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:05:47.214Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:05:47.215Z CNTRLR querying Serial API capabilities... -2024-09-06T11:05:47.223Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:05:47.223Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:05:47.233Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.233Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:05:47.234Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.234Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:05:47.236Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:05:47.236Z CNTRLR querying additional controller information... -2024-09-06T11:05:47.237Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:47.238Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:47.246Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.247Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:05:47.247Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.248Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:47.249Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:05:47.249Z CNTRLR querying version info... -2024-09-06T11:05:47.250Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:05:47.250Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:05:47.257Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.258Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:05:47.258Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.259Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:05:47.259Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:05:47.259Z CNTRLR querying protocol version info... -2024-09-06T11:05:47.260Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:05:47.260Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:05:47.267Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.267Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:05:47.268Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.268Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:05:47.269Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:05:47.269Z CNTRLR querying controller capabilities... -2024-09-06T11:05:47.271Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:47.271Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:47.276Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.276Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:05:47.277Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.277Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:05:47.278Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:05:47.278Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:05:47.279Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:05:47.279Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:05:47.285Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.286Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:05:47.287Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.287Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:05:47.288Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:05:47.288Z CNTRLR querying max. payload size... -2024-09-06T11:05:47.289Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:05:47.289Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:05:47.294Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.294Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:05:47.294Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.295Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:05:47.296Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:05:47.296Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:05:47.296Z CNTRLR Querying configured RF region... -2024-09-06T11:05:47.297Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:05:47.297Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:05:47.303Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.303Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:05:47.304Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.304Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:05:47.305Z CNTRLR The controller is using RF region Europe -2024-09-06T11:05:47.305Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:05:47.306Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:05:47.306Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:05:47.311Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.311Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:05:47.311Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.312Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:05:47.313Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:05:47.313Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:05:47.314Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:05:47.314Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:05:47.319Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.319Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:05:47.320Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.320Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:05:47.321Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:05:47.321Z CNTRLR Performing soft reset... -2024-09-06T11:05:47.322Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:05:47.322Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:05:47.327Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.328Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:05:47.328Z DRIVER all queues idle -2024-09-06T11:05:47.436Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:05:47.437Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.439Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:05:47.441Z CNTRLR reconnected and restarted -2024-09-06T11:05:47.441Z CNTRLR Starting hardware watchdog... -2024-09-06T11:05:47.442Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:05:47.444Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:05:47.445Z DRIVER all queues busy -2024-09-06T11:05:47.446Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:05:47.447Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:05:47.453Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:05:47.454Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:05:47.455Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.459Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.459Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:47.460Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.460Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:47.461Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:05:47.462Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:05:47.462Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:05:47.468Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.468Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:47.468Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.469Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:47.470Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:05:47.470Z CNTRLR querying controller IDs... -2024-09-06T11:05:47.471Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:47.471Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:47.476Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.477Z SERIAL « 0x01080120c80a10c502c3 (10 bytes) -2024-09-06T11:05:47.477Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.478Z DRIVER « [RES] [GetControllerId] - home ID: 0xc80a10c5 - own node ID: 2 -2024-09-06T11:05:47.479Z CNTRLR received controller IDs: - home ID: 0xc80a10c5 - own node ID: 2 -2024-09-06T11:05:47.479Z CNTRLR Enabling TX status report... -2024-09-06T11:05:47.480Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:05:47.480Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:05:47.486Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.487Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:05:47.487Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.488Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:05:47.488Z CNTRLR Enabling TX status report successful... -2024-09-06T11:05:47.489Z CNTRLR finding SUC... -2024-09-06T11:05:47.489Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:05:47.490Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:05:47.495Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.495Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:05:47.496Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.496Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:05:47.497Z CNTRLR SUC has node ID 1 -2024-09-06T11:05:47.497Z DRIVER all queues idle -2024-09-06T11:05:47.507Z DRIVER Cache file for homeId 0xc80a10c5 found, attempting to restore the network from - cache... -2024-09-06T11:05:47.515Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:05:47.515Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:05:47.516Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:47.517Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:47.517Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:47.517Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T11:05:47.518Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:05:47.518Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T11:05:47.518Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:47.518Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T11:05:47.518Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:47.518Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T11:05:47.519Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:05:47.519Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T11:05:47.519Z CNTRLR Interview completed -2024-09-06T11:05:47.519Z DRIVER Network key for S0 found in cache, enabling S0 security manager... -2024-09-06T11:05:47.519Z DRIVER At least one network key for S2 found in cache, enabling S2 security manager.. - . -2024-09-06T11:05:47.521Z DRIVER driver ready -2024-09-06T11:05:47.521Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T11:05:47.522Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T11:05:47.522Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T11:05:47.523Z DRIVER all queues busy -2024-09-06T11:05:47.523Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T11:05:47.524Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T11:05:47.530Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.530Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:05:47.531Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.531Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:05:47.532Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:05:47.532Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T11:05:47.533Z DRIVER all queues idle -2024-09-06T11:05:47.535Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:05:47.535Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T11:05:47.535Z CNTRLR [Node 002] Interview completed -2024-09-06T11:05:47.536Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T11:05:47.536Z CNTRLR [Node 002] The node is alive. -2024-09-06T11:05:47.536Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:05:47.537Z DRIVER all queues busy -2024-09-06T11:05:47.537Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:05:47.537Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:05:47.543Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.543Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:05:47.543Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.544Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:05:47.545Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:05:47.545Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:05:47.545Z CNTRLR Determining node status: 1 -2024-09-06T11:05:47.545Z CNTRLR » [Node 001] pinging the node... -2024-09-06T11:05:47.547Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T11:05:47.548Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T11:05:47.553Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:47.555Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:05:47.555Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.556Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:05:47.576Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T11:05:47.576Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:47.577Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:05:47.578Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:05:47.578Z CNTRLR « [Node 001] ping successful -2024-09-06T11:05:47.578Z DRIVER all queues idle -2024-09-06T11:05:52.520Z CNTRLR Updating the controller NIF... -2024-09-06T11:05:52.522Z DRIVER all queues busy -2024-09-06T11:05:52.523Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:05:52.524Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:05:52.530Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.533Z CNTRLR performing hard reset... -2024-09-06T11:05:52.535Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T11:05:52.536Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T11:05:52.540Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.576Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T11:05:52.577Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.578Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T11:05:52.579Z CNTRLR hard reset succeeded -2024-09-06T11:05:52.580Z CNTRLR querying Serial API capabilities... -2024-09-06T11:05:52.582Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:05:52.583Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:05:52.591Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.593Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:05:52.593Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.594Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:05:52.596Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:05:52.596Z CNTRLR querying additional controller information... -2024-09-06T11:05:52.598Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:52.599Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:52.608Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.609Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:05:52.610Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.611Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:52.612Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:05:52.613Z CNTRLR querying version info... -2024-09-06T11:05:52.614Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:05:52.614Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:05:52.621Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.622Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:05:52.623Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.623Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:05:52.624Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:05:52.625Z CNTRLR querying protocol version info... -2024-09-06T11:05:52.626Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:05:52.626Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:05:52.633Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.634Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:05:52.635Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.636Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:05:52.637Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:05:52.637Z CNTRLR querying controller capabilities... -2024-09-06T11:05:52.638Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:52.638Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:52.643Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.644Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:05:52.645Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.645Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:05:52.646Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:05:52.646Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:05:52.647Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:05:52.648Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:05:52.654Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.655Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:05:52.655Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.656Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:05:52.656Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:05:52.657Z CNTRLR querying max. payload size... -2024-09-06T11:05:52.658Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:05:52.658Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:05:52.663Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.663Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:05:52.663Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.664Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:05:52.665Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:05:52.665Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:05:52.665Z CNTRLR Querying configured RF region... -2024-09-06T11:05:52.666Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:05:52.666Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:05:52.671Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.672Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:05:52.672Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.672Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:05:52.673Z CNTRLR The controller is using RF region Europe -2024-09-06T11:05:52.673Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:05:52.674Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:05:52.674Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:05:52.680Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.680Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:05:52.680Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.681Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:05:52.682Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:05:52.682Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:05:52.683Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:05:52.683Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:05:52.688Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.689Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:05:52.689Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.689Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:05:52.690Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:05:52.690Z CNTRLR Performing soft reset... -2024-09-06T11:05:52.691Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:05:52.691Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:05:52.695Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.696Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:05:52.696Z DRIVER all queues idle -2024-09-06T11:05:52.808Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:05:52.809Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.811Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:05:52.811Z CNTRLR reconnected and restarted -2024-09-06T11:05:52.811Z CNTRLR Starting hardware watchdog... -2024-09-06T11:05:52.812Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:05:52.812Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:05:52.813Z DRIVER all queues busy -2024-09-06T11:05:52.814Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:05:52.815Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:05:52.817Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:05:52.818Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:05:52.820Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.824Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.824Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:52.825Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.825Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:52.826Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:05:52.828Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:05:52.829Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:05:52.834Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.835Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:05:52.835Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.836Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:05:52.837Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:05:52.837Z CNTRLR querying controller IDs... -2024-09-06T11:05:52.838Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:52.839Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:52.844Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.844Z SERIAL « 0x01080120dd8e92de01c8 (10 bytes) -2024-09-06T11:05:52.845Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.845Z DRIVER « [RES] [GetControllerId] - home ID: 0xdd8e92de - own node ID: 1 -2024-09-06T11:05:52.846Z CNTRLR received controller IDs: - home ID: 0xdd8e92de - own node ID: 1 -2024-09-06T11:05:52.846Z CNTRLR Enabling TX status report... -2024-09-06T11:05:52.847Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:05:52.848Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:05:52.853Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.854Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:05:52.854Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.854Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:05:52.855Z CNTRLR Enabling TX status report successful... -2024-09-06T11:05:52.855Z CNTRLR finding SUC... -2024-09-06T11:05:52.855Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:05:52.855Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:05:52.860Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.860Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:05:52.860Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.861Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:05:52.861Z CNTRLR No SUC present in the network -2024-09-06T11:05:52.861Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:05:52.862Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T11:05:52.862Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T11:05:52.869Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.869Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:05:52.869Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.870Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:05:52.870Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:05:52.870Z DRIVER all queues idle -2024-09-06T11:05:52.874Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:52.874Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:52.874Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:05:52.875Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:05:52.875Z CNTRLR Interview completed -2024-09-06T11:05:52.875Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:05:52.876Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:05:52.876Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:05:52.876Z DRIVER driver ready -2024-09-06T11:05:52.877Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T11:05:52.877Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T11:05:52.877Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:05:52.877Z DRIVER all queues busy -2024-09-06T11:05:52.878Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:05:52.878Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:05:52.883Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:52.883Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:05:52.884Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:52.884Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:05:52.885Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:05:52.885Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:05:52.886Z DRIVER all queues idle -2024-09-06T11:05:52.887Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:05:52.887Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T11:05:52.887Z CNTRLR [Node 001] Interview completed -2024-09-06T11:05:52.887Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T11:05:52.887Z CNTRLR All nodes are ready to be used -2024-09-06T11:05:52.888Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:05:57.582Z DRIVER all queues busy -2024-09-06T11:05:57.584Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T11:05:57.585Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T11:05:57.590Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:57.591Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T11:05:57.591Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:57.592Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T11:05:57.593Z DRIVER all queues idle -2024-09-06T11:05:57.747Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T11:05:57.747Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:57.748Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T11:05:57.748Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:05:57.748Z DRIVER 1 handler registered! -2024-09-06T11:05:57.748Z DRIVER invoking handler #0 -2024-09-06T11:05:57.748Z DRIVER the message was handled -2024-09-06T11:05:57.887Z DRIVER all queues busy -2024-09-06T11:05:57.889Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:05:57.889Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:05:57.895Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:57.896Z SERIAL « 0x0107013b9b96967f26 (9 bytes) -2024-09-06T11:05:57.897Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:57.898Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -101 dBm - channel 1: -106 dBm - channel 2: -106 dBm - channel 3: N/A -2024-09-06T11:05:57.899Z DRIVER all queues idle -2024-09-06T11:05:58.269Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T11:05:58.270Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.271Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T11:05:58.286Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T11:05:58.286Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.287Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T11:05:58.287Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:05:58.287Z DRIVER 1 handler registered! -2024-09-06T11:05:58.287Z DRIVER invoking handler #0 -2024-09-06T11:05:58.287Z DRIVER the message was handled -2024-09-06T11:05:58.288Z DRIVER waiting for security bootstrapping... -2024-09-06T11:05:58.288Z CNTRLR querying controller IDs... -2024-09-06T11:05:58.288Z DRIVER all queues busy -2024-09-06T11:05:58.289Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:05:58.289Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:05:58.294Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.295Z SERIAL « 0x01080120f6b51bac0220 (10 bytes) -2024-09-06T11:05:58.295Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.295Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6b51bac - own node ID: 2 -2024-09-06T11:05:58.296Z CNTRLR received controller IDs: - home ID: 0xf6b51bac - own node ID: 2 -2024-09-06T11:05:58.296Z DRIVER Joined network with home ID 0xf6b51bac, switching to new network cache... -2024-09-06T11:05:58.296Z CNTRLR querying controller capabilities... -2024-09-06T11:05:58.297Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:05:58.297Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:05:58.302Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.302Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:05:58.303Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.303Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:05:58.304Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:05:58.304Z CNTRLR querying additional controller information... -2024-09-06T11:05:58.305Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:05:58.305Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:05:58.314Z SERIAL « [ACK] (0x06) -2024-09-06T11:05:58.314Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:05:58.314Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.315Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:05:58.315Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:05:58.316Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:05:58.316Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:05:58.316Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:05:58.316Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:05:58.316Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:05:58.317Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:05:58.317Z CNTRLR Interview completed -2024-09-06T11:05:58.317Z DRIVER all queues idle -2024-09-06T11:05:58.491Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T11:05:58.493Z SERIAL » [ACK] (0x06) -2024-09-06T11:05:58.494Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T11:06:01.567Z CNTRLR [Node 001] Received S2 bootstrap initiation, requesting keys: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy - client-side auth: false -2024-09-06T11:06:01.572Z DRIVER all queues busy -2024-09-06T11:06:01.573Z SERIAL » 0x011200a90201069f05000201872500000000057f (20 bytes) -2024-09-06T11:06:01.575Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 5 - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:06:01.598Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.598Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.598Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.600Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.611Z SERIAL « 0x011d00a90500000100d87f7f7f7f00000300000000030100007f7f7f7f7fe9 (31 bytes) -2024-09-06T11:06:01.611Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.612Z DRIVER « [REQ] [SendDataBridge] - callback id: 5 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.614Z DRIVER all queues idle -2024-09-06T11:06:01.631Z SERIAL « 0x010f00a8000201069f060002018700d797 (17 bytes) -2024-09-06T11:06:01.632Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.634Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -41 dBm - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.638Z DRIVER all queues busy -2024-09-06T11:06:01.639Z SERIAL » 0x012f00a90201239f0800000016326db7f17b665ff37e1510eaeeced1cd3d3200e (49 bytes) - e627b76f02fb82ad746250000000006ac -2024-09-06T11:06:01.639Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 6 - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x000016326db7f17b665ff37e1510eaeeced1cd3d3200ee627b76f - 02fb82ad746 -2024-09-06T11:06:01.648Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.651Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.652Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.652Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.670Z SERIAL « 0x011d00a90600000100d87f7f7f7f00000300000000030100007f7f7f7f7fea (31 bytes) -2024-09-06T11:06:01.670Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.671Z DRIVER « [REQ] [SendDataBridge] - callback id: 6 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.672Z DRIVER all queues idle -2024-09-06T11:06:01.700Z SERIAL « 0x012c00a8000201239f0801fde52acde7bf333072b0d32512f8d3ed9f97f1cdc01 (46 bytes) - 39676e5a988b7aad1580900d80f -2024-09-06T11:06:01.701Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.702Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0xfde52acde7bf333072b0d32512f8d3ed9f97f1cdc0139676e5a98 - 8b7aad15809 -2024-09-06T11:06:01.704Z DRIVER all queues busy -2024-09-06T11:06:01.705Z SERIAL » 0x010f00a90201039f01fd25000000000718 (17 bytes) -2024-09-06T11:06:01.705Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCNonceGet] - sequence number: 253 -2024-09-06T11:06:01.711Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.713Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.713Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.714Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.731Z SERIAL « 0x011d00a90700000100d77f7f7f7f00000300000000030100007f7f7f7f7fe4 (31 bytes) -2024-09-06T11:06:01.732Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.733Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -41 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.753Z SERIAL « 0x011d00a8000201149f020601e68611a022589a58c26524d318ea85e100d8b0 (31 bytes) -2024-09-06T11:06:01.753Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.754Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 6 - SOS: true - MOS: false - receiver entropy: 0xe68611a022589a58c26524d318ea85e1 -2024-09-06T11:06:01.756Z SERIAL » 0x013000a90201249f03fe0112415291a211d5aa969a469363af95164ec59537fc5 (50 bytes) - d5bc3cb4554f274f1ecc325000000000857 -2024-09-06T11:06:01.756Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCMessageEncapsulation] - │ sequence number: 254 - │ extensions: - │ · type: SPAN - │ sender EI: 0x5291a211d5aa969a469363af95164ec5 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x05f2c238b27c7229b6259f98cf - │ ciphertext: 0x9537fc5d5bc3 - │ auth data: 0x0201f6b51bac0024fe0112415291a211d5aa969a469363af95164ec - 5 - │ auth tag: 0xcb4554f274f1ecc3 - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.766Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.768Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.768Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.769Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.791Z SERIAL « 0x011d00a90800000200d87f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:06:01.792Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.792Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.816Z SERIAL « 0x011b00a8000201129f030700e70b239a84c507dfc350c154a3cc00d8bb (29 bytes) -2024-09-06T11:06:01.817Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.818Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 7 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x77104b86cc59fedb418c8467cb - │ plaintext: 0x9f0501020187 - │ auth tag: 0x07dfc350c154a3cc - │ security class: Temporary - └─[Security2CCKEXReport] - echo: true - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:01.820Z SERIAL » 0x011b00a902010f9f03ff007cbaacabfa461fdc8821662500000000097f (29 bytes) -2024-09-06T11:06:01.820Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCMessageEncapsulation] - │ sequence number: 255 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x40e1bf0161b0dd7eba59f12e31 - │ ciphertext: 0x7cbaac - │ auth data: 0x0201f6b51bac000fff00 - │ auth tag: 0xabfa461fdc882166 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Unauthenticated -2024-09-06T11:06:01.827Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.829Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.830Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.830Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.847Z SERIAL « 0x011d00a90900000100d87f7f7f7f00000300000000030100007f7f7f7f7fe5 (31 bytes) -2024-09-06T11:06:01.848Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.848Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.849Z DRIVER all queues idle -2024-09-06T11:06:01.874Z SERIAL « 0x012800a80002011f9f0308007a731f9da8c841a0629f6bebbcfd350238c0b5697 (42 bytes) - 5293f7455284100d821 -2024-09-06T11:06:01.875Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.876Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 8 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x10304918fbe84810ffe3027341 - │ plaintext: 0x9f0a015369389efa18ee2a4894c7fb48347fea - │ auth tag: 0x6975293f74552841 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Unauthenticated -2024-09-06T11:06:01.877Z DRIVER all queues busy -2024-09-06T11:06:01.878Z SERIAL » 0x010f00a90201039f010025000000000ae8 (17 bytes) -2024-09-06T11:06:01.879Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 10 - └─[Security2CCNonceGet] - sequence number: 0 -2024-09-06T11:06:01.884Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.887Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.887Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.887Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.903Z SERIAL « 0x011d00a90a00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T11:06:01.903Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.904Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.923Z SERIAL « 0x011d00a8000201149f02090152202eaa5dcf9a821fff7e55bf58043200d876 (31 bytes) -2024-09-06T11:06:01.923Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.924Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 9 - SOS: true - MOS: false - receiver entropy: 0x52202eaa5dcf9a821fff7e55bf580432 -2024-09-06T11:06:01.925Z SERIAL » 0x012c00a90201209f030101124163c9abbad297243227bb7640f0c1df134c0ce7d (46 bytes) - 2be38ee26e6e425000000000b3e -2024-09-06T11:06:01.926Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 1 - │ extensions: - │ · type: SPAN - │ sender EI: 0x63c9abbad297243227bb7640f0c1df13 - │ key: 0x44b45806725f2a6ebc3e2641f36f6caa - │ IV: 0x31e3c9f88a6d07b6fa1b7a487e - │ ciphertext: 0x4c0c - │ auth data: 0x0201f6b51bac00200101124163c9abbad297243227bb7640f0c1df1 - 3 - │ auth tag: 0xe7d2be38ee26e6e4 - │ security class: S2_Unauthenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:01.935Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.937Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.938Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.938Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:01.958Z SERIAL « 0x011d00a90b00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:06:01.958Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.959Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:01.959Z DRIVER all queues idle -2024-09-06T11:06:01.977Z SERIAL « 0x010c00a8000201039f010a00d817 (14 bytes) -2024-09-06T11:06:01.977Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.978Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 10 -2024-09-06T11:06:01.978Z DRIVER all queues busy -2024-09-06T11:06:01.979Z SERIAL » 0x012000a90201149f02020128bd40dff9dd41d38759d7bbda0424c605000000000 (34 bytes) - cc4 -2024-09-06T11:06:01.980Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 12 - └─[Security2CCNonceReport] - sequence number: 2 - SOS: true - MOS: false - receiver entropy: 0x28bd40dff9dd41d38759d7bbda0424c6 -2024-09-06T11:06:01.987Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:01.989Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:01.990Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:01.991Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.007Z SERIAL « 0x011d00a90c00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe0 (31 bytes) -2024-09-06T11:06:02.007Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.008Z DRIVER « [REQ] [SendDataBridge] - callback id: 12 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.010Z DRIVER all queues idle -2024-09-06T11:06:02.031Z SERIAL « 0x012a00a8000201219f030b01124149eeea66ad49472de177aaae06fc83ba6e281 (44 bytes) - d9195ec24d3dd5ecc00d8bd -2024-09-06T11:06:02.032Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.032Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 11 - │ extensions: - │ · type: SPAN - │ sender EI: 0x49eeea66ad49472de177aaae06fc83ba - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x9d9b899fcc011daf96936fd0d4 - │ plaintext: 0x9f0c02 - │ auth tag: 0x9195ec24d3dd5ecc - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.034Z DRIVER all queues busy -2024-09-06T11:06:02.035Z SERIAL » 0x011b00a902010f9f030300a35d4b6dacc81a65e9f39c25000000000db3 (29 bytes) -2024-09-06T11:06:02.035Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 13 - └─[Security2CCMessageEncapsulation] - │ sequence number: 3 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x6d755fb03128713909b22ac4a5 - │ ciphertext: 0xa35d4b - │ auth data: 0x0201f6b51bac000f0300 - │ auth tag: 0x6dacc81a65e9f39c - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Authenticated -2024-09-06T11:06:02.042Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.045Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.045Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.045Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.062Z SERIAL « 0x011d00a90d00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe1 (31 bytes) -2024-09-06T11:06:02.063Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.063Z DRIVER « [REQ] [SendDataBridge] - callback id: 13 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.064Z DRIVER all queues idle -2024-09-06T11:06:02.088Z SERIAL « 0x012800a80002011f9f030c00bb00ffbd6830ec49380fa18b3da543a8c688eeb2f (42 bytes) - 25c256536bb8800d8b8 -2024-09-06T11:06:02.089Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.089Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 12 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x12efb6c27224f675626dc98e3e - │ plaintext: 0x9f0a02656ef5c0f020f3c14238c04a1748b7e1 - │ auth tag: 0xb2f25c256536bb88 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Authenticated -2024-09-06T11:06:02.090Z DRIVER all queues busy -2024-09-06T11:06:02.091Z SERIAL » 0x010f00a90201039f010425000000000ee8 (17 bytes) -2024-09-06T11:06:02.091Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 14 - └─[Security2CCNonceGet] - sequence number: 4 -2024-09-06T11:06:02.097Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.099Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.099Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.100Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.116Z SERIAL « 0x011d00a90e00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe2 (31 bytes) -2024-09-06T11:06:02.116Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.117Z DRIVER « [REQ] [SendDataBridge] - callback id: 14 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.137Z SERIAL « 0x011d00a8000201149f020d0111bd97b743c81c935b2802eece0f698d00d826 (31 bytes) -2024-09-06T11:06:02.137Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.138Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 13 - SOS: true - MOS: false - receiver entropy: 0x11bd97b743c81c935b2802eece0f698d -2024-09-06T11:06:02.139Z SERIAL » 0x012c00a90201209f0305011241f2440a66e5c2598eb31421baa7e4f74ead92926 (46 bytes) - cfb9c0db765cf25000000000fe2 -2024-09-06T11:06:02.140Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 15 - └─[Security2CCMessageEncapsulation] - │ sequence number: 5 - │ extensions: - │ · type: SPAN - │ sender EI: 0xf2440a66e5c2598eb31421baa7e4f74e - │ key: 0xdda415256006027530b2d9548c898f93 - │ IV: 0x77f78076a8ba454b8be39ed4d7 - │ ciphertext: 0xad92 - │ auth data: 0x0201f6b51bac002005011241f2440a66e5c2598eb31421baa7e4f74 - e - │ auth tag: 0x926cfb9c0db765cf - │ security class: S2_Authenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:02.149Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.151Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.151Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.152Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.171Z SERIAL « 0x011d00a90f00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:06:02.171Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.172Z DRIVER « [REQ] [SendDataBridge] - callback id: 15 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.173Z DRIVER all queues idle -2024-09-06T11:06:02.189Z SERIAL « 0x010c00a8000201039f010e00d813 (14 bytes) -2024-09-06T11:06:02.190Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.190Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 14 -2024-09-06T11:06:02.191Z DRIVER all queues busy -2024-09-06T11:06:02.192Z SERIAL » 0x012000a90201149f0206015ce666ecdfec4de70ad7539bb456014a05000000001 (34 bytes) - 0fb -2024-09-06T11:06:02.192Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 16 - └─[Security2CCNonceReport] - sequence number: 6 - SOS: true - MOS: false - receiver entropy: 0x5ce666ecdfec4de70ad7539bb456014a -2024-09-06T11:06:02.199Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.202Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.202Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.203Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.220Z SERIAL « 0x011d00a91000000100d87f7f7f7f00000300000000030100007f7f7f7f7ffc (31 bytes) -2024-09-06T11:06:02.220Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.221Z DRIVER « [REQ] [SendDataBridge] - callback id: 16 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.221Z DRIVER all queues idle -2024-09-06T11:06:02.246Z SERIAL « 0x012a00a8000201219f030f0112418e325bd8dad4d37b513cef4cb21dc3ced8044 (44 bytes) - 4fea60c22c869e41d00d805 -2024-09-06T11:06:02.247Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.247Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 15 - │ extensions: - │ · type: SPAN - │ sender EI: 0x8e325bd8dad4d37b513cef4cb21dc3ce - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x65f3e112721d30625d04fcef75 - │ plaintext: 0x9f0c02 - │ auth tag: 0xfea60c22c869e41d - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.248Z DRIVER all queues busy -2024-09-06T11:06:02.249Z SERIAL » 0x011b00a902010f9f030700aea3fa37ba236d7efa9f2a250000000011eb (29 bytes) -2024-09-06T11:06:02.249Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 17 - └─[Security2CCMessageEncapsulation] - │ sequence number: 7 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x296a7a7016d2f5b9cc1bee6c97 - │ ciphertext: 0xaea3fa - │ auth data: 0x0201f6b51bac000f0700 - │ auth tag: 0x37ba236d7efa9f2a - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_AccessControl -2024-09-06T11:06:02.256Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.259Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.259Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.259Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.278Z SERIAL « 0x011d00a91100000100d87f7f7f7f00000300000000030100007f7f7f7f7ffd (31 bytes) -2024-09-06T11:06:02.278Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.279Z DRIVER « [REQ] [SendDataBridge] - callback id: 17 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.280Z DRIVER all queues idle -2024-09-06T11:06:02.304Z SERIAL « 0x012800a80002011f9f031000277e517f2f48795adca604f18c3c03afbcbe3c235 (42 bytes) - adf97ebea850b00d817 -2024-09-06T11:06:02.305Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.306Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 16 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0xf2a09412a5eac0907757890c7b - │ plaintext: 0x9f0a0431132050077310b6f7032f91c79c2eb8 - │ auth tag: 0x235adf97ebea850b - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_AccessControl -2024-09-06T11:06:02.306Z DRIVER all queues busy -2024-09-06T11:06:02.307Z SERIAL » 0x010f00a90201039f0108250000000012f8 (17 bytes) -2024-09-06T11:06:02.307Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 18 - └─[Security2CCNonceGet] - sequence number: 8 -2024-09-06T11:06:02.313Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.315Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.316Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.317Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.334Z SERIAL « 0x011d00a91200000100d87f7f7f7f00000300000000030100007f7f7f7f7ffe (31 bytes) -2024-09-06T11:06:02.334Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.335Z DRIVER « [REQ] [SendDataBridge] - callback id: 18 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.355Z SERIAL « 0x011d00a8000201149f021101763d177bb16b85299b32ff75d44f1c8600d87b (31 bytes) -2024-09-06T11:06:02.356Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.356Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 17 - SOS: true - MOS: false - receiver entropy: 0x763d177bb16b85299b32ff75d44f1c86 -2024-09-06T11:06:02.357Z SERIAL » 0x012c00a90201209f0309011241f8ff20c6f7337e9d0d61e8ae5925f597752cefe (46 bytes) - b2ff06de9b442250000000013aa -2024-09-06T11:06:02.358Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 19 - └─[Security2CCMessageEncapsulation] - │ sequence number: 9 - │ extensions: - │ · type: SPAN - │ sender EI: 0xf8ff20c6f7337e9d0d61e8ae5925f597 - │ key: 0xfca06923982033f3af9dfc7c1e4ad45a - │ IV: 0x9ffcc90d68eca7fd9d90c814d6 - │ ciphertext: 0x752c - │ auth data: 0x0201f6b51bac002009011241f8ff20c6f7337e9d0d61e8ae5925f59 - 7 - │ auth tag: 0xefeb2ff06de9b442 - │ security class: S2_AccessControl - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:02.367Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.370Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.370Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.371Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.390Z SERIAL « 0x011d00a91300000100d87f7f7f7f00000300000000030100007f7f7f7f7fff (31 bytes) -2024-09-06T11:06:02.390Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.391Z DRIVER « [REQ] [SendDataBridge] - callback id: 19 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.391Z DRIVER all queues idle -2024-09-06T11:06:02.407Z SERIAL « 0x010c00a8000201039f011200d80f (14 bytes) -2024-09-06T11:06:02.408Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.408Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 18 -2024-09-06T11:06:02.409Z DRIVER all queues busy -2024-09-06T11:06:02.410Z SERIAL » 0x012000a90201149f020a0124e98c5e0a68b23a67afa3b6037a4e1405000000001 (34 bytes) - 4ed -2024-09-06T11:06:02.410Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 20 - └─[Security2CCNonceReport] - sequence number: 10 - SOS: true - MOS: false - receiver entropy: 0x24e98c5e0a68b23a67afa3b6037a4e14 -2024-09-06T11:06:02.417Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.420Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.421Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.421Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.438Z SERIAL « 0x011d00a91400000100d87f7f7f7f00000300000000030100007f7f7f7f7ff8 (31 bytes) -2024-09-06T11:06:02.438Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.439Z DRIVER « [REQ] [SendDataBridge] - callback id: 20 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.439Z DRIVER all queues idle -2024-09-06T11:06:02.462Z SERIAL « 0x012a00a8000201219f0313011241953713e93e8173a9bf90bc14fc9e3b8a8e808 (44 bytes) - 23a74ac77a52be26c00d82a -2024-09-06T11:06:02.463Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.464Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 19 - │ extensions: - │ · type: SPAN - │ sender EI: 0x953713e93e8173a9bf90bc14fc9e3b8a - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x9fef4b9232ec7fb741cf1852a6 - │ plaintext: 0x9f0c02 - │ auth tag: 0x3a74ac77a52be26c - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.464Z DRIVER all queues busy -2024-09-06T11:06:02.465Z SERIAL » 0x011b00a902010f9f030b0063a31c7a2f98a43aa2b8f725000000001584 (29 bytes) -2024-09-06T11:06:02.466Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 21 - └─[Security2CCMessageEncapsulation] - │ sequence number: 11 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0xe6121ae308a3774662a9aa1ef1 - │ ciphertext: 0x63a31c - │ auth data: 0x0201f6b51bac000f0b00 - │ auth tag: 0x7a2f98a43aa2b8f7 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S0_Legacy -2024-09-06T11:06:02.472Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.475Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.475Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.476Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.493Z SERIAL « 0x011d00a91500000100d87f7f7f7f00000300000000030100007f7f7f7f7ff9 (31 bytes) -2024-09-06T11:06:02.493Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.494Z DRIVER « [REQ] [SendDataBridge] - callback id: 21 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.494Z DRIVER all queues idle -2024-09-06T11:06:02.517Z SERIAL « 0x012800a80002011f9f0314006e6919ed5ab8638d2979744b1a68bbd43284bb535 (42 bytes) - e8763078b4e8900d811 -2024-09-06T11:06:02.518Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.519Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 20 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x00204748ed62431b4aa3e83a48 - │ plaintext: 0x9f0a800102030405060708090a0b0c0d0e0f10 - │ auth tag: 0x535e8763078b4e89 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S0_Legacy -2024-09-06T11:06:02.520Z DRIVER all queues busy -2024-09-06T11:06:02.520Z SERIAL » 0x010f00a90201039f010c250000000016f8 (17 bytes) -2024-09-06T11:06:02.521Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 22 - └─[Security2CCNonceGet] - sequence number: 12 -2024-09-06T11:06:02.526Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.529Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.529Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.530Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.546Z SERIAL « 0x011d00a91600000100d87f7f7f7f00000300000000030100007f7f7f7f7ffa (31 bytes) -2024-09-06T11:06:02.546Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.546Z DRIVER « [REQ] [SendDataBridge] - callback id: 22 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.567Z SERIAL « 0x011d00a8000201149f02150161354b97efb7a67d462d9a888063575600d89c (31 bytes) -2024-09-06T11:06:02.567Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.568Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 21 - SOS: true - MOS: false - receiver entropy: 0x61354b97efb7a67d462d9a8880635756 -2024-09-06T11:06:02.569Z SERIAL » 0x012c00a90201209f030d011241870f126da9776b3cd1412ae3717afa48e06e080 (46 bytes) - c32e190aed6c82500000000174f -2024-09-06T11:06:02.569Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 23 - └─[Security2CCMessageEncapsulation] - │ sequence number: 13 - │ extensions: - │ · type: SPAN - │ sender EI: 0x870f126da9776b3cd1412ae3717afa48 - │ key: 0xece479ca82cc867c1db471e86eab2248 - │ IV: 0x86be5f7ddf89e0a9244e16f9aa - │ ciphertext: 0xe06e - │ auth data: 0x0201f6b51bac00200d011241870f126da9776b3cd1412ae3717afa4 - 8 - │ auth tag: 0x080c32e190aed6c8 - │ security class: S0_Legacy - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:02.578Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.581Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.581Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.581Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.601Z SERIAL « 0x011d00a91700000100d87f7f7f7f00000300000000030100007f7f7f7f7ffb (31 bytes) -2024-09-06T11:06:02.602Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.602Z DRIVER « [REQ] [SendDataBridge] - callback id: 23 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.603Z DRIVER all queues idle -2024-09-06T11:06:02.619Z SERIAL « 0x010c00a8000201039f011600d80b (14 bytes) -2024-09-06T11:06:02.619Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.620Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 22 -2024-09-06T11:06:02.621Z DRIVER all queues busy -2024-09-06T11:06:02.622Z SERIAL » 0x012000a90201149f020e0136f954b3af5bacd7af45140619de332c05000000001 (34 bytes) - 869 -2024-09-06T11:06:02.622Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 24 - └─[Security2CCNonceReport] - sequence number: 14 - SOS: true - MOS: false - receiver entropy: 0x36f954b3af5bacd7af45140619de332c -2024-09-06T11:06:02.630Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.632Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.632Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.633Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.653Z SERIAL « 0x011d00a91800000100d87f7f7f7f00000300000000030100007f7f7f7f7ff4 (31 bytes) -2024-09-06T11:06:02.653Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.654Z DRIVER « [REQ] [SendDataBridge] - callback id: 24 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.655Z DRIVER all queues idle -2024-09-06T11:06:02.677Z SERIAL « 0x012a00a8000201219f03170112413ea321fe7ab403923c0d12693f29ab8e33bfb (44 bytes) - ca625b7a9dad56f5600d8a1 -2024-09-06T11:06:02.678Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.679Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 23 - │ extensions: - │ · type: SPAN - │ sender EI: 0x3ea321fe7ab403923c0d12693f29ab8e - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x800c0f6dcfd1dee8148199ed3c - │ plaintext: 0x9f0c02 - │ auth tag: 0xa625b7a9dad56f56 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:02.679Z DRIVER all queues busy -2024-09-06T11:06:02.680Z SERIAL » 0x011b00a902010f9f030f00ebdd5e55166e9212fcf5e2250000000019c0 (29 bytes) -2024-09-06T11:06:02.680Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 25 - └─[Security2CCMessageEncapsulation] - │ sequence number: 15 - │ key: 0xd303b057e46ed9a7315b3d81d4c79497 - │ IV: 0x09ed6aae312b67ed9b87e9760d - │ ciphertext: 0xebdd5e - │ auth data: 0x0201f6b51bac000f0f00 - │ auth tag: 0x55166e9212fcf5e2 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: false - request complete: true -2024-09-06T11:06:02.688Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.690Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:02.690Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.691Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:02.709Z SERIAL « 0x011d00a91900000100d87f7f7f7f00000300000000030100007f7f7f7f7ff5 (31 bytes) -2024-09-06T11:06:02.710Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.710Z DRIVER « [REQ] [SendDataBridge] - callback id: 25 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:02.711Z DRIVER Security S2 bootstrapping successful with these security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:06:02.711Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:06:02.712Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:06:02.712Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:06:02.717Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:02.718Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:06:02.718Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:02.719Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:06:02.720Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:06:02.721Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:06:02.721Z DRIVER Finished joining network -2024-09-06T11:06:02.721Z DRIVER all queues idle -2024-09-06T11:06:07.377Z DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗ - ╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝ - ███╔╝ █████╗ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ ██║ ███████╗ - ███╔╝ ╚════╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ██ ██║ ╚════██║ - ███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║ - ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝ -2024-09-06T11:06:07.377Z DRIVER version 13.2.0 -2024-09-06T11:06:07.377Z DRIVER -2024-09-06T11:06:07.377Z DRIVER starting driver... -2024-09-06T11:06:07.377Z DRIVER opening serial port /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bri - dge_Controller_ca4d95064355ee118d4d1294de9da576-if00-port0 -2024-09-06T11:06:07.385Z DRIVER serial port opened -2024-09-06T11:06:07.385Z SERIAL » 0x15 (1 bytes) -2024-09-06T11:06:08.392Z DRIVER loading configuration... -2024-09-06T11:06:08.396Z CONFIG version 13.2.0 -2024-09-06T11:06:08.712Z DRIVER beginning interview... -2024-09-06T11:06:08.713Z DRIVER added request handler for AddNodeToNetwork (0x4a)... - 1 registered -2024-09-06T11:06:08.713Z DRIVER added request handler for RemoveNodeFromNetwork (0x4b)... - 1 registered -2024-09-06T11:06:08.713Z DRIVER added request handler for ReplaceFailedNode (0x63)... - 1 registered -2024-09-06T11:06:08.713Z DRIVER added request handler for SetLearnMode (0x50)... - 1 registered -2024-09-06T11:06:08.713Z CNTRLR querying Serial API capabilities... -2024-09-06T11:06:08.714Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:06:08.715Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:06:08.726Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.727Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:06:08.727Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.728Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:06:08.729Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:06:08.729Z CNTRLR querying additional controller information... -2024-09-06T11:06:08.730Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:06:08.730Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:06:08.739Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.739Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:06:08.740Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.740Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:06:08.741Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:06:08.741Z CNTRLR querying version info... -2024-09-06T11:06:08.742Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:06:08.742Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:06:08.747Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.748Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:06:08.748Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.749Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:06:08.749Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:06:08.750Z CNTRLR querying protocol version info... -2024-09-06T11:06:08.751Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:06:08.751Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:06:08.757Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.758Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:06:08.758Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.758Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:06:08.759Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:06:08.759Z CNTRLR querying controller capabilities... -2024-09-06T11:06:08.760Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:06:08.760Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:06:08.765Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.766Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:06:08.766Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.766Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:06:08.767Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:06:08.767Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:06:08.768Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:06:08.769Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:06:08.775Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.775Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:06:08.775Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.776Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:06:08.776Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:06:08.776Z CNTRLR querying max. payload size... -2024-09-06T11:06:08.777Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:06:08.777Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:06:08.783Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.783Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:06:08.783Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.784Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:06:08.784Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:06:08.785Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:06:08.785Z CNTRLR Querying configured RF region... -2024-09-06T11:06:08.785Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:06:08.786Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:06:08.790Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.791Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:06:08.791Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.791Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:06:08.792Z CNTRLR The controller is using RF region Europe -2024-09-06T11:06:08.792Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:06:08.793Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:06:08.793Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:06:08.798Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.799Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:06:08.799Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.799Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:06:08.800Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:06:08.800Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:06:08.800Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:06:08.801Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:06:08.806Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.806Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:06:08.806Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.807Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:06:08.807Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:06:08.808Z CNTRLR Performing soft reset... -2024-09-06T11:06:08.808Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:06:08.809Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:06:08.812Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.813Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:06:08.813Z DRIVER all queues idle -2024-09-06T11:06:08.928Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:06:08.930Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.931Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:06:08.934Z CNTRLR reconnected and restarted -2024-09-06T11:06:08.934Z CNTRLR Starting hardware watchdog... -2024-09-06T11:06:08.936Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:06:08.937Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:06:08.938Z DRIVER all queues busy -2024-09-06T11:06:08.939Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:06:08.940Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:06:08.945Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:06:08.946Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:06:08.947Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.951Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.951Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:08.952Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.952Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:08.953Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:06:08.953Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:06:08.954Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:06:08.959Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.959Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:08.960Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.960Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:08.961Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:06:08.961Z CNTRLR querying controller IDs... -2024-09-06T11:06:08.961Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:06:08.962Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:06:08.966Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.967Z SERIAL « 0x01080120f6b51bac0220 (10 bytes) -2024-09-06T11:06:08.967Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.968Z DRIVER « [RES] [GetControllerId] - home ID: 0xf6b51bac - own node ID: 2 -2024-09-06T11:06:08.968Z CNTRLR received controller IDs: - home ID: 0xf6b51bac - own node ID: 2 -2024-09-06T11:06:08.969Z CNTRLR Enabling TX status report... -2024-09-06T11:06:08.969Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:06:08.970Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:06:08.975Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.975Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:06:08.976Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.976Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:06:08.977Z CNTRLR Enabling TX status report successful... -2024-09-06T11:06:08.977Z CNTRLR finding SUC... -2024-09-06T11:06:08.977Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:06:08.977Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:06:08.982Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:08.982Z SERIAL « 0x0104015601ad (6 bytes) -2024-09-06T11:06:08.982Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:08.983Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x01 -2024-09-06T11:06:08.983Z CNTRLR SUC has node ID 1 -2024-09-06T11:06:08.984Z DRIVER all queues idle -2024-09-06T11:06:08.995Z DRIVER Cache file for homeId 0xf6b51bac found, attempting to restore the network from - cache... -2024-09-06T11:06:09.003Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:06:09.003Z DRIVER Restoring the network from cache was successful! -2024-09-06T11:06:09.004Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:06:09.004Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:06:09.004Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:06:09.005Z CNTRLR [Node 002] [~] [Manufacturer Specific] manufacturerId: 0 => 0 -2024-09-06T11:06:09.005Z CNTRLR [Node 002] [~] [Manufacturer Specific] productType: 4 => 4 -2024-09-06T11:06:09.005Z CNTRLR [Node 002] [~] [Manufacturer Specific] productId: 4 => 4 -2024-09-06T11:06:09.006Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:06:09.006Z CNTRLR [Node 002] [~] [Version] firmwareVersions: 7.22 => 7.22 -2024-09-06T11:06:09.006Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:06:09.006Z CNTRLR [Node 002] [~] [Version] zWaveProtocolVersion: "7.22.1" => "7.22.1" -2024-09-06T11:06:09.006Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:06:09.006Z CNTRLR [Node 002] [~] [Version] sdkVersion: "7.22.1" => "7.22.1" -2024-09-06T11:06:09.007Z CNTRLR Interview completed -2024-09-06T11:06:09.007Z DRIVER Network key for S0 found in cache, enabling S0 security manager... -2024-09-06T11:06:09.007Z DRIVER At least one network key for S2 found in cache, enabling S2 security manager.. - . -2024-09-06T11:06:09.009Z DRIVER driver ready -2024-09-06T11:06:09.010Z CNTRLR [Node 002] Beginning interview - last completed stage: None -2024-09-06T11:06:09.010Z CNTRLR [Node 002] new node, doing a full interview... -2024-09-06T11:06:09.010Z CNTRLR » [Node 002] querying protocol info... -2024-09-06T11:06:09.011Z DRIVER all queues busy -2024-09-06T11:06:09.012Z SERIAL » 0x0104004102b8 (6 bytes) -2024-09-06T11:06:09.012Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x02 -2024-09-06T11:06:09.018Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.018Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:06:09.019Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.019Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:06:09.020Z CNTRLR « [Node 002] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:06:09.020Z CNTRLR [Node 002] Interview stage completed: ProtocolInfo -2024-09-06T11:06:09.021Z DRIVER all queues idle -2024-09-06T11:06:09.023Z CNTRLR [Node 002] Embedded device config loaded -2024-09-06T11:06:09.023Z CNTRLR [Node 002] Interview stage completed: OverwriteConfig -2024-09-06T11:06:09.023Z CNTRLR [Node 002] Interview completed -2024-09-06T11:06:09.024Z CNTRLR [Node 002] The node is ready to be used -2024-09-06T11:06:09.024Z CNTRLR [Node 002] The node is alive. -2024-09-06T11:06:09.024Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:06:09.025Z DRIVER all queues busy -2024-09-06T11:06:09.025Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:06:09.026Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:06:09.031Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.032Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:06:09.032Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.032Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:06:09.033Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:06:09.033Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:06:09.033Z CNTRLR Determining node status: 1 -2024-09-06T11:06:09.033Z CNTRLR » [Node 001] pinging the node... -2024-09-06T11:06:09.035Z SERIAL » 0x010d00a9020101002500000000017d (15 bytes) -2024-09-06T11:06:09.036Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 1 - └─[NoOperationCC] -2024-09-06T11:06:09.042Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:09.044Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:09.044Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.044Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:09.064Z SERIAL « 0x011d00a90100000100d87f7f7f7f00000300000000030100007f7f7f7f7fed (31 bytes) -2024-09-06T11:06:09.065Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:09.065Z DRIVER « [REQ] [SendDataBridge] - callback id: 1 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:09.067Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:06:09.067Z CNTRLR « [Node 001] ping successful -2024-09-06T11:06:09.067Z DRIVER all queues idle -2024-09-06T11:06:14.009Z CNTRLR Updating the controller NIF... -2024-09-06T11:06:14.010Z DRIVER all queues busy -2024-09-06T11:06:14.011Z SERIAL » 0x010f0003010100085e989f556c568f7436 (17 bytes) -2024-09-06T11:06:14.012Z DRIVER » [REQ] [SetApplicationNodeInformation] - is listening: true - generic device class: 0x01 - specific device class: 0x00 - supported CCs: - · Z-Wave Plus Info - · Security - · Security 2 - · Transport Service - · Supervision - · CRC-16 Encapsulation - · Multi Command - · Inclusion Controller - controlled CCs: -2024-09-06T11:06:14.018Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.018Z CNTRLR performing hard reset... -2024-09-06T11:06:14.019Z SERIAL » 0x0104004202bb (6 bytes) -2024-09-06T11:06:14.020Z DRIVER » [REQ] [HardReset] - callback id: 2 -2024-09-06T11:06:14.024Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.045Z SERIAL « 0x0104004202bb (6 bytes) -2024-09-06T11:06:14.046Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.048Z DRIVER « [REQ] [HardReset] - callback id: 2 -2024-09-06T11:06:14.049Z CNTRLR hard reset succeeded -2024-09-06T11:06:14.050Z CNTRLR querying Serial API capabilities... -2024-09-06T11:06:14.051Z SERIAL » 0x01030007fb (5 bytes) -2024-09-06T11:06:14.052Z DRIVER » [REQ] [GetSerialApiCapabilities] -2024-09-06T11:06:14.061Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.062Z SERIAL « 0x012b01070716000000040004f6873e88cf2bc05ffbd7fde09700008000808680b (45 bytes) - a0500700000ee7fc000000041 -2024-09-06T11:06:14.063Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.064Z DRIVER « [RES] [GetSerialApiCapabilities] - payload: 0x0716000000040004f6873e88cf2bc05ffbd7fde09700008000808680ba0500700 - 000ee7fc0000000 -2024-09-06T11:06:14.066Z CNTRLR received API capabilities: - firmware version: 7.22 - manufacturer ID: 0x00 - product type: 0x04 - product ID: 0x04 - supported functions: - · GetSerialApiInitData (0x02) - · SetApplicationNodeInformation (0x03) - · GetControllerCapabilities (0x05) - · SetSerialApiTimeouts (0x06) - · GetSerialApiCapabilities (0x07) - · SoftReset (0x08) - · GetProtocolVersion (0x09) - · SerialAPIStarted (0x0a) - · SerialAPISetup (0x0b) - · SetRFReceiveMode (0x10) - · SendNodeInformation (0x12) - · SendData (0x13) - · SendDataMulticast (0x14) - · GetControllerVersion (0x15) - · SendDataAbort (0x16) - · FUNC_ID_ZW_GET_RANDOM (0x1c) - · GetControllerId (0x20) - · UNKNOWN_FUNC_MEMORY_GET_BYTE (0x21) - · UNKNOWN_FUNC_MEMORY_PUT_BYTE (0x22) - · UNKNOWN_FUNC_MEMORY_GET_BUFFER (0x23) - · UNKNOWN_FUNC_MEMORY_PUT_BUFFER (0x24) - · EnterBootloader (0x27) - · UNKNOWN_FUNC_UNKNOWN_0x28 (0x28) - · GetNVMId (0x29) - · ExtNVMReadLongBuffer (0x2a) - · ExtNVMReadLongByte (0x2c) - · NVMOperations (0x2e) - · ClearTxTimers (0x37) - · GetTxTimers (0x38) - · ClearNetworkStats (0x39) - · GetNetworkStats (0x3a) - · GetBackgroundRSSI (0x3b) - · SetListenBeforeTalkThreshold (0x3c) - · ExtendedNVMOperations (0x3d) - · RemoveSpecificNodeIdFromNetwork (0x3f) - · GetNodeProtocolInfo (0x41) - · HardReset (0x42) - · FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE (0x44) - · FUNC_ID_ZW_REPLICATION_SEND_DATA (0x45) - · AssignReturnRoute (0x46) - · DeleteReturnRoute (0x47) - · RequestNodeNeighborUpdate (0x48) - · ApplicationUpdateRequest (0x49) - · AddNodeToNetwork (0x4a) - · RemoveNodeFromNetwork (0x4b) - · AddPrimaryController (0x4d) - · AssignPriorityReturnRoute (0x4f) - · SetLearnMode (0x50) - · AssignSUCReturnRoute (0x51) - · RequestNetworkUpdate (0x53) - · SetSUCNodeId (0x54) - · DeleteSUCReturnRoute (0x55) - · GetSUCNodeId (0x56) - · SendSUCNodeId (0x57) - · AssignPrioritySUCReturnRoute (0x58) - · ExploreRequestInclusion (0x5e) - · ExploreRequestExclusion (0x5f) - · RequestNodeInfo (0x60) - · RemoveFailedNode (0x61) - · IsFailedNode (0x62) - · ReplaceFailedNode (0x63) - · undefined (0x65) - · RequestProtocolCCEncryption (0x68) - · GetRoutingInfo (0x80) - · LockUnlockLastRoute (0x90) - · GetPriorityRoute (0x92) - · SetPriorityRoute (0x93) - · UNKNOWN_FUNC_UNKNOWN_0x98 (0x98) - · VirtualNodeSetNodeInfo (0xa0) - · VirtualNodeSendNodeInfo (0xa2) - · VirtualNodeSetLearnMode (0xa4) - · GetVirtualNodes (0xa5) - · IsVirtualNode (0xa6) - · BridgeApplicationCommand (0xa8) - · SendDataBridge (0xa9) - · SendDataMulticastBridge (0xab) - · GetLibrary (0xbd) - · SendTestFrame (0xbe) - · GetProtocolStatus (0xbf) - · StartWatchdog (0xd2) - · StopWatchdog (0xd3) - · SetMaximumRoutingAttempts (0xd4) - · SetMaxSmartStartInclusionRequestInterval (0xd6) - · undefined (0xd7) - · undefined (0xd8) - · Shutdown (0xd9) - · GetLongRangeNodes (0xda) - · GetLongRangeChannel (0xdb) - · SetLongRangeChannel (0xdc) - · SetLongRangeShadowNodeIDs (0xdd) - · Proprietary_DE (0xde) - · Proprietary_DF (0xdf) - · Proprietary_E7 (0xe7) - · Proprietary_E8 (0xe8) -2024-09-06T11:06:14.066Z CNTRLR querying additional controller information... -2024-09-06T11:06:14.068Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:06:14.068Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:06:14.078Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.079Z SERIAL « 0x012501020a001d010000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c7 -2024-09-06T11:06:14.080Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.081Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d01000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:06:14.082Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1 -2024-09-06T11:06:14.083Z CNTRLR querying version info... -2024-09-06T11:06:14.084Z SERIAL » 0x01030015e9 (5 bytes) -2024-09-06T11:06:14.085Z DRIVER » [REQ] [GetControllerVersion] -2024-09-06T11:06:14.091Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.092Z SERIAL « 0x011001155a2d5761766520372e3232000797 (18 bytes) -2024-09-06T11:06:14.092Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.094Z DRIVER « [RES] [GetControllerVersion] - payload: 0x5a2d5761766520372e32320007 -2024-09-06T11:06:14.095Z CNTRLR received version info: - controller type: Bridge Controller - library version: Z-Wave 7.22 -2024-09-06T11:06:14.095Z CNTRLR querying protocol version info... -2024-09-06T11:06:14.097Z SERIAL » 0x01030009f5 (5 bytes) -2024-09-06T11:06:14.098Z DRIVER » [REQ] [GetProtocolVersion] -2024-09-06T11:06:14.104Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.106Z SERIAL « 0x0119010900071601abcd63636639623665613165616566313162c3 (27 bytes) -2024-09-06T11:06:14.106Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.107Z DRIVER « [RES] [GetProtocolVersion] - payload: 0x00071601abcd63636639623665613165616566313162 -2024-09-06T11:06:14.109Z CNTRLR received protocol version info: - protocol type: Z-Wave - protocol version: 7.22.1 - appl. framework build no.: 43981 - git commit hash: 63636639623665613165616566313162 -2024-09-06T11:06:14.109Z CNTRLR querying controller capabilities... -2024-09-06T11:06:14.111Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:06:14.111Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:06:14.117Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.118Z SERIAL « 0x0104010528d7 (6 bytes) -2024-09-06T11:06:14.118Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.119Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x28 -2024-09-06T11:06:14.121Z CNTRLR received controller capabilities: - controller role: Primary - is the SUC: false - started this network: true - SIS is present: false - was real primary: true -2024-09-06T11:06:14.121Z CNTRLR querying serial API setup capabilities... -2024-09-06T11:06:14.123Z SERIAL » 0x0104000b01f1 (6 bytes) -2024-09-06T11:06:14.124Z DRIVER » [REQ] [SerialAPISetup] - command: GetSupportedCommands - payload: 0x01 -2024-09-06T11:06:14.130Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.131Z SERIAL « 0x0116010b01ff9f8007800000008000000000000000800085 (24 bytes) -2024-09-06T11:06:14.132Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.133Z DRIVER « [RES] [SerialAPISetup] - command: GetSupportedCommands - payload: 0xff9f80078000000080000000000000008000 -2024-09-06T11:06:14.134Z CNTRLR supported serial API setup commands: - · GetSupportedCommands - · SetTxStatusReport - · SetLongRangeMaximumTxPower - · SetPowerlevel - · GetLongRangeMaximumTxPower - · GetPowerlevel - · GetMaximumPayloadSize - · GetLongRangeMaximumPayloadSize - · SetPowerlevel16Bit - · GetPowerlevel16Bit - · GetRFRegion - · SetRFRegion - · SetNodeIDType -2024-09-06T11:06:14.135Z CNTRLR querying max. payload size... -2024-09-06T11:06:14.136Z SERIAL » 0x0104000b10e0 (6 bytes) -2024-09-06T11:06:14.137Z DRIVER » [REQ] [SerialAPISetup] - command: GetMaximumPayloadSize - payload: 0x10 -2024-09-06T11:06:14.141Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.142Z SERIAL « 0x0105010b102ece (7 bytes) -2024-09-06T11:06:14.143Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.144Z DRIVER « [RES] [SerialAPISetup] - command: GetMaximumPayloadSize - maximum payload size: 46 bytes -2024-09-06T11:06:14.144Z CNTRLR maximum payload size: 46 bytes -2024-09-06T11:06:14.145Z CNTRLR supported Z-Wave features: - · SmartStart -2024-09-06T11:06:14.145Z CNTRLR Querying configured RF region... -2024-09-06T11:06:14.146Z SERIAL » 0x0104000b20d0 (6 bytes) -2024-09-06T11:06:14.146Z DRIVER » [REQ] [SerialAPISetup] - command: GetRFRegion - payload: 0x20 -2024-09-06T11:06:14.152Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.153Z SERIAL « 0x0105010b2000d0 (7 bytes) -2024-09-06T11:06:14.153Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.154Z DRIVER « [RES] [SerialAPISetup] - command: GetRFRegion - region: Europe -2024-09-06T11:06:14.155Z CNTRLR The controller is using RF region Europe -2024-09-06T11:06:14.155Z CNTRLR Querying configured max. Long Range powerlevel... -2024-09-06T11:06:14.156Z SERIAL » 0x0104000b05f5 (6 bytes) -2024-09-06T11:06:14.156Z DRIVER » [REQ] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - payload: 0x05 -2024-09-06T11:06:14.162Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.162Z SERIAL « 0x0106010b05008c7a (8 bytes) -2024-09-06T11:06:14.162Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.163Z DRIVER « [RES] [SerialAPISetup] - command: GetLongRangeMaximumTxPower - max. TX power (LR): 14.0 dBm -2024-09-06T11:06:14.164Z CNTRLR The max. LR powerlevel is 14.0 dBm -2024-09-06T11:06:14.164Z CNTRLR Querying configured Long Range channel information... -2024-09-06T11:06:14.165Z SERIAL » 0x010300db27 (5 bytes) -2024-09-06T11:06:14.165Z DRIVER » [REQ] [GetLongRangeChannel] -2024-09-06T11:06:14.170Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.170Z SERIAL « 0x010501db001030 (7 bytes) -2024-09-06T11:06:14.170Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.171Z DRIVER « [RES] [GetLongRangeChannel] - payload: 0x0010 -2024-09-06T11:06:14.171Z CNTRLR received Z-Wave Long Range channel information: - channel: Unsupported - supports auto channel selection: true -2024-09-06T11:06:14.171Z CNTRLR Performing soft reset... -2024-09-06T11:06:14.172Z SERIAL » 0x01030008f4 (5 bytes) -2024-09-06T11:06:14.172Z DRIVER » [REQ] [SoftReset] -2024-09-06T11:06:14.176Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.177Z CNTRLR Waiting for the controller to reconnect... -2024-09-06T11:06:14.177Z DRIVER all queues idle -2024-09-06T11:06:14.283Z SERIAL « 0x0116000a0700010100085e989f556c568f7400031d00003f (24 bytes) -2024-09-06T11:06:14.284Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.285Z DRIVER « [REQ] [SerialAPIStarted] - wake up reason: SoftwareReset - watchdog enabled: false - generic device class: 0x01 - specific device class: 0x00 - always listening: false - supports Long Range: false -2024-09-06T11:06:14.286Z CNTRLR reconnected and restarted -2024-09-06T11:06:14.286Z CNTRLR Starting hardware watchdog... -2024-09-06T11:06:14.287Z CNTRLR Switching serial API to 16-bit node IDs... -2024-09-06T11:06:14.287Z CNTRLR Switching serial API to 8-bit node IDs... -2024-09-06T11:06:14.288Z DRIVER all queues busy -2024-09-06T11:06:14.289Z SERIAL » 0x010300d22e (5 bytes) -2024-09-06T11:06:14.290Z DRIVER » [REQ] [StartWatchdog] -2024-09-06T11:06:14.293Z SERIAL » 0x0105000b800273 (7 bytes) -2024-09-06T11:06:14.293Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 16 bit -2024-09-06T11:06:14.295Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.299Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.299Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:14.299Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.300Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:14.301Z CNTRLR Switching to 16-bit node IDs successful -2024-09-06T11:06:14.301Z SERIAL » 0x0105000b800170 (7 bytes) -2024-09-06T11:06:14.302Z DRIVER » [REQ] [SerialAPISetup] - command: SetNodeIDType - node ID type: 8 bit -2024-09-06T11:06:14.307Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.308Z SERIAL « 0x0105010b800171 (7 bytes) -2024-09-06T11:06:14.308Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.309Z DRIVER « [RES] [SerialAPISetup] - command: SetNodeIDType - success: true -2024-09-06T11:06:14.309Z CNTRLR Switching to 8-bit node IDs successful -2024-09-06T11:06:14.309Z CNTRLR querying controller IDs... -2024-09-06T11:06:14.310Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:06:14.310Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:06:14.315Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.316Z SERIAL « 0x01080120d8fff15a015b (10 bytes) -2024-09-06T11:06:14.316Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.316Z DRIVER « [RES] [GetControllerId] - home ID: 0xd8fff15a - own node ID: 1 -2024-09-06T11:06:14.317Z CNTRLR received controller IDs: - home ID: 0xd8fff15a - own node ID: 1 -2024-09-06T11:06:14.317Z CNTRLR Enabling TX status report... -2024-09-06T11:06:14.318Z SERIAL » 0x0105000b02ff0c (7 bytes) -2024-09-06T11:06:14.318Z DRIVER » [REQ] [SerialAPISetup] - command: SetTxStatusReport - enabled: true -2024-09-06T11:06:14.324Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.325Z SERIAL « 0x0105010b0201f3 (7 bytes) -2024-09-06T11:06:14.325Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.325Z DRIVER « [RES] [SerialAPISetup] - command: SetTxStatusReport - success: true -2024-09-06T11:06:14.326Z CNTRLR Enabling TX status report successful... -2024-09-06T11:06:14.326Z CNTRLR finding SUC... -2024-09-06T11:06:14.326Z SERIAL » 0x01030056aa (5 bytes) -2024-09-06T11:06:14.327Z DRIVER » [REQ] [GetSUCNodeId] -2024-09-06T11:06:14.331Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.332Z SERIAL « 0x0104015600ac (6 bytes) -2024-09-06T11:06:14.332Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.332Z DRIVER « [RES] [GetSUCNodeId] - payload: 0x00 -2024-09-06T11:06:14.333Z CNTRLR No SUC present in the network -2024-09-06T11:06:14.333Z CNTRLR There is no SUC/SIS in the network - promoting ourselves... -2024-09-06T11:06:14.333Z SERIAL » 0x01080054010125010384 (10 bytes) -2024-09-06T11:06:14.333Z DRIVER » [REQ] [SetSUCNodeId] - payload: 0x0101250103 -2024-09-06T11:06:14.340Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.341Z SERIAL « 0x0104015401af (6 bytes) -2024-09-06T11:06:14.341Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.341Z DRIVER « [RES] [SetSUCNodeId] - was executed: true -2024-09-06T11:06:14.342Z CNTRLR Promotion to SUC/SIS succeeded. -2024-09-06T11:06:14.342Z DRIVER all queues idle -2024-09-06T11:06:14.346Z CNTRLR [Node 001] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:06:14.346Z CNTRLR [Node 001] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [Version] firmwareVersions: metadata updated -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [Version] sdkVersion: metadata updated -2024-09-06T11:06:14.347Z CNTRLR [Node 001] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:06:14.347Z CNTRLR Interview completed -2024-09-06T11:06:14.347Z DRIVER Network key for S0 configured, enabling S0 security manager... -2024-09-06T11:06:14.348Z DRIVER At least one network key for S2 configured, enabling S2 security manager... -2024-09-06T11:06:14.348Z DRIVER At least one network key for Z-Wave Long Range configured, enabling security m - anager... -2024-09-06T11:06:14.348Z DRIVER driver ready -2024-09-06T11:06:14.349Z CNTRLR [Node 001] Beginning interview - last completed stage: None -2024-09-06T11:06:14.349Z CNTRLR [Node 001] new node, doing a full interview... -2024-09-06T11:06:14.349Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:06:14.349Z DRIVER all queues busy -2024-09-06T11:06:14.349Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:06:14.350Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:06:14.355Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:14.355Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:06:14.356Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:14.356Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:06:14.357Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:06:14.357Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:06:14.358Z DRIVER all queues idle -2024-09-06T11:06:14.359Z CNTRLR [Node 001] Embedded device config loaded -2024-09-06T11:06:14.359Z CNTRLR [Node 001] Interview stage completed: OverwriteConfig -2024-09-06T11:06:14.359Z CNTRLR [Node 001] Interview completed -2024-09-06T11:06:14.359Z CNTRLR [Node 001] The node is ready to be used -2024-09-06T11:06:14.360Z CNTRLR All nodes are ready to be used -2024-09-06T11:06:14.360Z CNTRLR [Node 001] The node is alive. -2024-09-06T11:06:19.052Z DRIVER all queues busy -2024-09-06T11:06:19.054Z SERIAL » 0x0105005081042f (7 bytes) -2024-09-06T11:06:19.055Z DRIVER » [REQ] [SetLearnMode] - callback id: 4 - intent: Inclusion -2024-09-06T11:06:19.060Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.061Z SERIAL « 0x0104015001ab (6 bytes) -2024-09-06T11:06:19.062Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.063Z DRIVER « [RES] [SetLearnMode] - success: true -2024-09-06T11:06:19.065Z DRIVER all queues idle -2024-09-06T11:06:19.232Z SERIAL « 0x0107005004010200af (9 bytes) -2024-09-06T11:06:19.233Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.234Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: Started - assigned node id: 2 -2024-09-06T11:06:19.234Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:06:19.234Z DRIVER 1 handler registered! -2024-09-06T11:06:19.234Z DRIVER invoking handler #0 -2024-09-06T11:06:19.234Z DRIVER the message was handled -2024-09-06T11:06:19.358Z DRIVER all queues busy -2024-09-06T11:06:19.360Z SERIAL » 0x0103003bc7 (5 bytes) -2024-09-06T11:06:19.361Z DRIVER » [REQ] [GetBackgroundRSSI] -2024-09-06T11:06:19.366Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.367Z SERIAL « 0x0107013b8080807f3d (9 bytes) -2024-09-06T11:06:19.367Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.369Z DRIVER « [RES] [GetBackgroundRSSI] - channel 0: -128 dBm - channel 1: -128 dBm - channel 2: -128 dBm - channel 3: N/A -2024-09-06T11:06:19.370Z DRIVER all queues idle -2024-09-06T11:06:19.753Z SERIAL « 0x01060049100100a1 (8 bytes) -2024-09-06T11:06:19.754Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.754Z DRIVER « [REQ] [ApplicationUpdateRequest] - type: SUC_IdChanged - SUC node ID: 1 -2024-09-06T11:06:19.769Z SERIAL « 0x0107005004050200ab (9 bytes) -2024-09-06T11:06:19.770Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.770Z DRIVER « [REQ] [SetLearnMode] - callback id: 4 - status: ProtocolDone - assigned node id: 2 -2024-09-06T11:06:19.770Z DRIVER handling request SetLearnMode (80) -2024-09-06T11:06:19.771Z DRIVER 1 handler registered! -2024-09-06T11:06:19.771Z DRIVER invoking handler #0 -2024-09-06T11:06:19.771Z DRIVER the message was handled -2024-09-06T11:06:19.772Z DRIVER waiting for security bootstrapping... -2024-09-06T11:06:19.772Z CNTRLR querying controller IDs... -2024-09-06T11:06:19.773Z DRIVER all queues busy -2024-09-06T11:06:19.773Z SERIAL » 0x01030020dc (5 bytes) -2024-09-06T11:06:19.774Z DRIVER » [REQ] [GetControllerId] -2024-09-06T11:06:19.779Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.779Z SERIAL « 0x01080120e3701855020a (10 bytes) -2024-09-06T11:06:19.779Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.780Z DRIVER « [RES] [GetControllerId] - home ID: 0xe3701855 - own node ID: 2 -2024-09-06T11:06:19.780Z CNTRLR received controller IDs: - home ID: 0xe3701855 - own node ID: 2 -2024-09-06T11:06:19.780Z DRIVER Joined network with home ID 0xe3701855, switching to new network cache... -2024-09-06T11:06:19.781Z CNTRLR querying controller capabilities... -2024-09-06T11:06:19.781Z SERIAL » 0x01030005f9 (5 bytes) -2024-09-06T11:06:19.782Z DRIVER » [REQ] [GetControllerCapabilities] -2024-09-06T11:06:19.787Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.788Z SERIAL « 0x0104010506f9 (6 bytes) -2024-09-06T11:06:19.788Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.788Z DRIVER « [RES] [GetControllerCapabilities] - payload: 0x06 -2024-09-06T11:06:19.789Z CNTRLR received controller capabilities: - controller role: Inclusion - is the SUC: false - started this network: false - SIS is present: true - was real primary: false -2024-09-06T11:06:19.789Z CNTRLR querying additional controller information... -2024-09-06T11:06:19.790Z SERIAL » 0x01030002fe (5 bytes) -2024-09-06T11:06:19.790Z DRIVER » [REQ] [GetSerialApiInitData] -2024-09-06T11:06:19.798Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.799Z SERIAL « 0x012501020a001d030000000000000000000000000000000000000000000000000 (39 bytes) - 00000000800c5 -2024-09-06T11:06:19.799Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.799Z DRIVER « [RES] [GetSerialApiInitData] - payload: 0x0a001d03000000000000000000000000000000000000000000000000000000000 - 800 -2024-09-06T11:06:19.800Z CNTRLR received additional controller information: - Z-Wave API version: 1 (official) - Z-Wave chip type: EFR32ZG23 / ZGM230S - node type Controller - controller role: primary - controller is the SIS: false - controller supports timers: false - Z-Wave Classic nodes: 1, 2 -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [Manufacturer Specific] manufacturerId: metadata updated -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [Manufacturer Specific] productType: metadata updated -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [Manufacturer Specific] productId: metadata updated -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [+] [Manufacturer Specific] manufacturerId: 0 -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [+] [Manufacturer Specific] productType: 4 -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [+] [Manufacturer Specific] productId: 4 -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [Version] firmwareVersions: metadata updated -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [+] [Version] firmwareVersions: 7.22 -2024-09-06T11:06:19.801Z CNTRLR [Node 002] [Version] zWaveProtocolVersion: metadata updated -2024-09-06T11:06:19.802Z CNTRLR [Node 002] [+] [Version] zWaveProtocolVersion: "7.22.1" -2024-09-06T11:06:19.802Z CNTRLR [Node 002] [Version] sdkVersion: metadata updated -2024-09-06T11:06:19.802Z CNTRLR [Node 002] [+] [Version] sdkVersion: "7.22.1" -2024-09-06T11:06:19.802Z CNTRLR Interview completed -2024-09-06T11:06:19.802Z DRIVER all queues idle -2024-09-06T11:06:19.981Z SERIAL « 0x010b00a8000201029f0400d81e (13 bytes) -2024-09-06T11:06:19.982Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.983Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXGet] -2024-09-06T11:06:19.983Z CNTRLR [Node 001] Received S2 bootstrap initiation, requesting keys: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy - client-side auth: false -2024-09-06T11:06:19.985Z DRIVER all queues busy -2024-09-06T11:06:19.985Z SERIAL » 0x011200a90201069f05000201872500000000057f (20 bytes) -2024-09-06T11:06:19.986Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 5 - └─[Security2CCKEXReport] - echo: false - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:06:19.991Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:19.994Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:19.994Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:19.995Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.011Z SERIAL « 0x011d00a90500000100d87f7f7f7f00000300000000030100007f7f7f7f7fe9 (31 bytes) -2024-09-06T11:06:20.012Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.012Z DRIVER « [REQ] [SendDataBridge] - callback id: 5 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.014Z DRIVER all queues idle -2024-09-06T11:06:20.029Z SERIAL « 0x010f00a8000201069f060002018700d898 (17 bytes) -2024-09-06T11:06:20.030Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.031Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCKEXSet] - echo: false - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.034Z DRIVER all queues busy -2024-09-06T11:06:20.035Z SERIAL » 0x012f00a90201239f08000000bf5edfebd6784f403f15f121756d2df395bdbcf11 (49 bytes) - 1e387a444fb6afab70125000000000688 -2024-09-06T11:06:20.036Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 6 - └─[Security2CCPublicKeyReport] - is including node: false - public key: 0x0000bf5edfebd6784f403f15f121756d2df395bdbcf111e387a44 - 4fb6afab701 -2024-09-06T11:06:20.045Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.048Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.048Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.049Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.068Z SERIAL « 0x011d00a90600000100d87f7f7f7f00000300000000030100007f7f7f7f7fea (31 bytes) -2024-09-06T11:06:20.069Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.069Z DRIVER « [REQ] [SendDataBridge] - callback id: 6 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.070Z DRIVER all queues idle -2024-09-06T11:06:20.099Z SERIAL « 0x012c00a8000201239f0801de9b0ee1328c7c3b73cfdf9f874a4121e9c401af739 (46 bytes) - 08e305bb4031efbc3770500d871 -2024-09-06T11:06:20.100Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.100Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCPublicKeyReport] - is including node: true - public key: 0xde9b0ee1328c7c3b73cfdf9f874a4121e9c401af73908e305bb40 - 31efbc37705 -2024-09-06T11:06:20.102Z DRIVER all queues busy -2024-09-06T11:06:20.104Z SERIAL » 0x010f00a90201039f01f425000000000711 (17 bytes) -2024-09-06T11:06:20.104Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 7 - └─[Security2CCNonceGet] - sequence number: 244 -2024-09-06T11:06:20.109Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.112Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.112Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.112Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.130Z SERIAL « 0x011d00a90700000100d87f7f7f7f00000300000000030100007f7f7f7f7feb (31 bytes) -2024-09-06T11:06:20.130Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.131Z DRIVER « [REQ] [SendDataBridge] - callback id: 7 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.151Z SERIAL « 0x011d00a8000201149f02060148446689447e919ae8a61f0582c1056f00d8b0 (31 bytes) -2024-09-06T11:06:20.152Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.152Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 6 - SOS: true - MOS: false - receiver entropy: 0x48446689447e919ae8a61f0582c1056f -2024-09-06T11:06:20.154Z SERIAL » 0x013000a90201249f03f501124172eef773dea56da96df42bc68018fa16dcf431b (50 bytes) - e55eb0bf37c2963cd052b250000000008c4 -2024-09-06T11:06:20.155Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 8 - └─[Security2CCMessageEncapsulation] - │ sequence number: 245 - │ extensions: - │ · type: SPAN - │ sender EI: 0x72eef773dea56da96df42bc68018fa16 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xa7995dee387747f2be0cfc52ec - │ ciphertext: 0xdcf431be55eb - │ auth data: 0x0201e37018550024f501124172eef773dea56da96df42bc68018fa1 - 6 - │ auth tag: 0x0bf37c2963cd052b - │ security class: Temporary - └─[Security2CCKEXSet] - echo: true - selected scheme: KEXScheme1 - selected ECDH profile: Curve25519 - CSA permitted: false - granted security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.164Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.167Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.167Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.168Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.189Z SERIAL « 0x011d00a90800000200d87f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:06:20.189Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.190Z DRIVER « [REQ] [SendDataBridge] - callback id: 8 - transmit status: OK, took 20 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.213Z SERIAL « 0x011b00a8000201129f030700f4ef49df31c71e5925aa2202363700d88c (29 bytes) -2024-09-06T11:06:20.214Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.214Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 7 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xae5b349b0cde71dc89318305ad - │ plaintext: 0x9f0501020187 - │ auth tag: 0x1e5925aa22023637 - │ security class: Temporary - └─[Security2CCKEXReport] - echo: true - supported schemes: - · KEXScheme1 - supported ECDH profiles: - · Curve25519 - CSA requested: false - requested security classes: - · S2_Unauthenticated - · S2_Authenticated - · S2_AccessControl - · S0_Legacy -2024-09-06T11:06:20.216Z SERIAL » 0x011b00a902010f9f03f600269cfeee210e1a7a38912825000000000963 (29 bytes) -2024-09-06T11:06:20.216Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 9 - └─[Security2CCMessageEncapsulation] - │ sequence number: 246 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x16a1f588a794e7367490cc15a2 - │ ciphertext: 0x269cfe - │ auth data: 0x0201e3701855000ff600 - │ auth tag: 0xee210e1a7a389128 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Unauthenticated -2024-09-06T11:06:20.223Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.226Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.226Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.227Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.243Z SERIAL « 0x011d00a90900000100d87f7f7f7f00000300000000030100007f7f7f7f7fe5 (31 bytes) -2024-09-06T11:06:20.244Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.244Z DRIVER « [REQ] [SendDataBridge] - callback id: 9 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.245Z DRIVER all queues idle -2024-09-06T11:06:20.268Z SERIAL « 0x012800a80002011f9f0308001c35db416f1f673ca2e464a9deccad4f8d478400d (42 bytes) - 06f3aa79d6b3a00d86c -2024-09-06T11:06:20.269Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.270Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 8 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x5db4d179cdff1ceef4f70e6aa7 - │ plaintext: 0x9f0a015369389efa18ee2a4894c7fb48347fea - │ auth tag: 0x00d06f3aa79d6b3a - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Unauthenticated -2024-09-06T11:06:20.271Z DRIVER all queues busy -2024-09-06T11:06:20.271Z SERIAL » 0x010f00a90201039f01f725000000000a1f (17 bytes) -2024-09-06T11:06:20.272Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 10 - └─[Security2CCNonceGet] - sequence number: 247 -2024-09-06T11:06:20.277Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.280Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.280Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.281Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.296Z SERIAL « 0x011d00a90a00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe6 (31 bytes) -2024-09-06T11:06:20.297Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.297Z DRIVER « [REQ] [SendDataBridge] - callback id: 10 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.316Z SERIAL « 0x011d00a8000201149f020901c8a30dd009a4738f8d73cf7a3e190c9d00d80a (31 bytes) -2024-09-06T11:06:20.316Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.317Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 9 - SOS: true - MOS: false - receiver entropy: 0xc8a30dd009a4738f8d73cf7a3e190c9d -2024-09-06T11:06:20.318Z SERIAL » 0x012c00a90201209f03f80112412d01da296b5222be69d215bc1ab47785c5f8f96 (46 bytes) - 285809240f1c725000000000b32 -2024-09-06T11:06:20.318Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 11 - └─[Security2CCMessageEncapsulation] - │ sequence number: 248 - │ extensions: - │ · type: SPAN - │ sender EI: 0x2d01da296b5222be69d215bc1ab47785 - │ key: 0x44b45806725f2a6ebc3e2641f36f6caa - │ IV: 0x87b535c2bd6fd1e06a0043af14 - │ ciphertext: 0xc5f8 - │ auth data: 0x0201e37018550020f80112412d01da296b5222be69d215bc1ab4778 - 5 - │ auth tag: 0xf96285809240f1c7 - │ security class: S2_Unauthenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:20.331Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.332Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.332Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.336Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.380Z SERIAL « 0x011d00a90b00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe7 (31 bytes) -2024-09-06T11:06:20.381Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.388Z DRIVER « [REQ] [SendDataBridge] - callback id: 11 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.390Z DRIVER all queues idle -2024-09-06T11:06:20.393Z SERIAL « 0x010c00a8000201039f010a00d817 (14 bytes) -2024-09-06T11:06:20.394Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.395Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 10 -2024-09-06T11:06:20.396Z DRIVER all queues busy -2024-09-06T11:06:20.397Z SERIAL » 0x012000a90201149f02f901aa3b193ccb0ca89d166ec6f38574b04805000000000 (34 bytes) - c0f -2024-09-06T11:06:20.398Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 12 - └─[Security2CCNonceReport] - sequence number: 249 - SOS: true - MOS: false - receiver entropy: 0xaa3b193ccb0ca89d166ec6f38574b048 -2024-09-06T11:06:20.422Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.423Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.423Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.425Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.432Z SERIAL « 0x011d00a90c00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe0 (31 bytes) -2024-09-06T11:06:20.433Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.434Z DRIVER « [REQ] [SendDataBridge] - callback id: 12 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.435Z DRIVER all queues idle -2024-09-06T11:06:20.458Z SERIAL « 0x012a00a8000201219f030b011241225e11dd3aed1a52dbd71535ed73d8c21cda4 (44 bytes) - a71a99d9c3a395f9b00d857 -2024-09-06T11:06:20.460Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.464Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 11 - │ extensions: - │ · type: SPAN - │ sender EI: 0x225e11dd3aed1a52dbd71535ed73d8c2 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xa39fcca46e8b106c62ebae3681 - │ plaintext: 0x9f0c02 - │ auth tag: 0x71a99d9c3a395f9b - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:20.466Z DRIVER all queues busy -2024-09-06T11:06:20.467Z SERIAL » 0x011b00a902010f9f03fa00cf52afa2509d6c2ea7994925000000000d67 (29 bytes) -2024-09-06T11:06:20.468Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 13 - └─[Security2CCMessageEncapsulation] - │ sequence number: 250 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xe156e343223bf29819bbb2d422 - │ ciphertext: 0xcf52af - │ auth data: 0x0201e3701855000ffa00 - │ auth tag: 0xa2509d6c2ea79949 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_Authenticated -2024-09-06T11:06:20.475Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.477Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.478Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.478Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.495Z SERIAL « 0x011d00a90d00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe1 (31 bytes) -2024-09-06T11:06:20.495Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.495Z DRIVER « [REQ] [SendDataBridge] - callback id: 13 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.496Z DRIVER all queues idle -2024-09-06T11:06:20.520Z SERIAL « 0x012800a80002011f9f030c009c7e53ff58733226cf3cd584d3413893a4bdc6c75 (42 bytes) - e6f6ff8de26e200d865 -2024-09-06T11:06:20.521Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.521Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 12 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x37d690bb6872a4ce0b2dd0ce90 - │ plaintext: 0x9f0a02656ef5c0f020f3c14238c04a1748b7e1 - │ auth tag: 0xc75e6f6ff8de26e2 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_Authenticated -2024-09-06T11:06:20.522Z DRIVER all queues busy -2024-09-06T11:06:20.522Z SERIAL » 0x010f00a90201039f01fb25000000000e17 (17 bytes) -2024-09-06T11:06:20.523Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 14 - └─[Security2CCNonceGet] - sequence number: 251 -2024-09-06T11:06:20.528Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.530Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.531Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.531Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.547Z SERIAL « 0x011d00a90e00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe2 (31 bytes) -2024-09-06T11:06:20.547Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.548Z DRIVER « [REQ] [SendDataBridge] - callback id: 14 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.568Z SERIAL « 0x011d00a8000201149f020d0157511bf33a3480769c3e7d9afe122f3a00d8be (31 bytes) -2024-09-06T11:06:20.569Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.570Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 13 - SOS: true - MOS: false - receiver entropy: 0x57511bf33a3480769c3e7d9afe122f3a -2024-09-06T11:06:20.571Z SERIAL » 0x012c00a90201209f03fc0112418506fbb6b7acaa5d2cab7bb2e3b27383bac8505 (46 bytes) - dce3f14b5bcf625000000000fe9 -2024-09-06T11:06:20.572Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 15 - └─[Security2CCMessageEncapsulation] - │ sequence number: 252 - │ extensions: - │ · type: SPAN - │ sender EI: 0x8506fbb6b7acaa5d2cab7bb2e3b27383 - │ key: 0xdda415256006027530b2d9548c898f93 - │ IV: 0x8aee8f37a57f2cc07fc0165301 - │ ciphertext: 0xbac8 - │ auth data: 0x0201e37018550020fc0112418506fbb6b7acaa5d2cab7bb2e3b2738 - 3 - │ auth tag: 0x505dce3f14b5bcf6 - │ security class: S2_Authenticated - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:20.581Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.584Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.584Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.584Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.603Z SERIAL « 0x011d00a90f00000100d87f7f7f7f00000300000000030100007f7f7f7f7fe3 (31 bytes) -2024-09-06T11:06:20.604Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.604Z DRIVER « [REQ] [SendDataBridge] - callback id: 15 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.605Z DRIVER all queues idle -2024-09-06T11:06:20.621Z SERIAL « 0x010c00a8000201039f010e00d813 (14 bytes) -2024-09-06T11:06:20.622Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.623Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 14 -2024-09-06T11:06:20.623Z DRIVER all queues busy -2024-09-06T11:06:20.624Z SERIAL » 0x012000a90201149f02fd01ad34627ca5036d711ed9bda0f974a0a805000000001 (34 bytes) - 077 -2024-09-06T11:06:20.624Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 16 - └─[Security2CCNonceReport] - sequence number: 253 - SOS: true - MOS: false - receiver entropy: 0xad34627ca5036d711ed9bda0f974a0a8 -2024-09-06T11:06:20.632Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.634Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.635Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.635Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.652Z SERIAL « 0x011d00a91000000100d87f7f7f7f00000300000000030100007f7f7f7f7ffc (31 bytes) -2024-09-06T11:06:20.653Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.653Z DRIVER « [REQ] [SendDataBridge] - callback id: 16 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.654Z DRIVER all queues idle -2024-09-06T11:06:20.678Z SERIAL « 0x012a00a8000201219f030f0112415d61103d55ec8c59e4596409a49b356aeffb8 (44 bytes) - 8cefa034d69ed486800d8c9 -2024-09-06T11:06:20.679Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.680Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 15 - │ extensions: - │ · type: SPAN - │ sender EI: 0x5d61103d55ec8c59e4596409a49b356a - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xd22b7682253ba15c3758dbafba - │ plaintext: 0x9f0c02 - │ auth tag: 0xcefa034d69ed4868 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:20.680Z DRIVER all queues busy -2024-09-06T11:06:20.681Z SERIAL » 0x011b00a902010f9f03fe00dc94a1dd4047c4bdd5636325000000001188 (29 bytes) -2024-09-06T11:06:20.681Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 17 - └─[Security2CCMessageEncapsulation] - │ sequence number: 254 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x450ef19eac1f4fcc3cd60e4a22 - │ ciphertext: 0xdc94a1 - │ auth data: 0x0201e3701855000ffe00 - │ auth tag: 0xdd4047c4bdd56363 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S2_AccessControl -2024-09-06T11:06:20.688Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.691Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.691Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.692Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.710Z SERIAL « 0x011d00a91100000100d87f7f7f7f00000300000000030100007f7f7f7f7ffd (31 bytes) -2024-09-06T11:06:20.711Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.711Z DRIVER « [REQ] [SendDataBridge] - callback id: 17 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.712Z DRIVER all queues idle -2024-09-06T11:06:20.736Z SERIAL « 0x012800a80002011f9f0310007b887158e82fd8f28813ca7ad7252bbc57be23329 (42 bytes) - addab8955f59400d8e7 -2024-09-06T11:06:20.737Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.737Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 16 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x24bf53df1009ed271dc0c70083 - │ plaintext: 0x9f0a0431132050077310b6f7032f91c79c2eb8 - │ auth tag: 0x329addab8955f594 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S2_AccessControl -2024-09-06T11:06:20.738Z DRIVER all queues busy -2024-09-06T11:06:20.739Z SERIAL » 0x010f00a90201039f01ff2500000000120f (17 bytes) -2024-09-06T11:06:20.739Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 18 - └─[Security2CCNonceGet] - sequence number: 255 -2024-09-06T11:06:20.744Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.747Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.747Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.747Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.765Z SERIAL « 0x011d00a91200000100d87f7f7f7f00000300000000030100007f7f7f7f7ffe (31 bytes) -2024-09-06T11:06:20.766Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.767Z DRIVER « [REQ] [SendDataBridge] - callback id: 18 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.787Z SERIAL « 0x011d00a8000201149f0211017043a279fa75f948f7efb04f19ba2b6400d8d5 (31 bytes) -2024-09-06T11:06:20.788Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.788Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 17 - SOS: true - MOS: false - receiver entropy: 0x7043a279fa75f948f7efb04f19ba2b64 -2024-09-06T11:06:20.789Z SERIAL » 0x012c00a90201209f0300011241c37f885fc30fb241169d5a07cf20e49c30358d9 (46 bytes) - f187271abe729250000000013dd -2024-09-06T11:06:20.790Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 19 - └─[Security2CCMessageEncapsulation] - │ sequence number: 0 - │ extensions: - │ · type: SPAN - │ sender EI: 0xc37f885fc30fb241169d5a07cf20e49c - │ key: 0xfca06923982033f3af9dfc7c1e4ad45a - │ IV: 0x9d5c9f2165fee2958c4706dcb2 - │ ciphertext: 0x3035 - │ auth data: 0x0201e3701855002000011241c37f885fc30fb241169d5a07cf20e49 - c - │ auth tag: 0x8d9f187271abe729 - │ security class: S2_AccessControl - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:20.799Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.802Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.802Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.802Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.822Z SERIAL « 0x011d00a91300000100d87f7f7f7f00000300000000030100007f7f7f7f7fff (31 bytes) -2024-09-06T11:06:20.822Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.823Z DRIVER « [REQ] [SendDataBridge] - callback id: 19 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.823Z DRIVER all queues idle -2024-09-06T11:06:20.840Z SERIAL « 0x010c00a8000201039f011200d80f (14 bytes) -2024-09-06T11:06:20.840Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.841Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 18 -2024-09-06T11:06:20.842Z DRIVER all queues busy -2024-09-06T11:06:20.842Z SERIAL » 0x012000a90201149f02010107cacc9410ba384e1bc41726646a0f4305000000001 (34 bytes) - 408 -2024-09-06T11:06:20.842Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 20 - └─[Security2CCNonceReport] - sequence number: 1 - SOS: true - MOS: false - receiver entropy: 0x07cacc9410ba384e1bc41726646a0f43 -2024-09-06T11:06:20.850Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.852Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.853Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.853Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.870Z SERIAL « 0x011d00a91400000100d87f7f7f7f00000300000000030100007f7f7f7f7ff8 (31 bytes) -2024-09-06T11:06:20.870Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.871Z DRIVER « [REQ] [SendDataBridge] - callback id: 20 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.872Z DRIVER all queues idle -2024-09-06T11:06:20.893Z SERIAL « 0x012a00a8000201219f03130112417fe84947259b5e2e8928b9403ba31f76e8ee7 (44 bytes) - eacf461255bd62b7300d815 -2024-09-06T11:06:20.895Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.895Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 19 - │ extensions: - │ · type: SPAN - │ sender EI: 0x7fe84947259b5e2e8928b9403ba31f76 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xad7af31c44e01f9e33c9a7618d - │ plaintext: 0x9f0c02 - │ auth tag: 0xacf461255bd62b73 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:20.896Z DRIVER all queues busy -2024-09-06T11:06:20.897Z SERIAL » 0x011b00a902010f9f0302007ba09d1d3df417a05bc5c125000000001595 (29 bytes) -2024-09-06T11:06:20.897Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 21 - └─[Security2CCMessageEncapsulation] - │ sequence number: 2 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xafeda3f17e2a549bcf64140ddf - │ ciphertext: 0x7ba09d - │ auth data: 0x0201e3701855000f0200 - │ auth tag: 0x1d3df417a05bc5c1 - │ security class: Temporary - └─[Security2CCNetworkKeyGet] - security class: S0_Legacy -2024-09-06T11:06:20.904Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.906Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.907Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.907Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.925Z SERIAL « 0x011d00a91500000100d87f7f7f7f00000300000000030100007f7f7f7f7ff9 (31 bytes) -2024-09-06T11:06:20.925Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.925Z DRIVER « [REQ] [SendDataBridge] - callback id: 21 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.926Z DRIVER all queues idle -2024-09-06T11:06:20.949Z SERIAL « 0x012800a80002011f9f031400416f80eb7bb315bd0231aa5f1607dfbff3f62ea9d (42 bytes) - 4bf77d292be2600d8e7 -2024-09-06T11:06:20.950Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.950Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 20 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0x0135b5b4649df09d0248f90521 - │ plaintext: 0x9f0a800102030405060708090a0b0c0d0e0f10 - │ auth tag: 0xa9d4bf77d292be26 - │ security class: Temporary - └─[Security2CCNetworkKeyReport] - security class: S0_Legacy -2024-09-06T11:06:20.951Z DRIVER all queues busy -2024-09-06T11:06:20.952Z SERIAL » 0x010f00a90201039f0103250000000016f7 (17 bytes) -2024-09-06T11:06:20.952Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 22 - └─[Security2CCNonceGet] - sequence number: 3 -2024-09-06T11:06:20.957Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:20.960Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:20.960Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.961Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:20.977Z SERIAL « 0x011d00a91600000100d87f7f7f7f00000300000000030100007f7f7f7f7ffa (31 bytes) -2024-09-06T11:06:20.977Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:20.978Z DRIVER « [REQ] [SendDataBridge] - callback id: 22 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:20.999Z SERIAL « 0x011d00a8000201149f021501091c800986edf36a0ce9bf0661115d0200d811 (31 bytes) -2024-09-06T11:06:20.999Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.000Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceReport] - sequence number: 21 - SOS: true - MOS: false - receiver entropy: 0x091c800986edf36a0ce9bf0661115d02 -2024-09-06T11:06:21.001Z SERIAL » 0x012c00a90201209f03040112416290fb8a42a89951ce81afe6cdd48ca4a917e61 (46 bytes) - 456b1fa93b4c325000000001782 -2024-09-06T11:06:21.001Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 23 - └─[Security2CCMessageEncapsulation] - │ sequence number: 4 - │ extensions: - │ · type: SPAN - │ sender EI: 0x6290fb8a42a89951ce81afe6cdd48ca4 - │ key: 0xece479ca82cc867c1db471e86eab2248 - │ IV: 0x1e8989f03565943a6ea872458f - │ ciphertext: 0xa917 - │ auth data: 0x0201e37018550020040112416290fb8a42a89951ce81afe6cdd48ca - 4 - │ auth tag: 0xe61456b1fa93b4c3 - │ security class: S0_Legacy - └─[Security2CCNetworkKeyVerify] -2024-09-06T11:06:21.010Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:21.013Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:21.014Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.014Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:21.034Z SERIAL « 0x011d00a91700000100d87f7f7f7f00000300000000030100007f7f7f7f7ffb (31 bytes) -2024-09-06T11:06:21.034Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.035Z DRIVER « [REQ] [SendDataBridge] - callback id: 23 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:21.036Z DRIVER all queues idle -2024-09-06T11:06:21.053Z SERIAL « 0x010c00a8000201039f011600d80b (14 bytes) -2024-09-06T11:06:21.054Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.054Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCNonceGet] - sequence number: 22 -2024-09-06T11:06:21.055Z DRIVER all queues busy -2024-09-06T11:06:21.055Z SERIAL » 0x012000a90201149f020501571ca2fca15ce3f4bcaf85fba9bb5baf05000000001 (34 bytes) - 891 -2024-09-06T11:06:21.056Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x05 - │ callback id: 24 - └─[Security2CCNonceReport] - sequence number: 5 - SOS: true - MOS: false - receiver entropy: 0x571ca2fca15ce3f4bcaf85fba9bb5baf -2024-09-06T11:06:21.063Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:21.066Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:21.066Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.067Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:21.086Z SERIAL « 0x011d00a91800000100d87f7f7f7f00000300000000030100007f7f7f7f7ff4 (31 bytes) -2024-09-06T11:06:21.087Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.087Z DRIVER « [REQ] [SendDataBridge] - callback id: 24 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:21.088Z DRIVER all queues idle -2024-09-06T11:06:21.112Z SERIAL « 0x012a00a8000201219f03170112412df2186d0c12da2220d6068b9e71eaf22ac48 (44 bytes) - d268675166ac0ffca00d8a1 -2024-09-06T11:06:21.113Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.114Z DRIVER « [Node 001] [REQ] [BridgeApplicationCommand] - │ RSSI: -40 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 23 - │ extensions: - │ · type: SPAN - │ sender EI: 0x2df2186d0c12da2220d6068b9e71eaf2 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xae171ae0b28a0017cb37cd11ac - │ plaintext: 0x9f0c02 - │ auth tag: 0x268675166ac0ffca - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: true - request complete: false -2024-09-06T11:06:21.114Z DRIVER all queues busy -2024-09-06T11:06:21.115Z SERIAL » 0x011b00a902010f9f03060091f4995c5a4d73611d4bf8250000000019ec (29 bytes) -2024-09-06T11:06:21.115Z DRIVER » [Node 001] [REQ] [SendDataBridge] - │ source node id: 2 - │ transmit options: 0x25 - │ callback id: 25 - └─[Security2CCMessageEncapsulation] - │ sequence number: 6 - │ key: 0xb7b96a994522ea514b5221b875a186fe - │ IV: 0xe799eb8dcddb0a4233c9cf3a80 - │ ciphertext: 0x91f499 - │ auth data: 0x0201e3701855000f0600 - │ auth tag: 0x5c5a4d73611d4bf8 - │ security class: Temporary - └─[Security2CCTransferEnd] - key verified: false - request complete: true -2024-09-06T11:06:21.122Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:21.125Z SERIAL « 0x010401a90152 (6 bytes) -2024-09-06T11:06:21.125Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.125Z DRIVER « [RES] [SendDataBridge] - was sent: true -2024-09-06T11:06:21.143Z SERIAL « 0x011d00a91900000100d87f7f7f7f00000300000000030100007f7f7f7f7ff5 (31 bytes) -2024-09-06T11:06:21.144Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.144Z DRIVER « [REQ] [SendDataBridge] - callback id: 25 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -40 dBm - ACK channel no.: 0 - TX channel no.: 0 -2024-09-06T11:06:21.145Z DRIVER Security S2 bootstrapping successful with these security classes: - · S2_AccessControl - · S2_Authenticated - · S2_Unauthenticated - · S0_Legacy -2024-09-06T11:06:21.145Z CNTRLR » [Node 001] querying protocol info... -2024-09-06T11:06:21.146Z SERIAL » 0x0104004101bb (6 bytes) -2024-09-06T11:06:21.146Z DRIVER » [REQ] [GetNodeProtocolInfo] - payload: 0x01 -2024-09-06T11:06:21.152Z SERIAL « [ACK] (0x06) -2024-09-06T11:06:21.152Z SERIAL « 0x010a0141d3960102010000f2 (12 bytes) -2024-09-06T11:06:21.152Z SERIAL » [ACK] (0x06) -2024-09-06T11:06:21.153Z DRIVER « [RES] [GetNodeProtocolInfo] - payload: 0xd3960102010000 -2024-09-06T11:06:21.154Z CNTRLR « [Node 001] received response for protocol info: - basic device class: Static Controller - generic device class: Remote Controller - specific device class: Unused - node type: Controller - is always listening: true - is frequent listening: false - can route messages: true - supports security: false - supports beaming: true - maximum data rate: 100000 kbps - protocol version: 3 -2024-09-06T11:06:21.154Z CNTRLR [Node 001] Interview stage completed: ProtocolInfo -2024-09-06T11:06:21.154Z DRIVER Finished joining network -2024-09-06T11:06:21.154Z DRIVER all queues idle diff --git a/test/secondary_current.log b/test/secondary_current.log deleted file mode 120000 index 152667c81684..000000000000 --- a/test/secondary_current.log +++ /dev/null @@ -1 +0,0 @@ -secondary_2024-09-06.log \ No newline at end of file diff --git a/turbo.json b/turbo.json index 35c956b1bc40..6154fc70d830 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,6 @@ { "$schema": "https://turborepo.org/schema.json", - "pipeline": { + "tasks": { "clean": { "cache": false }, @@ -37,7 +37,7 @@ // All source files are input "packages/*/src/**", // Exclude test files from inputs - "!**/*.test.ts" + "!*/**/*.test.ts" ], "outputs": ["packages/*/build/**", "packages/*/*.tsbuildinfo"] }, @@ -50,8 +50,7 @@ ":!:build/", "**/*.{ts,json}", // The style based linting tasks depend on the corresponding configuration in the repo root - "../../.eslintrc.js", - "../../.eslintignore", + "../../eslint.config.mjs", "../../tsconfig.all.json" ] }, @@ -62,8 +61,7 @@ ":!:build/", "**/*.{ts,json}", // The style based linting tasks depend on the corresponding configuration in the repo root - "../../.eslintrc.js", - "../../.eslintignore", + "../../eslint.config.mjs", "../../tsconfig.all.json" ], "outputs": ["**/*.{ts,json}"] @@ -74,7 +72,11 @@ // Dummy task to enable running all lint:zwave tasks }, "@zwave-js/config#lint:zwave": { - "inputs": ["**/*.ts", "config/**/*.json"] + "inputs": [ + "**/*.ts", + "config/**/*.json", + "config/eslint.config.mjs" + ] }, "extract-api": { diff --git a/yarn.lock b/yarn.lock index 53496aa37ab1..186ad3491e5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,13 +12,13 @@ __metadata: languageName: node linkType: hard -"@actions/core@npm:^1.10.1": - version: 1.10.1 - resolution: "@actions/core@npm:1.10.1" +"@actions/core@npm:^1.11.1": + version: 1.11.1 + resolution: "@actions/core@npm:1.11.1" dependencies: + "@actions/exec": "npm:^1.1.1" "@actions/http-client": "npm:^2.0.1" - uuid: "npm:^8.3.2" - checksum: 10/d32af783ecb07f25a0f190112ee8e749a4c4cb88327d6df756ea1dcee146ab413c0e651a9c949294f8202ced1436c049d7b469485431a5cc4491d66926ec8323 + checksum: 10/94f260e33607cc16567ce4c88014f069cd7da92baaa443b72cff80fdf4f1dcd18192e135df0d51ec29e8b82cfe214218715d482f2a7804efa5095737d1245f38 languageName: node linkType: hard @@ -160,13 +160,13 @@ __metadata: languageName: node linkType: hard -"@alcalzone/release-script-plugin-git@npm:3.7.0": - version: 3.7.0 - resolution: "@alcalzone/release-script-plugin-git@npm:3.7.0" +"@alcalzone/release-script-plugin-git@npm:3.8.0": + version: 3.8.0 + resolution: "@alcalzone/release-script-plugin-git@npm:3.8.0" dependencies: "@alcalzone/release-script-core": "npm:3.7.0" fs-extra: "npm:^10.1.0" - checksum: 10/602a75d979b0843ffe12063a860d468558e2fd979e9db887ed99a869607b370606e019149a36a935b004ab6a814189cbcb4b69d63f568462666de2497131b011 + checksum: 10/c1674c70a71df508480deff8bcea0dffb29b7d566fe37408e438043eafef7487db450fdf0689e55736330b3916e1be6cd53d8d7e73507d5f06d5ecd5c39386ae languageName: node linkType: hard @@ -196,14 +196,14 @@ __metadata: languageName: node linkType: hard -"@alcalzone/release-script@npm:~3.7.3": - version: 3.7.3 - resolution: "@alcalzone/release-script@npm:3.7.3" +"@alcalzone/release-script@npm:~3.8.0": + version: 3.8.0 + resolution: "@alcalzone/release-script@npm:3.8.0" dependencies: "@alcalzone/release-script-core": "npm:3.7.0" "@alcalzone/release-script-plugin-changelog": "npm:3.7.0" "@alcalzone/release-script-plugin-exec": "npm:3.7.0" - "@alcalzone/release-script-plugin-git": "npm:3.7.0" + "@alcalzone/release-script-plugin-git": "npm:3.8.0" "@alcalzone/release-script-plugin-package": "npm:3.7.3" "@alcalzone/release-script-plugin-version": "npm:3.7.0" alcalzone-shared: "npm:^4.0.1" @@ -216,7 +216,7 @@ __metadata: yargs: "npm:^17.4.1" bin: release-script: bin/release.js - checksum: 10/6330b18cf175cae2297c980951a1566a0c0e1da45212845df6be95fe5798f5446b22528575c6193798be81c315c62cd8c279ddf4945268884fc219168de2abb5 + checksum: 10/21281381806675ba6f32a6a407ce9fcaaf9f8c0be29383899a3153cd31ad8353a8db44d6a4475b26a96d74c1d2c198bd4ec38646a51d56af0c55f28c6f03779f languageName: node linkType: hard @@ -236,10 +236,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 10/df882d2675101df2d507b95b195ca2f86a3ef28cb711c84f37e79ca23178e13b9f0d8b522774211f51e40168bf5142be4c1c9776a150cddb61a0d5bf3e95750b +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10/ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e languageName: node linkType: hard @@ -254,13 +254,6 @@ __metadata: languageName: node linkType: hard -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: 10/9d226461c1e91e95f067be2bdc5e6f99cfe55a721f45afb44122e23e4b8602eeac4ff7325af6b5a369f36396ee1514d3809af3f57769066d80d83790d8e53339 - languageName: node - linkType: hard - "@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0": version: 1.6.0 resolution: "@colors/colors@npm:1.6.0" @@ -268,54 +261,54 @@ __metadata: languageName: node linkType: hard -"@commitlint/cli@npm:^19.2.1": - version: 19.2.1 - resolution: "@commitlint/cli@npm:19.2.1" +"@commitlint/cli@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/cli@npm:19.5.0" dependencies: - "@commitlint/format": "npm:^19.0.3" - "@commitlint/lint": "npm:^19.1.0" - "@commitlint/load": "npm:^19.2.0" - "@commitlint/read": "npm:^19.2.1" - "@commitlint/types": "npm:^19.0.3" - execa: "npm:^8.0.1" + "@commitlint/format": "npm:^19.5.0" + "@commitlint/lint": "npm:^19.5.0" + "@commitlint/load": "npm:^19.5.0" + "@commitlint/read": "npm:^19.5.0" + "@commitlint/types": "npm:^19.5.0" + tinyexec: "npm:^0.3.0" yargs: "npm:^17.0.0" bin: commitlint: cli.js - checksum: 10/6d3555039c96e21664d5159b06317558d31ca150f3326a2bd75aa82335032956c8f09481bf30b3aa3a2f8a2037b0a8e1947a787d57f4cb2007e3f69814e9c31f + checksum: 10/1d3384cc9823462da3a35308a145dc4fcf92025f7af976e1ceb9cbe9cbd7b7b83703fe0e9ca12fc7f4903ea2fe68c8c1492c18409ba301894c01cb2264a00795 languageName: node linkType: hard -"@commitlint/config-conventional@npm:^19.1.0": - version: 19.1.0 - resolution: "@commitlint/config-conventional@npm:19.1.0" +"@commitlint/config-conventional@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/config-conventional@npm:19.5.0" dependencies: - "@commitlint/types": "npm:^19.0.3" + "@commitlint/types": "npm:^19.5.0" conventional-changelog-conventionalcommits: "npm:^7.0.2" - checksum: 10/e3a6ccb521d8849600b7db1d777eed4861ab85c83f26bba56057f05a3cd3481bcce2bbfa29cada03929d3560c4b5509c3d0089ee1d3f530fdbc658e8e6311f26 + checksum: 10/5844fb51347677dd28f970a50528fbc44b9b415a8a5fd6fea6c7f6a2a11357956748eda9d1d6ae499430659b0aa78bfa7dcf8abf599951e7f34a581e60bf57da languageName: node linkType: hard -"@commitlint/config-validator@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/config-validator@npm:19.0.3" +"@commitlint/config-validator@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/config-validator@npm:19.5.0" dependencies: - "@commitlint/types": "npm:^19.0.3" + "@commitlint/types": "npm:^19.5.0" ajv: "npm:^8.11.0" - checksum: 10/a1a9678e0994d87fa98f0aee1a877dfaf60640b657589260ec958898d51affabba73d6684edafa1cc979e4e94b51f14fbd9b605eae77c2838ee52bcbcc110bef + checksum: 10/681bfdcabcb0ff794ea65d95128083869c97039c3a352219d6d88a2d4f3d0412b8ec515db77433fc6b0fce072051beb103d16889d42e76ea97873191ec191b23 languageName: node linkType: hard -"@commitlint/ensure@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/ensure@npm:19.0.3" +"@commitlint/ensure@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/ensure@npm:19.5.0" dependencies: - "@commitlint/types": "npm:^19.0.3" + "@commitlint/types": "npm:^19.5.0" lodash.camelcase: "npm:^4.3.0" lodash.kebabcase: "npm:^4.1.1" lodash.snakecase: "npm:^4.1.1" lodash.startcase: "npm:^4.4.0" lodash.upperfirst: "npm:^4.3.1" - checksum: 10/d8fdc4712985f9ccdbd871c9eabb9d2bdde22296b882b42bd32ab52b6679c5d799ff557d20a99cebb0008831fd31a540d771331e6e5e26bbafbb6b88f47148b6 + checksum: 10/a9d575637121221cb63232ee96024a63614052ccc205ec8fdab53feed70104b85608e31b4632f280d2876f10a2243474191d96e448b222abfc8d8ab48f9f8e7e languageName: node linkType: hard @@ -326,42 +319,42 @@ __metadata: languageName: node linkType: hard -"@commitlint/execute-rule@npm:^19.0.0": - version: 19.0.0 - resolution: "@commitlint/execute-rule@npm:19.0.0" - checksum: 10/4c5cbf9ab0e2b85b00ceea84e5598b1b3cceaa20a655ee954c45259cca9efc80cf5cf7d9eec04715a100c2da282cbcf6aba960ad53a47178090c0513426ac236 +"@commitlint/execute-rule@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/execute-rule@npm:19.5.0" + checksum: 10/ff05568c3a287ef8564171d5bc5d4510b2e00b552e4703f79db3d62f3cba9d669710717695d199e04c2117d41f9e72d7e43a342d5c1b62d456bc8e8bb7dda1e9 languageName: node linkType: hard -"@commitlint/format@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/format@npm:19.0.3" +"@commitlint/format@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/format@npm:19.5.0" dependencies: - "@commitlint/types": "npm:^19.0.3" + "@commitlint/types": "npm:^19.5.0" chalk: "npm:^5.3.0" - checksum: 10/ccd71c669e43272fc7d55aba38b149ebc1fab40364ddb4182d4067210592981d42e51d2295a5c0476a34a7a296f14eaee54cc3aa246e3e5d477ed2ae5917a532 + checksum: 10/685b64ebee936d71bbbf66276b11d50b0227f2ad0df3c00317d5b7e25bce8b1b8dbc65cc7c5c7fafc76cad11a83ad4378a666bf8f12a3eb1c7d6a2a6c6cb25aa languageName: node linkType: hard -"@commitlint/is-ignored@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/is-ignored@npm:19.0.3" +"@commitlint/is-ignored@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/is-ignored@npm:19.5.0" dependencies: - "@commitlint/types": "npm:^19.0.3" + "@commitlint/types": "npm:^19.5.0" semver: "npm:^7.6.0" - checksum: 10/1a2fcd1dadb37334ed025a0f2bf07493a69d6c8afa126119f2b13f57f7a406babc99b5e8dbf5a624e810f30e4f7c612b64281b139cf61e7923fb3123a107c1bd + checksum: 10/1c7ee34686fd098587f9717763473477d49e847f470a317903f922d13091271d013a046f61b43b31b34eba4e4b0f76369b7427588269bbdc4c5f622d3ace2c95 languageName: node linkType: hard -"@commitlint/lint@npm:^19.1.0": - version: 19.1.0 - resolution: "@commitlint/lint@npm:19.1.0" +"@commitlint/lint@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/lint@npm:19.5.0" dependencies: - "@commitlint/is-ignored": "npm:^19.0.3" - "@commitlint/parse": "npm:^19.0.3" - "@commitlint/rules": "npm:^19.0.3" - "@commitlint/types": "npm:^19.0.3" - checksum: 10/caeac7a989e186fb2e0fbd42ea6f32e3eff68525fbd8cd0a8c9bd242e038c3bfaac89c0da9c8f98dd07247b5656d6986163746eed225c3dd5374cd39cc7664a8 + "@commitlint/is-ignored": "npm:^19.5.0" + "@commitlint/parse": "npm:^19.5.0" + "@commitlint/rules": "npm:^19.5.0" + "@commitlint/types": "npm:^19.5.0" + checksum: 10/bba8cd17a90876b6b2cd2f869ee4d08cd3e5ad8a10f2c273d379d3b6602da30c46c2d9d0925710d7b9ebf180b3d1f02409adfc0f1a888cc566d88c9ee5862bdd languageName: node linkType: hard @@ -380,52 +373,52 @@ __metadata: languageName: node linkType: hard -"@commitlint/load@npm:^19.2.0": - version: 19.2.0 - resolution: "@commitlint/load@npm:19.2.0" +"@commitlint/load@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/load@npm:19.5.0" dependencies: - "@commitlint/config-validator": "npm:^19.0.3" - "@commitlint/execute-rule": "npm:^19.0.0" - "@commitlint/resolve-extends": "npm:^19.1.0" - "@commitlint/types": "npm:^19.0.3" + "@commitlint/config-validator": "npm:^19.5.0" + "@commitlint/execute-rule": "npm:^19.5.0" + "@commitlint/resolve-extends": "npm:^19.5.0" + "@commitlint/types": "npm:^19.5.0" chalk: "npm:^5.3.0" cosmiconfig: "npm:^9.0.0" cosmiconfig-typescript-loader: "npm:^5.0.0" lodash.isplainobject: "npm:^4.0.6" lodash.merge: "npm:^4.6.2" lodash.uniq: "npm:^4.5.0" - checksum: 10/5cd35a0a60064c70c06ab6bd8b1ae02cf6ecc1d0520b76c68cdc7c12094338f04c19e2df5d7ae30d681e858871c4f1963ae39e4969ed61139959cf4b300030fc + checksum: 10/87a9450c768632c09e9d98993752a5622aee698642eee5a9b31c3c48625455e043406b7ea6e02a8f41d86c524c9ecbdb9b823caf67da3048f0d96531177fda28 languageName: node linkType: hard -"@commitlint/message@npm:^19.0.0": - version: 19.0.0 - resolution: "@commitlint/message@npm:19.0.0" - checksum: 10/446ee97c12a4175a8b7a4cbf3754c01d54cd911973c7af9a2eac69277fb891e638ddc3db132f57588883b68eadf59074d388ec1808a205957042f71027244167 +"@commitlint/message@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/message@npm:19.5.0" + checksum: 10/ad6993476ce3e6ed6ed7ae5327ac8d5116ca70168d9de6dff656a7e6f2b9f01a1c3ac7a13418831b5cdc3148ea9bcd78c32bdb7aa863280108e176ff803f7a51 languageName: node linkType: hard -"@commitlint/parse@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/parse@npm:19.0.3" +"@commitlint/parse@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/parse@npm:19.5.0" dependencies: - "@commitlint/types": "npm:^19.0.3" + "@commitlint/types": "npm:^19.5.0" conventional-changelog-angular: "npm:^7.0.0" conventional-commits-parser: "npm:^5.0.0" - checksum: 10/ddd7a6007d37d7154f6b18bfa06dc26beb109cd4bcabe7e9ca2ff24088325ab2c7b09cc01cceb9d62e6e60affffe3d19e9685fab06d3506d047166d888d25487 + checksum: 10/2a6f8bbbd79aa36a7e1128c60cecb322557110aa4aa8757c741c2f79071c540ba56957cef81fb64f4a304535e462d0c48b5c1ef1b2766fea7971d38ec5ad6384 languageName: node linkType: hard -"@commitlint/read@npm:^19.2.1": - version: 19.2.1 - resolution: "@commitlint/read@npm:19.2.1" +"@commitlint/read@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/read@npm:19.5.0" dependencies: - "@commitlint/top-level": "npm:^19.0.0" - "@commitlint/types": "npm:^19.0.3" - execa: "npm:^8.0.1" + "@commitlint/top-level": "npm:^19.5.0" + "@commitlint/types": "npm:^19.5.0" git-raw-commits: "npm:^4.0.0" minimist: "npm:^1.2.8" - checksum: 10/840ebd183b2fe36dea03701552d825a9a1770d300b9416ab2a731fdeed66cf8c9dd8be133d92ac017cb9bf29e2ef5aee91a641f2b643bb5b33005f7b392ec953 + tinyexec: "npm:^0.3.0" + checksum: 10/0ea2da48ae1bab9add9e831a1659306567755c20ec74cf04e6e50ef1e520970decd259af652995f55eef422a3f1382f0e64e5fbc23606176f766f71076ad872b languageName: node linkType: hard @@ -441,46 +434,45 @@ __metadata: languageName: node linkType: hard -"@commitlint/resolve-extends@npm:^19.1.0": - version: 19.1.0 - resolution: "@commitlint/resolve-extends@npm:19.1.0" +"@commitlint/resolve-extends@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/resolve-extends@npm:19.5.0" dependencies: - "@commitlint/config-validator": "npm:^19.0.3" - "@commitlint/types": "npm:^19.0.3" + "@commitlint/config-validator": "npm:^19.5.0" + "@commitlint/types": "npm:^19.5.0" global-directory: "npm:^4.0.1" import-meta-resolve: "npm:^4.0.0" lodash.mergewith: "npm:^4.6.2" resolve-from: "npm:^5.0.0" - checksum: 10/453f8828b091886dc7cb4b13285bf3300be94266c3fc13453ab62fddc524a3969434dcebea3e4c4775621576fa25b41efbc62d773e3c44c1e87d12d7211166de + checksum: 10/71a1c9423570dedb55809f4ad7c35962607cb06921364116e8f2d8c3d37a7ff2a43747ad5a9cd924b58614e6880a42a3fa1510244748bb6997469b52b0fecd78 languageName: node linkType: hard -"@commitlint/rules@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/rules@npm:19.0.3" +"@commitlint/rules@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/rules@npm:19.5.0" dependencies: - "@commitlint/ensure": "npm:^19.0.3" - "@commitlint/message": "npm:^19.0.0" - "@commitlint/to-lines": "npm:^19.0.0" - "@commitlint/types": "npm:^19.0.3" - execa: "npm:^8.0.1" - checksum: 10/218033d96b0bae7dbea0e46483f8af823c17b492e4b0c4dca93a6312876d051cc88f4272d009e7eb06ff05585ec511aedd703132be17c7248698a4eac909986b + "@commitlint/ensure": "npm:^19.5.0" + "@commitlint/message": "npm:^19.5.0" + "@commitlint/to-lines": "npm:^19.5.0" + "@commitlint/types": "npm:^19.5.0" + checksum: 10/2c879d2cd50a3b4572cea41f044cc3091f0a11ef5ead0bb54bfa564ea637e0d93e08ae322ec4c99bb5b379b82835ace595d1c8dab6e35c1b68b63292160a61b3 languageName: node linkType: hard -"@commitlint/to-lines@npm:^19.0.0": - version: 19.0.0 - resolution: "@commitlint/to-lines@npm:19.0.0" - checksum: 10/5e7d5679aa242cd21be2076a8c8715aa3c9f4c3133f588df08c6b02f56a8a5b1a5d9e402076bd926dd2b61883e4b2c53fd6c9aa3554e3f54cd2296b2566eb1c2 +"@commitlint/to-lines@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/to-lines@npm:19.5.0" + checksum: 10/68aaca7bf1331b5f2f604e814d57f483ead81a8296f8cff5667249510a5601825dfbbaccade3d02e0aca580b973c01419276d693cc9aa888cbe11022daa9dce6 languageName: node linkType: hard -"@commitlint/top-level@npm:^19.0.0": - version: 19.0.0 - resolution: "@commitlint/top-level@npm:19.0.0" +"@commitlint/top-level@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/top-level@npm:19.5.0" dependencies: find-up: "npm:^7.0.0" - checksum: 10/47b0994d03f26caf2812110ead535bd10157beed6b3dff9cbb4eea165de9245673ba7d31829cd54af5855f7b075ebbf812b1f79586248be3932797888efeadf5 + checksum: 10/f6b5a3746c458e12c7a9e93f7c856ba90fba6e61db614ea1201e6b6e92cb8161dd13e88d8c9b408709ea0c19bc949cffcd1dd356cb6f51fc2ede8df48c1fd410 languageName: node linkType: hard @@ -493,13 +485,13 @@ __metadata: languageName: node linkType: hard -"@commitlint/types@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/types@npm:19.0.3" +"@commitlint/types@npm:^19.5.0": + version: 19.5.0 + resolution: "@commitlint/types@npm:19.5.0" dependencies: "@types/conventional-commits-parser": "npm:^5.0.0" chalk: "npm:^5.3.0" - checksum: 10/44e67f4861f9b137f43a441f8ab255676b7a276c82ca46ba7846ca1057d170af92a87d3e2a1378713dc4e33a68c8af513683cb96dcd29544e48e2c825109ea6f + checksum: 10/a26f33ec6987d7d93bdbd7e1b177cfac30ca056ea383faf343c6a09c0441aa057a24be1459c3d4e7e91edd2ecf8d6c4dd670948c9d22646d64767137c6db098a languageName: node linkType: hard @@ -528,10 +520,10 @@ __metadata: languageName: node linkType: hard -"@dprint/formatter@npm:^0.3.0": - version: 0.3.0 - resolution: "@dprint/formatter@npm:0.3.0" - checksum: 10/4f0aa1ef8404943a19a89e30dd1939bff74a9a694b3ee4370dd45f1e08eb9d88c62692ec97b9f139343a71205e943c57f226360cae260b069297600cda294e16 +"@dprint/formatter@npm:^0.4.1": + version: 0.4.1 + resolution: "@dprint/formatter@npm:0.4.1" + checksum: 10/27498fc8e6ec01ee9401e2073331cb758f57cdb93545bdd9c3e5f0ce6ac9ee571b800c9df493fab922bd92e3c4fd660a91a2cf465fe0c05a3dca769930dd4b77 languageName: node linkType: hard @@ -570,17 +562,17 @@ __metadata: languageName: node linkType: hard -"@dprint/markdown@npm:^0.17.2": - version: 0.17.2 - resolution: "@dprint/markdown@npm:0.17.2" - checksum: 10/ee713583afc6de4af4cc507fc4eedb92d2e8781df5a35e8b928981e1845149fd1e24e7106851c69b6be2d7fba6f21bc4e21bab964d36b61baa9e94b0306c5e2f +"@dprint/markdown@npm:^0.17.8": + version: 0.17.8 + resolution: "@dprint/markdown@npm:0.17.8" + checksum: 10/df2b1962c5d0063c0809d7a7eee435f4fd95295da38706b56d67f145ee7d030a3dae761512f488025344fd88af2b596e910d1f6ba8ca7f79670f69bf7c6e592b languageName: node linkType: hard -"@dprint/typescript@npm:^0.91.1": - version: 0.91.1 - resolution: "@dprint/typescript@npm:0.91.1" - checksum: 10/88b1e6f2f6e8f40d7ace70ba7f0a0647e04316ef0f2af42afc81733bc3afa0ddd663996d286bf05ba6d593ef3c50b60bcae39867b690b2fa147bbfa26fdf4051 +"@dprint/typescript@npm:^0.93.0": + version: 0.93.0 + resolution: "@dprint/typescript@npm:0.93.0" + checksum: 10/dbe3282979638954cb91983044cd7cac47870aa1399f975f907f2620c36325f6f63feddb45a8e85abd4f830b5751cdd81b9682291793604ce89dccdc835fb5a6 languageName: node linkType: hard @@ -598,163 +590,170 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" +"@esbuild/aix-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/aix-ppc64@npm:0.24.0" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" +"@esbuild/android-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm64@npm:0.24.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" +"@esbuild/android-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm@npm:0.24.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" +"@esbuild/android-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-x64@npm:0.24.0" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" +"@esbuild/darwin-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-arm64@npm:0.24.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" +"@esbuild/darwin-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-x64@npm:0.24.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" +"@esbuild/freebsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-arm64@npm:0.24.0" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" +"@esbuild/freebsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-x64@npm:0.24.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" +"@esbuild/linux-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm64@npm:0.24.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" +"@esbuild/linux-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm@npm:0.24.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" +"@esbuild/linux-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ia32@npm:0.24.0" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" +"@esbuild/linux-loong64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-loong64@npm:0.24.0" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" +"@esbuild/linux-mips64el@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-mips64el@npm:0.24.0" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" +"@esbuild/linux-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ppc64@npm:0.24.0" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" +"@esbuild/linux-riscv64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-riscv64@npm:0.24.0" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" +"@esbuild/linux-s390x@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-s390x@npm:0.24.0" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" +"@esbuild/linux-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-x64@npm:0.24.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" +"@esbuild/netbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/netbsd-x64@npm:0.24.0" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" +"@esbuild/openbsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-arm64@npm:0.24.0" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-x64@npm:0.24.0" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" +"@esbuild/sunos-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/sunos-x64@npm:0.24.0" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" +"@esbuild/win32-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-arm64@npm:0.24.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" +"@esbuild/win32-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-ia32@npm:0.24.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" +"@esbuild/win32-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-x64@npm:0.24.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -777,34 +776,68 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.6.1": - version: 4.8.0 - resolution: "@eslint-community/regexpp@npm:4.8.0" - checksum: 10/bca98aff5fd4236ef6030e91bd323e57b8d42705d4ddcdd56041e3c1ff7f4d9eb4a3f1fffcbf0e0400cba0703ea9e496f521ae0ad65f269024d07c56edfa5e08 +"@eslint-community/regexpp@npm:^4.11.0": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" + dependencies: + "@eslint/object-schema": "npm:^2.1.4" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/60ccad1eb4806710b085cd739568ec7afd289ee5af6ca0383f0876f9fe375559ef525f7b3f86bdb3f961493de952f2cf3ab4aa4a6ccaef0ae3cd688267cabcb3 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.6.0": + version: 0.6.0 + resolution: "@eslint/core@npm:0.6.0" + checksum: 10/ec5cce168c8773fbd60c5a505563c6cf24398b3e1fa352929878d63129e0dd5b134d3232be2f2c49e8124a965d03359b38962aa0dcf7dfaf50746059d2a2f798 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.1.0": + version: 3.1.0 + resolution: "@eslint/eslintrc@npm:3.1.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 + checksum: 10/02bf892d1397e1029209dea685e9f4f87baf643315df2a632b5f121ec7e8548a3b34f428a007234fa82772218fa8a3ac2d10328637b9ce63b7f8344035b74db3 + languageName: node + linkType: hard + +"@eslint/js@npm:9.12.0": + version: 9.12.0 + resolution: "@eslint/js@npm:9.12.0" + checksum: 10/c4ec9f7ff664f778324002bccdfd63e4a563018e4d7efc838d8149898f9df8649fbc51a379c3d7deea40da4fba9e8e62f39f2df3ff2b9616e2241bbfc10456b0 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 10/221e8d9f281c605948cd6e030874aacce83fe097f8f9c1964787037bccf08e82b7aa9eff1850a30fffac43f1d76555727ec22a2af479d91e268e89d1e035131e languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10/3c501ce8a997cf6cbbaf4ed358af5492875e3550c19b9621413b82caa9ae5382c584b0efa79835639e6e0ddaa568caf3499318e5bdab68643ef4199dce5eb0a0 +"@eslint/plugin-kit@npm:^0.2.0": + version: 0.2.0 + resolution: "@eslint/plugin-kit@npm:0.2.0" + dependencies: + levn: "npm:^0.4.1" + checksum: 10/ebb363174397341dea47dc35fc206e24328083e4f0fa1c539687dbb7f94bef77e43faa12867d032e6eea5ac980ea8fbb6b1d844186e422d327c04088041b99f3 languageName: node linkType: hard @@ -815,28 +848,34 @@ __metadata: languageName: node linkType: hard -"@homebridge/ciao@npm:^1.2.0": - version: 1.2.0 - resolution: "@homebridge/ciao@npm:1.2.0" +"@homebridge/ciao@npm:^1.3.1": + version: 1.3.1 + resolution: "@homebridge/ciao@npm:1.3.1" dependencies: - debug: "npm:^4.3.4" + debug: "npm:^4.3.6" fast-deep-equal: "npm:^3.1.3" source-map-support: "npm:^0.5.21" - tslib: "npm:^2.6.2" + tslib: "npm:^2.6.3" bin: ciao-bcs: lib/bonjour-conformance-testing.js - checksum: 10/ca56898a7e8fcb235f62fd447034498d6aae487c4267f249440b2407825a9a97e7a6dd4d9bc385498a7002d918c28e4c0e47261cb80b600890f82e647dc81232 + checksum: 10/7962c484e14fb12945ad341b6c94c2beac8291de34e1ce0200614fc99917c4d5d410851e49465c1de5b1020920059f5b198e15f713c93dee6b8c204f1b860fbb languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" +"@humanfs/core@npm:^0.19.0": + version: 0.19.0 + resolution: "@humanfs/core@npm:0.19.0" + checksum: 10/9c4f96b9e934b7d2f69c5ee8b9414dcaf5c5a03225eb08f8ace3b80429c0fc796e11c4e2ef182172790e7b4560b1137ef984da4dc9662cdd5e3e92baceb02821 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.5": + version: 0.16.5 + resolution: "@humanfs/node@npm:0.16.5" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/3ffb24ecdfab64014a230e127118d50a1a04d11080cbb748bc21629393d100850496456bbcb4e8c438957fe0934430d731042f1264d6a167b62d32fc2863580a + "@humanfs/core": "npm:^0.19.0" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10/16e49b5f9d4a3cf8205af18f0909b8c6e00faa70a0e01bc606b413423ee20123e53028b6ca22c57725595341d62e148cd1908c297a761ee495087cc674f7b0a6 languageName: node linkType: hard @@ -847,10 +886,17 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.0 + resolution: "@humanwhocodes/retry@npm:0.3.0" + checksum: 10/e574bab58680867414e225c9002e9a97eb396f85871c180fbb1a9bcdf9ded4b4de0b327f7d0c43b775873362b7c92956d4b322e8bc4b90be56077524341f04b2 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.3.1": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f languageName: node linkType: hard @@ -880,28 +926,28 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor-model@npm:7.29.2": - version: 7.29.2 - resolution: "@microsoft/api-extractor-model@npm:7.29.2" +"@microsoft/api-extractor-model@npm:7.29.8": + version: 7.29.8 + resolution: "@microsoft/api-extractor-model@npm:7.29.8" dependencies: "@microsoft/tsdoc": "npm:~0.15.0" "@microsoft/tsdoc-config": "npm:~0.17.0" - "@rushstack/node-core-library": "npm:5.4.1" - checksum: 10/21cf0c7172ec68a95cf491b5a5acea5a8187975601e4d52aec38f21aedf04910d3209765588debd7288592101cec05eaef59ef49eb2de05cbf3d78e0798ca368 + "@rushstack/node-core-library": "npm:5.9.0" + checksum: 10/06932e61f0a1979dbacc716e143f9d34d856338504cd8d016d98a3d3c83d60e7c25bfdc64d011c6ddf94de2351b52872e8722d970fce44c49bd630aeca32c987 languageName: node linkType: hard -"@microsoft/api-extractor@npm:^7.47.0": - version: 7.47.0 - resolution: "@microsoft/api-extractor@npm:7.47.0" +"@microsoft/api-extractor@npm:^7.47.9": + version: 7.47.9 + resolution: "@microsoft/api-extractor@npm:7.47.9" dependencies: - "@microsoft/api-extractor-model": "npm:7.29.2" + "@microsoft/api-extractor-model": "npm:7.29.8" "@microsoft/tsdoc": "npm:~0.15.0" "@microsoft/tsdoc-config": "npm:~0.17.0" - "@rushstack/node-core-library": "npm:5.4.1" - "@rushstack/rig-package": "npm:0.5.2" - "@rushstack/terminal": "npm:0.13.0" - "@rushstack/ts-command-line": "npm:4.22.0" + "@rushstack/node-core-library": "npm:5.9.0" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.14.2" + "@rushstack/ts-command-line": "npm:4.22.8" lodash: "npm:~4.17.15" minimatch: "npm:~3.0.3" resolve: "npm:~1.22.1" @@ -910,7 +956,7 @@ __metadata: typescript: "npm:5.4.2" bin: api-extractor: bin/api-extractor - checksum: 10/0c573beff459baa87748df312312063c94806ff96ab906757e77dbb3d87f5fb78c32e23a98476f24bb98ff598390a63d3aa27171e0ce4661521a32e87d588b7a + checksum: 10/1814708284ed95a45969060f794b24b21a5a5e17aa88ec95099a8fc052d5c435523f465f60c4128288e210a39ff056a564fb2b8f291959ef0fc3d7423759f837 languageName: node linkType: hard @@ -960,6 +1006,175 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-android-arm-eabi@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-android-arm-eabi@npm:1.0.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/nice-android-arm64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-android-arm64@npm:1.0.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/nice-darwin-arm64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-darwin-arm64@npm:1.0.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/nice-darwin-x64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-darwin-x64@npm:1.0.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/nice-freebsd-x64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-freebsd-x64@npm:1.0.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/nice-linux-arm64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-arm64-gnu@npm:1.0.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-arm64-musl@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-arm64-musl@npm:1.0.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-s390x-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-s390x-gnu@npm:1.0.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-x64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-x64-gnu@npm:1.0.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-x64-musl@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-x64-musl@npm:1.0.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/nice-win32-arm64-msvc@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-win32-arm64-msvc@npm:1.0.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/nice-win32-ia32-msvc@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-win32-ia32-msvc@npm:1.0.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@napi-rs/nice-win32-x64-msvc@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-win32-x64-msvc@npm:1.0.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/nice@npm:^1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice@npm:1.0.1" + dependencies: + "@napi-rs/nice-android-arm-eabi": "npm:1.0.1" + "@napi-rs/nice-android-arm64": "npm:1.0.1" + "@napi-rs/nice-darwin-arm64": "npm:1.0.1" + "@napi-rs/nice-darwin-x64": "npm:1.0.1" + "@napi-rs/nice-freebsd-x64": "npm:1.0.1" + "@napi-rs/nice-linux-arm-gnueabihf": "npm:1.0.1" + "@napi-rs/nice-linux-arm64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-arm64-musl": "npm:1.0.1" + "@napi-rs/nice-linux-ppc64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-riscv64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-s390x-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-x64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-x64-musl": "npm:1.0.1" + "@napi-rs/nice-win32-arm64-msvc": "npm:1.0.1" + "@napi-rs/nice-win32-ia32-msvc": "npm:1.0.1" + "@napi-rs/nice-win32-x64-msvc": "npm:1.0.1" + dependenciesMeta: + "@napi-rs/nice-android-arm-eabi": + optional: true + "@napi-rs/nice-android-arm64": + optional: true + "@napi-rs/nice-darwin-arm64": + optional: true + "@napi-rs/nice-darwin-x64": + optional: true + "@napi-rs/nice-freebsd-x64": + optional: true + "@napi-rs/nice-linux-arm-gnueabihf": + optional: true + "@napi-rs/nice-linux-arm64-gnu": + optional: true + "@napi-rs/nice-linux-arm64-musl": + optional: true + "@napi-rs/nice-linux-ppc64-gnu": + optional: true + "@napi-rs/nice-linux-riscv64-gnu": + optional: true + "@napi-rs/nice-linux-s390x-gnu": + optional: true + "@napi-rs/nice-linux-x64-gnu": + optional: true + "@napi-rs/nice-linux-x64-musl": + optional: true + "@napi-rs/nice-win32-arm64-msvc": + optional: true + "@napi-rs/nice-win32-ia32-msvc": + optional: true + "@napi-rs/nice-win32-x64-msvc": + optional: true + checksum: 10/ae265aa365b325830115c1cda49b05ea05e6f1163944a1485c0643c9552380cd32a2aaf12b326f353538ca6244222963eb2e9767a4713c9432eadecd027f90ea + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -987,16 +1202,6 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 - languageName: node - linkType: hard - "@npmcli/move-file@npm:^1.0.1": version: 1.1.2 resolution: "@npmcli/move-file@npm:1.1.2" @@ -1121,9 +1326,9 @@ __metadata: languageName: node linkType: hard -"@rushstack/node-core-library@npm:5.4.1": - version: 5.4.1 - resolution: "@rushstack/node-core-library@npm:5.4.1" +"@rushstack/node-core-library@npm:5.9.0": + version: 5.9.0 + resolution: "@rushstack/node-core-library@npm:5.9.0" dependencies: ajv: "npm:~8.13.0" ajv-draft-04: "npm:~1.0.0" @@ -1138,44 +1343,44 @@ __metadata: peerDependenciesMeta: "@types/node": optional: true - checksum: 10/7822a77987b99fa7ada0be01e715608820a0ca98b4e3c7c6cd7389fbe210f70ae1d4070d2d556a1ea0fd04fe624abafddf112092e407b53273bb019ad24cf6ce + checksum: 10/19d6c6fc6addfb27295d1d78e1027f5896ea43702c2e5168e8b235ee739f2e59a4dc3bb3996b083722fab4feae5f2c15c340900c6c1d517d56cc1ba945f532f1 languageName: node linkType: hard -"@rushstack/rig-package@npm:0.5.2": - version: 0.5.2 - resolution: "@rushstack/rig-package@npm:0.5.2" +"@rushstack/rig-package@npm:0.5.3": + version: 0.5.3 + resolution: "@rushstack/rig-package@npm:0.5.3" dependencies: resolve: "npm:~1.22.1" strip-json-comments: "npm:~3.1.1" - checksum: 10/2fd178a46c1662f110d06bcc7771898cc4316db62735f9b76281995b86263c1b248c60aead5c2f7ac6be023eb23f7ed28cff78ef813df7fb2b68a945e416814d + checksum: 10/b58a3925a41d7a0e79f4fde7c400a379683cc7b0073c447aba6d36231529a37e7d2f4559f459be785ad862ecb01b618b2d0ff60661046e5223437356155ccb14 languageName: node linkType: hard -"@rushstack/terminal@npm:0.13.0": - version: 0.13.0 - resolution: "@rushstack/terminal@npm:0.13.0" +"@rushstack/terminal@npm:0.14.2": + version: 0.14.2 + resolution: "@rushstack/terminal@npm:0.14.2" dependencies: - "@rushstack/node-core-library": "npm:5.4.1" + "@rushstack/node-core-library": "npm:5.9.0" supports-color: "npm:~8.1.1" peerDependencies: "@types/node": "*" peerDependenciesMeta: "@types/node": optional: true - checksum: 10/099c00b7df196aafb345899c395a3600e578bebb905b3de7e49971da0f03501b9ebf7b6442f07ee894ed47fb11e216c8e219d8075bdf9abc6d292658301ae300 + checksum: 10/4016499f3ed1eff7d870ff029bc51925f1435c0ed73d454385d6fdfe8f10e7e5fc2dba698a9aa671f2537603d2d08449782a0f329f321a7dcb87827c19385bca languageName: node linkType: hard -"@rushstack/ts-command-line@npm:4.22.0": - version: 4.22.0 - resolution: "@rushstack/ts-command-line@npm:4.22.0" +"@rushstack/ts-command-line@npm:4.22.8": + version: 4.22.8 + resolution: "@rushstack/ts-command-line@npm:4.22.8" dependencies: - "@rushstack/terminal": "npm:0.13.0" + "@rushstack/terminal": "npm:0.14.2" "@types/argparse": "npm:1.0.38" argparse: "npm:~1.0.9" string-argv: "npm:~0.3.1" - checksum: 10/274a1e8221edbe49f2693b3a8fe4a2c9767a81c31a9e6116eb861e7e895470eddc9c6ed7c32e22d3bed08232d07448843d54b63426c2f114d2298f16cd1ea413 + checksum: 10/f4d57a50b320f382929471258aaab6f38251a4febac981a503ae5217faec6fff68374d0126af59554d2f4a99e0ac67596649109fcc57608ef144b132de83cb63 languageName: node linkType: hard @@ -1322,48 +1527,39 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^2.0.0": - version: 2.0.0 - resolution: "@sinonjs/commons@npm:2.0.0" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10/bd6b44957077cd99067dcf401e80ed5ea03ba930cba2066edbbfe302d5fc973a108db25c0ae4930ee53852716929e4c94fa3b8a1510a51ac6869443a139d1e3d - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.0 - resolution: "@sinonjs/commons@npm:3.0.0" +"@sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" dependencies: type-detect: "npm:4.0.8" - checksum: 10/086720ae0bc370829322df32612205141cdd44e592a8a9ca97197571f8f970352ea39d3bda75b347c43789013ddab36b34b59e40380a49bdae1c2df3aa85fe4f + checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^11.2.2": - version: 11.2.2 - resolution: "@sinonjs/fake-timers@npm:11.2.2" +"@sinonjs/fake-timers@npm:^13.0.1, @sinonjs/fake-timers@npm:^13.0.2": + version: 13.0.2 + resolution: "@sinonjs/fake-timers@npm:13.0.2" dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 10/da7dfa677b2362bc5a321fc1563184755b5c62fbb1a72457fb9e901cd187ba9dc834f9e8a0fb5a4e1d1e6e6ad4c5b54e90900faa44dd6c82d3c49c92ec23ecd4 + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10/77cca5c548e2529931908c48ac375f162ee901bc52110197b4c470b2535c6c571f9ecd4fa12157f4d2ae174c5391f03940fb563a681a691fb44204a0ef3ded35 languageName: node linkType: hard -"@sinonjs/samsam@npm:^8.0.0": - version: 8.0.0 - resolution: "@sinonjs/samsam@npm:8.0.0" +"@sinonjs/samsam@npm:^8.0.1": + version: 8.0.2 + resolution: "@sinonjs/samsam@npm:8.0.2" dependencies: - "@sinonjs/commons": "npm:^2.0.0" + "@sinonjs/commons": "npm:^3.0.1" lodash.get: "npm:^4.4.2" - type-detect: "npm:^4.0.8" - checksum: 10/0c9928a7d16a2428ba561e410d9d637c08014d549cac4979c63a6580c56b69378dba80ea01b17e8e163f2ca5dd331376dae92eae8364857ef827ae59dbcfe0ce + type-detect: "npm:^4.1.0" + checksum: 10/58ca9752e8e835a09ed275f8edf8da2720fe95c0c02f6bcb90ad7f86fdceb393f35f744194b705dd94216228646ec0aedbb814e245eb869b940dcf1266b7a533 languageName: node linkType: hard -"@sinonjs/text-encoding@npm:^0.7.2": - version: 0.7.2 - resolution: "@sinonjs/text-encoding@npm:0.7.2" - checksum: 10/ec713fb44888c852d84ca54f6abf9c14d036c11a5d5bfab7825b8b9d2b22127dbe53412c68f4dbb0c05ea5ed61c64679bd2845c177d81462db41e0d3d7eca499 +"@sinonjs/text-encoding@npm:^0.7.3": + version: 0.7.3 + resolution: "@sinonjs/text-encoding@npm:0.7.3" + checksum: 10/f0cc89bae36e7ce159187dece7800b78831288f1913e9ae8cf8a878da5388232d2049740f6f4a43ec4b43b8ad1beb55f919f45eb9a577adb4a2a6eacb27b25fc languageName: node linkType: hard @@ -1383,15 +1579,26 @@ __metadata: languageName: node linkType: hard -"@ts-morph/common@npm:~0.24.0": - version: 0.24.0 - resolution: "@ts-morph/common@npm:0.24.0" +"@ts-morph/common@npm:~0.19.0": + version: 0.19.0 + resolution: "@ts-morph/common@npm:0.19.0" + dependencies: + fast-glob: "npm:^3.2.12" + minimatch: "npm:^7.4.3" + mkdirp: "npm:^2.1.6" + path-browserify: "npm:^1.0.1" + checksum: 10/6a7111c14b2793e2d07785a0d5431472cd5761e52edf0c297cd0e5400e8d75eb79f9b2e597ba1d7e687f1d2312e44d48fdd59d9e796cee9c9cd4528f2083dfab + languageName: node + linkType: hard + +"@ts-morph/common@npm:~0.25.0": + version: 0.25.0 + resolution: "@ts-morph/common@npm:0.25.0" dependencies: - fast-glob: "npm:^3.3.2" minimatch: "npm:^9.0.4" - mkdirp: "npm:^3.0.1" path-browserify: "npm:^1.0.1" - checksum: 10/5b732789868e92689c86a902c8f4528d998ac2e183a02cfeff6cf7731075d254cf3dd1e7bb73f2943ec1fcde6f2fb1caa19ee47a17a4289be08c224d68a902d4 + tinyglobby: "npm:^0.2.9" + checksum: 10/9b192dfebb7179e96267ea1720f6afe77964f9f89ecaca41d372da206cdfd838a77c1080026c73115a5d3a88752b1504ec7380907e26b6424e8fb7f7625c7461 languageName: node linkType: hard @@ -1418,13 +1625,13 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:^8.56.7": - version: 8.56.7 - resolution: "@types/eslint@npm:8.56.7" +"@types/eslint@npm:^9.6.1": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" dependencies: "@types/estree": "npm:*" "@types/json-schema": "npm:*" - checksum: 10/4c90f30a19bc5a01b27afc4f7e3efa28d191b7c9505fd4f6373d1dcdf8e93b939628d92ae730c3ef77bf2a094622296bb307cbecbad7cb6b43ef31dd722f6944 + checksum: 10/719fcd255760168a43d0e306ef87548e1e15bffe361d5f4022b0f266575637acc0ecb85604ac97879ee8ae83c6a6d0613b0ed31d0209ddf22a0fe6d608fc56fe languageName: node linkType: hard @@ -1435,6 +1642,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d + languageName: node + linkType: hard + "@types/fs-extra@npm:^11.0.4": version: 11.0.4 resolution: "@types/fs-extra@npm:11.0.4" @@ -1480,10 +1694,10 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12": - version: 7.0.12 - resolution: "@types/json-schema@npm:7.0.12" - checksum: 10/7a72ba9cb7d2b45d7bb032e063c9eeb1ce4102d62551761e84c91f99f8273ba5aaffd34be835869456ec7c40761b4389009d9e777c0020a7227ca0f5e3238e94 +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard @@ -1503,13 +1717,6 @@ __metadata: languageName: node linkType: hard -"@types/minimist@npm:^1.2.2": - version: 1.2.2 - resolution: "@types/minimist@npm:1.2.2" - checksum: 10/b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d - languageName: node - linkType: hard - "@types/node@npm:*": version: 16.0.0 resolution: "@types/node@npm:16.0.0" @@ -1517,12 +1724,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.19.42": - version: 18.19.42 - resolution: "@types/node@npm:18.19.42" +"@types/node@npm:^18.19.55": + version: 18.19.55 + resolution: "@types/node@npm:18.19.55" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/024e8a6fac679fb4ec41a53ffa986806f3ac49b6003c380e84afb088280b463112e056f2c4ad1db3e6e36a60be75a18c3af9903ddeeb483f470e9ea629bee6f2 + checksum: 10/7ba2b7203338f855fd7e90d09de3196e0d534c361ee0fbd7e3f24d416b867a017530d5721c4186f2c5402184e824a1fe65d2b5f9291751b9d8a7d2f9824f9a73 languageName: node linkType: hard @@ -1540,13 +1747,6 @@ __metadata: languageName: node linkType: hard -"@types/pegjs@npm:^0.10.6": - version: 0.10.6 - resolution: "@types/pegjs@npm:0.10.6" - checksum: 10/be219504714e219b37daee7ef3214b6876d98405cc56b2d084763134032fd46394c5d0e387216ee3e52bd519fe7341e25bdec855f2a911c49a593b21fd8ea4a6 - languageName: node - linkType: hard - "@types/proper-lockfile@npm:^4.1.4": version: 4.1.4 resolution: "@types/proper-lockfile@npm:4.1.4" @@ -1570,13 +1770,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.5.0": - version: 7.5.1 - resolution: "@types/semver@npm:7.5.1" - checksum: 10/8e19822a2f6282785f4787b3640a205161a65f85de3d2159c5077002adb6e90b2f80bb7c8324ffdb9643061763e1672747f04b0ef3e9ac4179de0dce20ad641d - languageName: node - linkType: hard - "@types/semver@npm:^7.5.8": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -1639,134 +1832,96 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.32": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" +"@types/yargs@npm:^17.0.33": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10/1e2b2673847011ce43607df690d392f137d95a2d6ea85aa319403eadda2ef4277365efd4982354d8843f2611ef3846c88599660aaeb537fa9ccddae83c2a89de + checksum: 10/16f6681bf4d99fb671bf56029141ed01db2862e3db9df7fc92d8bea494359ac96a1b4b1c35a836d1e95e665fb18ad753ab2015fc0db663454e8fd4e5d5e2ef91 languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.13.0" +"@typescript-eslint/eslint-plugin@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.8.1" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.13.0" - "@typescript-eslint/type-utils": "npm:7.13.0" - "@typescript-eslint/utils": "npm:7.13.0" - "@typescript-eslint/visitor-keys": "npm:7.13.0" + "@typescript-eslint/scope-manager": "npm:8.8.1" + "@typescript-eslint/type-utils": "npm:8.8.1" + "@typescript-eslint/utils": "npm:8.8.1" + "@typescript-eslint/visitor-keys": "npm:8.8.1" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^1.3.0" peerDependencies: - "@typescript-eslint/parser": ^7.0.0 - eslint: ^8.56.0 + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/93c3a0d8871d8351187503152a6c5199714eb62c96991e0d3e0caaee6881839dee4ad55e5de5d1a4389ae12ed10d3a845603de1f2f581337f782f19113022a65 + checksum: 10/6d45d7c3b2993f9d4130794596b029e72646f69581741ff2032b33f5c5d6b46c241b854556d04f769c2ef491e117c7d73013a07d74de3a0e0b557e648bc82a9c languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/parser@npm:7.13.0" +"@typescript-eslint/parser@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/parser@npm:8.8.1" dependencies: - "@typescript-eslint/scope-manager": "npm:7.13.0" - "@typescript-eslint/types": "npm:7.13.0" - "@typescript-eslint/typescript-estree": "npm:7.13.0" - "@typescript-eslint/visitor-keys": "npm:7.13.0" + "@typescript-eslint/scope-manager": "npm:8.8.1" + "@typescript-eslint/types": "npm:8.8.1" + "@typescript-eslint/typescript-estree": "npm:8.8.1" + "@typescript-eslint/visitor-keys": "npm:8.8.1" debug: "npm:^4.3.4" peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/ad930d9138c3caa9e0ac2d887798318b5b06df5aa1ecc50c2d8cd912e00cf13eb007256bfb4c11709f0191fc180614a15f84c0f0f03a50f035b0b8af0eb9409c - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10/fe91ac52ca8e09356a71dc1a2f2c326480f3cccfec6b2b6d9154c1a90651ab8ea270b07c67df5678956c3bbf0bbe7113ab68f68f21b20912ea528b1214197395 + checksum: 10/f19e9be6e8d3e4b574d5f2b1d7e23e3594ea8d5f0b2bd2e59d2fd237bd0a379597f4b7ba466b7e290c5f3c7bce044107a73b20159c17dc54a4cc6b2ca9470b4b languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/scope-manager@npm:7.13.0" +"@typescript-eslint/scope-manager@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/scope-manager@npm:8.8.1" dependencies: - "@typescript-eslint/types": "npm:7.13.0" - "@typescript-eslint/visitor-keys": "npm:7.13.0" - checksum: 10/2b258a06c5e747c80423b07855f052f327a4d5b0a0cf3a46221ef298653139d3b01ac1534fc0db6609fd962ba45ec87a0e12f8d3778183440923bcf4687832a5 + "@typescript-eslint/types": "npm:8.8.1" + "@typescript-eslint/visitor-keys": "npm:8.8.1" + checksum: 10/ab86b533d0cadaa3f325404ae8cda2c1c8e0b820d7b2265ad376a233bb073aa89783a8d20c2effa77552426f38405edaa71e4aa6a2676613ae8dec0e1f1ba061 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/type-utils@npm:7.13.0" +"@typescript-eslint/type-utils@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/type-utils@npm:8.8.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.13.0" - "@typescript-eslint/utils": "npm:7.13.0" + "@typescript-eslint/typescript-estree": "npm:8.8.1" + "@typescript-eslint/utils": "npm:8.8.1" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" - peerDependencies: - eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/f51ccb3c59963db82a504b02c8d15bc518137c176b8d39891f7bcb7b4b02ca0fa918a3754781f198f592f1047dc24c49086430bbef857d877d085e14d33f7a6c + checksum: 10/3aed62459e68a49f468004d966c914457db2288979234a9452043bff6d5ac7f2d46490fe13f4bb06fd91af085a50e6ac63b69eb66f9a27ee477f958af4738587 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10/e26da86d6f36ca5b6ef6322619f8ec55aabcd7d43c840c977ae13ae2c964c3091fc92eb33730d8be08927c9de38466c5323e78bfb270a9ff1d3611fe821046c5 +"@typescript-eslint/types@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/types@npm:8.8.1" + checksum: 10/5ac571810f24a266e1d46a8ce2a6665498fddf757a70eeeec959c993991f72d06a2bee7b848a6b27db958f7771034d8169a77117fd6ca7ed2c3166da9d27396b languageName: node linkType: hard -"@typescript-eslint/types@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/types@npm:7.13.0" - checksum: 10/5adc39c569217ed7d09853385313f1fcf2c05385e5e0144740238e346afbc0dec576c1eb46f779368736b080e6f9f368483fff3378b0bf7e6b275f27a904f04d - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b32fa35fca2a229e0f5f06793e5359ff9269f63e9705e858df95d55ca2cd7fdb5b3e75b284095a992c48c5fc46a1431a1a4b6747ede2dd08929dc1cbacc589b8 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.13.0" +"@typescript-eslint/typescript-estree@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.8.1" dependencies: - "@typescript-eslint/types": "npm:7.13.0" - "@typescript-eslint/visitor-keys": "npm:7.13.0" + "@typescript-eslint/types": "npm:8.8.1" + "@typescript-eslint/visitor-keys": "npm:8.8.1" debug: "npm:^4.3.4" - globby: "npm:^11.1.0" + fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" @@ -1774,65 +1929,31 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/d4cc68e8aa9902c5efa820582b05bfb6c1567e21e7743250778613a045f0b6bb05128f7cfc090368ab808ad91be6193b678569ca803f917b2958c3752bc4810b - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:7.13.0, @typescript-eslint/utils@npm:^7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/utils@npm:7.13.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.13.0" - "@typescript-eslint/types": "npm:7.13.0" - "@typescript-eslint/typescript-estree": "npm:7.13.0" - peerDependencies: - eslint: ^8.56.0 - checksum: 10/c87bbb90c958ed4617f88767890af2a797adcf28060e85809a9cad2ce4ed55b5db685d3a8d062dbbf89d2a49e85759e2a9deb92ee1946a95d5de6cbd14ea42f4 + checksum: 10/b569cd362c5f68cf0e1ca53a85bf78c989f10fe4b680423d47c6089bef7cb60b3ed10927232f57dd666e457e43259cec9415da54f2c7b2425062d7acd2e7c98e languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" +"@typescript-eslint/utils@npm:8.8.1, @typescript-eslint/utils@npm:^8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/utils@npm:8.8.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" + "@typescript-eslint/scope-manager": "npm:8.8.1" + "@typescript-eslint/types": "npm:8.8.1" + "@typescript-eslint/typescript-estree": "npm:8.8.1" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/b404a2c55a425a79d054346ae123087d30c7ecf7ed7abcf680c47bf70c1de4fabadc63434f3f460b2fa63df76bc9e4a0b9fa2383bb8a9fcd62733fb5c4e4f3e3 + eslint: ^8.57.0 || ^9.0.0 + checksum: 10/8ecd827af49d3c69ebe65283e5a4e6b44b48f24392319ed9336b8eec47e84fcbcc3e1b5f855ed6b782996cfc0cd289a0a14e40dd69234fd60eeee0a29047bde5 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" +"@typescript-eslint/visitor-keys@npm:8.8.1": + version: 8.8.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.8.1" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/30422cdc1e2ffad203df40351a031254b272f9c6f2b7e02e9bfa39e3fc2c7b1c6130333b0057412968deda17a3a68a578a78929a8139c6acef44d9d841dc72e1 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:7.13.0": - version: 7.13.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.13.0" - dependencies: - "@typescript-eslint/types": "npm:7.13.0" + "@typescript-eslint/types": "npm:8.8.1" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/5568dd435f22337c034da8c2dacd5be23b966c5978d25d96fca1358c59289861dfc4c39f2943c7790e947f75843d60035ad56c1f2c106f0e7d9ecf1ff6646065 - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 + checksum: 10/b5bfb4c9a98d3320639abcfd5aae52dd9c8af477743c5e324ceee1a9ea5f101e0ff7da3de08d3ef66e57854a86e155359bafff13f184493db9e0dffaf9e363c7 languageName: node linkType: hard @@ -1883,9 +2004,9 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/cc@workspace:packages/cc" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" + "@microsoft/api-extractor": "npm:^7.47.9" "@types/fs-extra": "npm:^11.0.4" - "@types/node": "npm:^18.19.42" + "@types/node": "npm:^18.19.55" "@zwave-js/core": "workspace:*" "@zwave-js/host": "workspace:*" "@zwave-js/maintenance": "workspace:*" @@ -1895,10 +2016,10 @@ __metadata: alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" ava: "npm:^6.1.3" - del-cli: "npm:^5.1.0" + del-cli: "npm:^6.0.0" fs-extra: "npm:^11.2.0" reflect-metadata: "npm:^0.2.2" - typescript: "npm:5.5.3" + typescript: "npm:5.6.2" languageName: unknown linkType: soft @@ -1906,37 +2027,36 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/config@workspace:packages/config" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" + "@microsoft/api-extractor": "npm:^7.47.9" "@types/fs-extra": "npm:^11.0.4" "@types/js-levenshtein": "npm:^1.1.3" "@types/json-logic-js": "npm:^2.0.7" - "@types/node": "npm:^18.19.42" - "@types/pegjs": "npm:^0.10.6" + "@types/node": "npm:^18.19.55" "@types/semver": "npm:^7.5.8" "@types/sinon": "npm:^17.0.3" "@types/xml2js": "npm:^0.4.14" - "@types/yargs": "npm:^17.0.32" + "@types/yargs": "npm:^17.0.33" "@zwave-js/core": "workspace:*" "@zwave-js/maintenance": "workspace:*" "@zwave-js/shared": "workspace:*" alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" ava: "npm:^6.1.3" - comment-json: "npm:^4.2.3" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + comment-json: "npm:^4.2.5" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" fs-extra: "npm:^11.2.0" got: "npm:^13.0.0" js-levenshtein: "npm:^1.1.6" - json-logic-js: "npm:^2.0.2" + json-logic-js: "npm:^2.0.5" json5: "npm:^2.2.3" - pegjs: "npm:^0.10.0" - semver: "npm:^7.6.2" - sinon: "npm:^17.0.1" - ts-pegjs: "npm:^0.3.1" - typescript: "npm:5.5.3" - winston: "npm:^3.13.0" + peggy: "npm:^3.0.2" + semver: "npm:^7.6.3" + sinon: "npm:^19.0.2" + ts-pegjs: "npm:^4.2.1" + typescript: "npm:5.6.2" + winston: "npm:^3.15.0" xml2js: "npm:^0.6.2" yargs: "npm:^17.7.2" languageName: unknown @@ -1947,27 +2067,27 @@ __metadata: resolution: "@zwave-js/core@workspace:packages/core" dependencies: "@alcalzone/jsonl-db": "npm:^3.1.1" - "@microsoft/api-extractor": "npm:^7.47.0" - "@types/node": "npm:^18.19.42" + "@microsoft/api-extractor": "npm:^7.47.9" + "@types/node": "npm:^18.19.55" "@types/sinon": "npm:^17.0.3" "@types/triple-beam": "npm:^1.3.5" "@zwave-js/shared": "workspace:*" alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" ava: "npm:^6.1.3" - dayjs: "npm:^1.11.10" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" - logform: "npm:^2.6.0" + dayjs: "npm:^1.11.13" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" + logform: "npm:^2.6.1" nrf-intel-hex: "npm:^1.4.0" reflect-metadata: "npm:^0.2.2" - sinon: "npm:^17.0.1" + sinon: "npm:^19.0.2" triple-beam: "npm:*" - typescript: "npm:5.5.3" - winston: "npm:^3.13.0" + typescript: "npm:5.6.2" + winston: "npm:^3.15.0" winston-daily-rotate-file: "npm:^5.0.0" - winston-transport: "npm:^4.7.1" + winston-transport: "npm:^4.8.0" languageName: unknown linkType: soft @@ -1975,11 +2095,13 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/eslint-plugin@workspace:packages/eslint-plugin" dependencies: - "@types/eslint": "npm:^8.56.7" - "@typescript-eslint/utils": "npm:^7.13.0" + "@types/eslint": "npm:^9.6.1" + "@typescript-eslint/utils": "npm:^8.8.1" "@zwave-js/core": "workspace:*" - eslint: "npm:^8.57.0" - typescript: "npm:5.5.3" + eslint: "npm:^9.12.0" + eslint-compat-utils: "npm:^0.5.1" + eslint-plugin-jsonc: "npm:^2.16.0" + typescript: "npm:5.6.2" languageName: unknown linkType: soft @@ -1988,12 +2110,12 @@ __metadata: resolution: "@zwave-js/flash@workspace:packages/flash" dependencies: "@types/fs-extra": "npm:^11.0.4" - "@types/node": "npm:^18.19.42" - "@types/yargs": "npm:^17.0.32" + "@types/node": "npm:^18.19.55" + "@types/yargs": "npm:^17.0.33" "@zwave-js/core": "workspace:*" - del-cli: "npm:^5.1.0" + del-cli: "npm:^6.0.0" fs-extra: "npm:^11.2.0" - typescript: "npm:5.5.3" + typescript: "npm:5.6.2" yargs: "npm:^17.7.2" zwave-js: "workspace:*" bin: @@ -2001,17 +2123,17 @@ __metadata: languageName: unknown linkType: soft -"@zwave-js/fmt@npm:^1.0.1": - version: 1.0.1 - resolution: "@zwave-js/fmt@npm:1.0.1" +"@zwave-js/fmt@npm:^1.0.2": + version: 1.0.2 + resolution: "@zwave-js/fmt@npm:1.0.2" dependencies: json5: "npm:^2.2.3" peerDependencies: - "@dprint/formatter": ^0.3.0 + "@dprint/formatter": ^0.4.1 "@dprint/json": ^0.19.3 - "@dprint/markdown": ^0.17.1 - "@dprint/typescript": ^0.91.1 - checksum: 10/e77bcfbcac61a083627f1ab810e7c9b0cca81705fb88b76a79daecbe641e48aa12447b1987356a648186a0b6f42d612d0ee7e1918d9cfd7aed283f44b23057bf + "@dprint/markdown": ^0.17.8 + "@dprint/typescript": ^0.93.0 + checksum: 10/024226eb41d7bf9759c22f7abad798082b0db4e43ad2ff530c273e84e14b77cdf5ea02b7e554ee8e3af365cf9ede5a9947b9e809b9289a56c6bbff24562c3204 languageName: node linkType: hard @@ -2019,14 +2141,14 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/host@workspace:packages/host" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" - "@types/node": "npm:^18.19.42" + "@microsoft/api-extractor": "npm:^7.47.9" + "@types/node": "npm:^18.19.55" "@zwave-js/config": "workspace:*" "@zwave-js/core": "workspace:*" "@zwave-js/shared": "workspace:*" alcalzone-shared: "npm:^4.0.8" - del-cli: "npm:^5.1.0" - typescript: "npm:5.5.3" + del-cli: "npm:^6.0.0" + typescript: "npm:5.6.2" languageName: unknown linkType: soft @@ -2034,31 +2156,31 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/maintenance@workspace:packages/maintenance" dependencies: - "@dprint/formatter": "npm:^0.3.0" + "@dprint/formatter": "npm:^0.4.1" "@dprint/json": "npm:^0.19.3" - "@dprint/markdown": "npm:^0.17.2" - "@dprint/typescript": "npm:^0.91.1" + "@dprint/markdown": "npm:^0.17.8" + "@dprint/typescript": "npm:^0.93.0" "@types/fs-extra": "npm:^11.0.4" "@types/globrex": "npm:^0.1.4" - "@types/node": "npm:^18.19.42" - "@types/yargs": "npm:^17.0.32" + "@types/node": "npm:^18.19.55" + "@types/yargs": "npm:^17.0.33" "@zwave-js/core": "workspace:*" - "@zwave-js/fmt": "npm:^1.0.1" + "@zwave-js/fmt": "npm:^1.0.2" "@zwave-js/shared": "workspace:*" ansi-colors: "npm:^4.1.3" cli-highlight: "npm:^2.1.11" - del-cli: "npm:^5.1.0" + del-cli: "npm:^6.0.0" dprint: "npm:^0.47.2" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" execa: "npm:^5.1.1" fs-extra: "npm:^11.2.0" globrex: "npm:^0.1.2" json5: "npm:^2.2.3" - piscina: "npm:^4.4.0" + piscina: "npm:^4.7.0" reflect-metadata: "npm:^0.2.2" - ts-morph: "npm:^23.0.0" - typescript: "npm:5.5.3" + ts-morph: "npm:^24.0.0" + typescript: "npm:5.6.2" yargs: "npm:^17.7.2" languageName: unknown linkType: soft @@ -2067,22 +2189,22 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/nvmedit@workspace:packages/nvmedit" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" + "@microsoft/api-extractor": "npm:^7.47.9" "@types/fs-extra": "npm:^11.0.4" - "@types/node": "npm:^18.19.42" + "@types/node": "npm:^18.19.55" "@types/semver": "npm:^7.5.8" - "@types/yargs": "npm:^17.0.32" + "@types/yargs": "npm:^17.0.33" "@zwave-js/core": "workspace:*" "@zwave-js/shared": "workspace:*" alcalzone-shared: "npm:^4.0.8" ava: "npm:^6.1.3" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" fs-extra: "npm:^11.2.0" reflect-metadata: "npm:^0.2.2" - semver: "npm:^7.6.2" - typescript: "npm:5.5.3" + semver: "npm:^7.6.3" + typescript: "npm:5.6.2" yargs: "npm:^17.7.2" bin: nvmedit: bin/nvmedit.js @@ -2093,34 +2215,32 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/repo@workspace:." dependencies: - "@actions/core": "npm:^1.10.1" + "@actions/core": "npm:^1.11.1" "@actions/exec": "npm:^1.1.1" "@actions/github": "npm:^6.0.0" "@alcalzone/jsonl-db": "npm:^3.1.1" "@alcalzone/monopack": "npm:^1.3.0" - "@alcalzone/release-script": "npm:~3.7.3" - "@commitlint/cli": "npm:^19.2.1" - "@commitlint/config-conventional": "npm:^19.1.0" - "@dprint/formatter": "npm:^0.3.0" + "@alcalzone/release-script": "npm:~3.8.0" + "@commitlint/cli": "npm:^19.5.0" + "@commitlint/config-conventional": "npm:^19.5.0" + "@dprint/formatter": "npm:^0.4.1" "@dprint/json": "npm:^0.19.3" - "@dprint/markdown": "npm:^0.17.2" - "@dprint/typescript": "npm:^0.91.1" - "@microsoft/api-extractor": "npm:^7.47.0" + "@dprint/markdown": "npm:^0.17.8" + "@dprint/typescript": "npm:^0.93.0" + "@microsoft/api-extractor": "npm:^7.47.9" "@monorepo-utils/workspaces-to-typescript-project-references": "npm:^2.10.4" "@tsconfig/node18": "npm:^18.2.4" "@types/fs-extra": "npm:^11.0.4" - "@types/node": "npm:^18.19.42" + "@types/node": "npm:^18.19.55" "@types/semver": "npm:^7.5.8" "@types/source-map-support": "npm:^0.5.10" "@types/xml2js": "npm:^0.4.14" - "@typescript-eslint/eslint-plugin": "npm:^7.13.0" - "@typescript-eslint/parser": "npm:^7.13.0" "@zwave-js/cc": "workspace:*" "@zwave-js/config": "workspace:*" "@zwave-js/core": "workspace:*" "@zwave-js/eslint-plugin": "workspace:*" "@zwave-js/flash": "workspace:*" - "@zwave-js/fmt": "npm:^1.0.1" + "@zwave-js/fmt": "npm:^1.0.2" "@zwave-js/host": "workspace:*" "@zwave-js/maintenance": "workspace:*" "@zwave-js/nvmedit": "workspace:*" @@ -2129,31 +2249,31 @@ __metadata: "@zwave-js/testing": "workspace:*" alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" - chokidar: "npm:^3.6.0" - comment-json: "npm:^4.2.3" - commitizen: "npm:^4.3.0" + chokidar: "npm:^4.0.1" + comment-json: "npm:^4.2.5" + commitizen: "npm:^4.3.1" cz-conventional-changelog: "npm:^3.3.0" - del-cli: "npm:^5.1.0" + del-cli: "npm:^6.0.0" dprint: "npm:^0.47.2" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" - eslint: "npm:^8.57.0" - eslint-plugin-deprecation: "npm:^2.0.0" - eslint-plugin-unicorn: "npm:^52.0.0" - eslint-plugin-unused-imports: "npm:^3.2.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" + eslint: "npm:^9.12.0" + eslint-plugin-unicorn: "npm:^56.0.0" + eslint-plugin-unused-imports: "patch:eslint-plugin-unused-imports@npm%3A4.1.4#~/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch" execa: "npm:^5.1.1" fs-extra: "npm:^11.2.0" - husky: "npm:^9.1.5" + husky: "npm:^9.1.6" json5: "npm:^2.2.3" jsonc-eslint-parser: "npm:^2.4.0" - lint-staged: "npm:^15.2.2" + lint-staged: "npm:^15.2.10" p-queue: "npm:^8.0.1" reflect-metadata: "npm:^0.2.2" - semver: "npm:^7.6.2" + semver: "npm:^7.6.3" source-map-support: "npm:^0.5.21" ts-patch: "npm:3.2.1" - turbo: "npm:1.13.4" - typescript: "npm:5.5.3" + turbo: "npm:2.1.3" + typescript: "npm:5.6.2" + typescript-eslint: "npm:^8.8.1" xml2js: "npm:^0.6.2" zwave-js: "workspace:*" languageName: unknown @@ -2163,11 +2283,11 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/serial@workspace:packages/serial" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" + "@microsoft/api-extractor": "npm:^7.47.9" "@serialport/binding-mock": "npm:^10.2.2" "@serialport/bindings-interface": "npm:*" "@serialport/stream": "npm:^12.0.0" - "@types/node": "npm:^18.19.42" + "@types/node": "npm:^18.19.55" "@types/sinon": "npm:^17.0.3" "@zwave-js/core": "workspace:*" "@zwave-js/host": "workspace:*" @@ -2175,13 +2295,13 @@ __metadata: alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" ava: "npm:^6.1.3" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" serialport: "npm:^12.0.0" - sinon: "npm:^17.0.1" - typescript: "npm:5.5.3" - winston: "npm:^3.13.0" + sinon: "npm:^19.0.2" + typescript: "npm:5.6.2" + winston: "npm:^3.15.0" languageName: unknown linkType: soft @@ -2189,18 +2309,18 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/shared@workspace:packages/shared" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" + "@microsoft/api-extractor": "npm:^7.47.9" "@types/fs-extra": "npm:^11.0.4" - "@types/node": "npm:^18.19.42" + "@types/node": "npm:^18.19.55" "@types/sinon": "npm:^17.0.3" alcalzone-shared: "npm:^4.0.8" ava: "npm:^6.1.3" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" fs-extra: "npm:^11.2.0" - sinon: "npm:^17.0.1" - typescript: "npm:5.5.3" + sinon: "npm:^19.0.2" + typescript: "npm:5.6.2" languageName: unknown linkType: soft @@ -2208,8 +2328,8 @@ __metadata: version: 0.0.0-use.local resolution: "@zwave-js/testing@workspace:packages/testing" dependencies: - "@microsoft/api-extractor": "npm:^7.47.0" - "@types/node": "npm:^18.19.42" + "@microsoft/api-extractor": "npm:^7.47.9" + "@types/node": "npm:^18.19.55" "@types/triple-beam": "npm:^1.3.5" "@zwave-js/cc": "workspace:*" "@zwave-js/core": "workspace:*" @@ -2218,12 +2338,12 @@ __metadata: "@zwave-js/shared": "workspace:*" alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" triple-beam: "npm:*" - typescript: "npm:5.5.3" - winston-transport: "npm:^4.7.1" + typescript: "npm:5.6.2" + winston-transport: "npm:^4.8.0" languageName: unknown linkType: soft @@ -2234,11 +2354,11 @@ __metadata: "@types/fs-extra": "npm:^11.0.4" ava: "npm:^6.1.3" cpy-cli: "npm:^5.0.0" - del-cli: "npm:^5.1.0" + del-cli: "npm:^6.0.0" execa: "npm:^5.1.1" fs-extra: "npm:^11.2.0" tsutils: "npm:^3.21.0" - typescript: "npm:5.5.3" + typescript: "npm:5.6.2" languageName: unknown linkType: soft @@ -2261,6 +2381,15 @@ __metadata: languageName: node linkType: hard +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10/ed84af329f1828327798229578b4fe03a4dd2596ba304083ebd2252666bdc1d7647d66d0b18704477e1f8aa315f055944aa6e859afebd341f12d0a53c37b4b40 + languageName: node + linkType: hard + "acorn-import-attributes@npm:^1.9.2": version: 1.9.5 resolution: "acorn-import-attributes@npm:1.9.5" @@ -2295,6 +2424,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.12.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 + languageName: node + linkType: hard + "acorn@npm:^8.5.0, acorn@npm:^8.9.0": version: 8.10.0 resolution: "acorn@npm:8.10.0" @@ -2478,10 +2616,12 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^6.2.0": - version: 6.2.1 - resolution: "ansi-escapes@npm:6.2.1" - checksum: 10/3b064937dc8a0645ed8094bc8b09483ee718f3aa3139746280e6c2ea80e28c0a3ce66973d0f33e88e60021abbf67e5f877deabfc810e75edf8a19dfa128850be +"ansi-escapes@npm:^7.0.0": + version: 7.0.0 + resolution: "ansi-escapes@npm:7.0.0" + dependencies: + environment: "npm:^1.0.0" + checksum: 10/2d0e2345087bd7ae6bf122b9cc05ee35560d40dcc061146edcdc02bc2d7c7c50143cd12a22e69a0b5c0f62b948b7bc9a4539ee888b80f5bd33cdfd82d01a70ab languageName: node linkType: hard @@ -2559,16 +2699,6 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10/985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - "aproba@npm:^1.0.3": version: 1.2.0 resolution: "aproba@npm:1.2.0" @@ -2783,13 +2913,6 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: 10/ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - "bindings@npm:^1.4.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" @@ -2836,7 +2959,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.1, braces@npm:^3.0.2, braces@npm:~3.0.2": +"braces@npm:^3.0.1, braces@npm:^3.0.2, braces@npm:^3.0.3": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -2845,17 +2968,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.0": - version: 4.23.0 - resolution: "browserslist@npm:4.23.0" +"browserslist@npm:^4.23.3": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" dependencies: - caniuse-lite: "npm:^1.0.30001587" - electron-to-chromium: "npm:^1.4.668" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.13" + caniuse-lite: "npm:^1.0.30001646" + electron-to-chromium: "npm:^1.5.4" + node-releases: "npm:^2.0.18" + update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10/496c3862df74565dd942b4ae65f502c575cbeba1fa4a3894dad7aa3b16130dc3033bc502d8848147f7b625154a284708253d9598bcdbef5a1e34cf11dc7bad8e + checksum: 10/e266d18c6c6c5becf9a1a7aa264477677b9796387972e8fce34854bb33dc1666194dc28389780e5dc6566e68a95e87ece2ce222e1c4ca93c2b75b61dfebd5f1c languageName: node linkType: hard @@ -2876,6 +2999,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10/b6bc68237ebf29bdacae48ce60e5e28fc53ae886301f2ad9496618efac49427ed79096750033e7eab1897a4f26ae374ace49106a5758f38fb70c78c9fda2c3b1 + languageName: node + linkType: hard + "builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" @@ -2962,22 +3095,10 @@ __metadata: version: 6.2.2 resolution: "camelcase-keys@npm:6.2.2" dependencies: - camelcase: "npm:^5.3.1" - map-obj: "npm:^4.0.0" - quick-lru: "npm:^4.0.1" - checksum: 10/c1999f5b6d03bee7be9a36e48eef3da9e93e51b000677348ec8d15d51fc4418375890fb6c7155e387322d2ebb2a2cdebf9cd96607a6753d1d6c170d9b1e2eed5 - languageName: node - linkType: hard - -"camelcase-keys@npm:^7.0.0": - version: 7.0.2 - resolution: "camelcase-keys@npm:7.0.2" - dependencies: - camelcase: "npm:^6.3.0" - map-obj: "npm:^4.1.0" - quick-lru: "npm:^5.1.1" - type-fest: "npm:^1.2.1" - checksum: 10/6f92d969b7fa97456ffc35fe93f0a42d0d0a00fbd94bfc6cac07c84da86e6acfb89fdf04151460d47c583d2dd38a3e9406f980efe9a3d2e143cdfe46a7343083 + camelcase: "npm:^5.3.1" + map-obj: "npm:^4.0.0" + quick-lru: "npm:^4.0.1" + checksum: 10/c1999f5b6d03bee7be9a36e48eef3da9e93e51b000677348ec8d15d51fc4418375890fb6c7155e387322d2ebb2a2cdebf9cd96607a6753d1d6c170d9b1e2eed5 languageName: node linkType: hard @@ -2988,17 +3109,10 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.3.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001605 - resolution: "caniuse-lite@npm:1.0.30001605" - checksum: 10/c5671465d7301ecea515698e6b680f20933d1c5351c0381b6ef1a14bf911b3f1f8b7633eedc10339268036f0a63d703bc8d36071412f89495b48630f01a21fe5 +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001660 + resolution: "caniuse-lite@npm:1.0.30001660" + checksum: 10/5d83f0b7e2075b7e31f114f739155dc6c21b0afe8cb61180f625a4903b0ccd3d7591a5f81c930f14efddfa57040203ba0890850b8a3738f6c7f17c7dd83b9de8 languageName: node linkType: hard @@ -3011,13 +3125,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:5.3.0, chalk@npm:^5.3.0": - version: 5.3.0 - resolution: "chalk@npm:5.3.0" - checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea - languageName: node - linkType: hard - "chalk@npm:^2.0.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -3049,6 +3156,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.3.0, chalk@npm:~5.3.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea + languageName: node + linkType: hard + "chardet@npm:^0.7.0": version: 0.7.0 resolution: "chardet@npm:0.7.0" @@ -3056,22 +3170,12 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.6.0": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10/c327fb07704443f8d15f7b4a7ce93b2f0bc0e6cea07ec28a7570aa22cd51fcf0379df589403976ea956c369f25aa82d84561947e227cd925902e1751371658df +"chokidar@npm:^4.0.1": + version: 4.0.1 + resolution: "chokidar@npm:4.0.1" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10/62749d2173a60cc5632d6c6e0b7024f33aadce47b06d02e55ad03c7b8daaaf2fc85d4296c047473d04387fd992dab9384cc5263c70a3dc3018b7ebecfb5b5217 languageName: node linkType: hard @@ -3146,12 +3250,12 @@ __metadata: languageName: node linkType: hard -"cli-cursor@npm:^4.0.0": - version: 4.0.0 - resolution: "cli-cursor@npm:4.0.0" +"cli-cursor@npm:^5.0.0": + version: 5.0.0 + resolution: "cli-cursor@npm:5.0.0" dependencies: - restore-cursor: "npm:^4.0.0" - checksum: 10/ab3f3ea2076e2176a1da29f9d64f72ec3efad51c0960898b56c8a17671365c26e67b735920530eaf7328d61f8bd41c27f46b9cf6e4e10fe2fa44b5e8c0e392cc + restore-cursor: "npm:^5.0.0" + checksum: 10/1eb9a3f878b31addfe8d82c6d915ec2330cec8447ab1f117f4aa34f0137fbb3137ec3466e1c9a65bcb7557f6e486d343f2da57f253a2f668d691372dfa15c090 languageName: node linkType: hard @@ -3231,10 +3335,17 @@ __metadata: languageName: node linkType: hard -"code-block-writer@npm:^13.0.1": - version: 13.0.1 - resolution: "code-block-writer@npm:13.0.1" - checksum: 10/3da803b1149d05a09b99e150df0e6d2ac5007bcf2ddd23d72e8b3e827cb6b7cb69b695472cfbc8b46a2bca4e7c11636788b9a7e7d518f3b45d0bddcac240b4af +"code-block-writer@npm:^12.0.0": + version: 12.0.0 + resolution: "code-block-writer@npm:12.0.0" + checksum: 10/7dc531e652b4654f6e0487923df74cda7294da01c6ac225f523256c6ae5f7f4eb5c4dc7902a9e64b81dba4b22e7d843454ed71a59954d31aa8656184c6c0c8ff + languageName: node + linkType: hard + +"code-block-writer@npm:^13.0.3": + version: 13.0.3 + resolution: "code-block-writer@npm:13.0.3" + checksum: 10/771546224f38610eecee0598e83c9e0f86dcd600ea316dbf27c2cfebaab4fed51b042325aa460b8e0f131fac5c1de208f6610a1ddbffe4b22e76f9b5256707cb languageName: node linkType: hard @@ -3348,10 +3459,17 @@ __metadata: languageName: node linkType: hard -"commander@npm:11.1.0": - version: 11.1.0 - resolution: "commander@npm:11.1.0" - checksum: 10/66bd2d8a0547f6cb1d34022efb25f348e433b0e04ad76a65279b1b09da108f59a4d3001ca539c60a7a46ea38bcf399fc17d91adad76a8cf43845d8dcbaf5cda1 +"commander@npm:^10.0.0": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10/8799faa84a30da985802e661cc9856adfaee324d4b138413013ef7f087e8d7924b144c30a1f1405475f0909f467665cd9e1ce13270a2f41b141dab0b7a58f3fb + languageName: node + linkType: hard + +"commander@npm:~12.1.0": + version: 12.1.0 + resolution: "commander@npm:12.1.0" + checksum: 10/cdaeb672d979816853a4eed7f1310a9319e8b976172485c2a6b437ed0db0a389a44cfb222bfbde772781efa9f215bdd1b936f80d6b249485b465c6cb906e1f93 languageName: node linkType: hard @@ -3367,16 +3485,16 @@ __metadata: languageName: node linkType: hard -"comment-json@npm:^4.2.3": - version: 4.2.3 - resolution: "comment-json@npm:4.2.3" +"comment-json@npm:^4.2.5": + version: 4.2.5 + resolution: "comment-json@npm:4.2.5" dependencies: array-timsort: "npm:^1.0.3" core-util-is: "npm:^1.0.3" esprima: "npm:^4.0.1" has-own-prop: "npm:^2.0.0" repeat-string: "npm:^1.6.1" - checksum: 10/97eb6ff8231653864cea5c7721636e823194f0322cd7f0faa6154a1c5b5eb1cab2ca60526bc36d5b39e7c2bcf7eb175b57fd8e44b1c398f0c70ea8c9a114e834 + checksum: 10/dc347621de15043a16846a1697a6248b427e913ddfb57f3427ca4eedf9c92131000d5e8efc8be9fe191a74dc36b615d73207fc3585bf29ca1b8d32e90d40c801 languageName: node linkType: hard @@ -3406,9 +3524,9 @@ __metadata: languageName: node linkType: hard -"commitizen@npm:^4.3.0": - version: 4.3.0 - resolution: "commitizen@npm:4.3.0" +"commitizen@npm:^4.3.1": + version: 4.3.1 + resolution: "commitizen@npm:4.3.1" dependencies: cachedir: "npm:2.3.0" cz-conventional-changelog: "npm:3.3.0" @@ -3428,7 +3546,7 @@ __metadata: commitizen: bin/commitizen cz: bin/git-cz git-cz: bin/git-cz - checksum: 10/45a82b7fdeb901654b39de37567995ef99c6e33e02406b25dd1059a75f880d9cd593fa4d52a32b2e70baef8754bb32c1bf8e5b9d9336f32087bf7f451cb3f72c + checksum: 10/3feeb9d235a4d433772f9987df7843ba8687d84491502ffbf0e71e33070b5910507f9923278dfbea56afb446b0b474f74117e586e3d3f6c5c5a155f1a64b6066 languageName: node linkType: hard @@ -3525,12 +3643,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.34.0": - version: 3.36.1 - resolution: "core-js-compat@npm:3.36.1" +"core-js-compat@npm:^3.38.1": + version: 3.38.1 + resolution: "core-js-compat@npm:3.38.1" dependencies: - browserslist: "npm:^4.23.0" - checksum: 10/d86b46805de7f5ba3675ed21532ecc64b6c1f123be7286b9efa7941ec087cd8d2446cb555f03a407dbbbeb6e881d1baf92eaffb7f051b11d9103f39c8731fa62 + browserslist: "npm:^4.23.3" + checksum: 10/4e2f219354fd268895f79486461a12df96f24ed307321482fe2a43529c5a64e7c16bcba654980ba217d603444f5141d43a79058aeac77511085f065c5da72207 languageName: node linkType: hard @@ -3702,10 +3820,10 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:^1.11.10": - version: 1.11.10 - resolution: "dayjs@npm:1.11.10" - checksum: 10/27e8f5bc01c0a76f36c656e62ab7f08c2e7b040b09e613cd4844abf03fb258e0350f0a83b02c887b84d771c1f11e092deda0beef8c6df2a1afbc3f6c1fade279 +"dayjs@npm:^1.11.13": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: 10/7374d63ab179b8d909a95e74790def25c8986e329ae989840bacb8b1888be116d20e1c4eee75a69ea0dfbae13172efc50ef85619d304ee7ca3c01d5878b704f5 languageName: node linkType: hard @@ -3745,6 +3863,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.6, debug@npm:~4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.0 resolution: "decamelize-keys@npm:1.1.0" @@ -3762,13 +3892,6 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^5.0.0": - version: 5.0.1 - resolution: "decamelize@npm:5.0.1" - checksum: 10/643e88804c538a334fae303ae1da8b30193b81dad8689643b35e6ab8ab60a3b03492cab6096d8163bd41fd384d969485f0634c000f80af502aa7f4047258d5b4 - languageName: node - linkType: hard - "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -3808,32 +3931,30 @@ __metadata: languageName: node linkType: hard -"del-cli@npm:^5.1.0": - version: 5.1.0 - resolution: "del-cli@npm:5.1.0" +"del-cli@npm:^6.0.0": + version: 6.0.0 + resolution: "del-cli@npm:6.0.0" dependencies: - del: "npm:^7.1.0" - meow: "npm:^10.1.3" + del: "npm:^8.0.0" + meow: "npm:^13.2.0" bin: del: cli.js del-cli: cli.js - checksum: 10/b52b7ce997a5f1591fb420c0931ef24e71cee80788a7750704903f6e82fc846375466bb991655e2ad7234d237a9e8a90545e2ab1d728fba5ad9e67573500b084 + checksum: 10/5441e55c9181f364e84a1d211e53a03476a806e795f6b7d576673f164a9f76e0dc846413a47730f6224913974ba54dabb1884f854a9cf4d418084872bdaaa229 languageName: node linkType: hard -"del@npm:^7.1.0": - version: 7.1.0 - resolution: "del@npm:7.1.0" +"del@npm:^8.0.0": + version: 8.0.0 + resolution: "del@npm:8.0.0" dependencies: - globby: "npm:^13.1.2" - graceful-fs: "npm:^4.2.10" + globby: "npm:^14.0.2" is-glob: "npm:^4.0.3" is-path-cwd: "npm:^3.0.0" is-path-inside: "npm:^4.0.0" - p-map: "npm:^5.5.0" - rimraf: "npm:^3.0.2" - slash: "npm:^4.0.0" - checksum: 10/93527e78e95125809ff20a112814b00648ed64af204be1a565862698060c9ec8f5c5fe1a4866725acfde9b0da6423f4b7a7642c1d38cd4b05cbeb643a7b089e3 + p-map: "npm:^7.0.2" + slash: "npm:^5.1.0" + checksum: 10/502dea7a846f989e1d921733f5d41ae4ae9b3eff168d335bfc050c9ce938ddc46198180be133814269268c4b0aed441a82fbace948c0ec5eed4ed086a4ad3b0e languageName: node linkType: hard @@ -3893,10 +4014,10 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.1.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: 10/f4557032a98b2967fe27b1a91dfcf8ebb6b9a24b1afe616b5c2312465100b861e9b8d4da374be535f2d6b967ce2f53826d7f6edc2a0d32b2ab55abc96acc2f9d +"diff@npm:^7.0.0": + version: 7.0.0 + resolution: "diff@npm:7.0.0" + checksum: 10/e9b8e48d054c9c0c093c65ce8e2637af94b35f2427001607b14e5e0589e534ea3413a7f91ebe6d7c5a1494ace49cb7c7c3972f442ddd96a4767ff091999a082e languageName: node linkType: hard @@ -3918,15 +4039,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/b4b28f1df5c563f7d876e7461254a4597b8cabe915abe94d7c5d1633fed263fcf9a85e8d3836591fc2d040108e822b0d32758e5ec1fe31c590dc7e08086e3e48 - languageName: node - linkType: hard - "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -3971,10 +4083,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.668": - version: 1.4.727 - resolution: "electron-to-chromium@npm:1.4.727" - checksum: 10/c97e8e630b07eee98a3d0c2e670f4acf4854db50cf675a8eb71e61d4efced0c9dc497b19b6c2a86bd91a8e6f29660dc2a139197c239f018bd0061f24e7241d18 +"electron-to-chromium@npm:^1.5.4": + version: 1.5.24 + resolution: "electron-to-chromium@npm:1.5.24" + checksum: 10/c7c64e4d48667d24515eee76989e62223f618f01cfde4a76f4624cd67f1ccf97f07e2d630027f6986f59b2ff30f35870e3c0c63f2deec5d962364159c21c4513 languageName: node linkType: hard @@ -4031,6 +4143,13 @@ __metadata: languageName: node linkType: hard +"environment@npm:^1.0.0": + version: 1.1.0 + resolution: "environment@npm:1.1.0" + checksum: 10/dd3c1b9825e7f71f1e72b03c2344799ac73f2e9ef81b78ea8b373e55db021786c6b9f3858ea43a436a2c4611052670ec0afe85bc029c384cc71165feee2f4ba6 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -4047,44 +4166,45 @@ __metadata: languageName: node linkType: hard -"esbuild-register@npm:^3.5.0": - version: 3.5.0 - resolution: "esbuild-register@npm:3.5.0" +"esbuild-register@npm:^3.6.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" dependencies: debug: "npm:^4.3.4" peerDependencies: esbuild: ">=0.12 <1" - checksum: 10/af6874ce9b5fcdb0974c9d9e9f16530a5b9bd80c699b2ba9d7ace33439c1af1be6948535c775d9a6439e2bf23fb31cfd54ac882cfa38308a3f182039f4b98a01 - languageName: node - linkType: hard - -"esbuild@npm:0.21.5": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.21.5" - "@esbuild/android-arm": "npm:0.21.5" - "@esbuild/android-arm64": "npm:0.21.5" - "@esbuild/android-x64": "npm:0.21.5" - "@esbuild/darwin-arm64": "npm:0.21.5" - "@esbuild/darwin-x64": "npm:0.21.5" - "@esbuild/freebsd-arm64": "npm:0.21.5" - "@esbuild/freebsd-x64": "npm:0.21.5" - "@esbuild/linux-arm": "npm:0.21.5" - "@esbuild/linux-arm64": "npm:0.21.5" - "@esbuild/linux-ia32": "npm:0.21.5" - "@esbuild/linux-loong64": "npm:0.21.5" - "@esbuild/linux-mips64el": "npm:0.21.5" - "@esbuild/linux-ppc64": "npm:0.21.5" - "@esbuild/linux-riscv64": "npm:0.21.5" - "@esbuild/linux-s390x": "npm:0.21.5" - "@esbuild/linux-x64": "npm:0.21.5" - "@esbuild/netbsd-x64": "npm:0.21.5" - "@esbuild/openbsd-x64": "npm:0.21.5" - "@esbuild/sunos-x64": "npm:0.21.5" - "@esbuild/win32-arm64": "npm:0.21.5" - "@esbuild/win32-ia32": "npm:0.21.5" - "@esbuild/win32-x64": "npm:0.21.5" + checksum: 10/4ae1a016e3dad5b53c3d68cf07e31d8c1cec1a0b584038ece726097ac80bd33ab48fb224c766c9b341c04793837e652461eaca9327a116e7564f553b61ccca71 + languageName: node + linkType: hard + +"esbuild@npm:0.24.0": + version: 0.24.0 + resolution: "esbuild@npm:0.24.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.0" + "@esbuild/android-arm": "npm:0.24.0" + "@esbuild/android-arm64": "npm:0.24.0" + "@esbuild/android-x64": "npm:0.24.0" + "@esbuild/darwin-arm64": "npm:0.24.0" + "@esbuild/darwin-x64": "npm:0.24.0" + "@esbuild/freebsd-arm64": "npm:0.24.0" + "@esbuild/freebsd-x64": "npm:0.24.0" + "@esbuild/linux-arm": "npm:0.24.0" + "@esbuild/linux-arm64": "npm:0.24.0" + "@esbuild/linux-ia32": "npm:0.24.0" + "@esbuild/linux-loong64": "npm:0.24.0" + "@esbuild/linux-mips64el": "npm:0.24.0" + "@esbuild/linux-ppc64": "npm:0.24.0" + "@esbuild/linux-riscv64": "npm:0.24.0" + "@esbuild/linux-s390x": "npm:0.24.0" + "@esbuild/linux-x64": "npm:0.24.0" + "@esbuild/netbsd-x64": "npm:0.24.0" + "@esbuild/openbsd-arm64": "npm:0.24.0" + "@esbuild/openbsd-x64": "npm:0.24.0" + "@esbuild/sunos-x64": "npm:0.24.0" + "@esbuild/win32-arm64": "npm:0.24.0" + "@esbuild/win32-ia32": "npm:0.24.0" + "@esbuild/win32-x64": "npm:0.24.0" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -4122,6 +4242,8 @@ __metadata: optional: true "@esbuild/netbsd-x64": optional: true + "@esbuild/openbsd-arm64": + optional: true "@esbuild/openbsd-x64": optional: true "@esbuild/sunos-x64": @@ -4134,7 +4256,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/d2ff2ca84d30cce8e871517374d6c2290835380dc7cd413b2d49189ed170d45e407be14de2cb4794cf76f75cf89955c4714726ebd3de7444b3046f5cab23ab6b + checksum: 10/500f83a1216d6548053007b85c070d8293395db344605b17418c6cf1217e5e8d338fa77fc8af27c23faa121c5528e5b0004d46d3a0cdeb87d48f1b5fa0164bc5 languageName: node linkType: hard @@ -4145,6 +4267,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.1.2": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 + languageName: node + linkType: hard + "escape-string-regexp@npm:5.0.0, escape-string-regexp@npm:^5.0.0": version: 5.0.0 resolution: "escape-string-regexp@npm:5.0.0" @@ -4173,31 +4302,45 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-deprecation@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-plugin-deprecation@npm:2.0.0" +"eslint-compat-utils@npm:^0.5.0, eslint-compat-utils@npm:^0.5.1": + version: 0.5.1 + resolution: "eslint-compat-utils@npm:0.5.1" dependencies: - "@typescript-eslint/utils": "npm:^6.0.0" - tslib: "npm:^2.3.1" - tsutils: "npm:^3.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10/ac65ac1c6107cf19f63f5fc17cea361c9cb1336be7356f23dbb0fac10979974b4622e13e950be43cbf431801f2c07f7dab448573181ccf6edc0b86d5b5304511 + languageName: node + linkType: hard + +"eslint-plugin-jsonc@npm:^2.16.0": + version: 2.16.0 + resolution: "eslint-plugin-jsonc@npm:2.16.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + eslint-compat-utils: "npm:^0.5.0" + espree: "npm:^9.6.1" + graphemer: "npm:^1.4.0" + jsonc-eslint-parser: "npm:^2.0.4" + natural-compare: "npm:^1.4.0" + synckit: "npm:^0.6.0" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: ^4.2.4 || ^5.0.0 - checksum: 10/810276afa258155a35c863bb2138ebd2132447c3ed219e360915b0e7b4c6e77e09ae2931583d200b1f23e19040a27ad81c0927538a46392334bb4c3c4a2038b4 + eslint: ">=6.0.0" + checksum: 10/bec880a4d6f0cd8ba37ae3a6528477d3161b41ca7b885ed43c34bed95d09b30fd1d277bfa9e487164f5a8aad265f3b075a4b479c20811fe0dd18c25b6835cf56 languageName: node linkType: hard -"eslint-plugin-unicorn@npm:^52.0.0": - version: 52.0.0 - resolution: "eslint-plugin-unicorn@npm:52.0.0" +"eslint-plugin-unicorn@npm:^56.0.0": + version: 56.0.0 + resolution: "eslint-plugin-unicorn@npm:56.0.0" dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.20" + "@babel/helper-validator-identifier": "npm:^7.24.7" "@eslint-community/eslint-utils": "npm:^4.4.0" - "@eslint/eslintrc": "npm:^2.1.4" ci-info: "npm:^4.0.0" clean-regexp: "npm:^1.0.0" - core-js-compat: "npm:^3.34.0" - esquery: "npm:^1.5.0" + core-js-compat: "npm:^3.38.1" + esquery: "npm:^1.6.0" + globals: "npm:^15.9.0" indent-string: "npm:^4.0.0" is-builtin-module: "npm:^3.2.1" jsesc: "npm:^3.0.2" @@ -4205,43 +4348,47 @@ __metadata: read-pkg-up: "npm:^7.0.1" regexp-tree: "npm:^0.1.27" regjsparser: "npm:^0.10.0" - semver: "npm:^7.5.4" + semver: "npm:^7.6.3" strip-indent: "npm:^3.0.0" peerDependencies: eslint: ">=8.56.0" - checksum: 10/69b8aeee04806b808a534fe5484ad75ee9feec6078aad90651d7ce7216e2bd14980fec5a2e05fd800b874406a54240af66f04ab83023a7f1fe67397b6dc4c032 + checksum: 10/142c66c65b2fd53136727a434b0fc77e9a9f9614aebe09330aeab83b021c842c3a5f9dafe3130c0f39fbd3562e91aadcc55a9de4312639e70fe7efb475cd358e languageName: node linkType: hard -"eslint-plugin-unused-imports@npm:^3.2.0": - version: 3.2.0 - resolution: "eslint-plugin-unused-imports@npm:3.2.0" - dependencies: - eslint-rule-composer: "npm:^0.3.0" +"eslint-plugin-unused-imports@npm:4.1.4": + version: 4.1.4 + resolution: "eslint-plugin-unused-imports@npm:4.1.4" peerDependencies: - "@typescript-eslint/eslint-plugin": 6 - 7 - eslint: 8 + "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true - checksum: 10/05ce3ae4278245caeb25af28aa6832ecd59d664633f31b1dd498798d27cb7f959e2af1b8feeef789a87755541f47b222156c29420f1777d4c5f022e842171ed7 + checksum: 10/8e987028ad925ce1e04c01dcae70adbf44c2878a8b15c4327b33a2861e471d7fe00f6fe213fbd2b936f3fcefc8ccabb0d778aa1d6e0e0387a3dc7fe150cd4ed4 languageName: node linkType: hard -"eslint-rule-composer@npm:^0.3.0": - version: 0.3.0 - resolution: "eslint-rule-composer@npm:0.3.0" - checksum: 10/c751e71243c6750de553ca0f586a71c7e9d43864bcbd0536639f287332e3f1ed3337bb0db07020652fa90937ceb63b6cc14c0f71fb227e8fc20ca44ee67e837f +"eslint-plugin-unused-imports@patch:eslint-plugin-unused-imports@npm%3A4.1.4#~/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch": + version: 4.1.4 + resolution: "eslint-plugin-unused-imports@patch:eslint-plugin-unused-imports@npm%3A4.1.4#~/.yarn/patches/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3.patch::version=4.1.4&hash=ca53e2" + peerDependencies: + "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + checksum: 10/4607a8f4350aa713c658aeab1376898888058539877462ef94a1a0aa314140c2d270ea7b5fe9150ef5284e801d616de3a4a7457721bd2fc988ffa77d7a90e174 languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.1.0": + version: 8.1.0 + resolution: "eslint-scope@npm:8.1.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 + checksum: 10/4c34a12fbeb0677822a9e93e81f2027e39e6f27557c17bc1e5ff76debbd41e748c3673517561792bda9e276245f89fbfd9b0b24fcec3b33a04ee2196729b3489 languageName: node linkType: hard @@ -4266,73 +4413,100 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.57.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" +"eslint-visitor-keys@npm:^4.0.0": + version: 4.0.0 + resolution: "eslint-visitor-keys@npm:4.0.0" + checksum: 10/c7617166e6291a15ce2982b5c4b9cdfb6409f5c14562712d12e2584480cdf18609694b21d7dad35b02df0fa2cd037505048ded54d2f405c64f600949564eb334 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.1.0": + version: 4.1.0 + resolution: "eslint-visitor-keys@npm:4.1.0" + checksum: 10/3fb5bd1b2f36db89d0ac57ddd66d36ccd3b1e3cddb2a55a0f9f6f1c85268cfcc1cc32e7eda4990e3423107a120dd254fb6cb52d6154cf81d344d8c3fa671f7c2 + languageName: node + linkType: hard + +"eslint@npm:^9.12.0": + version: 9.12.0 + resolution: "eslint@npm:9.12.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" + "@eslint-community/regexpp": "npm:^4.11.0" + "@eslint/config-array": "npm:^0.18.0" + "@eslint/core": "npm:^0.6.0" + "@eslint/eslintrc": "npm:^3.1.0" + "@eslint/js": "npm:9.12.0" + "@eslint/plugin-kit": "npm:^0.2.0" + "@humanfs/node": "npm:^0.16.5" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" + "@humanwhocodes/retry": "npm:^0.3.1" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.2" debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" + eslint-scope: "npm:^8.1.0" + eslint-visitor-keys: "npm:^4.1.0" + espree: "npm:^10.2.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" text-table: "npm:^0.2.0" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10/00496e218b23747a7a9817bf58b522276d0dc1f2e546dceb4eea49f9871574088f72f1f069a6b560ef537efa3a75261b8ef70e51ef19033da1cc4c86a755ef15 + checksum: 10/c3f10d1ca3798bf1d0f71e43846e254d4bf0ea9ffbb0e61f9686a98e412aa762a454c5e5ef4e74fd71956b1500c04817c9f08dbf7a0cec47317160e28f585e4f languageName: node linkType: hard -"espree@npm:^9.0.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"espree@npm:^10.0.1": + version: 10.1.0 + resolution: "espree@npm:10.1.0" dependencies: - acorn: "npm:^8.9.0" + acorn: "npm:^8.12.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 + eslint-visitor-keys: "npm:^4.0.0" + checksum: 10/a673aa39a19a51763d92272f8f3772ae3d4b10624740bb72d5f273b631b43f1a5a32b385c1da6ae6bc10be05a5913bc4679ebd22a09c7b336a745204834806ea + languageName: node + linkType: hard + +"espree@npm:^10.2.0": + version: 10.2.0 + resolution: "espree@npm:10.2.0" + dependencies: + acorn: "npm:^8.12.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.1.0" + checksum: 10/365076a963ca84244c1e2d36e4f812362d21cfa7e7df10d67f7b82b759467796df81184721d153c4e235d9ef5eb5b4d044167dd66be3be00f53a21a515b1bfb1 languageName: node linkType: hard -"espree@npm:^9.6.0": - version: 9.6.0 - resolution: "espree@npm:9.6.0" +"espree@npm:^9.0.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: acorn: "npm:^8.9.0" acorn-jsx: "npm:^5.3.2" eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/870834c0ab188213ba56fae7003ff9fadbad2b9285dae941840c3d425cedbb2221ad3cffaabd217bc36b96eb80d651c2a2d9b0b1f3b9394b2358b27052c942e2 + checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 languageName: node linkType: hard @@ -4346,7 +4520,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": +"esquery@npm:^1.5.0": version: 1.5.0 resolution: "esquery@npm:1.5.0" dependencies: @@ -4355,6 +4529,15 @@ __metadata: languageName: node linkType: hard +"esquery@npm:^1.6.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a + languageName: node + linkType: hard + "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -4385,6 +4568,13 @@ __metadata: languageName: node linkType: hard +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10/49ff46c3a7facbad3decb31f597063e761785d7fdb3920d4989d7b08c97a61c2f51183e2f3a03130c9088df88d4b489b1b79ab632219901f184f85158508f4c8 + languageName: node + linkType: hard + "eventemitter3@npm:^5.0.1": version: 5.0.1 resolution: "eventemitter3@npm:5.0.1" @@ -4392,20 +4582,10 @@ __metadata: languageName: node linkType: hard -"execa@npm:8.0.1, execa@npm:^8.0.1": - version: 8.0.1 - resolution: "execa@npm:8.0.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^8.0.1" - human-signals: "npm:^5.0.0" - is-stream: "npm:^3.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^5.1.0" - onetime: "npm:^6.0.0" - signal-exit: "npm:^4.1.0" - strip-final-newline: "npm:^3.0.0" - checksum: 10/d2ab5fe1e2bb92b9788864d0713f1fce9a07c4594e272c0c97bc18c90569897ab262e4ea58d27a694d288227a2e24f16f5e2575b44224ad9983b799dc7f1098d +"events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10/a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be languageName: node linkType: hard @@ -4443,6 +4623,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:~8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10/d2ab5fe1e2bb92b9788864d0713f1fce9a07c4594e272c0c97bc18c90569897ab262e4ea58d27a694d288227a2e24f16f5e2575b44224ad9983b799dc7f1098d + languageName: node + linkType: hard + "expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": version: 2.0.2 resolution: "expand-tilde@npm:2.0.2" @@ -4477,42 +4674,42 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9": - version: 3.2.11 - resolution: "fast-glob@npm:3.2.11" +"fast-glob@npm:^3.2.12, fast-glob@npm:^3.3.2": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: 10/6b736d92a47f27218a85bf184a4ccab9f707398f86711bf84d730243b10a999a85f79afc526133c044ebebfcb42a68d09f769fdbedcc00680ddd56e56a56483a + checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df languageName: node linkType: hard -"fast-glob@npm:^3.3.0": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" +"fast-glob@npm:^3.2.9": + version: 3.2.11 + resolution: "fast-glob@npm:3.2.11" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: 10/51bcd15472879dfe51d4b01c5b70bbc7652724d39cdd082ba11276dbd7d84db0f6b33757e1938af8b2768a4bf485d9be0c89153beae24ee8331d6dcc7550379f + checksum: 10/6b736d92a47f27218a85bf184a4ccab9f707398f86711bf84d730243b10a999a85f79afc526133c044ebebfcb42a68d09f769fdbedcc00680ddd56e56a56483a languageName: node linkType: hard -"fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" +"fast-glob@npm:^3.3.0": + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df + checksum: 10/51bcd15472879dfe51d4b01c5b70bbc7652724d39cdd082ba11276dbd7d84db0f6b33757e1938af8b2768a4bf485d9be0c89153beae24ee8331d6dcc7550379f languageName: node linkType: hard @@ -4539,6 +4736,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.0": + version: 6.4.0 + resolution: "fdir@npm:6.4.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10/e45d7c5d349ef4a4835c788944dae7ac5de7aab159511bc3ce8bc62164d4a25cb915c6d2f400886a9ed6f9d9cf38de394b71cb73935408c90eeafa0a8f6cc377 + languageName: node + linkType: hard + "fecha@npm:^4.2.0": version: 4.2.1 resolution: "fecha@npm:4.2.1" @@ -4573,12 +4782,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard @@ -4684,20 +4893,20 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: - flatted: "npm:^3.1.0" - rimraf: "npm:^3.0.2" - checksum: 10/9fe5d0cb97c988e3b25242e71346965fae22757674db3fca14206850af2efa3ca3b04a3ba0eba8d5e20fd8a3be80a2e14b1c2917e70ffe1acb98a8c3327e4c9f + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.2.0 - resolution: "flatted@npm:3.2.0" - checksum: 10/5c2547972b46cbf4954fda0beb5635517323d94808979bc26fc2b2f8a6a58d5e818b2e18ba3140b621e3e7940f32e5fef223fa2ec6c3e9ca93a8cc2592d3014f +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10/7b8376061d5be6e0d3658bbab8bde587647f68797cf6bfeae9dea0e5137d9f27547ab92aaff3512dd9d1299086a6d61be98e9d48a56d17531b634f77faadbc49 languageName: node linkType: hard @@ -4808,25 +5017,6 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: "npm:latest" - checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" @@ -4915,7 +5105,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -5028,12 +5218,17 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.19.0 - resolution: "globals@npm:13.19.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/f365fc2a4eb21a264d0f2a6355ddf4ee32983e0817ec48a517a56d7d1944124c763e81cae13ae26fa9a7d6c7ab826b2e796f87b022a674336275da0e6249366e +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 + languageName: node + linkType: hard + +"globals@npm:^15.9.0": + version: 15.10.0 + resolution: "globals@npm:15.10.0" + checksum: 10/d649208c62406fa71f131be643cb6d18703be5e612f8fa4da8a35bda56ce5a6a8caeb13a2f5a927e4d3324d73872e897067eb6f92ddd46a29876ffa5c4910cb8 languageName: node linkType: hard @@ -5044,7 +5239,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.1, globby@npm:^11.1.0": +"globby@npm:^11.0.1": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -5058,19 +5253,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.1.2": - version: 13.1.2 - resolution: "globby@npm:13.1.2" - dependencies: - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.11" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^4.0.0" - checksum: 10/5a57a87167f2afb952b4d5f79be30835e661585cc94fac47eea94c4ec62703f872257d92b0030be2c5c4d58319a5c9dc570ab012d051529128cfcd8f03493b38 - languageName: node - linkType: hard - "globby@npm:^13.1.4": version: 13.2.2 resolution: "globby@npm:13.2.2" @@ -5098,6 +5280,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^14.0.2": + version: 14.0.2 + resolution: "globby@npm:14.0.2" + dependencies: + "@sindresorhus/merge-streams": "npm:^2.1.0" + fast-glob: "npm:^3.3.2" + ignore: "npm:^5.2.4" + path-type: "npm:^5.0.0" + slash: "npm:^5.1.0" + unicorn-magic: "npm:^0.1.0" + checksum: 10/67660da70fc1223f7170c1a62ba6c373385e9e39765d952b6518606dec15ed8c7958e9dae6ba5752a31dbc1e9126f146938b830ad680fe794141734ffc3fbb75 + languageName: node + linkType: hard + "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -5222,18 +5418,9 @@ __metadata: linkType: hard "hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: 10/96da7d412303704af41c3819207a09ea2cab2de97951db4cf336bb8bce8d8e36b9a6821036ad2e55e67d3be0af8f967a7b57981203fbfb88bc05cd803407b8c3 - languageName: node - linkType: hard - -"hosted-git-info@npm:^4.0.1": - version: 4.0.2 - resolution: "hosted-git-info@npm:4.0.2" - dependencies: - lru-cache: "npm:^6.0.0" - checksum: 10/cb007a7201e01c8c12c8a15933c737d8d746bfa068e1d1c59609ffe45a20a0c48afaf16029ffc6357db4cc93c9c2b9fcf5c2c40e0ddb3794a1d94f98dacf4893 + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: 10/96da7d412303704af41c3819207a09ea2cab2de97951db4cf336bb8bce8d8e36b9a6821036ad2e55e67d3be0af8f967a7b57981203fbfb88bc05cd803407b8c3 languageName: node linkType: hard @@ -5298,12 +5485,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:^9.1.5": - version: 9.1.5 - resolution: "husky@npm:9.1.5" +"husky@npm:^9.1.6": + version: 9.1.6 + resolution: "husky@npm:9.1.6" bin: husky: bin.js - checksum: 10/21a3036dd03141c41347693bde301c62502b4e3bffb87310e7e42b3011c2e55691af2e4a9a5f39bd94e6b1d69e3cfc26ec636d8e164e19737b26f11c556caf10 + checksum: 10/421ccd8850378231aaefd70dbe9e4f1549b84ffe3a6897f93a202242bbc04e48bd498169aef43849411105d9fcf7c192b757d42661e28d06b934a609a4eb8771 languageName: node linkType: hard @@ -5325,7 +5512,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 @@ -5515,15 +5702,6 @@ __metadata: languageName: node linkType: hard -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10/078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e - languageName: node - linkType: hard - "is-builtin-module@npm:^3.2.1": version: 3.2.1 resolution: "is-builtin-module@npm:3.2.1" @@ -5560,7 +5738,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.9.0": version: 2.10.0 resolution: "is-core-module@npm:2.10.0" dependencies: @@ -5624,7 +5802,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -5675,13 +5853,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - "is-path-inside@npm:^4.0.0": version: 4.0.0 resolution: "is-path-inside@npm:4.0.0" @@ -5860,10 +6031,10 @@ __metadata: languageName: node linkType: hard -"json-logic-js@npm:^2.0.2": - version: 2.0.2 - resolution: "json-logic-js@npm:2.0.2" - checksum: 10/2a25d0b951b90bfbccf4f638fbf17cc733518d54c029d7e38e71544d1f4c53efc7c445e888a6c804374e177b384d77b59762cb02bcf6d85b102598a9d8443345 +"json-logic-js@npm:^2.0.5": + version: 2.0.5 + resolution: "json-logic-js@npm:2.0.5" + checksum: 10/5d3c49e331027df2307aa8ab5c27fbadb930ffa083ad9b2876b20844a71cbe441c17702ab6a378cb79604c03c326124dfe3d7b75ec8bb4630075e8bdf16fe59a languageName: node linkType: hard @@ -5904,7 +6075,7 @@ __metadata: languageName: node linkType: hard -"jsonc-eslint-parser@npm:^2.4.0": +"jsonc-eslint-parser@npm:^2.0.4, jsonc-eslint-parser@npm:^2.4.0": version: 2.4.0 resolution: "jsonc-eslint-parser@npm:2.4.0" dependencies: @@ -5971,6 +6142,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -5995,10 +6175,10 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:3.0.0": - version: 3.0.0 - resolution: "lilconfig@npm:3.0.0" - checksum: 10/55f60f4f9f7b41358cc33875e3696919412683a35aec30c6c60c4f6ecb16fb6d11f7ac856b8458b9b82b21d5f4629649fbfca1de034e8d5b0cc7a70836266db6 +"lilconfig@npm:~3.1.2": + version: 3.1.2 + resolution: "lilconfig@npm:3.1.2" + checksum: 10/8058403850cfad76d6041b23db23f730e52b6c17a8c28d87b90766639ca0ee40c748a3e85c2d7bd133d572efabff166c4b015e5d25e01fd666cb4b13cfada7f0 languageName: node linkType: hard @@ -6009,37 +6189,37 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:^15.2.2": - version: 15.2.2 - resolution: "lint-staged@npm:15.2.2" +"lint-staged@npm:^15.2.10": + version: 15.2.10 + resolution: "lint-staged@npm:15.2.10" dependencies: - chalk: "npm:5.3.0" - commander: "npm:11.1.0" - debug: "npm:4.3.4" - execa: "npm:8.0.1" - lilconfig: "npm:3.0.0" - listr2: "npm:8.0.1" - micromatch: "npm:4.0.5" - pidtree: "npm:0.6.0" - string-argv: "npm:0.3.2" - yaml: "npm:2.3.4" + chalk: "npm:~5.3.0" + commander: "npm:~12.1.0" + debug: "npm:~4.3.6" + execa: "npm:~8.0.1" + lilconfig: "npm:~3.1.2" + listr2: "npm:~8.2.4" + micromatch: "npm:~4.0.8" + pidtree: "npm:~0.6.0" + string-argv: "npm:~0.3.2" + yaml: "npm:~2.5.0" bin: lint-staged: bin/lint-staged.js - checksum: 10/5855ae7abf3ffdc2d66e8ad20759915e76544e7c4bcdfef78c82b5c126502284320d9fb0ecde554a6d07747311ab751d0bccbe3468aa5d5a7661774317cd7437 + checksum: 10/ab6930cd633dbb5b6ec7c81fc06c65df41e9f80d93dd22e0d79c6e272cdfd8110a0fbdec60303d46a06b30bcd92261153630e2c937531b77ec5ae41e7e9d90d3 languageName: node linkType: hard -"listr2@npm:8.0.1": - version: 8.0.1 - resolution: "listr2@npm:8.0.1" +"listr2@npm:~8.2.4": + version: 8.2.5 + resolution: "listr2@npm:8.2.5" dependencies: cli-truncate: "npm:^4.0.0" colorette: "npm:^2.0.20" eventemitter3: "npm:^5.0.1" - log-update: "npm:^6.0.0" - rfdc: "npm:^1.3.0" + log-update: "npm:^6.1.0" + rfdc: "npm:^1.4.1" wrap-ansi: "npm:^9.0.0" - checksum: 10/3fa83e8b709306b7efab69884ac1af08de3e18449bccf0b4d81f78dc7235dc921a32a5875b1e7deea0650f0faef2bca2d8992f16377d858158eb5a57bbb0d025 + checksum: 10/c76542f18306195e464fe10203ee679a7beafa9bf0dc679ebacb416387cca8f5307c1d8ba35483d26ba611dc2fac5a1529733dce28f2660556082fb7eebb79f9 languageName: node linkType: hard @@ -6183,16 +6363,16 @@ __metadata: languageName: node linkType: hard -"log-update@npm:^6.0.0": - version: 6.0.0 - resolution: "log-update@npm:6.0.0" +"log-update@npm:^6.1.0": + version: 6.1.0 + resolution: "log-update@npm:6.1.0" dependencies: - ansi-escapes: "npm:^6.2.0" - cli-cursor: "npm:^4.0.0" - slice-ansi: "npm:^7.0.0" + ansi-escapes: "npm:^7.0.0" + cli-cursor: "npm:^5.0.0" + slice-ansi: "npm:^7.1.0" strip-ansi: "npm:^7.1.0" wrap-ansi: "npm:^9.0.0" - checksum: 10/b345f392c356087290918f1bdaae84ee38699c89c9274fafbb6f4cee2fe6f89f9737000111279a40e651fbe0e9c08803b0457c2a4800d8a405752804f73058a8 + checksum: 10/5abb4131e33b1e7f8416bb194fe17a3603d83e4657c5bf5bb81ce4187f3b00ea481643b85c3d5cefe6037a452cdcf7f1391ab8ea0d9c23e75d19589830ec4f11 languageName: node linkType: hard @@ -6209,19 +6389,6 @@ __metadata: languageName: node linkType: hard -"logform@npm:^2.4.0": - version: 2.4.0 - resolution: "logform@npm:2.4.0" - dependencies: - "@colors/colors": "npm:1.5.0" - fecha: "npm:^4.2.0" - ms: "npm:^2.1.1" - safe-stable-stringify: "npm:^2.3.1" - triple-beam: "npm:^1.3.0" - checksum: 10/6f24e316b00e05cc90e4f5641345edb2f1c566805ff5bed0ec4a61fb1f4240e983a6c21d7d6d8ca604a33193b89a321154e8ceec86dc43fa48a988765e5ca453 - languageName: node - linkType: hard - "logform@npm:^2.6.0": version: 2.6.0 resolution: "logform@npm:2.6.0" @@ -6319,13 +6486,6 @@ __metadata: languageName: node linkType: hard -"map-obj@npm:^4.1.0": - version: 4.3.0 - resolution: "map-obj@npm:4.3.0" - checksum: 10/fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e - languageName: node - linkType: hard - "matcher@npm:^5.0.0": version: 5.0.0 resolution: "matcher@npm:5.0.0" @@ -6362,26 +6522,6 @@ __metadata: languageName: node linkType: hard -"meow@npm:^10.1.3": - version: 10.1.3 - resolution: "meow@npm:10.1.3" - dependencies: - "@types/minimist": "npm:^1.2.2" - camelcase-keys: "npm:^7.0.0" - decamelize: "npm:^5.0.0" - decamelize-keys: "npm:^1.1.0" - hard-rejection: "npm:^2.1.0" - minimist-options: "npm:4.1.0" - normalize-package-data: "npm:^3.0.2" - read-pkg-up: "npm:^8.0.0" - redent: "npm:^4.0.0" - trim-newlines: "npm:^4.0.2" - type-fest: "npm:^1.2.2" - yargs-parser: "npm:^20.2.9" - checksum: 10/77db8c8c1532be0543f2e934afea1b109fb2ff1da34bd110df3bf333dc43dc3f4d0d38539f4f1734d65f08d1e35adf837c89a1fde4bd284fd63e3b17838a583f - languageName: node - linkType: hard - "meow@npm:^12.0.1": version: 12.1.1 resolution: "meow@npm:12.1.1" @@ -6389,6 +6529,13 @@ __metadata: languageName: node linkType: hard +"meow@npm:^13.2.0": + version: 13.2.0 + resolution: "meow@npm:13.2.0" + checksum: 10/4eff5bc921fed0b8a471ad79069d741a0210036d717547d0c7f36fdaf84ef7a3036225f38b6a53830d84dc9cbf8b944b097fde62381b8b5b215119e735ce1063 + languageName: node + linkType: hard + "meow@npm:^7.1.1": version: 7.1.1 resolution: "meow@npm:7.1.1" @@ -6436,7 +6583,17 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:4.0.5, micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": + version: 4.0.4 + resolution: "micromatch@npm:4.0.4" + dependencies: + braces: "npm:^3.0.1" + picomatch: "npm:^2.2.3" + checksum: 10/c499da5aad38f3ba1a32a73a81f3dd9b631e12492133c503c14ce59aa5c631159c08f2c43d3a7e0ea3955c7921d41b7b97e662360fe3b28b2cfb0923949c176d + languageName: node + linkType: hard + +"micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -6446,13 +6603,13 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.4 - resolution: "micromatch@npm:4.0.4" +"micromatch@npm:~4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" dependencies: - braces: "npm:^3.0.1" - picomatch: "npm:^2.2.3" - checksum: 10/c499da5aad38f3ba1a32a73a81f3dd9b631e12492133c503c14ce59aa5c631159c08f2c43d3a7e0ea3955c7921d41b7b97e662360fe3b28b2cfb0923949c176d + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10/6bf2a01672e7965eb9941d1f02044fad2bd12486b5553dc1116ff24c09a8723157601dc992e74c911d896175918448762df3b3fd0a6b61037dd1a9766ddfbf58 languageName: node linkType: hard @@ -6514,23 +6671,14 @@ __metadata: languageName: node linkType: hard -"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1": +"min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" checksum: 10/bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -6539,6 +6687,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^7.4.3": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/0046ba1161ac6414bde1b07c440792ebcdb2ed93e6714c85c73974332b709b7e692801550bc9da22028a8613407b3f13861e17dd0dd44f4babdeacd44950430b + languageName: node + linkType: hard + "minimatch@npm:^9.0.4": version: 9.0.4 resolution: "minimatch@npm:9.0.4" @@ -6661,12 +6818,12 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" +"mkdirp@npm:^2.1.6": + version: 2.1.6 + resolution: "mkdirp@npm:2.1.6" bin: mkdirp: dist/cjs/src/bin.js - checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba + checksum: 10/4672fadb94dca8d2eafeb6fff53f2c5ea74e885565ef23251791709064f216105167c2387088c61ef068901bd0776648999785e341d74728164fa551b1c65996 languageName: node linkType: hard @@ -6744,27 +6901,16 @@ __metadata: languageName: node linkType: hard -"nice-napi@npm:^1.0.2": - version: 1.0.2 - resolution: "nice-napi@npm:1.0.2" - dependencies: - node-addon-api: "npm:^3.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.2" - conditions: "!os=win32" - languageName: node - linkType: hard - -"nise@npm:^5.1.5": - version: 5.1.9 - resolution: "nise@npm:5.1.9" +"nise@npm:^6.1.1": + version: 6.1.1 + resolution: "nise@npm:6.1.1" dependencies: - "@sinonjs/commons": "npm:^3.0.0" - "@sinonjs/fake-timers": "npm:^11.2.2" - "@sinonjs/text-encoding": "npm:^0.7.2" + "@sinonjs/commons": "npm:^3.0.1" + "@sinonjs/fake-timers": "npm:^13.0.1" + "@sinonjs/text-encoding": "npm:^0.7.3" just-extend: "npm:^6.2.0" - path-to-regexp: "npm:^6.2.1" - checksum: 10/971caf7638d42a0e106eadd63f05adac1217f864b0a7e4519546aea82a0dbfac68586e7ff430704d54a01ff5dbf6cad58f5f67c067e21112a7deacd7789c2172 + path-to-regexp: "npm:^8.1.0" + checksum: 10/2d3175587cf0a351e2c91eb643fdc59d266de39f394a3ac0bace38571749d1e7f25341d763899245139b8f0d2ee048b2d3387d75ecf94c4897e947d5fc881eea languageName: node linkType: hard @@ -6777,15 +6923,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^3.0.0": - version: 3.2.1 - resolution: "node-addon-api@npm:3.2.1" - dependencies: - node-gyp: "npm:latest" - checksum: 10/681b52dfa3e15b0a8e5cf283cc0d8cd5fd2a57c559ae670fcfd20544cbb32f75de7648674110defcd17ab2c76ebef630aa7d2d2f930bc7a8cc439b20fe233518 - languageName: node - linkType: hard - "node-fetch@npm:^2.6.7": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" @@ -6842,10 +6979,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 10/0f7607ec7db5ef1dc616899a5f24ae90c869b6a54c2d4f36ff6d84a282ab9343c7ff3ca3670fe4669171bb1e8a9b3e286e1ef1c131f09a83d70554f855d54f24 +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10/241e5fa9556f1c12bafb83c6c3e94f8cf3d8f2f8f904906ecef6e10bcaa1d59aa61212d4651bec70052015fc54bd3fdcdbe7fc0f638a17e6685aa586c076ec4e languageName: node linkType: hard @@ -6879,25 +7016,6 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.2": - version: 3.0.3 - resolution: "normalize-package-data@npm:3.0.3" - dependencies: - hosted-git-info: "npm:^4.0.1" - is-core-module: "npm:^2.5.0" - semver: "npm:^7.3.4" - validate-npm-package-license: "npm:^3.0.1" - checksum: 10/3cd3b438c9c7b15d72ed2d1bbf0f8cc2d07bfe27702fc9e95d039f0af4e069dc75c0646e75068f9f9255a8aae64b59aa4fe2177e65787145fb996c3d38d48acb - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - "normalize-url@npm:^8.0.0": version: 8.0.0 resolution: "normalize-url@npm:8.0.0" @@ -7020,6 +7138,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^7.0.0": + version: 7.0.0 + resolution: "onetime@npm:7.0.0" + dependencies: + mimic-function: "npm:^5.0.0" + checksum: 10/eb08d2da9339819e2f9d52cab9caf2557d80e9af8c7d1ae86e1a0fef027d00a88e9f5bd67494d350df360f7c559fbb44e800b32f310fb989c860214eacbb561c + languageName: node + linkType: hard + "optionator@npm:^0.9.3": version: 0.9.3 resolution: "optionator@npm:0.9.3" @@ -7146,7 +7273,7 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^5.1.0, p-map@npm:^5.5.0": +"p-map@npm:^5.1.0": version: 5.5.0 resolution: "p-map@npm:5.5.0" dependencies: @@ -7162,7 +7289,7 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^7.0.1": +"p-map@npm:^7.0.1, p-map@npm:^7.0.2": version: 7.0.2 resolution: "p-map@npm:7.0.2" checksum: 10/b4a590038b991c17b9c1484aa8c24cb9d3aa8a6167d02b9f9459c9200c7d392202a860c95b6dcd190d51f5f083ed256b32f9cb5976785022b0111bab853ec58b @@ -7317,10 +7444,10 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:^6.2.1": - version: 6.3.0 - resolution: "path-to-regexp@npm:6.3.0" - checksum: 10/6822f686f01556d99538b350722ef761541ec0ce95ca40ce4c29e20a5b492fe8361961f57993c71b2418de12e604478dcf7c430de34b2c31a688363a7a944d9c +"path-to-regexp@npm:^8.1.0": + version: 8.2.0 + resolution: "path-to-regexp@npm:8.2.0" + checksum: 10/23378276a172b8ba5f5fb824475d1818ca5ccee7bbdb4674701616470f23a14e536c1db11da9c9e6d82b82c556a817bbf4eee6e41b9ed20090ef9427cbb38e13 languageName: node linkType: hard @@ -7338,36 +7465,46 @@ __metadata: languageName: node linkType: hard -"pegjs@npm:^0.10.0": - version: 0.10.0 - resolution: "pegjs@npm:0.10.0" +"peggy@npm:^3.0.2": + version: 3.0.2 + resolution: "peggy@npm:3.0.2" + dependencies: + commander: "npm:^10.0.0" + source-map-generator: "npm:0.8.0" bin: - pegjs: bin/pegjs - checksum: 10/edc12c9da9afa68ea1274350c3843026355ef3678de0e24213ba0598ee660d40f6752548ba5ddfbcdefee1904545c8a23bb59f331a5e8b3543bee29c21051f67 + peggy: bin/peggy.js + checksum: 10/dd1a169153d1a51d81d856af4c7e1c56874d2385092bc0cb3f2d5890779fde67f5219a9f060d855cd86664d7923e8e27140b845b856f77b93f043f34e6178c90 languageName: node linkType: hard -"picocolors@npm:1.0.0, picocolors@npm:^1.0.0": +"picocolors@npm:1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" checksum: 10/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3": - version: 2.3.0 - resolution: "picomatch@npm:2.3.0" - checksum: 10/ed92dfa5676f1a6d2acfd1e155f9a1287bd158991ad01e3f1c272fe40fb53376aa38ca6ca943a4269fbb2ba0e2867cba9491fb55d02cf3f24f9e6c5e85dd3a4b +"picocolors@npm:^1.0.1": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb languageName: node linkType: hard -"picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": +"picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc languageName: node linkType: hard +"picomatch@npm:^2.2.3": + version: 2.3.0 + resolution: "picomatch@npm:2.3.0" + checksum: 10/ed92dfa5676f1a6d2acfd1e155f9a1287bd158991ad01e3f1c272fe40fb53376aa38ca6ca943a4269fbb2ba0e2867cba9491fb55d02cf3f24f9e6c5e85dd3a4b + languageName: node + linkType: hard + "picomatch@npm:^3.0.1": version: 3.0.1 resolution: "picomatch@npm:3.0.1" @@ -7375,7 +7512,14 @@ __metadata: languageName: node linkType: hard -"pidtree@npm:0.6.0": +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717 + languageName: node + linkType: hard + +"pidtree@npm:~0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" bin: @@ -7384,15 +7528,15 @@ __metadata: languageName: node linkType: hard -"piscina@npm:^4.4.0": - version: 4.4.0 - resolution: "piscina@npm:4.4.0" +"piscina@npm:^4.7.0": + version: 4.7.0 + resolution: "piscina@npm:4.7.0" dependencies: - nice-napi: "npm:^1.0.2" + "@napi-rs/nice": "npm:^1.0.1" dependenciesMeta: - nice-napi: + "@napi-rs/nice": optional: true - checksum: 10/7bce3147d377d8c32de1cdef59681b9c6353d91627198c602854563e44b711004537169fec6190d0128e8252c97476fd89e4043d20b6d3d5d5d63188992dad68 + checksum: 10/d4a7dc3d9ae849248d1432be87ce8d5823ef0682f01b43f0255a87a03d660bb46d3ae8c5fbe86306ded8baedbb57fe01ba888c9638f83883742423a718085e23 languageName: node linkType: hard @@ -7419,6 +7563,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.8.8": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24 + languageName: node + linkType: hard + "pretty-ms@npm:^9.0.0": version: 9.0.0 resolution: "pretty-ms@npm:9.0.0" @@ -7435,6 +7588,13 @@ __metadata: languageName: node linkType: hard +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b + languageName: node + linkType: hard + "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -7520,17 +7680,6 @@ __metadata: languageName: node linkType: hard -"read-pkg-up@npm:^8.0.0": - version: 8.0.0 - resolution: "read-pkg-up@npm:8.0.0" - dependencies: - find-up: "npm:^5.0.0" - read-pkg: "npm:^6.0.0" - type-fest: "npm:^1.0.1" - checksum: 10/fe4c80401656b40b408884457fffb5a8015c03b1018cfd8e48f8d82a5e9023e24963603aeb2755608d964593e046c15b34d29b07d35af9c7aa478be81805209c - languageName: node - linkType: hard - "read-pkg@npm:^5.2.0": version: 5.2.0 resolution: "read-pkg@npm:5.2.0" @@ -7543,18 +7692,6 @@ __metadata: languageName: node linkType: hard -"read-pkg@npm:^6.0.0": - version: 6.0.0 - resolution: "read-pkg@npm:6.0.0" - dependencies: - "@types/normalize-package-data": "npm:^2.4.0" - normalize-package-data: "npm:^3.0.2" - parse-json: "npm:^5.2.0" - type-fest: "npm:^1.0.1" - checksum: 10/0cebdff381128e923815c643074a87011070e5fc352bee575d327d6485da3317fab6d802a7b03deeb0be7be8d3ad1640397b3d5d2f044452caf4e8d1736bf94f - languageName: node - linkType: hard - "readable-stream@npm:^2.0.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" @@ -7581,23 +7718,23 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.6.2": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" +"readable-stream@npm:^4.5.2": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10/d9e3e53193adcdb79d8f10f2a1f6989bd4389f5936c6f8b870e77570853561c362bee69feca2bbb7b32368ce96a85504aa4cedf7cf80f36e6a9de30d64244048 + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10/01b128a559c5fd76a898495f858cf0a8839f135e6a69e3409f986e88460134791657eb46a2ff16826f331682a3c4d0c5a75cef5e52ef259711021ba52b1c2e82 languageName: node linkType: hard -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10/196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 +"readdirp@npm:^4.0.1": + version: 4.0.2 + resolution: "readdirp@npm:4.0.2" + checksum: 10/4ef93103307c7d5e42e78ecf201db58c984c4d66882a27c956250478b49c2444b1ff6aea8ce0f5e4157b2c07ce2fe870ad16c92ebd7c6ff30391ded6e42b9873 languageName: node linkType: hard @@ -7611,16 +7748,6 @@ __metadata: languageName: node linkType: hard -"redent@npm:^4.0.0": - version: 4.0.0 - resolution: "redent@npm:4.0.0" - dependencies: - indent-string: "npm:^5.0.0" - strip-indent: "npm:^4.0.0" - checksum: 10/6944e7b1d8f3fd28c2515f5c605b9f7f0ea0f4edddf41890bbbdd4d9ee35abb7540c3b278f03ff827bd278bb6ff4a5bd8692ca406b748c5c1c3ce7355e9fbf8f - languageName: node - linkType: hard - "reflect-metadata@npm:^0.2.2": version: 0.2.2 resolution: "reflect-metadata@npm:0.2.2" @@ -7871,13 +7998,13 @@ __metadata: languageName: node linkType: hard -"restore-cursor@npm:^4.0.0": - version: 4.0.0 - resolution: "restore-cursor@npm:4.0.0" +"restore-cursor@npm:^5.0.0": + version: 5.1.0 + resolution: "restore-cursor@npm:5.1.0" dependencies: - onetime: "npm:^5.1.0" - signal-exit: "npm:^3.0.2" - checksum: 10/5b675c5a59763bf26e604289eab35711525f11388d77f409453904e1e69c0d37ae5889295706b2c81d23bd780165084d040f9b68fffc32cc921519031c4fa4af + onetime: "npm:^7.0.0" + signal-exit: "npm:^4.1.0" + checksum: 10/838dd54e458d89cfbc1a923b343c1b0f170a04100b4ce1733e97531842d7b440463967e521216e8ab6c6f8e89df877acc7b7f4c18ec76e99fb9bf5a60d358d2c languageName: node linkType: hard @@ -7895,10 +8022,10 @@ __metadata: languageName: node linkType: hard -"rfdc@npm:^1.3.0": - version: 1.3.0 - resolution: "rfdc@npm:1.3.0" - checksum: 10/76dedd9700cdf132947fde7ce1a8838c9cbb7f3e8f9188af0aaf97194cce745f42094dd2cf547426934cc83252ee2c0e432b2e0222a4415ab0db32de82665c69 +"rfdc@npm:^1.4.1": + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 10/2f3d11d3d8929b4bfeefc9acb03aae90f971401de0add5ae6c5e38fec14f0405e6a4aad8fdb76344bfdd20c5193110e3750cbbd28ba86d73729d222b6cf4a729 languageName: node linkType: hard @@ -8027,7 +8154,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5": +"semver@npm:^7.3.5": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -8071,12 +8198,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.6.2": - version: 7.6.2 - resolution: "semver@npm:7.6.2" +"semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" bin: semver: bin/semver.js - checksum: 10/296b17d027f57a87ef645e9c725bff4865a38dfc9caf29b26aa084b85820972fbe7372caea1ba6857162fa990702c6d9c1d82297cecb72d56c78ab29070d2ca2 + checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 languageName: node linkType: hard @@ -8157,17 +8284,17 @@ __metadata: languageName: node linkType: hard -"sinon@npm:^17.0.1": - version: 17.0.1 - resolution: "sinon@npm:17.0.1" +"sinon@npm:^19.0.2": + version: 19.0.2 + resolution: "sinon@npm:19.0.2" dependencies: - "@sinonjs/commons": "npm:^3.0.0" - "@sinonjs/fake-timers": "npm:^11.2.2" - "@sinonjs/samsam": "npm:^8.0.0" - diff: "npm:^5.1.0" - nise: "npm:^5.1.5" + "@sinonjs/commons": "npm:^3.0.1" + "@sinonjs/fake-timers": "npm:^13.0.2" + "@sinonjs/samsam": "npm:^8.0.1" + diff: "npm:^7.0.0" + nise: "npm:^6.1.1" supports-color: "npm:^7.2.0" - checksum: 10/b34f1a97da0be3556ac686c6b649a566c2666eb7f50e75e754928c1c72c96d78f56e56a999227be794c3d9cdaed0bc78d11f38ab303d3079c5bcbcffc0f9c6d5 + checksum: 10/0be47968e9352269d0bdd26cdae7ae4e67d94fa007e8417d1e66ac95ba8537214edc770aff01b0f5a6f07588a1f7d3c947fff9366d799db85d3a4c405b875460 languageName: node linkType: hard @@ -8202,7 +8329,7 @@ __metadata: languageName: node linkType: hard -"slice-ansi@npm:^7.0.0": +"slice-ansi@npm:^7.1.0": version: 7.1.0 resolution: "slice-ansi@npm:7.1.0" dependencies: @@ -8240,6 +8367,13 @@ __metadata: languageName: node linkType: hard +"source-map-generator@npm:0.8.0": + version: 0.8.0 + resolution: "source-map-generator@npm:0.8.0" + checksum: 10/f57df2c1bf33d84fc8a74fa030d4d355b033548569977b63d6930f6b2bf37f575946c88fb89c73b42a54ff6a46bd24253f0ddfa2c2226341e25c22240d168ed1 + languageName: node + linkType: hard + "source-map-support@npm:^0.5.21": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -8330,13 +8464,6 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:0.3.2": - version: 0.3.2 - resolution: "string-argv@npm:0.3.2" - checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af - languageName: node - linkType: hard - "string-argv@npm:~0.3.1": version: 0.3.1 resolution: "string-argv@npm:0.3.1" @@ -8344,6 +8471,13 @@ __metadata: languageName: node linkType: hard +"string-argv@npm:~0.3.2": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af + languageName: node + linkType: hard + "string-width@npm:^1.0.1": version: 1.0.2 resolution: "string-width@npm:1.0.2" @@ -8398,7 +8532,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -8509,15 +8643,6 @@ __metadata: languageName: node linkType: hard -"strip-indent@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-indent@npm:4.0.0" - dependencies: - min-indent: "npm:^1.0.1" - checksum: 10/06cbcd93da721c46bc13caeb1c00af93a9b18146a1c95927672d2decab6a25ad83662772417cea9317a2507fb143253ecc23c4415b64f5828cef9b638a744598 - languageName: node - linkType: hard - "strip-json-comments@npm:3.0.1": version: 3.0.1 resolution: "strip-json-comments@npm:3.0.1" @@ -8578,6 +8703,15 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.6.0": + version: 0.6.2 + resolution: "synckit@npm:0.6.2" + dependencies: + tslib: "npm:^2.3.1" + checksum: 10/9641f4a4f113b7d6a810c34870947c1f19b7a736b510211c0ea69b05aed530d9aa52cb4942f0988a72514ce9fda61011e913c52fa86c58ebf56901d54c2fe241 + languageName: node + linkType: hard + "tar@npm:^6.0.2, tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.13": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -8662,6 +8796,23 @@ __metadata: languageName: node linkType: hard +"tinyexec@npm:^0.3.0": + version: 0.3.0 + resolution: "tinyexec@npm:0.3.0" + checksum: 10/317cc536d091ce7e50271287798d91ef53c4dc80088844d890752a2c7387d213004cba83e5e1d9129390ced617625e34f4a8f0ba5779e31c9b6939f9be0d3543 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.9": + version: 0.2.9 + resolution: "tinyglobby@npm:0.2.9" + dependencies: + fdir: "npm:^6.4.0" + picomatch: "npm:^4.0.2" + checksum: 10/4570dacefa7f7371f49e52c8e4b7c4638d2cab9ee2903e1142c3eff4cfe71d1b8ab6cc55f65590a3232c27f8c0bcec794e4c2f02a4370fc79f3f4f026b5d84e7 + languageName: node + linkType: hard + "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -8694,13 +8845,6 @@ __metadata: languageName: node linkType: hard -"trim-newlines@npm:^4.0.2": - version: 4.0.2 - resolution: "trim-newlines@npm:4.0.2" - checksum: 10/1eef206eb77361856dff0b827e5811baf64574bb21e81b7ad643fe321c5c19b0a452dd83e9afc31206993fcff9bb90a379925d7b5915f887de1ca7da5b57933a - languageName: node - linkType: hard - "triple-beam@npm:*, triple-beam@npm:^1.3.0, triple-beam@npm:^1.4.1": version: 1.4.1 resolution: "triple-beam@npm:1.4.1" @@ -8708,15 +8852,6 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": - version: 1.0.2 - resolution: "ts-api-utils@npm:1.0.2" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10/d095281048ff6423653599f61ce92f6783ba0880d76d081fc7597c5bc672f20079fc4dea9a6ec752ebcb4c90d2baab293ec159270c22e65f49c7abe1078e5d44 - languageName: node - linkType: hard - "ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" @@ -8726,13 +8861,23 @@ __metadata: languageName: node linkType: hard -"ts-morph@npm:^23.0.0": - version: 23.0.0 - resolution: "ts-morph@npm:23.0.0" +"ts-morph@npm:^18.0.0": + version: 18.0.0 + resolution: "ts-morph@npm:18.0.0" + dependencies: + "@ts-morph/common": "npm:~0.19.0" + code-block-writer: "npm:^12.0.0" + checksum: 10/349215342b321ef15277394d75ec4d7035664cc10df2d3a175f3196fe5d4c5f46d071b894d4d1dff2d6278311ee97e9a314217e020b44b7ccfa831e64879c6a6 + languageName: node + linkType: hard + +"ts-morph@npm:^24.0.0": + version: 24.0.0 + resolution: "ts-morph@npm:24.0.0" dependencies: - "@ts-morph/common": "npm:~0.24.0" - code-block-writer: "npm:^13.0.1" - checksum: 10/2ac0e615021b9d4115df60be02fce0b9b80cb0db173b7836ac70f60f987d9f055ec6a4b2233cf6ed9bdd7f1d8854e8266f5af2d4d40ca738cd7374246e163da3 + "@ts-morph/common": "npm:~0.25.0" + code-block-writer: "npm:^13.0.3" + checksum: 10/560f64eac91429f852277af7588d116b83f91ace2e6ba89c71893b364a42c1e9a658fb40ad2c8d1b48af14d744ba1d4ee7a7efeae033d14ad7a6b5f50b83ccca languageName: node linkType: hard @@ -8753,16 +8898,17 @@ __metadata: languageName: node linkType: hard -"ts-pegjs@npm:^0.3.1": - version: 0.3.1 - resolution: "ts-pegjs@npm:0.3.1" +"ts-pegjs@npm:^4.2.1": + version: 4.2.1 + resolution: "ts-pegjs@npm:4.2.1" dependencies: - pegjs: "npm:^0.10.0" + prettier: "npm:^2.8.8" + ts-morph: "npm:^18.0.0" peerDependencies: - pegjs: ~0.10.0 + peggy: ^3.0.2 bin: - tspegjs: src/cli.js - checksum: 10/bfddfc646fe66096981e7b85b5e9dbca39a2e5d8b5f7ffec15c223d828392d1019ba9b5d0e2915b608fd73a29dc4538b242cb2a303fbc26ec05573f6285fd89c + tspegjs: dist/cli.mjs + checksum: 10/895ec00483f397ced7f5247b72a34c9fd305e675573518c63ab4279d78457e8b93ed25ce4576e525c77cf7c1811078d2ef0b7605e671d4a408aa465e6014186f languageName: node linkType: hard @@ -8787,10 +8933,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.6.2": - version: 2.6.3 - resolution: "tslib@npm:2.6.3" - checksum: 10/52109bb681f8133a2e58142f11a50e05476de4f075ca906d13b596ae5f7f12d30c482feb0bff167ae01cfc84c5803e575a307d47938999246f5a49d174fc558c +"tslib@npm:^2.6.3": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 languageName: node linkType: hard @@ -8812,58 +8958,58 @@ __metadata: languageName: node linkType: hard -"turbo-darwin-64@npm:1.13.4": - version: 1.13.4 - resolution: "turbo-darwin-64@npm:1.13.4" +"turbo-darwin-64@npm:2.1.3": + version: 2.1.3 + resolution: "turbo-darwin-64@npm:2.1.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"turbo-darwin-arm64@npm:1.13.4": - version: 1.13.4 - resolution: "turbo-darwin-arm64@npm:1.13.4" +"turbo-darwin-arm64@npm:2.1.3": + version: 2.1.3 + resolution: "turbo-darwin-arm64@npm:2.1.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"turbo-linux-64@npm:1.13.4": - version: 1.13.4 - resolution: "turbo-linux-64@npm:1.13.4" +"turbo-linux-64@npm:2.1.3": + version: 2.1.3 + resolution: "turbo-linux-64@npm:2.1.3" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"turbo-linux-arm64@npm:1.13.4": - version: 1.13.4 - resolution: "turbo-linux-arm64@npm:1.13.4" +"turbo-linux-arm64@npm:2.1.3": + version: 2.1.3 + resolution: "turbo-linux-arm64@npm:2.1.3" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"turbo-windows-64@npm:1.13.4": - version: 1.13.4 - resolution: "turbo-windows-64@npm:1.13.4" +"turbo-windows-64@npm:2.1.3": + version: 2.1.3 + resolution: "turbo-windows-64@npm:2.1.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"turbo-windows-arm64@npm:1.13.4": - version: 1.13.4 - resolution: "turbo-windows-arm64@npm:1.13.4" +"turbo-windows-arm64@npm:2.1.3": + version: 2.1.3 + resolution: "turbo-windows-arm64@npm:2.1.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"turbo@npm:1.13.4": - version: 1.13.4 - resolution: "turbo@npm:1.13.4" - dependencies: - turbo-darwin-64: "npm:1.13.4" - turbo-darwin-arm64: "npm:1.13.4" - turbo-linux-64: "npm:1.13.4" - turbo-linux-arm64: "npm:1.13.4" - turbo-windows-64: "npm:1.13.4" - turbo-windows-arm64: "npm:1.13.4" +"turbo@npm:2.1.3": + version: 2.1.3 + resolution: "turbo@npm:2.1.3" + dependencies: + turbo-darwin-64: "npm:2.1.3" + turbo-darwin-arm64: "npm:2.1.3" + turbo-linux-64: "npm:2.1.3" + turbo-linux-arm64: "npm:2.1.3" + turbo-windows-64: "npm:2.1.3" + turbo-windows-arm64: "npm:2.1.3" dependenciesMeta: turbo-darwin-64: optional: true @@ -8879,7 +9025,7 @@ __metadata: optional: true bin: turbo: bin/turbo - checksum: 10/b8187def43760428e117313fc4a559af5c02b473d816b3efef406165c2c45cf3a256fbda4b15f0c1a48ccd188bd43cf93686f2aeab176a15a01553cd165071cc + checksum: 10/b8e90a38f47dc5c07e5f1c0bd708f9dc6b00b744847a45c06e5de5a5379a32bb155e8ad994eb03e60f697afc87f0815dd02fc680e22c0fad83d65c0a1fb6fc96 languageName: node linkType: hard @@ -8892,13 +9038,20 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8, type-detect@npm:^4.0.8": +"type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d languageName: node linkType: hard +"type-detect@npm:^4.1.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 10/e363bf0352427a79301f26a7795a27718624c49c576965076624eb5495d87515030b207217845f7018093adcbe169b2d119bb9b7f1a31a92bfbb1ab9639ca8dd + languageName: node + linkType: hard + "type-fest@npm:^0.13.1": version: 0.13.1 resolution: "type-fest@npm:0.13.1" @@ -8906,13 +9059,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -8934,10 +9080,17 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^1.0.1, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: 10/89875c247564601c2650bacad5ff80b859007fbdb6c9e43713ae3ffa3f584552eea60f33711dd762e16496a1ab4debd409822627be14097d9a17e39c49db591a +"typescript-eslint@npm:^8.8.1": + version: 8.8.1 + resolution: "typescript-eslint@npm:8.8.1" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.8.1" + "@typescript-eslint/parser": "npm:8.8.1" + "@typescript-eslint/utils": "npm:8.8.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/f44f60069a88b98b7be269546990a9e75c8af8bde06ef9e095d6c8d8d416746a821047a580201b24a41eec6ea9457fdb9fcae6a9c32096aca2569133c981407f languageName: node linkType: hard @@ -8951,13 +9104,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.5.3": - version: 5.5.3 - resolution: "typescript@npm:5.5.3" +"typescript@npm:5.6.2": + version: 5.6.2 + resolution: "typescript@npm:5.6.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/11a867312419ed497929aafd2f1d28b2cd41810a5eb6c6e9e169559112e9ea073d681c121a29102e67cd4478d0a4ae37a306a5800f3717f59c4337e6a9bd5e8d + checksum: 10/f95365d4898f357823e93d334ecda9fcade54f009b397c7d05b7621cd9e865981033cf89ccde0f3e3a7b73b1fdbae18e92bc77db237b43e912f053fef0f9a53b languageName: node linkType: hard @@ -8971,13 +9124,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.5.3#optional!builtin": - version: 5.5.3 - resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin::version=5.5.3&hash=379a07" +"typescript@patch:typescript@npm%3A5.6.2#optional!builtin": + version: 5.6.2 + resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/7cf7acb78a80f749b82842f2ffe01e90e7b3e709a6f4268588e0b7599c41dca1059be217f47778fe1a380bfaf60933021ef20d002c426d4d7745e1b36c11467b + checksum: 10/8bfc7ca0d9feca4c3fcbd6c70741abfcd714197d6448e68225ae71e462447d904d3bfba49759a8fbe4956d87f054e2d346833c8349c222daa594a2626d4e1be8 languageName: node linkType: hard @@ -9050,17 +9203,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" + escalade: "npm:^3.1.2" + picocolors: "npm:^1.0.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/9074b4ef34d2ed931f27d390aafdd391ee7c45ad83c508e8fed6aaae1eb68f81999a768ed8525c6f88d4001a4fbf1b8c0268f099d0e8e72088ec5945ac796acf + checksum: 10/d70b9efeaf4601aadb1a4f6456a7a5d9118e0063d995866b8e0c5e0cf559482671dab6ce7b079f9536b06758a344fbd83f974b965211e1c6e8d1958540b0c24c languageName: node linkType: hard @@ -9080,15 +9233,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 10/9a5f7aa1d6f56dd1e8d5f2478f855f25c645e64e26e347a98e98d95781d5ed20062d6cca2eecb58ba7c84bc3910be95c0451ef4161906abaab44f9cb68ffbdd1 - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -9197,33 +9341,33 @@ __metadata: languageName: node linkType: hard -"winston-transport@npm:^4.7.1": - version: 4.7.1 - resolution: "winston-transport@npm:4.7.1" +"winston-transport@npm:^4.8.0": + version: 4.8.0 + resolution: "winston-transport@npm:4.8.0" dependencies: logform: "npm:^2.6.1" - readable-stream: "npm:^3.6.2" + readable-stream: "npm:^4.5.2" triple-beam: "npm:^1.3.0" - checksum: 10/bc48c921ec9b4a71c1445bf274aa6b00c01089a6c26fc0b19534f8a32fa2710c6766c9e6db53a23492c20772934025d312dd9fb08df157ccb6579ad6b9dae9a7 + checksum: 10/930bdc0ec689d5c4f07a262721da80440336f64739d0ce33db801c7142b4fca5be8ef71b725b670bac609de8b6bce405e5c5f84d355f5176a611209b476cee18 languageName: node linkType: hard -"winston@npm:^3.13.0": - version: 3.13.0 - resolution: "winston@npm:3.13.0" +"winston@npm:^3.15.0": + version: 3.15.0 + resolution: "winston@npm:3.15.0" dependencies: "@colors/colors": "npm:^1.6.0" "@dabh/diagnostics": "npm:^2.0.2" async: "npm:^3.2.3" is-stream: "npm:^2.0.0" - logform: "npm:^2.4.0" + logform: "npm:^2.6.0" one-time: "npm:^1.0.0" readable-stream: "npm:^3.4.0" safe-stable-stringify: "npm:^2.3.1" stack-trace: "npm:0.0.x" triple-beam: "npm:^1.3.0" winston-transport: "npm:^4.7.0" - checksum: 10/436675598359af27e4eabde2ce578cf77da893ffd57d0479f037fef939e8eb721031f0102b14399eee93b3412b545946c431d1fff23db3beeac2ffa395537f7b + checksum: 10/60e55eb3621e4de1a764a4e43ee1d242c71957d3e0eb359cb8f16fe2b9d9543fd4c31a8d3baf96fa7e43ef5df383c43c1a98aff4bd714ea0082303504b0e3cdc languageName: node linkType: hard @@ -9311,13 +9455,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.3.4": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: 10/f8207ce43065a22268a2806ea6a0fa3974c6fde92b4b2fa0082357e487bc333e85dc518910007e7ac001b532c7c84bd3eccb6c7757e94182b564028b0008f44b - languageName: node - linkType: hard - "yaml@npm:^1.10.0": version: 1.10.2 resolution: "yaml@npm:1.10.2" @@ -9332,6 +9469,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:~2.5.0": + version: 2.5.1 + resolution: "yaml@npm:2.5.1" + bin: + yaml: bin.mjs + checksum: 10/0eecb679db75ea6a989ad97715a9fa5d946972945aa6aa7d2175bca66c213b5564502ccb1cdd04b1bf816ee38b5c43e4e2fda3ff6f5e09da24dabb51ae92c57d + languageName: node + linkType: hard + "yargs-parser@npm:^18.1.3": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" @@ -9342,7 +9488,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": +"yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 10/0188f430a0f496551d09df6719a9132a3469e47fe2747208b1dd0ab2bb0c512a95d0b081628bbca5400fb20dbf2fabe63d22badb346cecadffdd948b049f3fcc @@ -9443,10 +9589,10 @@ __metadata: dependencies: "@alcalzone/jsonl-db": "npm:^3.1.1" "@alcalzone/pak": "npm:^0.11.0" - "@homebridge/ciao": "npm:^1.2.0" - "@microsoft/api-extractor": "npm:^7.47.0" + "@homebridge/ciao": "npm:^1.3.1" + "@microsoft/api-extractor": "npm:^7.47.9" "@types/fs-extra": "npm:^11.0.4" - "@types/node": "npm:^18.19.42" + "@types/node": "npm:^18.19.55" "@types/proper-lockfile": "npm:^4.1.4" "@types/proxyquire": "npm:^1.3.31" "@types/semver": "npm:^7.5.8" @@ -9466,9 +9612,9 @@ __metadata: alcalzone-shared: "npm:^4.0.8" ansi-colors: "npm:^4.1.3" ava: "npm:^6.1.3" - del-cli: "npm:^5.1.0" - esbuild: "npm:0.21.5" - esbuild-register: "npm:^3.5.0" + del-cli: "npm:^6.0.0" + esbuild: "npm:0.24.0" + esbuild-register: "npm:^3.6.0" execa: "npm:^5.1.1" fs-extra: "npm:^11.2.0" got: "npm:^13.0.0" @@ -9478,12 +9624,12 @@ __metadata: proper-lockfile: "npm:^4.1.2" proxyquire: "npm:^2.1.3" reflect-metadata: "npm:^0.2.2" - semver: "npm:^7.6.2" + semver: "npm:^7.6.3" serialport: "npm:^12.0.0" - sinon: "npm:^17.0.1" + sinon: "npm:^19.0.2" source-map-support: "npm:^0.5.21" - typescript: "npm:5.5.3" - winston: "npm:^3.13.0" + typescript: "npm:5.6.2" + winston: "npm:^3.15.0" xstate: "npm:4.38.3" bin: mock-server: bin/mock-server.js