@project-chip/matter.js 0.12.0-alpha.0-20241226-0f5b0fe87 → 0.12.0-alpha.0-20241228-9f74a0273

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.
Files changed (33) hide show
  1. package/dist/cjs/CommissioningController.d.ts +9 -0
  2. package/dist/cjs/CommissioningController.d.ts.map +1 -1
  3. package/dist/cjs/CommissioningController.js +67 -2
  4. package/dist/cjs/CommissioningController.js.map +1 -1
  5. package/dist/cjs/MatterController.d.ts +4 -0
  6. package/dist/cjs/MatterController.d.ts.map +1 -1
  7. package/dist/cjs/MatterController.js +34 -6
  8. package/dist/cjs/MatterController.js.map +1 -1
  9. package/dist/cjs/PaseCommissioner.d.ts.map +1 -1
  10. package/dist/cjs/PaseCommissioner.js +2 -1
  11. package/dist/cjs/PaseCommissioner.js.map +1 -1
  12. package/dist/cjs/device/PairedNode.d.ts.map +1 -1
  13. package/dist/cjs/device/PairedNode.js +27 -8
  14. package/dist/cjs/device/PairedNode.js.map +1 -1
  15. package/dist/esm/CommissioningController.d.ts +9 -0
  16. package/dist/esm/CommissioningController.d.ts.map +1 -1
  17. package/dist/esm/CommissioningController.js +70 -4
  18. package/dist/esm/CommissioningController.js.map +1 -1
  19. package/dist/esm/MatterController.d.ts +4 -0
  20. package/dist/esm/MatterController.d.ts.map +1 -1
  21. package/dist/esm/MatterController.js +34 -6
  22. package/dist/esm/MatterController.js.map +1 -1
  23. package/dist/esm/PaseCommissioner.d.ts.map +1 -1
  24. package/dist/esm/PaseCommissioner.js +2 -1
  25. package/dist/esm/PaseCommissioner.js.map +1 -1
  26. package/dist/esm/device/PairedNode.d.ts.map +1 -1
  27. package/dist/esm/device/PairedNode.js +27 -8
  28. package/dist/esm/device/PairedNode.js.map +1 -1
  29. package/package.json +8 -8
  30. package/src/CommissioningController.ts +87 -2
  31. package/src/MatterController.ts +39 -5
  32. package/src/PaseCommissioner.ts +1 -0
  33. package/src/device/PairedNode.ts +34 -10
@@ -53,7 +53,7 @@ const STRUCTURE_UPDATE_TIMEOUT_MS = 5e3;
53
53
  const RECONNECT_DELAY_MS = 15e3;
54
54
  const RECONNECT_DELAY_AFTER_SHUTDOWN_MS = 3e4;
55
55
  const RECONNECT_MAX_DELAY_MS = 6e5;
