@matter/nodejs-shell 0.13.0-alpha.0-20250318-c1aa38b08 → 0.13.0-alpha.0-20250322-f085fa576
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/MatterNode.js
CHANGED
|
@@ -67,11 +67,6 @@ class MatterNode {
|
|
|
67
67
|
await controllerStore.erase();
|
|
68
68
|
}
|
|
69
69
|
this.storageContext = controllerStore.storage.createContext("Node");
|
|
70
|
-
if (await this.Store.has("ControllerFabricLabel")) {
|
|
71
|
-
await this.commissioningController.updateFabricLabel(
|
|
72
|
-
await this.Store.get("ControllerFabricLabel", "matter.js Shell")
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
70
|
const storageService = this.#environment.get(import_general.StorageService);
|
|
76
71
|
const baseLocation = storageService.location;
|
|
77
72
|
if (baseLocation !== void 0) {
|
|
@@ -109,6 +104,11 @@ class MatterNode {
|
|
|
109
104
|
logger.info(`matter.js shell controller started for node ${this.nodeNum}`);
|
|
110
105
|
if (this.commissioningController !== void 0) {
|
|
111
106
|
await this.commissioningController.start();
|
|
107
|
+
if (await this.Store.has("ControllerFabricLabel")) {
|
|
108
|
+
await this.commissioningController.updateFabricLabel(
|
|
109
|
+
await this.Store.get("ControllerFabricLabel", "matter.js Shell")
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
112
|
} else {
|
|
113
113
|
throw new Error("No controller initialized");
|
|
114
114
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/MatterNode.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,qBAAoE;AACpE,kBAAgC;AAGhC,mBAAuB;AACvB,oBAAwC;AAExC,uBAAqB;AAdrB;AAAA;AAAA;AAAA;AAAA;AAgBA,MAAM,SAAS,sBAAO,IAAI,MAAM;AAEzB,MAAM,WAAW;AAAA,EASpB,YACqB,SACA,cACnB;AAFmB;AACA;AAEjB,SAAK,eAAe,2BAAY;AAAA,EACpC;AAAA,EAbA;AAAA,EACQ;AAAA,EACA;AAAA,EAER;AAAA,EACA;AAAA,EACQ,UAAU;AAAA,EASlB,IAAI,kBAAkB;AAClB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,WAAW,cAAuB;AAQpC,QAAI,KAAK,cAAc;AACnB,UAAI,KAAK,iBAAiB,QAAW;AACjC,aAAK,aAAa,KAAK,IAAI,yBAAyB,KAAK,YAAY;AAAA,MACzE;AAEA,YAAM,KAAK,SAAS,KAAK,QAAQ,SAAS,CAAC;AAC3C,WAAK,0BAA0B,IAAI,sCAAwB;AAAA,QACvD,aAAa;AAAA,UACT,aAAa,KAAK;AAAA,UAClB;AAAA,QACJ;AAAA,QACA,aAAa;AAAA,QACb,kBAAkB;AAAA,MACtB,CAAC;AACD,YAAM,KAAK,wBAAwB,0BAA0B;AAE7D,YAAM,kBAAkB,KAAK,aAAa,IAAI,2BAAe;AAC7D,UAAI,cAAc;AACd,cAAM,gBAAgB,MAAM;AAAA,MAChC;AACA,WAAK,iBAAiB,gBAAgB,QAAQ,cAAc,MAAM;AAElE,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -56,18 +56,51 @@ function commands(theNode) {
|
|
|
56
56
|
async (argv) => {
|
|
57
57
|
const {
|
|
58
58
|
pairingCode,
|
|
59
|
+
qrCode,
|
|
59
60
|
nodeId: nodeIdStr,
|
|
60
61
|
ipPort,
|
|
61
62
|
ip,
|
|
62
63
|
ble = false,
|
|
63
64
|
instanceId
|
|
64
65
|
} = argv;
|
|
65
|
-
let { setupPinCode, discriminator, shortDiscriminator } = argv;
|
|
66
|
-
if (typeof pairingCode === "string") {
|
|
66
|
+
let { setupPinCode, discriminator, shortDiscriminator, qrCodeIndex } = argv;
|
|
67
|
+
if (typeof pairingCode === "string" && pairingCode.length > 0) {
|
|
67
68
|
const { shortDiscriminator: pairingCodeShortDiscriminator, passcode } = import_types.ManualPairingCodeCodec.decode(pairingCode);
|
|
68
69
|
shortDiscriminator = pairingCodeShortDiscriminator;
|
|
69
70
|
setupPinCode = passcode;
|
|
70
71
|
discriminator = void 0;
|
|
72
|
+
} else if (typeof qrCode === "string" && qrCode.length > 0) {
|
|
73
|
+
const pairingCodeCodec = import_types.QrPairingCodeCodec.decode(qrCode);
|
|
74
|
+
if (typeof qrCodeIndex !== "number") {
|
|
75
|
+
if (!Number.isFinite(qrCodeIndex)) {
|
|
76
|
+
console.log("Invalid QR-Code index provided. Using first.");
|
|
77
|
+
qrCodeIndex = 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let qrIndex = Number(qrCodeIndex);
|
|
81
|
+
if (pairingCodeCodec.length > 1) {
|
|
82
|
+
if (qrIndex < 1 || qrIndex > pairingCodeCodec.length) {
|
|
83
|
+
console.log(
|
|
84
|
+
`Multiple (${pairingCodeCodec.length}) pairing codes found in the provided QR-Code. Using first.`
|
|
85
|
+
);
|
|
86
|
+
qrIndex = 1;
|
|
87
|
+
} else {
|
|
88
|
+
console.log(
|
|
89
|
+
`Multiple (${pairingCodeCodec.length}) pairing codes found in the provided QR-Code. Using index ${qrIndex}`
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
qrIndex = 1;
|
|
94
|
+
}
|
|
95
|
+
const qrResult = pairingCodeCodec[qrIndex - 1];
|
|
96
|
+
discriminator = qrResult.discriminator;
|
|
97
|
+
shortDiscriminator = void 0;
|
|
98
|
+
setupPinCode = qrResult.passcode;
|
|
99
|
+
if (import_types.DiscoveryCapabilitiesSchema.decode(qrResult.discoveryCapabilities).ble && !ble) {
|
|
100
|
+
console.log(
|
|
101
|
+
"QR-Code contains BLE discovery capabilities, but BLE is disabled. Please enable if device is not already on network."
|
|
102
|
+
);
|
|
103
|
+
}
|
|
71
104
|
} else if (discriminator === void 0 && shortDiscriminator === void 0) {
|
|
72
105
|
discriminator = 3840;
|
|
73
106
|
}
|
|
@@ -136,6 +169,16 @@ function commands(theNode) {
|
|
|
136
169
|
default: void 0,
|
|
137
170
|
type: "string"
|
|
138
171
|
},
|
|
172
|
+
qrCode: {
|
|
173
|
+
describe: "QR code string (MT:...)",
|
|
174
|
+
default: void 0,
|
|
175
|
+
type: "string"
|
|
176
|
+
},
|
|
177
|
+
qrCodeIndex: {
|
|
178
|
+
describe: "Index of QR code entry if multiple (1..n)",
|
|
179
|
+
default: 1,
|
|
180
|
+
type: "number"
|
|
181
|
+
},
|
|
139
182
|
setupPinCode: {
|
|
140
183
|
describe: "setup pin code",
|
|
141
184
|
default: 20202021,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/shell/cmd_commission.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAoC;AACpC,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["yargs"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/nodejs-shell",
|
|
3
|
-
"version": "0.13.0-alpha.0-
|
|
3
|
+
"version": "0.13.0-alpha.0-20250322-f085fa576",
|
|
4
4
|
"description": "Shell app for Matter controller",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"#types": "@matter/types"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@matter/general": "0.13.0-alpha.0-
|
|
40
|
-
"@matter/nodejs": "0.13.0-alpha.0-
|
|
41
|
-
"@matter/nodejs-ble": "0.13.0-alpha.0-
|
|
42
|
-
"@matter/tools": "0.13.0-alpha.0-
|
|
43
|
-
"@project-chip/matter.js": "0.13.0-alpha.0-
|
|
39
|
+
"@matter/general": "0.13.0-alpha.0-20250322-f085fa576",
|
|
40
|
+
"@matter/nodejs": "0.13.0-alpha.0-20250322-f085fa576",
|
|
41
|
+
"@matter/nodejs-ble": "0.13.0-alpha.0-20250322-f085fa576",
|
|
42
|
+
"@matter/tools": "0.13.0-alpha.0-20250322-f085fa576",
|
|
43
|
+
"@project-chip/matter.js": "0.13.0-alpha.0-20250322-f085fa576",
|
|
44
44
|
"yargs": "^17.7.2"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|
package/src/MatterNode.ts
CHANGED
|
@@ -66,12 +66,6 @@ export class MatterNode {
|
|
|
66
66
|
}
|
|
67
67
|
this.storageContext = controllerStore.storage.createContext("Node");
|
|
68
68
|
|
|
69
|
-
if (await this.Store.has("ControllerFabricLabel")) {
|
|
70
|
-
await this.commissioningController.updateFabricLabel(
|
|
71
|
-
await this.Store.get<string>("ControllerFabricLabel", "matter.js Shell"),
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
69
|
const storageService = this.#environment.get(StorageService);
|
|
76
70
|
const baseLocation = storageService.location;
|
|
77
71
|
if (baseLocation !== undefined) {
|
|
@@ -114,6 +108,12 @@ export class MatterNode {
|
|
|
114
108
|
|
|
115
109
|
if (this.commissioningController !== undefined) {
|
|
116
110
|
await this.commissioningController.start();
|
|
111
|
+
|
|
112
|
+
if (await this.Store.has("ControllerFabricLabel")) {
|
|
113
|
+
await this.commissioningController.updateFabricLabel(
|
|
114
|
+
await this.Store.get<string>("ControllerFabricLabel", "matter.js Shell"),
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
117
|
} else {
|
|
118
118
|
throw new Error("No controller initialized");
|
|
119
119
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Logger, MatterError } from "@matter/general";
|
|
8
|
-
import { ManualPairingCodeCodec, NodeId, QrCode } from "@matter/types";
|
|
8
|
+
import { DiscoveryCapabilitiesSchema, ManualPairingCodeCodec, NodeId, QrCode, QrPairingCodeCodec } from "@matter/types";
|
|
9
9
|
import { BasicInformationCluster, DescriptorCluster, GeneralCommissioning } from "@matter/types/clusters";
|
|
10
10
|
import { NodeCommissioningOptions } from "@project-chip/matter.js";
|
|
11
11
|
import type { Argv } from "yargs";
|
|
@@ -47,20 +47,56 @@ export default function commands(theNode: MatterNode) {
|
|
|
47
47
|
async argv => {
|
|
48
48
|
const {
|
|
49
49
|
pairingCode,
|
|
50
|
+
qrCode,
|
|
50
51
|
nodeId: nodeIdStr,
|
|
51
52
|
ipPort,
|
|
52
53
|
ip,
|
|
53
54
|
ble = false,
|
|
54
55
|
instanceId,
|
|
55
56
|
} = argv;
|
|
56
|
-
let { setupPinCode, discriminator, shortDiscriminator } = argv;
|
|
57
|
+
let { setupPinCode, discriminator, shortDiscriminator, qrCodeIndex } = argv;
|
|
57
58
|
|
|
58
|
-
if (typeof pairingCode === "string") {
|
|
59
|
+
if (typeof pairingCode === "string" && pairingCode.length > 0) {
|
|
59
60
|
const { shortDiscriminator: pairingCodeShortDiscriminator, passcode } =
|
|
60
61
|
ManualPairingCodeCodec.decode(pairingCode);
|
|
61
62
|
shortDiscriminator = pairingCodeShortDiscriminator;
|
|
62
63
|
setupPinCode = passcode;
|
|
63
64
|
discriminator = undefined;
|
|
65
|
+
} else if (typeof qrCode === "string" && qrCode.length > 0) {
|
|
66
|
+
const pairingCodeCodec = QrPairingCodeCodec.decode(qrCode);
|
|
67
|
+
if (typeof qrCodeIndex !== "number") {
|
|
68
|
+
if (!Number.isFinite(qrCodeIndex)) {
|
|
69
|
+
console.log("Invalid QR-Code index provided. Using first.");
|
|
70
|
+
qrCodeIndex = 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
let qrIndex = Number(qrCodeIndex);
|
|
74
|
+
if (pairingCodeCodec.length > 1) {
|
|
75
|
+
if (qrIndex < 1 || qrIndex > pairingCodeCodec.length) {
|
|
76
|
+
console.log(
|
|
77
|
+
`Multiple (${pairingCodeCodec.length}) pairing codes found in the provided QR-Code. Using first.`,
|
|
78
|
+
);
|
|
79
|
+
qrIndex = 1;
|
|
80
|
+
} else {
|
|
81
|
+
console.log(
|
|
82
|
+
`Multiple (${pairingCodeCodec.length}) pairing codes found in the provided QR-Code. Using index ${qrIndex}`,
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
qrIndex = 1;
|
|
87
|
+
}
|
|
88
|
+
const qrResult = pairingCodeCodec[qrIndex - 1];
|
|
89
|
+
discriminator = qrResult.discriminator;
|
|
90
|
+
shortDiscriminator = undefined;
|
|
91
|
+
setupPinCode = qrResult.passcode;
|
|
92
|
+
if (
|
|
93
|
+
DiscoveryCapabilitiesSchema.decode(qrResult.discoveryCapabilities).ble &&
|
|
94
|
+
!ble
|
|
95
|
+
) {
|
|
96
|
+
console.log(
|
|
97
|
+
"QR-Code contains BLE discovery capabilities, but BLE is disabled. Please enable if device is not already on network.",
|
|
98
|
+
);
|
|
99
|
+
}
|
|
64
100
|
} else if (discriminator === undefined && shortDiscriminator === undefined) {
|
|
65
101
|
discriminator = 3840;
|
|
66
102
|
}
|
|
@@ -161,6 +197,16 @@ export default function commands(theNode: MatterNode) {
|
|
|
161
197
|
default: undefined,
|
|
162
198
|
type: "string",
|
|
163
199
|
},
|
|
200
|
+
qrCode: {
|
|
201
|
+
describe: "QR code string (MT:...)",
|
|
202
|
+
default: undefined,
|
|
203
|
+
type: "string",
|
|
204
|
+
},
|
|
205
|
+
qrCodeIndex: {
|
|
206
|
+
describe: "Index of QR code entry if multiple (1..n)",
|
|
207
|
+
default: 1,
|
|
208
|
+
type: "number",
|
|
209
|
+
},
|
|
164
210
|
setupPinCode: {
|
|
165
211
|
describe: "setup pin code",
|
|
166
212
|
default: 20202021,
|