@project-chip/matter.js 0.12.3 → 0.12.4-alpha.0-20250210-ad8edf096
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/CommissioningController.d.ts +52 -30
- package/dist/cjs/CommissioningController.d.ts.map +1 -1
- package/dist/cjs/CommissioningController.js +154 -109
- package/dist/cjs/CommissioningController.js.map +1 -1
- package/dist/cjs/device/PairedNode.d.ts +22 -9
- package/dist/cjs/device/PairedNode.d.ts.map +1 -1
- package/dist/cjs/device/PairedNode.js +43 -31
- package/dist/cjs/device/PairedNode.js.map +1 -1
- package/dist/esm/CommissioningController.d.ts +52 -30
- package/dist/esm/CommissioningController.d.ts.map +1 -1
- package/dist/esm/CommissioningController.js +154 -109
- package/dist/esm/CommissioningController.js.map +1 -1
- package/dist/esm/device/PairedNode.d.ts +22 -9
- package/dist/esm/device/PairedNode.d.ts.map +1 -1
- package/dist/esm/device/PairedNode.js +43 -31
- package/dist/esm/device/PairedNode.js.map +1 -1
- package/package.json +8 -8
- package/src/CommissioningController.ts +155 -108
- package/src/device/PairedNode.ts +48 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommissioningController.d.ts","sourceRoot":"","sources":["../../src/CommissioningController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACH,WAAW,EAIX,eAAe,EAGf,cAAc,EACd,WAAW,EAGd,MAAM,UAAU,CAAC;AAGlB,OAAO,EAEH,oBAAoB,EACpB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"CommissioningController.d.ts","sourceRoot":"","sources":["../../src/CommissioningController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACH,WAAW,EAIX,eAAe,EAGf,cAAc,EACd,WAAW,EAGd,MAAM,UAAU,CAAC;AAGlB,OAAO,EAEH,oBAAoB,EACpB,+BAA+B,EAG/B,gCAAgC,EAChC,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,WAAW,EAEX,iBAAiB,EACjB,UAAU,EACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,oBAAoB,EACpB,2BAA2B,EAC3B,QAAQ,EACR,WAAW,EACX,MAAM,EACN,wBAAwB,EACxB,QAAQ,EACX,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,kCAAkC,EAAc,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C,MAAM,MAAM,4BAA4B,GAAG;IACvC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,kCAAkC,GAAG;IAC9E;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,+FAA+F;IAC/F,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAEvC,+FAA+F;IAC/F,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAEvC;;;SAGK;IACL,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAE/B,0GAA0G;IAC1G,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;IAElC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAExD;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC;CACvD,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,GAAG;IACxE,aAAa,EAAE,IAAI,CAAC,gCAAgC,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC;IAC3F,SAAS,EAAE,gCAAgC,CAAC,WAAW,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,iFAAiF;AACjF,qBAAa,uBAAwB,SAAQ,UAAU;;IAmBnD;;;;OAIG;gBACS,OAAO,EAAE,8BAA8B;IAKnD,IAAI,MAAM,uBAET;IAED,iGAAiG;IACjG,IAAI,sBAAsB;;;MASzB;IAsED;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,wBAAwB,EAAE,6BAA6B,UAAO;IAqBhG;;;;OAIG;IACH,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa;IAM9E,mEAAmE;IACnE,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAKjC;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,UAAO;IAsB1D,sDAAsD;IAChD,cAAc,CAAC,MAAM,EAAE,MAAM;IAQnC;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM;IAQ5B;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,kCAAkC;IA6CrF;;;;;OAKG;IACG,OAAO,CAAC,cAAc,CAAC,EAAE,kCAAkC;IAejE;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,WAAW;IAIvC;;;;;OAKG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAInD;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC;IAK/C,6FAA6F;IAC7F,cAAc;IAMd;;;OAGG;IACG,uBAAuB,CACzB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,iBAAiB,EACjC,gBAAgB,UAAO,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM;IAI5B,mEAAmE;IACnE,oBAAoB;IAMpB,wEAAwE;IACxE,2BAA2B;;;;;;;IAM3B;;;OAGG;IACG,KAAK;IAWX,oEAAoE;IACpE,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,eAAe;IACf,UAAU,CAAC,YAAY,EAAE,OAAO;IAYhC,eAAe;IACT,yBAAyB;IAW/B;;OAEG;IACG,KAAK;IAiCX;;OAEG;IACH,mCAAmC,CAC/B,cAAc,EAAE,+BAA+B,EAC/C,qBAAqB,CAAC,EAAE,wBAAwB,CAAC,OAAO,2BAA2B,CAAC;IASxF;;;;OAIG;IACG,6BAA6B,CAC/B,cAAc,EAAE,+BAA+B,EAC/C,qBAAqB,CAAC,EAAE,wBAAwB,CAAC,OAAO,2BAA2B,CAAC,EACpF,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,EAC3D,cAAc,SAAM;IAYxB;;;OAGG;IACG,YAAY;IAelB,kEAAkE;IAClE,2BAA2B;;;;uBApejB,WAAqB;;;;;;;IAwe/B,eAAe;IACT,4BAA4B,CAAC,MAAM,EAAE,MAAM;IA4BjD;;;OAGG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM;CA4CxC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;;;;GA6BA"}
|
|
@@ -28,6 +28,20 @@ import { MatterController } from "./MatterController.js";
|
|
|
28
28
|
import { MatterNode } from "./MatterNode.js";
|
|
29
29
|
const logger = new Logger("CommissioningController");
|
|
30
30
|
class CommissioningController extends MatterNode {
|
|
31
|
+
#started = false;
|
|
32
|
+
#ipv4Disabled;
|
|
33
|
+
#listeningAddressIpv4;
|
|
34
|
+
#listeningAddressIpv6;
|
|
35
|
+
#options;
|
|
36
|
+
#environment;
|
|
37
|
+
// Set when new API was initialized correctly
|
|
38
|
+
#storage;
|
|
39
|
+
#mdnsScanner;
|
|
40
|
+
#mdnsBroadcaster;
|
|
41
|
+
#controllerInstance;
|
|
42
|
+
#initializedNodes = /* @__PURE__ */ new Map();
|
|
43
|
+
#nodeUpdateLabelHandlers = /* @__PURE__ */ new Map();
|
|
44
|
+
#sessionDisconnectedHandler = /* @__PURE__ */ new Map();
|
|
31
45
|
/**
|
|
32
46
|
* Creates a new CommissioningController instance
|
|
33
47
|
*
|
|
@@ -35,26 +49,14 @@ class CommissioningController extends MatterNode {
|
|
|
35
49
|
*/
|
|
36
50
|
constructor(options) {
|
|
37
51
|
super();
|
|
38
|
-
this
|
|
52
|
+
this.#options = options;
|
|
39
53
|
}
|
|
40
|
-
started = false;
|
|
41
|
-
ipv4Disabled;
|
|
42
|
-
listeningAddressIpv4;
|
|
43
|
-
listeningAddressIpv6;
|
|
44
|
-
environment;
|
|
45
|
-
// Set when new API was initialized correctly
|
|
46
|
-
storage;
|
|
47
|
-
mdnsScanner;
|
|
48
|
-
mdnsBroadcaster;
|
|
49
|
-
controllerInstance;
|
|
50
|
-
initializedNodes = /* @__PURE__ */ new Map();
|
|
51
|
-
nodeUpdateLabelHandlers = /* @__PURE__ */ new Map();
|
|
52
|
-
sessionDisconnectedHandler = /* @__PURE__ */ new Map();
|
|
53
54
|
get nodeId() {
|
|
54
|
-
return this
|
|
55
|
+
return this.#controllerInstance?.nodeId;
|
|
55
56
|
}
|
|
57
|
+
/** Returns the configuration data needed to create a PASE commissioner, e.g. in a mobile app. */
|
|
56
58
|
get paseCommissionerConfig() {
|
|
57
|
-
const controller = this
|
|
59
|
+
const controller = this.#assertControllerIsStarted(
|
|
58
60
|
"The CommissioningController needs to be started to get the PASE commissioner data."
|
|
59
61
|
);
|
|
60
62
|
const { caConfig, fabricConfig: fabricData } = controller;
|
|
@@ -63,40 +65,40 @@ class CommissioningController extends MatterNode {
|
|
|
63
65
|
fabricData
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
|
-
assertIsAddedToMatterServer() {
|
|
67
|
-
if (this
|
|
68
|
+
#assertIsAddedToMatterServer() {
|
|
69
|
+
if (this.#mdnsScanner === void 0 || this.#storage === void 0 && this.#environment === void 0) {
|
|
68
70
|
throw new ImplementationError("Add the node to the Matter instance before.");
|
|
69
71
|
}
|
|
70
|
-
if (!this
|
|
72
|
+
if (!this.#started) {
|
|
71
73
|
throw new ImplementationError("The node needs to be started before interacting with the controller.");
|
|
72
74
|
}
|
|
73
|
-
return { mdnsScanner: this
|
|
75
|
+
return { mdnsScanner: this.#mdnsScanner, storage: this.#storage, environment: this.#environment };
|
|
74
76
|
}
|
|
75
|
-
assertControllerIsStarted(errorText) {
|
|
76
|
-
if (this
|
|
77
|
+
#assertControllerIsStarted(errorText) {
|
|
78
|
+
if (this.#controllerInstance === void 0) {
|
|
77
79
|
throw new ImplementationError(
|
|
78
80
|
errorText ?? "Controller instance not yet started. Please call start() first."
|
|
79
81
|
);
|
|
80
82
|
}
|
|
81
|
-
return this
|
|
83
|
+
return this.#controllerInstance;
|
|
82
84
|
}
|
|
83
85
|
/** Internal method to initialize a MatterController instance. */
|
|
84
|
-
async initializeController() {
|
|
85
|
-
const { mdnsScanner, storage, environment } = this
|
|
86
|
-
if (this
|
|
87
|
-
return this
|
|
86
|
+
async #initializeController() {
|
|
87
|
+
const { mdnsScanner, storage, environment } = this.#assertIsAddedToMatterServer();
|
|
88
|
+
if (this.#controllerInstance !== void 0) {
|
|
89
|
+
return this.#controllerInstance;
|
|
88
90
|
}
|
|
89
|
-
const { localPort, adminFabricId, adminVendorId, adminFabricIndex, caseAuthenticatedTags, adminFabricLabel } = this
|
|
91
|
+
const { localPort, adminFabricId, adminVendorId, adminFabricIndex, caseAuthenticatedTags, adminFabricLabel } = this.#options;
|
|
90
92
|
if (environment === void 0 && storage === void 0) {
|
|
91
93
|
throw new ImplementationError("Storage not initialized correctly.");
|
|
92
94
|
}
|
|
93
95
|
const controllerStore = environment?.has(ControllerStore) ? environment.get(ControllerStore) : new LegacyControllerStore(storage);
|
|
94
96
|
const { netInterfaces, scanners, port } = await configureNetwork({
|
|
95
|
-
ipv4Disabled: this
|
|
97
|
+
ipv4Disabled: this.#ipv4Disabled,
|
|
96
98
|
mdnsScanner,
|
|
97
99
|
localPort,
|
|
98
|
-
listeningAddressIpv4: this
|
|
99
|
-
listeningAddressIpv6: this
|
|
100
|
+
listeningAddressIpv4: this.#listeningAddressIpv4,
|
|
101
|
+
listeningAddressIpv6: this.#listeningAddressIpv6
|
|
100
102
|
});
|
|
101
103
|
const controller = await MatterController.create({
|
|
102
104
|
controllerStore,
|
|
@@ -104,7 +106,7 @@ class CommissioningController extends MatterNode {
|
|
|
104
106
|
netInterfaces,
|
|
105
107
|
sessionClosedCallback: (peerNodeId) => {
|
|
106
108
|
logger.info(`Session for peer node ${peerNodeId} disconnected ...`);
|
|
107
|
-
const handler = this
|
|
109
|
+
const handler = this.#sessionDisconnectedHandler.get(peerNodeId);
|
|
108
110
|
if (handler !== void 0) {
|
|
109
111
|
handler().catch((error) => logger.warn(`Error while handling session disconnect: ${error}`));
|
|
110
112
|
}
|
|
@@ -115,25 +117,25 @@ class CommissioningController extends MatterNode {
|
|
|
115
117
|
caseAuthenticatedTags,
|
|
116
118
|
adminFabricLabel
|
|
117
119
|
});
|
|
118
|
-
if (this
|
|
119
|
-
controller.addBroadcaster(this
|
|
120
|
+
if (this.#mdnsBroadcaster) {
|
|
121
|
+
controller.addBroadcaster(this.#mdnsBroadcaster.createInstanceBroadcaster(port));
|
|
120
122
|
}
|
|
121
123
|
return controller;
|
|
122
124
|
}
|
|
123
125
|
/**
|
|
124
126
|
* Commissions/Pairs a new device into the controller fabric. The method returns the NodeId of the commissioned
|
|
125
|
-
* node.
|
|
127
|
+
* node on success.
|
|
126
128
|
*/
|
|
127
129
|
async commissionNode(nodeOptions, connectNodeAfterCommissioning = true) {
|
|
128
|
-
this
|
|
129
|
-
const controller = this
|
|
130
|
+
this.#assertIsAddedToMatterServer();
|
|
131
|
+
const controller = this.#assertControllerIsStarted();
|
|
130
132
|
const nodeId = await controller.commission(nodeOptions);
|
|
131
133
|
if (connectNodeAfterCommissioning) {
|
|
132
134
|
const node = await this.connectNode(nodeId, {
|
|
133
135
|
...nodeOptions,
|
|
134
|
-
autoSubscribe: nodeOptions.autoSubscribe ?? this
|
|
135
|
-
subscribeMinIntervalFloorSeconds: nodeOptions.subscribeMinIntervalFloorSeconds ?? this
|
|
136
|
-
subscribeMaxIntervalCeilingSeconds: nodeOptions.subscribeMaxIntervalCeilingSeconds ?? this
|
|
136
|
+
autoSubscribe: nodeOptions.autoSubscribe ?? this.#options.autoSubscribe,
|
|
137
|
+
subscribeMinIntervalFloorSeconds: nodeOptions.subscribeMinIntervalFloorSeconds ?? this.#options.subscribeMinIntervalFloorSeconds,
|
|
138
|
+
subscribeMaxIntervalCeilingSeconds: nodeOptions.subscribeMaxIntervalCeilingSeconds ?? this.#options.subscribeMaxIntervalCeilingSeconds
|
|
137
139
|
});
|
|
138
140
|
await node.events.initialized;
|
|
139
141
|
}
|
|
@@ -145,24 +147,26 @@ class CommissioningController extends MatterNode {
|
|
|
145
147
|
* process.
|
|
146
148
|
*/
|
|
147
149
|
completeCommissioningForNode(peerNodeId, discoveryData) {
|
|
148
|
-
this
|
|
149
|
-
const controller = this
|
|
150
|
+
this.#assertIsAddedToMatterServer();
|
|
151
|
+
const controller = this.#assertControllerIsStarted();
|
|
150
152
|
return controller.completeCommissioning(peerNodeId, discoveryData);
|
|
151
153
|
}
|
|
152
154
|
/** Check if a given node id is commissioned on this controller. */
|
|
153
155
|
isNodeCommissioned(nodeId) {
|
|
154
|
-
const controller = this
|
|
156
|
+
const controller = this.#assertControllerIsStarted();
|
|
155
157
|
return controller.getCommissionedNodes().includes(nodeId) ?? false;
|
|
156
158
|
}
|
|
157
159
|
/**
|
|
158
160
|
* Remove a Node id from the controller. This method should only be used if the decommission method on the
|
|
159
161
|
* PairedNode instance returns an error. By default, it tries to decommission the node from the controller but will
|
|
160
162
|
* remove it also in case of an error during decommissioning. Ideally try to decommission the node before and only
|
|
161
|
-
* use this in case of an error.
|
|
163
|
+
* use this in case of an error as last option.
|
|
164
|
+
* If this method is used the state of the PairedNode instance might be out of sync, so the PairedNode instance
|
|
165
|
+
* should be disconnected first.
|
|
162
166
|
*/
|
|
163
167
|
async removeNode(nodeId, tryDecommissioning = true) {
|
|
164
|
-
const controller = this
|
|
165
|
-
const node = this
|
|
168
|
+
const controller = this.#assertControllerIsStarted();
|
|
169
|
+
const node = this.#initializedNodes.get(nodeId);
|
|
166
170
|
let decommissionSuccess = false;
|
|
167
171
|
if (tryDecommissioning) {
|
|
168
172
|
try {
|
|
@@ -179,17 +183,22 @@ class CommissioningController extends MatterNode {
|
|
|
179
183
|
node.close(!decommissionSuccess);
|
|
180
184
|
}
|
|
181
185
|
await controller.removeNode(nodeId);
|
|
182
|
-
this
|
|
186
|
+
this.#initializedNodes.delete(nodeId);
|
|
183
187
|
}
|
|
188
|
+
/** @deprecated Use PairedNode.disconnect() instead */
|
|
184
189
|
async disconnectNode(nodeId) {
|
|
185
|
-
const node = this
|
|
190
|
+
const node = this.#initializedNodes.get(nodeId);
|
|
186
191
|
if (node === void 0) {
|
|
187
192
|
throw new ImplementationError(`Node ${nodeId} is not connected!`);
|
|
188
193
|
}
|
|
189
|
-
await this
|
|
194
|
+
await this.#controllerInstance?.disconnect(nodeId);
|
|
190
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Returns the PairedNode instance for a given NodeId. The instance is initialized without auto connect if not yet
|
|
198
|
+
* created.
|
|
199
|
+
*/
|
|
191
200
|
async getNode(nodeId) {
|
|
192
|
-
const existingNode = this
|
|
201
|
+
const existingNode = this.#initializedNodes.get(nodeId);
|
|
193
202
|
if (existingNode !== void 0) {
|
|
194
203
|
return existingNode;
|
|
195
204
|
}
|
|
@@ -200,13 +209,15 @@ class CommissioningController extends MatterNode {
|
|
|
200
209
|
* After connection the endpoint data of the device is analyzed and an object structure is created.
|
|
201
210
|
* This call is not blocking and returns an initialized PairedNode instance. The connection or reconnection
|
|
202
211
|
* happens in the background. Please monitor the state of the node to see if the connection was successful.
|
|
212
|
+
*
|
|
213
|
+
* @deprecated Use getNode() instead and call PairedNode.connect() or PairedNode.disconnect() as needed.
|
|
203
214
|
*/
|
|
204
215
|
async connectNode(nodeId, connectOptions) {
|
|
205
|
-
const controller = this
|
|
216
|
+
const controller = this.#assertControllerIsStarted();
|
|
206
217
|
if (!controller.getCommissionedNodes().includes(nodeId)) {
|
|
207
218
|
throw new ImplementationError(`Node ${nodeId} is not commissioned!`);
|
|
208
219
|
}
|
|
209
|
-
const existingNode = this
|
|
220
|
+
const existingNode = this.#initializedNodes.get(nodeId);
|
|
210
221
|
if (existingNode !== void 0) {
|
|
211
222
|
if (!existingNode.initialized) {
|
|
212
223
|
existingNode.connect(connectOptions);
|
|
@@ -217,22 +228,22 @@ class CommissioningController extends MatterNode {
|
|
|
217
228
|
nodeId,
|
|
218
229
|
this,
|
|
219
230
|
connectOptions,
|
|
220
|
-
this
|
|
231
|
+
this.#controllerInstance?.getCommissionedNodeDetails(nodeId)?.deviceData ?? {},
|
|
221
232
|
await this.createInteractionClient(nodeId, NodeDiscoveryType.None, false),
|
|
222
233
|
// First connect without discovery to last known address
|
|
223
234
|
async (discoveryType) => void await controller.connect(nodeId, { discoveryType }),
|
|
224
|
-
(handler) => this
|
|
235
|
+
(handler) => this.#sessionDisconnectedHandler.set(nodeId, handler),
|
|
225
236
|
controller.sessions,
|
|
226
|
-
await this
|
|
237
|
+
await this.#collectStoredAttributeData(nodeId)
|
|
227
238
|
);
|
|
228
|
-
this
|
|
239
|
+
this.#initializedNodes.set(nodeId, pairedNode);
|
|
229
240
|
pairedNode.events.initializedFromRemote.on(
|
|
230
241
|
async (deviceData) => await controller.enhanceCommissionedNodeDetails(nodeId, deviceData)
|
|
231
242
|
);
|
|
232
243
|
return pairedNode;
|
|
233
244
|
}
|
|
234
|
-
async collectStoredAttributeData(nodeId) {
|
|
235
|
-
const controller = this
|
|
245
|
+
async #collectStoredAttributeData(nodeId) {
|
|
246
|
+
const controller = this.#assertControllerIsStarted();
|
|
236
247
|
const storedDataVersions = await controller.getStoredClusterDataVersions(nodeId);
|
|
237
248
|
const result = new Array();
|
|
238
249
|
for (const { endpointId, clusterId } of storedDataVersions) {
|
|
@@ -243,9 +254,11 @@ class CommissioningController extends MatterNode {
|
|
|
243
254
|
/**
|
|
244
255
|
* Connects to all paired nodes.
|
|
245
256
|
* After connection the endpoint data of the device is analyzed and an object structure is created.
|
|
257
|
+
*
|
|
258
|
+
* @deprecated Use getCommissionedNodes() to get the list of nodes and getNode(nodeId) instead and call PairedNode.connect() or PairedNode.disconnect() as needed.
|
|
246
259
|
*/
|
|
247
260
|
async connect(connectOptions) {
|
|
248
|
-
const controller = this
|
|
261
|
+
const controller = this.#assertControllerIsStarted();
|
|
249
262
|
if (!controller.isCommissioned()) {
|
|
250
263
|
throw new ImplementationError(
|
|
251
264
|
"Controller instance not yet paired with any device, so nothing to connect to."
|
|
@@ -254,36 +267,39 @@ class CommissioningController extends MatterNode {
|
|
|
254
267
|
for (const nodeId of controller.getCommissionedNodes()) {
|
|
255
268
|
await this.connectNode(nodeId, connectOptions);
|
|
256
269
|
}
|
|
257
|
-
return Array.from(this
|
|
270
|
+
return Array.from(this.#initializedNodes.values());
|
|
258
271
|
}
|
|
259
272
|
/**
|
|
260
273
|
* Set the MDNS Scanner instance. Should be only used internally
|
|
261
274
|
*
|
|
262
275
|
* @param mdnsScanner MdnsScanner instance
|
|
276
|
+
* @private
|
|
263
277
|
*/
|
|
264
278
|
setMdnsScanner(mdnsScanner) {
|
|
265
|
-
this
|
|
279
|
+
this.#mdnsScanner = mdnsScanner;
|
|
266
280
|
}
|
|
267
281
|
/**
|
|
268
282
|
* Set the MDNS Broadcaster instance. Should be only used internally
|
|
269
283
|
*
|
|
270
284
|
* @param mdnsBroadcaster MdnsBroadcaster instance
|
|
285
|
+
* @private
|
|
271
286
|
*/
|
|
272
287
|
setMdnsBroadcaster(mdnsBroadcaster) {
|
|
273
|
-
this
|
|
288
|
+
this.#mdnsBroadcaster = mdnsBroadcaster;
|
|
274
289
|
}
|
|
275
290
|
/**
|
|
276
291
|
* Set the Storage instance. Should be only used internally
|
|
277
292
|
*
|
|
278
293
|
* @param storage storage context to use
|
|
294
|
+
* @private
|
|
279
295
|
*/
|
|
280
296
|
setStorage(storage) {
|
|
281
|
-
this
|
|
282
|
-
this
|
|
297
|
+
this.#storage = storage;
|
|
298
|
+
this.#environment = void 0;
|
|
283
299
|
}
|
|
284
300
|
/** Returns true if t least one node is commissioned/paired with this controller instance. */
|
|
285
301
|
isCommissioned() {
|
|
286
|
-
const controller = this
|
|
302
|
+
const controller = this.#assertControllerIsStarted();
|
|
287
303
|
return controller.isCommissioned();
|
|
288
304
|
}
|
|
289
305
|
/**
|
|
@@ -291,93 +307,113 @@ class CommissioningController extends MatterNode {
|
|
|
291
307
|
* not be used directly. See the PairedNode class for the public API.
|
|
292
308
|
*/
|
|
293
309
|
async createInteractionClient(nodeId, discoveryType, forcedConnection = true) {
|
|
294
|
-
const controller = this
|
|
310
|
+
const controller = this.#assertControllerIsStarted();
|
|
295
311
|
if (!forcedConnection) {
|
|
296
312
|
return controller.createInteractionClient(nodeId, { discoveryType });
|
|
297
313
|
}
|
|
298
314
|
return controller.connect(nodeId, { discoveryType });
|
|
299
315
|
}
|
|
300
|
-
/**
|
|
316
|
+
/**
|
|
317
|
+
* Returns the PairedNode instance for a given node id, if this node is connected.
|
|
318
|
+
* @deprecated Use getNode() instead
|
|
319
|
+
*/
|
|
301
320
|
getPairedNode(nodeId) {
|
|
302
|
-
return this
|
|
321
|
+
return this.#initializedNodes.get(nodeId);
|
|
303
322
|
}
|
|
304
|
-
/** Returns an array with the
|
|
323
|
+
/** Returns an array with the NodeIds of all commissioned nodes. */
|
|
305
324
|
getCommissionedNodes() {
|
|
306
|
-
const controller = this
|
|
325
|
+
const controller = this.#assertControllerIsStarted();
|
|
307
326
|
return controller.getCommissionedNodes() ?? [];
|
|
308
327
|
}
|
|
328
|
+
/** Returns an arra with all commissioned NodeIds and their metadata. */
|
|
309
329
|
getCommissionedNodesDetails() {
|
|
310
|
-
const controller = this
|
|
330
|
+
const controller = this.#assertControllerIsStarted();
|
|
311
331
|
return controller.getCommissionedNodesDetails() ?? [];
|
|
312
332
|
}
|
|
313
|
-
/**
|
|
333
|
+
/**
|
|
334
|
+
* Disconnects all connected nodes and closes the network connections and other resources of the controller.
|
|
335
|
+
* You can use "start()" to restart the controller after closing it.
|
|
336
|
+
*/
|
|
314
337
|
async close() {
|
|
315
|
-
for (const node of this
|
|
338
|
+
for (const node of this.#initializedNodes.values()) {
|
|
316
339
|
node.close();
|
|
317
340
|
}
|
|
318
|
-
await this
|
|
319
|
-
this
|
|
320
|
-
this
|
|
321
|
-
this
|
|
322
|
-
this
|
|
341
|
+
await this.#controllerInstance?.close();
|
|
342
|
+
this.#controllerInstance = void 0;
|
|
343
|
+
this.#initializedNodes.clear();
|
|
344
|
+
this.#ipv4Disabled = void 0;
|
|
345
|
+
this.#started = false;
|
|
323
346
|
}
|
|
347
|
+
/** Return the port used by the controller for the UDP interface. */
|
|
324
348
|
getPort() {
|
|
325
|
-
return this
|
|
349
|
+
return this.#options.localPort;
|
|
326
350
|
}
|
|
351
|
+
/** @private */
|
|
327
352
|
initialize(ipv4Disabled) {
|
|
328
|
-
if (this
|
|
353
|
+
if (this.#started) {
|
|
329
354
|
throw new ImplementationError("Controller instance already started.");
|
|
330
355
|
}
|
|
331
|
-
if (this
|
|
356
|
+
if (this.#ipv4Disabled !== void 0 && this.#ipv4Disabled !== ipv4Disabled) {
|
|
332
357
|
throw new ImplementationError(
|
|
333
358
|
"Changing the IPv4 disabled flag after starting the controller is not supported."
|
|
334
359
|
);
|
|
335
360
|
}
|
|
336
|
-
this
|
|
361
|
+
this.#ipv4Disabled = ipv4Disabled;
|
|
337
362
|
}
|
|
363
|
+
/** @private */
|
|
338
364
|
async initializeControllerStore() {
|
|
339
|
-
if (this
|
|
365
|
+
if (this.#options.environment === void 0) {
|
|
340
366
|
throw new ImplementationError("Initialization not done. Add the controller to the MatterServer first.");
|
|
341
367
|
}
|
|
342
|
-
const { environment, id } = this
|
|
368
|
+
const { environment, id } = this.#options.environment;
|
|
343
369
|
const controllerStore = await ControllerStore.create(id, environment);
|
|
344
370
|
environment.set(ControllerStore, controllerStore);
|
|
345
371
|
}
|
|
346
|
-
/**
|
|
372
|
+
/**
|
|
373
|
+
* Initialize the controller and initialize and connect to all commissioned nodes if autoConnect is not set to false.
|
|
374
|
+
*/
|
|
347
375
|
async start() {
|
|
348
|
-
if (this
|
|
349
|
-
if (this
|
|
376
|
+
if (this.#ipv4Disabled === void 0) {
|
|
377
|
+
if (this.#options.environment === void 0) {
|
|
350
378
|
throw new ImplementationError("Initialization not done. Add the controller to the MatterServer first.");
|
|
351
379
|
}
|
|
352
|
-
const { environment } = this
|
|
380
|
+
const { environment } = this.#options.environment;
|
|
353
381
|
if (!environment.has(ControllerStore)) {
|
|
354
382
|
await this.initializeControllerStore();
|
|
355
383
|
}
|
|
356
384
|
const mdnsService = await environment.load(MdnsService);
|
|
357
|
-
this
|
|
385
|
+
this.#ipv4Disabled = !mdnsService.enableIpv4;
|
|
358
386
|
this.setMdnsBroadcaster(mdnsService.broadcaster);
|
|
359
387
|
this.setMdnsScanner(mdnsService.scanner);
|
|
360
|
-
this
|
|
361
|
-
const runtime = this
|
|
388
|
+
this.#environment = environment;
|
|
389
|
+
const runtime = this.#environment.runtime;
|
|
362
390
|
runtime.add(this);
|
|
363
391
|
}
|
|
364
|
-
this
|
|
365
|
-
if (this
|
|
366
|
-
this
|
|
392
|
+
this.#started = true;
|
|
393
|
+
if (this.#controllerInstance === void 0) {
|
|
394
|
+
this.#controllerInstance = await this.#initializeController();
|
|
367
395
|
}
|
|
368
|
-
await this
|
|
369
|
-
if (this
|
|
396
|
+
await this.#controllerInstance.announce();
|
|
397
|
+
if (this.#options.autoConnect !== false && this.#controllerInstance.isCommissioned()) {
|
|
370
398
|
await this.connect();
|
|
371
399
|
}
|
|
372
400
|
}
|
|
401
|
+
/**
|
|
402
|
+
* Cancels the discovery process for commissionable devices started with discoverCommissionableDevices().
|
|
403
|
+
*/
|
|
373
404
|
cancelCommissionableDeviceDiscovery(identifierData, discoveryCapabilities) {
|
|
374
|
-
this
|
|
375
|
-
const controller = this
|
|
405
|
+
this.#assertIsAddedToMatterServer();
|
|
406
|
+
const controller = this.#assertControllerIsStarted();
|
|
376
407
|
controller.collectScanners(discoveryCapabilities).forEach((scanner) => ControllerDiscovery.cancelCommissionableDeviceDiscovery(scanner, identifierData));
|
|
377
408
|
}
|
|
409
|
+
/**
|
|
410
|
+
* Starts to discover commissionable devices.
|
|
411
|
+
* The promise will be fulfilled after the provided timeout or when the discovery is stopped via
|
|
412
|
+
* cancelCommissionableDeviceDiscovery(). The discoveredCallback will be called for each discovered device.
|
|
413
|
+
*/
|
|
378
414
|
async discoverCommissionableDevices(identifierData, discoveryCapabilities, discoveredCallback, timeoutSeconds = 900) {
|
|
379
|
-
this
|
|
380
|
-
const controller = this
|
|
415
|
+
this.#assertIsAddedToMatterServer();
|
|
416
|
+
const controller = this.#assertControllerIsStarted();
|
|
381
417
|
return await ControllerDiscovery.discoverCommissionableDevices(
|
|
382
418
|
controller.collectScanners(discoveryCapabilities),
|
|
383
419
|
timeoutSeconds,
|
|
@@ -385,11 +421,15 @@ class CommissioningController extends MatterNode {
|
|
|
385
421
|
discoveredCallback
|
|
386
422
|
);
|
|
387
423
|
}
|
|
424
|
+
/**
|
|
425
|
+
* Use this method to reset the Controller storage. The method can only be called if the controller is stopped and
|
|
426
|
+
* will remove all commissioning data and paired nodes from the controller.
|
|
427
|
+
*/
|
|
388
428
|
async resetStorage() {
|
|
389
|
-
this
|
|
429
|
+
this.#assertControllerIsStarted(
|
|
390
430
|
"Storage cannot be reset while the controller is operating! Please close the controller first."
|
|
391
431
|
);
|
|
392
|
-
const { storage, environment } = this
|
|
432
|
+
const { storage, environment } = this.#assertIsAddedToMatterServer();
|
|
393
433
|
if (environment !== void 0) {
|
|
394
434
|
const controllerStore = environment.get(ControllerStore);
|
|
395
435
|
await controllerStore.erase();
|
|
@@ -401,11 +441,12 @@ class CommissioningController extends MatterNode {
|
|
|
401
441
|
}
|
|
402
442
|
/** Returns active session information for all connected nodes. */
|
|
403
443
|
getActiveSessionInformation() {
|
|
404
|
-
return this
|
|
444
|
+
return this.#controllerInstance?.getActiveSessionInformation() ?? [];
|
|
405
445
|
}
|
|
446
|
+
/** @private */
|
|
406
447
|
async validateAndUpdateFabricLabel(nodeId) {
|
|
407
|
-
const controller = this
|
|
408
|
-
const node = this
|
|
448
|
+
const controller = this.#assertControllerIsStarted();
|
|
449
|
+
const node = this.#initializedNodes.get(nodeId);
|
|
409
450
|
if (node === void 0) {
|
|
410
451
|
throw new ImplementationError(`Node ${nodeId} is not connected!`);
|
|
411
452
|
}
|
|
@@ -430,13 +471,17 @@ class CommissioningController extends MatterNode {
|
|
|
430
471
|
});
|
|
431
472
|
}
|
|
432
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* Updates the fabric label for the controller and all connected nodes.
|
|
476
|
+
* The label is used to identify the controller and all connected nodes in the fabric.
|
|
477
|
+
*/
|
|
433
478
|
async updateFabricLabel(label) {
|
|
434
|
-
const controller = this
|
|
479
|
+
const controller = this.#assertControllerIsStarted();
|
|
435
480
|
if (controller.fabricConfig.label === label) {
|
|
436
481
|
return;
|
|
437
482
|
}
|
|
438
483
|
await controller.updateFabricLabel(label);
|
|
439
|
-
for (const node of this
|
|
484
|
+
for (const node of this.#initializedNodes.values()) {
|
|
440
485
|
if (node.isConnected) {
|
|
441
486
|
try {
|
|
442
487
|
await this.validateAndUpdateFabricLabel(node.nodeId);
|
|
@@ -452,12 +497,12 @@ class CommissioningController extends MatterNode {
|
|
|
452
497
|
logger.info(
|
|
453
498
|
`Node ${node.nodeId} is reconnecting. Delaying fabric label update to when node is back online.`
|
|
454
499
|
);
|
|
455
|
-
if (!this
|
|
500
|
+
if (!this.#nodeUpdateLabelHandlers.has(node.nodeId)) {
|
|
456
501
|
const updateOnReconnect = (nodeState) => {
|
|
457
502
|
if (nodeState === NodeStates.Connected) {
|
|
458
503
|
this.validateAndUpdateFabricLabel(node.nodeId).catch((error) => logger.warn(`Error updating fabric label on node ${node.nodeId}:`, error)).finally(() => {
|
|
459
504
|
node.events.stateChanged.off(updateOnReconnect);
|
|
460
|
-
this
|
|
505
|
+
this.#nodeUpdateLabelHandlers.delete(node.nodeId);
|
|
461
506
|
});
|
|
462
507
|
}
|
|
463
508
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/CommissioningController.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|