56
- const NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY = 5e3;
56
+ const NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY_MS = 5e3;
57
57
  var NodeStates = /* @__PURE__ */ ((NodeStates2) => {
58
58
  NodeStates2[NodeStates2["Connected"] = 0] = "Connected";
59
59
  NodeStates2[NodeStates2["Disconnected"] = 1] = "Disconnected";
@@ -98,14 +98,12 @@ class PairedNode {
98
98
  this.#nodeDetails = new DeviceInformation(nodeId, knownNodeDetails);
99
99
  logger.info(`Node ${this.nodeId}: Created paired node with device data`, this.#nodeDetails.meta);
100
100
  sessions.added.on((session) => {
101
- if (session.peerNodeId !== this.nodeId) return;
102
- if (this.state === 3 /* WaitingForDeviceDiscovery */) {
103
- logger.info(
104
- `Session for peer node ${session.peerNodeId} connected while node is in discovery mode ...`
105
- );
106
- this.#setConnectionState(2 /* Reconnecting */);
107
- this.#scheduleReconnect(NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY);
101
+ if (session.isInitiator || // If we initiated the session we do not need to react on it
102
+ session.peerNodeId !== this.nodeId || // no session for this node
103
+ this.state !== 3 /* WaitingForDeviceDiscovery */) {
104
+ return;
108
105
  }
106
+ this.#newChannelReconnectDelayTimer.stop().start();
109
107
  });
110
108
  this.#construction = Construction(this, async () => {
111
109
  if (storedAttributeData !== void 0) {
@@ -123,6 +121,19 @@ class PairedNode {
123
121
  #endpoints = /* @__PURE__ */ new Map();
124
122
  #interactionClient;
125
123
  #reconnectDelayTimer;
124
+ #newChannelReconnectDelayTimer = Time.getTimer(
125
+ "New Channel Reconnect Delay",
126
+ NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY_MS,
127
+ () => {
128
+ if (this.#connectionState === 3 /* WaitingForDeviceDiscovery */ || this.#connectionState === 2 /* Reconnecting */) {
129
+ logger.info(
130
+ `Node ${this.nodeId}: Still not connected after new session establishment, trying to reconnect ...`
131
+ );
132
+ this.#setConnectionState(2 /* Reconnecting */);
133
+ this.#scheduleReconnect(0);
134
+ }
135
+ }
136
+ );
126
137
  #reconnectErrorCount = 0;
127
138
  #updateEndpointStructureTimer = Time.getTimer(
128
139
  "Endpoint structure update",
@@ -389,6 +400,13 @@ class PairedNode {
389
400
  const allClusterAttributes = await this.readAllAttributes();
390
401
  await this.#initializeEndpointStructure(allClusterAttributes, anyInitializationDone);
391
402
  }
403
+ if (!this.#remoteInitializationDone) {
404
+ try {
405
+ await this.commissioningController.validateAndUpdateFabricLabel(this.nodeId);
406
+ } catch (error) {
407
+ logger.info(`Node ${this.nodeId}: Error updating fabric label`, error);
408
+ }
409
+ }
392
410
  this.#reconnectErrorCount = 0;
393
411
  this.#setConnectionState(0 /* Connected */);
394
412
  await this.events.initializedFromRemote.emit(this.#nodeDetails.toStorageData());
@@ -899,6 +917,7 @@ class PairedNode {
899
917
  await this.commissioningController.disconnectNode(this.nodeId);
900
918
  }
901
919
  close(sendDecommissionedStatus = false) {
920
+ this.#newChannelReconnectDelayTimer.stop();
902
921
  this.#reconnectDelayTimer?.stop();
903
922
  this.#reconnectDelayTimer = void 0;
904
923
  this.#updateEndpointStructureTimer.stop();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/device/PairedNode.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["NodeStates", "NodeStateInformation"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@project-chip/matter.js",
3
- "version": "0.12.0-alpha.0-20241226-0f5b0fe87",
3
+ "version": "0.12.0-alpha.0-20241228-9f74a0273",
4
4
  "description": "Matter protocol in pure js",
5
5
  "keywords": [
6
6
  "iot",
@@ -44,16 +44,16 @@
44
44
  "#*": "./src/*"
45
45
  },
46
46
  "dependencies": {
47
- "@matter/general": "0.12.0-alpha.0-20241226-0f5b0fe87",
48
- "@matter/model": "0.12.0-alpha.0-20241226-0f5b0fe87",
49
- "@matter/node": "0.12.0-alpha.0-20241226-0f5b0fe87",
50
- "@matter/protocol": "0.12.0-alpha.0-20241226-0f5b0fe87",
51
- "@matter/types": "0.12.0-alpha.0-20241226-0f5b0fe87",
47
+ "@matter/general": "0.12.0-alpha.0-20241228-9f74a0273",
48
+ "@matter/model": "0.12.0-alpha.0-20241228-9f74a0273",
49
+ "@matter/node": "0.12.0-alpha.0-20241228-9f74a0273",
50
+ "@matter/protocol": "0.12.0-alpha.0-20241228-9f74a0273",
51
+ "@matter/types": "0.12.0-alpha.0-20241228-9f74a0273",
52
52
  "@noble/curves": "^1.7.0"
53
53
  },
54
54
  "devDependencies": {
55
- "@matter/tools": "0.12.0-alpha.0-20241226-0f5b0fe87",
56
- "@matter/testing": "0.12.0-alpha.0-20241226-0f5b0fe87"
55
+ "@matter/tools": "0.12.0-alpha.0-20241228-9f74a0273",
56
+ "@matter/testing": "0.12.0-alpha.0-20241228-9f74a0273"
57
57
  },
58
58
  "files": [
59
59
  "dist/**/*",
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { OperationalCredentials } from "#clusters";
7
8
  import {
8
9
  Environment,
9
10
  ImplementationError,
@@ -15,6 +16,7 @@ import {
15
16
  StorageContext,
16
17
  SyncStorage,
17
18
  UdpInterface,
19
+ UnexpectedDataError,
18
20
  } from "#general";
19
21
  import { LegacyControllerStore } from "#LegacyControllerStore.js";
20
22
  import { ControllerStore } from "#node";
@@ -42,7 +44,7 @@ import {
42
44
  TypeFromPartialBitSchema,
43
45
  VendorId,
44
46
  } from "#types";
45
- import { CommissioningControllerNodeOptions, PairedNode } from "./device/PairedNode.js";
47
+ import { CommissioningControllerNodeOptions, NodeStates, PairedNode } from "./device/PairedNode.js";
46
48
  import { MatterController } from "./MatterController.js";
47
49
  import { MatterNode } from "./MatterNode.js";
48
50
 
@@ -108,6 +110,13 @@ export type CommissioningControllerOptions = CommissioningControllerNodeOptions
108
110
  */
109
111
  readonly caseAuthenticatedTags?: CaseAuthenticatedTag[];
110
112
 
113
+ /**
114
+ * The Fabric Label to set for the commissioned devices. The #label is used for users to identify the admin.
115
+ * The maximum length are 32 characters!
116
+ * The value will automatically be checked on connection to a node and updated if necessary.
117
+ */
118
+ readonly adminFabricLabel: string;
119
+
111
120
  /**
112
121
  * When used with the new API Environment set the environment here and the CommissioningServer will self-register
113
122
  * on the environment when you call start().
@@ -137,6 +146,7 @@ export class CommissioningController extends MatterNode {
137
146
 
138
147
  private controllerInstance?: MatterController;
139
148
  private initializedNodes = new Map<NodeId, PairedNode>();
149
+ private nodeUpdateLabelHandlers = new Map<NodeId, (nodeState: NodeStates) => Promise<void>>();
140
150
  private sessionDisconnectedHandler = new Map<NodeId, () => Promise<void>>();
141
151
 
142
152
  /**
@@ -188,7 +198,8 @@ export class CommissioningController extends MatterNode {
188
198
  if (this.controllerInstance !== undefined) {
189
199
  return this.controllerInstance;
190
200
  }
191
- const { localPort, adminFabricId, adminVendorId, adminFabricIndex, caseAuthenticatedTags } = this.options;
201
+ const { localPort, adminFabricId, adminVendorId, adminFabricIndex, caseAuthenticatedTags, adminFabricLabel } =
202
+ this.options;
192
203
 
193
204
  if (environment === undefined && storage === undefined) {
194
205
  throw new ImplementationError("Storage not initialized correctly.");
@@ -222,6 +233,7 @@ export class CommissioningController extends MatterNode {
222
233
  adminFabricId,
223
234
  adminFabricIndex,
224
235
  caseAuthenticatedTags,
236
+ adminFabricLabel,
225
237
  });
226
238
  if (this.mdnsBroadcaster) {
227
239
  controller.addBroadcaster(this.mdnsBroadcaster.createInstanceBroadcaster(port));
@@ -563,6 +575,79 @@ export class CommissioningController extends MatterNode {
563
575
  getActiveSessionInformation() {
564
576
  return this.controllerInstance?.getActiveSessionInformation() ?? [];
565
577
  }
578
+
579
+ async validateAndUpdateFabricLabel(nodeId: NodeId) {
580
+ const controller = this.assertControllerIsStarted();
581
+ const node = this.initializedNodes.get(nodeId);
582
+ if (node === undefined) {
583
+ throw new ImplementationError(`Node ${nodeId} is not connected!`);
584
+ }
585
+ const operationalCredentialsCluster = node.getRootClusterClient(OperationalCredentials.Cluster);
586
+ if (operationalCredentialsCluster === undefined) {
587
+ throw new UnexpectedDataError(`Node ${nodeId}: Operational Credentials Cluster not available!`);
588
+ }
589
+ const fabrics = await operationalCredentialsCluster.getFabricsAttribute(false, true);
590
+ if (fabrics.length !== 1) {
591
+ logger.info(`Invalid fabrics returned from node ${nodeId}.`, fabrics);
592
+ return;
593
+ }
594
+ const label = controller.fabricConfig.label;
595
+ const fabric = fabrics[0];
596
+ if (fabric.label !== label) {
597
+ logger.info(
598
+ `Node ${nodeId}: Fabric label "${fabric.label}" does not match requested admin fabric Label "${label}". Updating...`,
599
+ );
600
+ await operationalCredentialsCluster.updateFabricLabel({
601
+ label,
602
+ fabricIndex: fabric.fabricIndex,
603
+ });
604
+ }
605
+ }
606
+
607
+ async updateFabricLabel(label: string) {
608
+ const controller = this.assertControllerIsStarted();
609
+ if (controller.fabricConfig.label === label) {
610
+ return;
611
+ }
612
+ await controller.updateFabricLabel(label);
613
+
614
+ for (const node of this.initializedNodes.values()) {
615
+ if (node.isConnected) {
616
+ // When Node is connected, update the fabric label on the node directly
617
+ try {
618
+ await this.validateAndUpdateFabricLabel(node.nodeId);
619
+ return;
620
+ } catch (error) {
621
+ logger.warn(`Error updating fabric label on node ${node.nodeId}:`, error);
622
+ }
623
+ }
624
+ if (!node.remoteInitializationDone) {
625
+ // Node not online and was also not yet initialized, means update happens
626
+ // automatically when node connects
627
+ logger.info(`Node ${node.nodeId} is offline. Fabric label will be updated on next connection.`);
628
+ return;
629
+ }
630
+ logger.info(
631
+ `Node ${node.nodeId} is reconnecting. Delaying fabric label update to when node is back online.`,
632
+ );
633
+
634
+ // If no update handler is registered, register one
635
+ // TODO: Convert this next to a task system for node tasks and also better handle error cases
636
+ if (!this.nodeUpdateLabelHandlers.has(node.nodeId)) {
637
+ const updateOnReconnect = (nodeState: NodeStates) => {
638
+ if (nodeState === NodeStates.Connected) {
639
+ this.validateAndUpdateFabricLabel(node.nodeId)
640
+ .catch(error => logger.warn(`Error updating fabric label on node ${node.nodeId}:`, error))
641
+ .finally(() => {
642
+ node.events.stateChanged.off(updateOnReconnect);
643
+ this.nodeUpdateLabelHandlers.delete(node.nodeId);
644
+ });
645
+ }
646
+ };
647
+ node.events.stateChanged.on(updateOnReconnect);
648
+ }
649
+ }
650
+ }
566
651
  }
567
652
 
568
653
  export async function configureNetwork(options: {
@@ -102,6 +102,7 @@ export class MatterController {
102
102
  adminFabricId?: FabricId;
103
103
  adminFabricIndex?: FabricIndex;
104
104
  caseAuthenticatedTags?: CaseAuthenticatedTag[];
105
+ adminFabricLabel: string;
105
106
  }): Promise<MatterController> {
106
107
  const {
107
108
  controllerStore,
@@ -112,6 +113,7 @@ export class MatterController {
112
113
  adminFabricId = FabricId(DEFAULT_FABRIC_ID),
113
114
  adminFabricIndex = FabricIndex(DEFAULT_FABRIC_INDEX),
114
115
  caseAuthenticatedTags,
116
+ adminFabricLabel,
115
117
  } = options;
116
118
 
117
119
  const ca = await CertificateAuthority.create(controllerStore.caStorage);
@@ -129,6 +131,7 @@ export class MatterController {
129
131
  netInterfaces,
130
132
  certificateManager: ca,
131
133
  fabric,
134
+ adminFabricLabel,
132
135
  sessionClosedCallback,
133
136
  });
134
137
  } else {
@@ -148,7 +151,8 @@ export class MatterController {
148
151
  .setRootCert(ca.rootCert)
149
152
  .setRootNodeId(rootNodeId)
150
153
  .setIdentityProtectionKey(ipkValue)
151
- .setRootVendorId(adminVendorId ?? DEFAULT_ADMIN_VENDOR_ID);
154
+ .setRootVendorId(adminVendorId ?? DEFAULT_ADMIN_VENDOR_ID)
155
+ .setLabel(adminFabricLabel);
152
156
  fabricBuilder.setOperationalCert(
153
157
  ca.generateNoc(fabricBuilder.publicKey, adminFabricId, rootNodeId, caseAuthenticatedTags),
154
158
  );
@@ -160,6 +164,7 @@ export class MatterController {
160
164
  netInterfaces,
161
165
  certificateManager: ca,
162
166
  fabric,
167
+ adminFabricLabel,
163
168
  sessionClosedCallback,
164
169
  });
165
170
  }
@@ -172,9 +177,17 @@ export class MatterController {
172
177
  fabricConfig: Fabric.Config;
173
178
  scanners: ScannerSet;
174
179
  netInterfaces: NetInterfaceSet;
180
+ adminFabricLabel: string;
175
181
  sessionClosedCallback?: (peerNodeId: NodeId) => void;
176
182
  }): Promise<MatterController> {
177
- const { certificateAuthorityConfig, fabricConfig, scanners, netInterfaces, sessionClosedCallback } = options;
183
+ const {
184
+ certificateAuthorityConfig,
185
+ fabricConfig,
186
+ adminFabricLabel,
187
+ scanners,
188
+ netInterfaces,
189
+ sessionClosedCallback,
190
+ } = options;
178
191
 
179
192
  // Verify an appropriate network interface is available
180
193
  if (!netInterfaces.hasInterfaceFor(ChannelType.BLE)) {
@@ -200,6 +213,7 @@ export class MatterController {
200
213
  netInterfaces,
201
214
  certificateManager,
202
215
  fabric,
216
+ adminFabricLabel,
203
217
  sessionClosedCallback,
204
218
  });
205
219
  await controller.construction;
@@ -232,9 +246,18 @@ export class MatterController {
232
246
  netInterfaces: NetInterfaceSet;
233
247
  certificateManager: CertificateAuthority;
234
248
  fabric: Fabric;
249
+ adminFabricLabel: string;
235
250
  sessionClosedCallback?: (peerNodeId: NodeId) => void;
236
251
  }) {
237
- const { controllerStore, scanners, netInterfaces, certificateManager, fabric, sessionClosedCallback } = options;
252
+ const {
253
+ controllerStore,
254
+ scanners,
255
+ netInterfaces,
256
+ certificateManager,
257
+ fabric,
258
+ sessionClosedCallback,
259
+ adminFabricLabel,
260
+ } = options;
238
261
  this.#store = controllerStore;
239
262
  this.scanners = scanners;
240
263
  this.netInterfaces = netInterfaces;
@@ -244,6 +267,10 @@ export class MatterController {
244
267
 
245
268
  const fabricManager = new FabricManager();
246
269
  fabricManager.addFabric(fabric);
270
+ // Overwrite the persist callback and store fabric when needed
271
+ fabric.persistCallback = async () => {
272
+ await this.#store.fabricStorage.set("fabric", this.fabric.config);
273
+ };
247
274
 
248
275
  this.sessionManager = new SessionManager({
249
276
  fabrics: fabricManager,
@@ -293,6 +320,9 @@ export class MatterController {
293
320
  this.#construction = Construction(this, async () => {
294
321
  await this.peers.construction.ready;
295
322
  await this.sessionManager.construction.ready;
323
+ if (this.fabric.label !== adminFabricLabel) {
324
+ await fabric.setLabel(adminFabricLabel);
325
+ }
296
326
  });
297
327
  }
298
328
 
@@ -371,7 +401,7 @@ export class MatterController {
371
401
 
372
402
  const address = await this.commissioner.commissionWithDiscovery(commissioningOptions);
373
403
 
374
- await this.#store.fabricStorage.set("fabric", this.fabric.config);
404
+ await this.fabric.persist();
375
405
 
376
406
  return address.nodeId;
377
407
  }
@@ -411,7 +441,7 @@ export class MatterController {
411
441
  await this.peers.delete(this.fabric.addressOf(peerNodeId));
412
442
  throw new CommissioningError(`Commission error on commissioningComplete: ${errorCode}, ${debugText}`);
413
443
  }
414
- await this.#store.fabricStorage.set("fabric", this.fabric.config);
444
+ await this.fabric.persist();
415
445
  }
416
446
 
417
447
  isCommissioned() {
@@ -536,6 +566,10 @@ export class MatterController {
536
566
  await peer.dataStore.construction;
537
567
  return peer.dataStore.retrieveAttributes(endpointId, clusterId);
538
568
  }
569
+
570
+ async updateFabricLabel(label: string) {
571
+ await this.fabric.setLabel(label);
572
+ }
539
573
  }
540
574
 
541
575
  class CommissionedNodeStore extends PeerAddressStore {
@@ -102,6 +102,7 @@ export class PaseCommissioner {
102
102
  fabricConfig: fabricConfig,
103
103
  scanners,
104
104
  netInterfaces,
105
+ adminFabricLabel: this.options.fabricConfig.label,
105
106
  });
106
107
  }
107
108
 
@@ -73,7 +73,7 @@ import { asClusterClientInternal, isClusterClient } from "./TypeHelpers.js";
73
73
  const logger = Logger.get("PairedNode");
74
74
 
75
75
  /** Delay after receiving a changed partList from a device to update the device structure */
76
- const STRUCTURE_UPDATE_TIMEOUT_MS = 5_000; // 5 seconds, TODO: Verify if this value makes sense in practice
76
+ const STRUCTURE_UPDATE_TIMEOUT_MS = 5_000; // 5 seconds
77
77
 
78
78
  /** Delay after a disconnect to try to reconnect to the device */
79
79
  const RECONNECT_DELAY_MS = 15_000; // 15 seconds
@@ -88,7 +88,7 @@ const RECONNECT_MAX_DELAY_MS = 600_000; // 10 minutes
88
88
  * Delay after a new session was opened by the device while in discovery state.
89
89
  * This usually happens for devices that support persisted subscriptions.
90
90
  */
91
- const NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY = 5_000;
91
+ const NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY_MS = 5_000;
92
92
 
93
93
  export enum NodeStates {
94
94
  /**
@@ -216,6 +216,23 @@ export class PairedNode {
216
216
  readonly #endpoints = new Map<EndpointNumber, Endpoint>();
217
217
  #interactionClient: InteractionClient;
218
218
  #reconnectDelayTimer?: Timer;
219
+ #newChannelReconnectDelayTimer = Time.getTimer(
220
+ "New Channel Reconnect Delay",
221
+ NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY_MS,
222
+ () => {
223
+ if (
224
+ this.#connectionState === NodeStates.WaitingForDeviceDiscovery ||
225
+ this.#connectionState === NodeStates.Reconnecting
226
+ ) {
227
+ logger.info(
228
+ `Node ${this.nodeId}: Still not connected after new session establishment, trying to reconnect ...`,
229
+ );
230
+ // Try last known address first to speed up reconnection
231
+ this.#setConnectionState(NodeStates.Reconnecting);
232
+ this.#scheduleReconnect(0);
233
+ }
234
+ },
235
+ );
219
236
  #reconnectErrorCount = 0;
220
237
  readonly #updateEndpointStructureTimer = Time.getTimer(
221
238
  "Endpoint structure update",
@@ -334,15 +351,14 @@ export class PairedNode {
334
351
  logger.info(`Node ${this.nodeId}: Created paired node with device data`, this.#nodeDetails.meta);
335
352
 
336
353
  sessions.added.on(session => {
337
- if (session.peerNodeId !== this.nodeId) return;
338
- if (this.state === NodeStates.WaitingForDeviceDiscovery) {
339
- logger.info(
340
- `Session for peer node ${session.peerNodeId} connected while node is in discovery mode ...`,
341
- );
342
- // Try last known address first to speed up reconnection
343
- this.#setConnectionState(NodeStates.Reconnecting);
344
- this.#scheduleReconnect(NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY);
354
+ if (
355
+ session.isInitiator || // If we initiated the session we do not need to react on it
356
+ session.peerNodeId !== this.nodeId || // no session for this node
357
+ this.state !== NodeStates.WaitingForDeviceDiscovery
358
+ ) {
359
+ return;
345
360
  }
361
+ this.#newChannelReconnectDelayTimer.stop().start();
346
362
  });
347
363
 
348
364
  this.#construction = Construction(this, async () => {
@@ -613,6 +629,13 @@ export class PairedNode {
613
629
  const allClusterAttributes = await this.readAllAttributes();
614
630
  await this.#initializeEndpointStructure(allClusterAttributes, anyInitializationDone);
615
631
  }
632
+ if (!this.#remoteInitializationDone) {
633
+ try {
634
+ await this.commissioningController.validateAndUpdateFabricLabel(this.nodeId);
635
+ } catch (error) {
636
+ logger.info(`Node ${this.nodeId}: Error updating fabric label`, error);
637
+ }
638
+ }
616
639
  this.#reconnectErrorCount = 0;
617
640
  this.#setConnectionState(NodeStates.Connected);
618
641
  await this.events.initializedFromRemote.emit(this.#nodeDetails.toStorageData());
@@ -1233,6 +1256,7 @@ export class PairedNode {
1233
1256
  }
1234
1257
 
1235
1258
  close(sendDecommissionedStatus = false) {
1259
+ this.#newChannelReconnectDelayTimer.stop();
1236
1260
  this.#reconnectDelayTimer?.stop();
1237
1261
  this.#reconnectDelayTimer = undefined;
1238
1262
  this.#updateEndpointStructureTimer.stop();