@matter/nodejs-shell 0.11.0-alpha.0-20241007-547af42a8
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/LICENSE +201 -0
- package/README.md +192 -0
- package/dist/cjs/MatterNode.js +115 -0
- package/dist/cjs/MatterNode.js.map +6 -0
- package/dist/cjs/app.js +162 -0
- package/dist/cjs/app.js.map +6 -0
- package/dist/cjs/package.json +7 -0
- package/dist/cjs/shell/Shell.js +195 -0
- package/dist/cjs/shell/Shell.js.map +6 -0
- package/dist/cjs/shell/cmd_cluster-attributes.js +310 -0
- package/dist/cjs/shell/cmd_cluster-attributes.js.map +6 -0
- package/dist/cjs/shell/cmd_cluster-commands.js +158 -0
- package/dist/cjs/shell/cmd_cluster-commands.js.map +6 -0
- package/dist/cjs/shell/cmd_cluster-events.js +104 -0
- package/dist/cjs/shell/cmd_cluster-events.js.map +6 -0
- package/dist/cjs/shell/cmd_commission.js +237 -0
- package/dist/cjs/shell/cmd_commission.js.map +6 -0
- package/dist/cjs/shell/cmd_config.js +315 -0
- package/dist/cjs/shell/cmd_config.js.map +6 -0
- package/dist/cjs/shell/cmd_discover.js +123 -0
- package/dist/cjs/shell/cmd_discover.js.map +6 -0
- package/dist/cjs/shell/cmd_identify.js +66 -0
- package/dist/cjs/shell/cmd_identify.js.map +6 -0
- package/dist/cjs/shell/cmd_nodes.js +244 -0
- package/dist/cjs/shell/cmd_nodes.js.map +6 -0
- package/dist/cjs/shell/cmd_session.js +43 -0
- package/dist/cjs/shell/cmd_session.js.map +6 -0
- package/dist/cjs/shell/cmd_subscribe.js +59 -0
- package/dist/cjs/shell/cmd_subscribe.js.map +6 -0
- package/dist/cjs/shell/cmd_tlv.js +175 -0
- package/dist/cjs/shell/cmd_tlv.js.map +6 -0
- package/dist/cjs/util/CommandlineParser.js +106 -0
- package/dist/cjs/util/CommandlineParser.js.map +6 -0
- package/dist/cjs/util/Json.js +66 -0
- package/dist/cjs/util/Json.js.map +6 -0
- package/dist/cjs/util/String.js +32 -0
- package/dist/cjs/util/String.js.map +6 -0
- package/package.json +58 -0
- package/src/MatterNode.ts +141 -0
- package/src/app.ts +158 -0
- package/src/shell/Shell.ts +184 -0
- package/src/shell/cmd_cluster-attributes.ts +340 -0
- package/src/shell/cmd_cluster-commands.ts +174 -0
- package/src/shell/cmd_cluster-events.ts +99 -0
- package/src/shell/cmd_commission.ts +273 -0
- package/src/shell/cmd_config.ts +366 -0
- package/src/shell/cmd_discover.ts +127 -0
- package/src/shell/cmd_identify.ts +51 -0
- package/src/shell/cmd_nodes.ts +249 -0
- package/src/shell/cmd_session.ts +23 -0
- package/src/shell/cmd_subscribe.ts +43 -0
- package/src/shell/cmd_tlv.ts +169 -0
- package/src/tsconfig.json +22 -0
- package/src/util/CommandlineParser.ts +123 -0
- package/src/util/Json.ts +50 -0
- package/src/util/String.ts +9 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var cmd_commission_exports = {};
|
|
20
|
+
__export(cmd_commission_exports, {
|
|
21
|
+
default: () => commands
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(cmd_commission_exports);
|
|
24
|
+
var import_general = require("@matter/general");
|
|
25
|
+
var import_cluster = require("@project-chip/matter.js/cluster");
|
|
26
|
+
var import_datatype = require("@project-chip/matter.js/datatype");
|
|
27
|
+
var import_schema = require("@project-chip/matter.js/schema");
|
|
28
|
+
var import_cmd_nodes = require("./cmd_nodes");
|
|
29
|
+
/**
|
|
30
|
+
* @license
|
|
31
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
32
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
33
|
+
*/
|
|
34
|
+
function commands(theNode) {
|
|
35
|
+
return {
|
|
36
|
+
command: "commission",
|
|
37
|
+
describe: "Handle device commissioning",
|
|
38
|
+
builder: (yargs) => yargs.command("pair", "Pair with a matter device", (yargs2) => {
|
|
39
|
+
return yargs2.command(
|
|
40
|
+
"* [node-id] [ip:[port]]",
|
|
41
|
+
"Commission a matter device",
|
|
42
|
+
(yargs3) => {
|
|
43
|
+
return yargs3.positional("node-id", {
|
|
44
|
+
describe: "node id",
|
|
45
|
+
default: void 0,
|
|
46
|
+
type: "string"
|
|
47
|
+
}).positional("ip", {
|
|
48
|
+
describe: "ip address",
|
|
49
|
+
default: void 0,
|
|
50
|
+
type: "string"
|
|
51
|
+
}).positional("port", {
|
|
52
|
+
describe: "ip port",
|
|
53
|
+
default: void 0,
|
|
54
|
+
type: "number"
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
async (argv) => {
|
|
58
|
+
const {
|
|
59
|
+
pairingCode,
|
|
60
|
+
nodeId: nodeIdStr,
|
|
61
|
+
ipPort,
|
|
62
|
+
ip,
|
|
63
|
+
ble = false,
|
|
64
|
+
instanceId
|
|
65
|
+
} = argv;
|
|
66
|
+
let { setupPinCode, discriminator, shortDiscriminator } = argv;
|
|
67
|
+
if (typeof pairingCode === "string") {
|
|
68
|
+
const { shortDiscriminator: pairingCodeShortDiscriminator, passcode } = import_schema.ManualPairingCodeCodec.decode(pairingCode);
|
|
69
|
+
shortDiscriminator = pairingCodeShortDiscriminator;
|
|
70
|
+
setupPinCode = passcode;
|
|
71
|
+
discriminator = void 0;
|
|
72
|
+
} else if (discriminator === void 0 && shortDiscriminator === void 0) {
|
|
73
|
+
discriminator = 3840;
|
|
74
|
+
}
|
|
75
|
+
const nodeId = nodeIdStr !== void 0 ? (0, import_datatype.NodeId)(BigInt(nodeIdStr)) : void 0;
|
|
76
|
+
await theNode.start();
|
|
77
|
+
if (theNode.commissioningController === void 0) {
|
|
78
|
+
throw new Error("CommissioningController not initialized");
|
|
79
|
+
}
|
|
80
|
+
const options = {
|
|
81
|
+
discovery: {
|
|
82
|
+
knownAddress: ip !== void 0 && ipPort !== void 0 ? { ip, port: ipPort, type: "udp" } : void 0,
|
|
83
|
+
identifierData: instanceId !== void 0 ? { instanceId } : discriminator !== void 0 ? { longDiscriminator: discriminator } : shortDiscriminator !== void 0 ? { shortDiscriminator } : {},
|
|
84
|
+
discoveryCapabilities: {
|
|
85
|
+
ble,
|
|
86
|
+
onIpNetwork: true
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
passcode: setupPinCode,
|
|
90
|
+
...(0, import_cmd_nodes.createDiagnosticCallbacks)()
|
|
91
|
+
};
|
|
92
|
+
options.commissioning = {
|
|
93
|
+
nodeId: nodeId !== void 0 ? (0, import_datatype.NodeId)(nodeId) : void 0,
|
|
94
|
+
regulatoryLocation: import_cluster.GeneralCommissioning.RegulatoryLocationType.Outdoor,
|
|
95
|
+
// Set to the most restrictive if relevant
|
|
96
|
+
regulatoryCountryCode: "XX"
|
|
97
|
+
};
|
|
98
|
+
console.log(import_general.Logger.toJSON(options));
|
|
99
|
+
if (theNode.Store.has("WiFiSsid") && theNode.Store.has("WiFiPassword")) {
|
|
100
|
+
options.commissioning.wifiNetwork = {
|
|
101
|
+
wifiSsid: await theNode.Store.get("WiFiSsid", ""),
|
|
102
|
+
wifiCredentials: await theNode.Store.get("WiFiPassword", "")
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (theNode.Store.has("ThreadName") && theNode.Store.has("ThreadOperationalDataset")) {
|
|
106
|
+
options.commissioning.threadNetwork = {
|
|
107
|
+
networkName: await theNode.Store.get("ThreadName", ""),
|
|
108
|
+
operationalDataset: await theNode.Store.get(
|
|
109
|
+
"ThreadOperationalDataset",
|
|
110
|
+
""
|
|
111
|
+
)
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const commissionedNodeId = await theNode.commissioningController.commissionNode(options);
|
|
115
|
+
console.log("Commissioned Node:", commissionedNodeId);
|
|
116
|
+
const node = theNode.commissioningController.getPairedNode(commissionedNodeId);
|
|
117
|
+
if (node === void 0) {
|
|
118
|
+
throw new import_general.MatterError("Node not found after commissioning.");
|
|
119
|
+
}
|
|
120
|
+
const descriptor = node.getRootClusterClient(import_cluster.DescriptorCluster);
|
|
121
|
+
if (descriptor !== void 0) {
|
|
122
|
+
console.log(await descriptor.attributes.deviceTypeList.get());
|
|
123
|
+
console.log(await descriptor.getServerListAttribute());
|
|
124
|
+
} else {
|
|
125
|
+
console.log("No Descriptor Cluster found. This should never happen!");
|
|
126
|
+
}
|
|
127
|
+
const info = node.getRootClusterClient(import_cluster.BasicInformationCluster);
|
|
128
|
+
if (info !== void 0) {
|
|
129
|
+
console.log(await info.getProductNameAttribute());
|
|
130
|
+
} else {
|
|
131
|
+
console.log("No BasicInformation Cluster found. This should never happen!");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
).options({
|
|
135
|
+
pairingCode: {
|
|
136
|
+
describe: "pairing code",
|
|
137
|
+
default: void 0,
|
|
138
|
+
type: "string"
|
|
139
|
+
},
|
|
140
|
+
setupPinCode: {
|
|
141
|
+
describe: "setup pin code",
|
|
142
|
+
default: 20202021,
|
|
143
|
+
type: "number"
|
|
144
|
+
},
|
|
145
|
+
instanceId: {
|
|
146
|
+
alias: "i",
|
|
147
|
+
describe: "instance id",
|
|
148
|
+
type: "string"
|
|
149
|
+
},
|
|
150
|
+
discriminator: {
|
|
151
|
+
alias: "d",
|
|
152
|
+
description: "Long discriminator",
|
|
153
|
+
type: "number"
|
|
154
|
+
},
|
|
155
|
+
shortDiscriminator: {
|
|
156
|
+
alias: "s",
|
|
157
|
+
description: "Short discriminator",
|
|
158
|
+
type: "number"
|
|
159
|
+
},
|
|
160
|
+
ble: {
|
|
161
|
+
alias: "b",
|
|
162
|
+
description: "Also discover over BLE",
|
|
163
|
+
type: "boolean",
|
|
164
|
+
default: false
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}).command(
|
|
168
|
+
"open-basic-window <node-id> [timeout]",
|
|
169
|
+
"Open a basic commissioning window",
|
|
170
|
+
(yargs2) => {
|
|
171
|
+
return yargs2.positional("node-id", {
|
|
172
|
+
describe: "node id",
|
|
173
|
+
type: "string",
|
|
174
|
+
demandOption: true
|
|
175
|
+
}).positional("timeout", {
|
|
176
|
+
describe: "timeout in seconds",
|
|
177
|
+
type: "number",
|
|
178
|
+
default: 900
|
|
179
|
+
});
|
|
180
|
+
},
|
|
181
|
+
async (argv) => {
|
|
182
|
+
const { nodeId, timeout = 900 } = argv;
|
|
183
|
+
await theNode.start();
|
|
184
|
+
const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
|
|
185
|
+
await node.openBasicCommissioningWindow(timeout);
|
|
186
|
+
console.log(`Basic Commissioning Window for node ${nodeId} opened`);
|
|
187
|
+
}
|
|
188
|
+
).command(
|
|
189
|
+
"open-enhanced-window <node-id> [timeout]",
|
|
190
|
+
"Open a enhanced commissioning window",
|
|
191
|
+
(yargs2) => {
|
|
192
|
+
return yargs2.positional("node-id", {
|
|
193
|
+
describe: "node id",
|
|
194
|
+
type: "string",
|
|
195
|
+
demandOption: true
|
|
196
|
+
}).positional("timeout", {
|
|
197
|
+
describe: "timeout in seconds",
|
|
198
|
+
type: "number",
|
|
199
|
+
default: 900
|
|
200
|
+
});
|
|
201
|
+
},
|
|
202
|
+
async (argv) => {
|
|
203
|
+
await theNode.start();
|
|
204
|
+
const { nodeId, timeout = 900 } = argv;
|
|
205
|
+
const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
|
|
206
|
+
const data = await node.openEnhancedCommissioningWindow(timeout);
|
|
207
|
+
console.log(`Enhanced Commissioning Window for node ${nodeId} opened`);
|
|
208
|
+
const { qrPairingCode, manualPairingCode } = data;
|
|
209
|
+
console.log(import_schema.QrCode.get(qrPairingCode));
|
|
210
|
+
console.log(
|
|
211
|
+
`QR Code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=${qrPairingCode}`
|
|
212
|
+
);
|
|
213
|
+
console.log(`Manual pairing code: ${manualPairingCode}`);
|
|
214
|
+
}
|
|
215
|
+
).command(
|
|
216
|
+
"unpair <node-id>",
|
|
217
|
+
"Unpair/Decommission a node",
|
|
218
|
+
(yargs2) => {
|
|
219
|
+
return yargs2.positional("node-id", {
|
|
220
|
+
describe: "node id",
|
|
221
|
+
type: "string",
|
|
222
|
+
demandOption: true
|
|
223
|
+
});
|
|
224
|
+
},
|
|
225
|
+
async (argv) => {
|
|
226
|
+
await theNode.start();
|
|
227
|
+
const { nodeId } = argv;
|
|
228
|
+
const node = (await theNode.connectAndGetNodes(nodeId, { autoSubscribe: false }))[0];
|
|
229
|
+
await node.decommission();
|
|
230
|
+
}
|
|
231
|
+
),
|
|
232
|
+
handler: async (argv) => {
|
|
233
|
+
argv.unhandled = true;
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=cmd_commission.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/shell/cmd_commission.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["yargs"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var cmd_config_exports = {};
|
|
20
|
+
__export(cmd_config_exports, {
|
|
21
|
+
default: () => commands
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(cmd_config_exports);
|
|
24
|
+
var import_general = require("@matter/general");
|
|
25
|
+
var import_app = require("../app");
|
|
26
|
+
/**
|
|
27
|
+
* @license
|
|
28
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
function commands(theNode) {
|
|
32
|
+
return {
|
|
33
|
+
command: "config",
|
|
34
|
+
describe: "Manage global configuration",
|
|
35
|
+
builder: (yargs) => yargs.command("loglevel", "Manage Console and File LogLevels", (yargs2) => {
|
|
36
|
+
return yargs2.command(
|
|
37
|
+
["* [action]", "* [type] [ action]"],
|
|
38
|
+
"get/delete console or file log level",
|
|
39
|
+
(yargs3) => {
|
|
40
|
+
return yargs3.positional("type", {
|
|
41
|
+
describe: "type to set the loglevel for",
|
|
42
|
+
choices: ["console", "file"],
|
|
43
|
+
default: "console",
|
|
44
|
+
type: "string"
|
|
45
|
+
}).positional("action", {
|
|
46
|
+
describe: "get/delete",
|
|
47
|
+
choices: ["get", "delete"],
|
|
48
|
+
default: "get",
|
|
49
|
+
type: "string"
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
async (argv) => doLogLevel(theNode, argv)
|
|
53
|
+
).command(
|
|
54
|
+
"set <value>",
|
|
55
|
+
"set console log level",
|
|
56
|
+
(yargs3) => {
|
|
57
|
+
return yargs3.positional("type", {
|
|
58
|
+
describe: "type to set the loglevel for",
|
|
59
|
+
choices: ["console", "file"],
|
|
60
|
+
default: "console",
|
|
61
|
+
type: "string"
|
|
62
|
+
}).positional("value", {
|
|
63
|
+
describe: "log level to set",
|
|
64
|
+
type: "string",
|
|
65
|
+
choices: ["fatal", "error", "warn", "info", "debug"],
|
|
66
|
+
demandOption: true
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
async (argv) => doLogLevel(theNode, { action: "set", ...argv })
|
|
70
|
+
);
|
|
71
|
+
}).command("logfile", "Manage Logfile path", (yargs2) => {
|
|
72
|
+
return yargs2.command(
|
|
73
|
+
"* [action]",
|
|
74
|
+
"get/delete logfile path",
|
|
75
|
+
(yargs3) => {
|
|
76
|
+
return yargs3.positional("action", {
|
|
77
|
+
describe: "get/delete",
|
|
78
|
+
choices: ["get", "delete"],
|
|
79
|
+
default: "get",
|
|
80
|
+
type: "string"
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
async (argv) => doLogfilePath(theNode, argv)
|
|
84
|
+
).command(
|
|
85
|
+
"set <value>",
|
|
86
|
+
"set logfile path",
|
|
87
|
+
(yargs3) => {
|
|
88
|
+
return yargs3.positional("value", {
|
|
89
|
+
describe: "logfile path to set",
|
|
90
|
+
type: "string",
|
|
91
|
+
demandOption: true
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
async (argv) => doLogfilePath(theNode, { action: "set", ...argv })
|
|
95
|
+
);
|
|
96
|
+
}).command("ble-hci", "Manage BLE HCI ID (Linux)", (yargs2) => {
|
|
97
|
+
return yargs2.command(
|
|
98
|
+
"* [action]",
|
|
99
|
+
"get/delete BLE HCI ID of the device (Linux only)",
|
|
100
|
+
(yargs3) => {
|
|
101
|
+
return yargs3.positional("action", {
|
|
102
|
+
describe: "get/delete",
|
|
103
|
+
choices: ["get", "delete"],
|
|
104
|
+
default: "get",
|
|
105
|
+
type: "string"
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
async (argv) => doBleHci(theNode, argv)
|
|
109
|
+
).command(
|
|
110
|
+
"set <value>",
|
|
111
|
+
"set BLE HCI ID of the device (Linux only)",
|
|
112
|
+
(yargs3) => {
|
|
113
|
+
return yargs3.positional("value", {
|
|
114
|
+
describe: "HCI ID to set",
|
|
115
|
+
type: "number",
|
|
116
|
+
demandOption: true
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
async (argv) => doBleHci(theNode, { action: "set", ...argv })
|
|
120
|
+
);
|
|
121
|
+
}).command("wifi-credentials", "Manage Wi-Fi credentials used in commissioning process", (yargs2) => {
|
|
122
|
+
return yargs2.command(
|
|
123
|
+
"* [action]",
|
|
124
|
+
"get/set Wi-Fi credentials",
|
|
125
|
+
(yargs3) => {
|
|
126
|
+
return yargs3.positional("action", {
|
|
127
|
+
describe: "get/delete",
|
|
128
|
+
choices: ["get", "delete"],
|
|
129
|
+
default: "get",
|
|
130
|
+
type: "string"
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
async (argv) => doWifiCredentials(theNode, argv)
|
|
134
|
+
).command(
|
|
135
|
+
"set <wifi-ssid> <wifi-password>",
|
|
136
|
+
"set Wi-Fi credentials",
|
|
137
|
+
(yargs3) => {
|
|
138
|
+
return yargs3.positional("wifi-ssid", {
|
|
139
|
+
describe: "SSID of the Wifi network to commission",
|
|
140
|
+
type: "string",
|
|
141
|
+
demandOption: true
|
|
142
|
+
}).positional("wifi-password", {
|
|
143
|
+
describe: "Password of the Wifi network to commission",
|
|
144
|
+
type: "string",
|
|
145
|
+
demandOption: true
|
|
146
|
+
});
|
|
147
|
+
},
|
|
148
|
+
async (argv) => doWifiCredentials(theNode, { action: "set", ...argv })
|
|
149
|
+
);
|
|
150
|
+
}).command("thread-credentials", "Manage Thread credentials used in commissioning process", (yargs2) => {
|
|
151
|
+
return yargs2.command(
|
|
152
|
+
"* [action]",
|
|
153
|
+
"get/set thread network credentials",
|
|
154
|
+
(yargs3) => {
|
|
155
|
+
return yargs3.positional("action", {
|
|
156
|
+
describe: "get/delete",
|
|
157
|
+
choices: ["get", "delete"],
|
|
158
|
+
default: "get",
|
|
159
|
+
type: "string"
|
|
160
|
+
});
|
|
161
|
+
},
|
|
162
|
+
async (argv) => doThreadCredentials(theNode, argv)
|
|
163
|
+
).command(
|
|
164
|
+
"set <thread-name> <thread-operational-dataset>",
|
|
165
|
+
"set thread networkcredentials",
|
|
166
|
+
(yargs3) => {
|
|
167
|
+
return yargs3.positional("thread-name", {
|
|
168
|
+
describe: "Thread network name to commission",
|
|
169
|
+
type: "string",
|
|
170
|
+
demandOption: true
|
|
171
|
+
}).positional("thread-operational-dataset", {
|
|
172
|
+
describe: "Thread network operational dataset to commission",
|
|
173
|
+
type: "string",
|
|
174
|
+
demandOption: true
|
|
175
|
+
});
|
|
176
|
+
},
|
|
177
|
+
(argv) => doThreadCredentials(theNode, { action: "set", ...argv })
|
|
178
|
+
);
|
|
179
|
+
}),
|
|
180
|
+
handler: async (argv) => {
|
|
181
|
+
argv.unhandled = true;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
async function doLogLevel(theNode, args) {
|
|
186
|
+
const { action, value } = args;
|
|
187
|
+
const storageKey = args.type === "console" ? "LogLevel" : "LogLevelFile";
|
|
188
|
+
const logtype = args.type === "console" ? "Console" : "File";
|
|
189
|
+
switch (action) {
|
|
190
|
+
case "get":
|
|
191
|
+
console.log(`Current Loglevel for ${logtype}: ${await theNode.Store.get(storageKey, "info")}`);
|
|
192
|
+
break;
|
|
193
|
+
case "set":
|
|
194
|
+
if (value === void 0) {
|
|
195
|
+
console.log(`Cannot change Loglevel for ${logtype}: New Loglevel value not provided`);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
await theNode.Store.set(storageKey, value);
|
|
199
|
+
console.log(`New Loglevel for ${logtype}:" ${value}"`);
|
|
200
|
+
(0, import_app.setLogLevel)(args.type === "console" ? "default" : "file", value);
|
|
201
|
+
break;
|
|
202
|
+
case "delete":
|
|
203
|
+
await theNode.Store.delete(storageKey);
|
|
204
|
+
console.log(`Loglevel for ${logtype}: Reset to "info"`);
|
|
205
|
+
(0, import_app.setLogLevel)(args.type === "console" ? "default" : "file", "info");
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async function doLogfilePath(theNode, args) {
|
|
210
|
+
const { action, value } = args;
|
|
211
|
+
switch (action) {
|
|
212
|
+
case "get":
|
|
213
|
+
console.log(`Current Logfile Path: ${await theNode.Store.get("LogFile", "-")}`);
|
|
214
|
+
break;
|
|
215
|
+
case "set":
|
|
216
|
+
if (value === void 0) {
|
|
217
|
+
console.log(`Cannot change Logfile path: new path not provided`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
await theNode.Store.set("LogFile", value);
|
|
221
|
+
console.log(`New LogFile path:" ${value}". Please restart the shell for teh changes to take effect.`);
|
|
222
|
+
break;
|
|
223
|
+
case "delete":
|
|
224
|
+
await theNode.Store.delete("LogFile");
|
|
225
|
+
console.log(`LogFile path removed. Please restart the shell for teh changes to take effect.`);
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
async function doBleHci(theNode, args) {
|
|
230
|
+
const { action, value } = args;
|
|
231
|
+
switch (action) {
|
|
232
|
+
case "get":
|
|
233
|
+
console.log(`Current BLE HCI ID: ${await theNode.Store.get("BleHciId", 0)}`);
|
|
234
|
+
break;
|
|
235
|
+
case "set":
|
|
236
|
+
if (value === void 0) {
|
|
237
|
+
console.log(`Cannot change HCI ID: New HCI ID value not provided`);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
await theNode.Store.set("BleHciId", value);
|
|
241
|
+
console.log(`New HCI ID:" ${value}". Please restart the shell for teh changes to take effect.`);
|
|
242
|
+
break;
|
|
243
|
+
case "delete":
|
|
244
|
+
await theNode.Store.delete("BleHciId");
|
|
245
|
+
console.log(`BLE HCI ID reset to default (0). Please restart the shell for teh changes to take effect.`);
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
async function doWifiCredentials(theNode, args) {
|
|
250
|
+
const { action, wifiSsid, wifiPassword } = args;
|
|
251
|
+
switch (action) {
|
|
252
|
+
case "get":
|
|
253
|
+
console.log(
|
|
254
|
+
`Current Wifi-Credentials: SSID="${await theNode.Store.get(
|
|
255
|
+
"WiFiSsid",
|
|
256
|
+
"-"
|
|
257
|
+
)}", Password="${import_general.Logger.maskString(await theNode.Store.get("WiFiPassword", ""))}"`
|
|
258
|
+
);
|
|
259
|
+
break;
|
|
260
|
+
case "set":
|
|
261
|
+
if (wifiSsid === void 0 || wifiPassword === void 0) {
|
|
262
|
+
console.log(`Cannot change Wi-Fi credentials: New values not provided`);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
await theNode.Store.set("WiFiSsid", wifiSsid);
|
|
266
|
+
await theNode.Store.set("WiFiPassword", wifiPassword);
|
|
267
|
+
console.log(
|
|
268
|
+
`New Wifi-Credentials: SSID="${theNode.Store.get(
|
|
269
|
+
"WiFiSsid",
|
|
270
|
+
"-"
|
|
271
|
+
)}", Password="${import_general.Logger.maskString(await theNode.Store.get("WiFiPassword"))}"`
|
|
272
|
+
);
|
|
273
|
+
break;
|
|
274
|
+
case "delete":
|
|
275
|
+
await theNode.Store.delete("WiFiSsid");
|
|
276
|
+
await theNode.Store.delete("WiFiPassword");
|
|
277
|
+
console.log(`Wi-Fi credentials were deleted`);
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
async function doThreadCredentials(theNode, args) {
|
|
282
|
+
const { action, threadName, threadOperationalDataset } = args;
|
|
283
|
+
switch (action) {
|
|
284
|
+
case "get":
|
|
285
|
+
console.log(
|
|
286
|
+
`Current Thread network credentials: name="${await theNode.Store.get(
|
|
287
|
+
"ThreadName",
|
|
288
|
+
"-"
|
|
289
|
+
)}", Operational-Dataset="${import_general.Logger.maskString(
|
|
290
|
+
await theNode.Store.get("ThreadOperationalDataset", "")
|
|
291
|
+
)}"`
|
|
292
|
+
);
|
|
293
|
+
break;
|
|
294
|
+
case "set":
|
|
295
|
+
if (threadName === void 0 || threadOperationalDataset === void 0) {
|
|
296
|
+
console.log(`Cannot change Thread network credentials: New values not provided`);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
await theNode.Store.set("ThreadName", threadName);
|
|
300
|
+
await theNode.Store.set("ThreadOperationalDataset", threadOperationalDataset);
|
|
301
|
+
console.log(
|
|
302
|
+
`New Wifi-Credentials: SSID="${await theNode.Store.get(
|
|
303
|
+
"ThreadName",
|
|
304
|
+
"-"
|
|
305
|
+
)}", OperationalDataset="${import_general.Logger.maskString(await theNode.Store.get("ThreadOperationalDataset"))}"`
|
|
306
|
+
);
|
|
307
|
+
break;
|
|
308
|
+
case "delete":
|
|
309
|
+
await theNode.Store.delete("ThreadName");
|
|
310
|
+
await theNode.Store.delete("ThreadOperationalDataset");
|
|
311
|
+
console.log(`Thread network credentials were deleted`);
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=cmd_config.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/shell/cmd_config.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["yargs"]
|
|
6
|
+
}
|