@matter-server/ws-controller 0.3.4 → 0.3.5
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/esm/controller/AttributeDataCache.d.ts.map +1 -1
- package/dist/esm/controller/AttributeDataCache.js +5 -3
- package/dist/esm/controller/AttributeDataCache.js.map +1 -1
- package/dist/esm/controller/ControllerCommandHandler.d.ts.map +1 -1
- package/dist/esm/controller/ControllerCommandHandler.js +27 -18
- package/dist/esm/controller/ControllerCommandHandler.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/WebSocketControllerHandler.d.ts.map +1 -1
- package/dist/esm/server/WebSocketControllerHandler.js +40 -21
- package/dist/esm/server/WebSocketControllerHandler.js.map +1 -1
- package/dist/esm/util/formatNodeId.d.ts +16 -0
- package/dist/esm/util/formatNodeId.d.ts.map +1 -0
- package/dist/esm/util/formatNodeId.js +13 -0
- package/dist/esm/util/formatNodeId.js.map +6 -0
- package/package.json +4 -4
- package/src/controller/AttributeDataCache.ts +5 -4
- package/src/controller/ControllerCommandHandler.ts +28 -18
- package/src/index.ts +1 -0
- package/src/server/WebSocketControllerHandler.ts +48 -20
- package/src/util/formatNodeId.ts +20 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeDataCache.d.ts","sourceRoot":"","sources":["../../../src/controller/AttributeDataCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuC,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,
|
|
1
|
+
{"version":3,"file":"AttributeDataCache.d.ts","sourceRoot":"","sources":["../../../src/controller/AttributeDataCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuC,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAc,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAW5D;;;;;;GAMG;AACH,qBAAa,kBAAkB;;IAG3B;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI3B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI9B;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,CAAC,GAAG,CAAC,GAAG,IAAI;IAmC7E;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAkB/C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAsE/B"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ClusterBehavior, Logger } from "@matter/main";
|
|
7
7
|
import { getClusterById } from "@matter/main/types";
|
|
8
|
+
import { NodeStates } from "@project-chip/matter.js/device";
|
|
8
9
|
import { ClusterMap } from "../model/ModelMapper.js";
|
|
9
10
|
import { buildAttributePath, convertMatterToWebSocketTagBased } from "../server/Converters.js";
|
|
11
|
+
import { formatNodeId } from "../util/formatNodeId.js";
|
|
10
12
|
const logger = Logger.get("AttributeDataCache");
|
|
11
13
|
class AttributeDataCache {
|
|
12
14
|
#cache = /* @__PURE__ */ new Map();
|
|
@@ -96,14 +98,14 @@ class AttributeDataCache {
|
|
|
96
98
|
*/
|
|
97
99
|
#populateFromNode(node) {
|
|
98
100
|
const nodeId = node.nodeId;
|
|
99
|
-
if (!node.initialized) {
|
|
100
|
-
logger.debug(`Node ${nodeId} not initialized, skipping cache population`);
|
|
101
|
+
if (!node.initialized || node.connectionState === NodeStates.Disconnected || !node.node.lifecycle.isReady) {
|
|
102
|
+
logger.debug(`Node ${formatNodeId(nodeId)} not initialized, skipping cache population`);
|
|
101
103
|
return;
|
|
102
104
|
}
|
|
103
105
|
const nodeCache = /* @__PURE__ */ new Map();
|
|
104
106
|
this.#collectAttributes(node.node, nodeCache);
|
|
105
107
|
this.#cache.set(nodeId, nodeCache);
|
|
106
|
-
logger.debug(`Populated attribute cache for node ${nodeId}`);
|
|
108
|
+
logger.debug(`Populated attribute cache for node ${formatNodeId(nodeId)}`);
|
|
107
109
|
}
|
|
108
110
|
/**
|
|
109
111
|
* Recursively collect attributes from an endpoint into the cache structure.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/controller/AttributeDataCache.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAqB,iBAAiB,cAAsB;AAE5D,SAAiD,sBAAsB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerCommandHandler.d.ts","sourceRoot":"","sources":["../../../src/controller/ControllerCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,eAAe,EAMf,QAAQ,EACR,WAAW,EAIX,MAAM,EACN,UAAU,EAMb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAgD,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,EACH,2BAA2B,EAC3B,uBAAuB,EAM1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAOH,cAAc,EAmBjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAA4B,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAS5D,OAAO,EACH,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,8BAA8B,EAC9B,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,kBAAkB,EAElB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,cAAc,EAGjB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ControllerCommandHandler.d.ts","sourceRoot":"","sources":["../../../src/controller/ControllerCommandHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,7 @@ import {
|
|
|
65
65
|
ServerError,
|
|
66
66
|
UpdateSource
|
|
67
67
|
} from "../types/WebSocketMessageTypes.js";
|
|
68
|
+
import { formatNodeId } from "../util/formatNodeId.js";
|
|
68
69
|
import { pingIp } from "../util/network.js";
|
|
69
70
|
import { CustomClusterPoller } from "./CustomClusterPoller.js";
|
|
70
71
|
import { Nodes } from "./Nodes.js";
|
|
@@ -122,6 +123,14 @@ class ControllerCommandHandler {
|
|
|
122
123
|
handleReadAttributes: (nodeId, paths, fabricFiltered) => this.handleReadAttributes(nodeId, paths, fabricFiltered)
|
|
123
124
|
});
|
|
124
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Format a NodeId as a PeerAddress string for logging.
|
|
128
|
+
* Uses the controller's fabric index when available, otherwise defaults to 1.
|
|
129
|
+
*/
|
|
130
|
+
#formatNode(nodeId) {
|
|
131
|
+
const fabricIndex = this.#controller.fabric?.fabricIndex;
|
|
132
|
+
return formatNodeId(nodeId, fabricIndex);
|
|
133
|
+
}
|
|
125
134
|
get started() {
|
|
126
135
|
return this.#started;
|
|
127
136
|
}
|
|
@@ -205,7 +214,7 @@ class ControllerCommandHandler {
|
|
|
205
214
|
this.events.nodeStateChanged.emit(nodeId, state);
|
|
206
215
|
if (wasAvailable !== isAvailable) {
|
|
207
216
|
logger.info(
|
|
208
|
-
`Node ${nodeId} availability changed: ${wasAvailable} -> ${isAvailable} (state: ${NodeStates[previousState ?? -1]} -> ${NodeStates[state]})`
|
|
217
|
+
`Node ${this.#formatNode(nodeId)} availability changed: ${wasAvailable} -> ${isAvailable} (state: ${NodeStates[previousState ?? -1]} -> ${NodeStates[state]})`
|
|
209
218
|
);
|
|
210
219
|
this.events.nodeAvailabilityChanged.emit(nodeId, isAvailable);
|
|
211
220
|
}
|
|
@@ -236,17 +245,17 @@ class ControllerCommandHandler {
|
|
|
236
245
|
this.#connected = true;
|
|
237
246
|
await this.start();
|
|
238
247
|
const nodes = this.#controller.getCommissionedNodes();
|
|
239
|
-
logger.info(`Found ${nodes.length} nodes: ${nodes.map((nodeId) => nodeId
|
|
248
|
+
logger.info(`Found ${nodes.length} nodes: ${nodes.map((nodeId) => this.#formatNode(nodeId)).join(", ")}`);
|
|
240
249
|
for (const nodeId of nodes) {
|
|
241
250
|
try {
|
|
242
|
-
logger.info(`Initializing node "${nodeId}" ...`);
|
|
251
|
+
logger.info(`Initializing node "${this.#formatNode(nodeId)}" ...`);
|
|
243
252
|
const node = await this.#registerNode(nodeId);
|
|
244
253
|
node.connect({
|
|
245
254
|
subscribeMinIntervalFloorSeconds: 1,
|
|
246
255
|
subscribeMaxIntervalCeilingSeconds: void 0
|
|
247
256
|
});
|
|
248
257
|
} catch (error) {
|
|
249
|
-
logger.warn(`Failed to connect to node "${nodeId}":`, error);
|
|
258
|
+
logger.warn(`Failed to connect to node "${this.#formatNode(nodeId)}":`, error);
|
|
250
259
|
}
|
|
251
260
|
}
|
|
252
261
|
}
|
|
@@ -264,7 +273,7 @@ class ControllerCommandHandler {
|
|
|
264
273
|
}
|
|
265
274
|
async interviewNode(nodeId) {
|
|
266
275
|
const node = this.#nodes.get(nodeId);
|
|
267
|
-
logger.info(`Interview requested for node ${nodeId} - do a complete read`);
|
|
276
|
+
logger.info(`Interview requested for node ${this.#formatNode(nodeId)} - do a complete read`);
|
|
268
277
|
const read = {
|
|
269
278
|
...Read({
|
|
270
279
|
fabricFilter: true,
|
|
@@ -772,7 +781,7 @@ class ControllerCommandHandler {
|
|
|
772
781
|
const commissioningAddresses = node.node.maybeStateOf(CommissioningClient)?.addresses;
|
|
773
782
|
if (commissioningAddresses !== void 0 && commissioningAddresses.length > 0) {
|
|
774
783
|
logger.info(
|
|
775
|
-
`Node ${nodeId}: mDNS discovery returned no addresses, using commissioning addresses`,
|
|
784
|
+
`Node ${this.#formatNode(nodeId)}: mDNS discovery returned no addresses, using commissioning addresses`,
|
|
776
785
|
commissioningAddresses
|
|
777
786
|
);
|
|
778
787
|
const fallbackAddresses = commissioningAddresses.filter((addr) => addr.type === "udp").map((addr) => addr.ip);
|
|
@@ -791,21 +800,21 @@ class ControllerCommandHandler {
|
|
|
791
800
|
const scanners = this.#controller.node.env.get(ScannerSet);
|
|
792
801
|
const mdnsScanner = scanners.scannerFor(ChannelType.UDP);
|
|
793
802
|
if (!mdnsScanner) {
|
|
794
|
-
logger.debug(`Node ${nodeId}: No mDNS scanner available`);
|
|
803
|
+
logger.debug(`Node ${this.#formatNode(nodeId)}: No mDNS scanner available`);
|
|
795
804
|
return [];
|
|
796
805
|
}
|
|
797
806
|
const fabric = this.#controller.fabric;
|
|
798
|
-
logger.info(`Node ${nodeId}: Discovering addresses via mDNS (3s timeout)`);
|
|
807
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: Discovering addresses via mDNS (3s timeout)`);
|
|
799
808
|
const device = await mdnsScanner.findOperationalDevice(fabric, nodeId, Seconds(3), false);
|
|
800
809
|
if (!device || device.addresses.length === 0) {
|
|
801
|
-
logger.info(`Node ${nodeId}: mDNS discovery found no addresses`);
|
|
810
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: mDNS discovery found no addresses`);
|
|
802
811
|
return [];
|
|
803
812
|
}
|
|
804
813
|
const addresses = device.addresses.map((addr) => addr.ip);
|
|
805
|
-
logger.info(`Node ${nodeId}: mDNS discovered ${addresses.length} addresses:`, addresses);
|
|
814
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: mDNS discovered ${addresses.length} addresses:`, addresses);
|
|
806
815
|
return addresses;
|
|
807
816
|
} catch (error) {
|
|
808
|
-
logger.info(`Node ${nodeId}: mDNS discovery failed`, error);
|
|
817
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: mDNS discovery failed`, error);
|
|
809
818
|
return [];
|
|
810
819
|
}
|
|
811
820
|
}
|
|
@@ -820,10 +829,10 @@ class ControllerCommandHandler {
|
|
|
820
829
|
const result = {};
|
|
821
830
|
const ipAddresses = await this.getNodeIpAddresses(nodeId, false);
|
|
822
831
|
if (ipAddresses.length === 0) {
|
|
823
|
-
logger.info(`No IP addresses found for node ${nodeId}`);
|
|
832
|
+
logger.info(`No IP addresses found for node ${this.#formatNode(nodeId)}`);
|
|
824
833
|
return result;
|
|
825
834
|
}
|
|
826
|
-
logger.info(`Pinging node ${nodeId} on ${ipAddresses.length} addresses:`, ipAddresses);
|
|
835
|
+
logger.info(`Pinging node ${this.#formatNode(nodeId)} on ${ipAddresses.length} addresses:`, ipAddresses);
|
|
827
836
|
const pingPromises = ipAddresses.map(async (ip) => {
|
|
828
837
|
const cleanIp = ip.includes("%") ? ip.split("%")[0] : ip;
|
|
829
838
|
logger.debug(`Pinging ${cleanIp}`);
|
|
@@ -835,7 +844,7 @@ class ControllerCommandHandler {
|
|
|
835
844
|
if (node.isConnected) {
|
|
836
845
|
const anySuccess = Object.values(result).some((v) => v);
|
|
837
846
|
if (!anySuccess && ipAddresses.length > 0) {
|
|
838
|
-
logger.info(`Node ${nodeId} is connected but no pings succeeded`);
|
|
847
|
+
logger.info(`Node ${this.#formatNode(nodeId)} is connected but no pings succeeded`);
|
|
839
848
|
}
|
|
840
849
|
}
|
|
841
850
|
return result;
|
|
@@ -1013,7 +1022,7 @@ class ControllerCommandHandler {
|
|
|
1013
1022
|
}
|
|
1014
1023
|
return null;
|
|
1015
1024
|
} catch (error) {
|
|
1016
|
-
logger.warn(`Failed to check for updates for node ${nodeId}:`, error);
|
|
1025
|
+
logger.warn(`Failed to check for updates for node ${this.#formatNode(nodeId)}:`, error);
|
|
1017
1026
|
return null;
|
|
1018
1027
|
}
|
|
1019
1028
|
}
|
|
@@ -1033,7 +1042,7 @@ class ControllerCommandHandler {
|
|
|
1033
1042
|
const updateState = cachedAttributes?.["0/42/2"];
|
|
1034
1043
|
if (updateState !== void 0 && updateState !== 1) {
|
|
1035
1044
|
throw ServerError.updateError(
|
|
1036
|
-
`Node ${nodeId} is already in the process of updating (state: ${updateState})`
|
|
1045
|
+
`Node ${this.#formatNode(nodeId)} is already in the process of updating (state: ${updateState})`
|
|
1037
1046
|
);
|
|
1038
1047
|
}
|
|
1039
1048
|
try {
|
|
@@ -1052,7 +1061,7 @@ class ControllerCommandHandler {
|
|
|
1052
1061
|
throw ServerError.updateError("Failed to get update info");
|
|
1053
1062
|
}
|
|
1054
1063
|
}
|
|
1055
|
-
logger.info(`Starting update for node ${nodeId} to version ${softwareVersion}`);
|
|
1064
|
+
logger.info(`Starting update for node ${this.#formatNode(nodeId)} to version ${softwareVersion}`);
|
|
1056
1065
|
await otaProvider.act(
|
|
1057
1066
|
(agent) => agent.get(SoftwareUpdateManager).forceUpdate(
|
|
1058
1067
|
this.#controller.fabric.addressOf(nodeId),
|
|
@@ -1063,7 +1072,7 @@ class ControllerCommandHandler {
|
|
|
1063
1072
|
);
|
|
1064
1073
|
return this.#convertToMatterSoftwareVersion(updateInfo);
|
|
1065
1074
|
} catch (error) {
|
|
1066
|
-
logger.error(`Failed to update node ${nodeId}:`, error);
|
|
1075
|
+
logger.error(`Failed to update node ${this.#formatNode(nodeId)}:`, error);
|
|
1067
1076
|
throw error;
|
|
1068
1077
|
}
|
|
1069
1078
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/controller/ControllerCommandHandler.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["endpointId", "clusterId", "eventId", "data", "attributeId"]
|
|
6
6
|
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from "./server/WebSocketControllerHandler.js";
|
|
|
17
17
|
export * from "./types/WebServer.js";
|
|
18
18
|
export * from "./types/CommandHandler.js";
|
|
19
19
|
export * from "./types/WebSocketMessageTypes.js";
|
|
20
|
+
export { formatNodeId } from "./util/formatNodeId.js";
|
|
20
21
|
export * from "./util/matterVersion.js";
|
|
21
22
|
export { Crypto, Environment, LogDestination, LogFormat, LogLevel, Logger } from "@matter/main";
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AAGH,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,wBAAwB,CAAC;AAGvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AAGrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AAGH,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,wBAAwB,CAAC;AAGvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AAGrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export * from "./server/WebSocketControllerHandler.js";
|
|
|
14
14
|
export * from "./types/WebServer.js";
|
|
15
15
|
export * from "./types/CommandHandler.js";
|
|
16
16
|
export * from "./types/WebSocketMessageTypes.js";
|
|
17
|
+
import { formatNodeId } from "./util/formatNodeId.js";
|
|
17
18
|
export * from "./util/matterVersion.js";
|
|
18
19
|
import { Crypto, Environment, LogDestination, LogFormat, LogLevel, Logger } from "@matter/main";
|
|
19
20
|
export {
|
|
@@ -22,6 +23,7 @@ export {
|
|
|
22
23
|
LogDestination,
|
|
23
24
|
LogFormat,
|
|
24
25
|
LogLevel,
|
|
25
|
-
Logger
|
|
26
|
+
Logger,
|
|
27
|
+
formatNodeId
|
|
26
28
|
};
|
|
27
29
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AAGd,cAAc;AAGd,SAAS,QAAQ,aAAa,gBAAgB,WAAW,UAAU,cAAc;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AAGd,SAAS,oBAAoB;AAC7B,cAAc;AAGd,SAAS,QAAQ,aAAa,gBAAgB,WAAW,UAAU,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketControllerHandler.d.ts","sourceRoot":"","sources":["../../../src/server/WebSocketControllerHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAKrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAMH,eAAe,EAMlB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"WebSocketControllerHandler.d.ts","sourceRoot":"","sources":["../../../src/server/WebSocketControllerHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAKrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAMH,eAAe,EAMlB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA8BnD,yDAAyD;AACzD,qBAAa,0BAA2B,YAAW,gBAAgB;;gBAanD,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM;IAQtF;;;OAGG;IACH,MAAM;;;;IA2BN;;OAEG;IACH,eAAe,IAAI,eAAe,EAAE;IAI9B,QAAQ,CAAC,MAAM,EAAE,UAAU;IA+LjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CA2vB9B"}
|
|
@@ -23,6 +23,12 @@ import {
|
|
|
23
23
|
} from "./Converters.js";
|
|
24
24
|
const logger = Logger.get("WebSocketControllerHandler");
|
|
25
25
|
const EVENT_HISTORY_SIZE = 25;
|
|
26
|
+
let connectionIdCounter = 0;
|
|
27
|
+
function generateConnectionId() {
|
|
28
|
+
const id = connectionIdCounter;
|
|
29
|
+
connectionIdCounter = connectionIdCounter + 1 & 65535;
|
|
30
|
+
return id.toString(16);
|
|
31
|
+
}
|
|
26
32
|
const SCHEMA_VERSION = 11;
|
|
27
33
|
const skipMessageContentInLogFor = ["start_listening"];
|
|
28
34
|
class WebSocketControllerHandler {
|
|
@@ -83,6 +89,8 @@ class WebSocketControllerHandler {
|
|
|
83
89
|
const wss = this.#wss = new WebSocketServer({ server, path: "/ws" });
|
|
84
90
|
wss.on("connection", (ws) => {
|
|
85
91
|
if (this.#closed) return;
|
|
92
|
+
const connId = generateConnectionId();
|
|
93
|
+
logger.info(`[${connId}] WebSocket connection established`);
|
|
86
94
|
let listening = false;
|
|
87
95
|
const observers = new ObserverGroup();
|
|
88
96
|
const sendNodeDetailsEvent = (eventName, nodeId) => {
|
|
@@ -92,14 +100,14 @@ class WebSocketControllerHandler {
|
|
|
92
100
|
case "node_updated":
|
|
93
101
|
this.#collectNodeDetails(nodeId).then(
|
|
94
102
|
(nodeDetails) => {
|
|
95
|
-
logger.debug(`Sending ${eventName} event for Node ${nodeId}`);
|
|
103
|
+
logger.debug(`[${connId}] Sending ${eventName} event for Node ${nodeId}`);
|
|
96
104
|
ws.send(toBigIntAwareJson({ event: eventName, data: nodeDetails }));
|
|
97
105
|
},
|
|
98
|
-
(err) => logger.error(`Failed to collect node details for Node ${nodeId}`, err)
|
|
106
|
+
(err) => logger.error(`[${connId}] Failed to collect node details for Node ${nodeId}`, err)
|
|
99
107
|
);
|
|
100
108
|
break;
|
|
101
109
|
case "node_removed":
|
|
102
|
-
logger.debug(`Sending node_removed event for Node ${nodeId}`);
|
|
110
|
+
logger.debug(`[${connId}] Sending node_removed event for Node ${nodeId}`);
|
|
103
111
|
ws.send(toBigIntAwareJson({ event: eventName, data: nodeId }));
|
|
104
112
|
break;
|
|
105
113
|
}
|
|
@@ -115,7 +123,7 @@ class WebSocketControllerHandler {
|
|
|
115
123
|
clusterData?.attributes[attributeId],
|
|
116
124
|
clusterData?.model
|
|
117
125
|
);
|
|
118
|
-
logger.debug(`Sending attribute_updated event for Node ${nodeId}`, pathStr, value);
|
|
126
|
+
logger.debug(`[${connId}] Sending attribute_updated event for Node ${nodeId}`, pathStr, value);
|
|
119
127
|
ws.send(toBigIntAwareJson({ event: "attribute_updated", data: [nodeId, pathStr, value] }));
|
|
120
128
|
});
|
|
121
129
|
observers.on(this.#commandHandler.events.eventChanged, (nodeId, data) => {
|
|
@@ -147,7 +155,7 @@ class WebSocketControllerHandler {
|
|
|
147
155
|
data: event.data ?? null
|
|
148
156
|
};
|
|
149
157
|
this.#addEventToHistory(nodeEvent);
|
|
150
|
-
logger.debug(`Sending node_event for Node ${nodeId}`, nodeEvent);
|
|
158
|
+
logger.debug(`[${connId}] Sending node_event for Node ${nodeId}`, nodeEvent);
|
|
151
159
|
ws.send(toBigIntAwareJson({ event: "node_event", data: nodeEvent }));
|
|
152
160
|
}
|
|
153
161
|
});
|
|
@@ -160,7 +168,7 @@ class WebSocketControllerHandler {
|
|
|
160
168
|
}
|
|
161
169
|
});
|
|
162
170
|
observers.on(this.#commandHandler.events.nodeAvailabilityChanged, (nodeId, available) => {
|
|
163
|
-
logger.info(`Node ${nodeId} availability changed to ${available}`);
|
|
171
|
+
logger.info(`[${connId}] Node ${nodeId} availability changed to ${available}`);
|
|
164
172
|
sendNodeDetailsEvent("node_updated", nodeId);
|
|
165
173
|
});
|
|
166
174
|
observers.on(this.#commandHandler.events.nodeStructureChanged, (nodeId) => {
|
|
@@ -171,14 +179,14 @@ class WebSocketControllerHandler {
|
|
|
171
179
|
});
|
|
172
180
|
observers.on(this.#commandHandler.events.nodeEndpointAdded, (nodeId, endpointId) => {
|
|
173
181
|
if (this.#closed || !listening) return;
|
|
174
|
-
logger.info(`Sending endpoint_added event for Node ${nodeId} endpoint ${endpointId}`);
|
|
182
|
+
logger.info(`[${connId}] Sending endpoint_added event for Node ${nodeId} endpoint ${endpointId}`);
|
|
175
183
|
ws.send(
|
|
176
184
|
toBigIntAwareJson({ event: "endpoint_added", data: { node_id: nodeId, endpoint_id: endpointId } })
|
|
177
185
|
);
|
|
178
186
|
});
|
|
179
187
|
observers.on(this.#commandHandler.events.nodeEndpointRemoved, (nodeId, endpointId) => {
|
|
180
188
|
if (this.#closed || !listening) return;
|
|
181
|
-
logger.info(`Sending endpoint_removed event for Node ${nodeId} endpoint ${endpointId}`);
|
|
189
|
+
logger.info(`[${connId}] Sending endpoint_removed event for Node ${nodeId} endpoint ${endpointId}`);
|
|
182
190
|
ws.send(
|
|
183
191
|
toBigIntAwareJson({
|
|
184
192
|
event: "endpoint_removed",
|
|
@@ -188,18 +196,26 @@ class WebSocketControllerHandler {
|
|
|
188
196
|
});
|
|
189
197
|
observers.on(this.#testNodeHandler.nodeAdded, (_nodeId, testNode) => {
|
|
190
198
|
if (this.#closed || !listening) return;
|
|
191
|
-
logger.info(`Sending node_added event for test node ${testNode.node_id}`);
|
|
199
|
+
logger.info(`[${connId}] Sending node_added event for test node ${testNode.node_id}`);
|
|
192
200
|
ws.send(toBigIntAwareJson({ event: "node_added", data: testNode }));
|
|
193
201
|
});
|
|
194
202
|
observers.on(this.#testNodeHandler.nodeRemoved, (nodeId) => {
|
|
195
203
|
if (this.#closed || !listening) return;
|
|
196
|
-
logger.info(`Sending node_removed event for test node ${nodeId}`);
|
|
204
|
+
logger.info(`[${connId}] Sending node_removed event for test node ${nodeId}`);
|
|
197
205
|
ws.send(toBigIntAwareJson({ event: "node_removed", data: nodeId }));
|
|
198
206
|
});
|
|
199
|
-
|
|
207
|
+
let connectionClosed = false;
|
|
208
|
+
const onClose = () => {
|
|
209
|
+
if (connectionClosed) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
connectionClosed = true;
|
|
213
|
+
logger.info(`[${connId}] WebSocket connection closed`);
|
|
214
|
+
observers.close();
|
|
215
|
+
};
|
|
200
216
|
ws.on(
|
|
201
217
|
"message",
|
|
202
|
-
(data) => void this.#handleWebSocketRequest(data.toString()).then(
|
|
218
|
+
(data) => void this.#handleWebSocketRequest(connId, data.toString()).then(
|
|
203
219
|
({ response, enableListeners }) => {
|
|
204
220
|
if (this.#closed) return;
|
|
205
221
|
if (enableListeners) {
|
|
@@ -207,17 +223,20 @@ class WebSocketControllerHandler {
|
|
|
207
223
|
}
|
|
208
224
|
ws.send(toBigIntAwareJson(response));
|
|
209
225
|
},
|
|
210
|
-
(err) => logger.error(
|
|
226
|
+
(err) => logger.error(`[${connId}] WebSocket request error`, err)
|
|
211
227
|
)
|
|
212
228
|
);
|
|
213
229
|
ws.on("close", onClose);
|
|
214
230
|
ws.on("error", (err) => {
|
|
215
|
-
logger.error(
|
|
231
|
+
logger.error(`[${connId}] WebSocket error`, err);
|
|
216
232
|
onClose();
|
|
217
233
|
});
|
|
218
234
|
this.#getServerInfo().then(
|
|
219
|
-
(response) =>
|
|
220
|
-
|
|
235
|
+
(response) => {
|
|
236
|
+
logger.debug(`[${connId}] Sending server info`);
|
|
237
|
+
ws.send(toBigIntAwareJson(response));
|
|
238
|
+
},
|
|
239
|
+
(err) => logger.error(`[${connId}] WebSocket handshake error`, err)
|
|
221
240
|
);
|
|
222
241
|
});
|
|
223
242
|
await this.#commandHandler.connect();
|
|
@@ -251,10 +270,10 @@ class WebSocketControllerHandler {
|
|
|
251
270
|
});
|
|
252
271
|
});
|
|
253
272
|
}
|
|
254
|
-
async #handleWebSocketRequest(data) {
|
|
273
|
+
async #handleWebSocketRequest(connId, data) {
|
|
255
274
|
let messageId;
|
|
256
275
|
try {
|
|
257
|
-
logger.debug(
|
|
276
|
+
logger.debug(`[${connId}] Received WebSocket request`, () => data);
|
|
258
277
|
const request = parseBigIntAwareJson(data);
|
|
259
278
|
const { command, args } = request;
|
|
260
279
|
messageId = request.message_id;
|
|
@@ -363,9 +382,9 @@ class WebSocketControllerHandler {
|
|
|
363
382
|
throw ServerError.sdkStackError("Command handler returned no response");
|
|
364
383
|
}
|
|
365
384
|
if (skipMessageContentInLogFor.includes(command)) {
|
|
366
|
-
logger.debug(`WebSocket request (${command}) handled`, messageId);
|
|
385
|
+
logger.debug(`[${connId}] WebSocket request (${command}) handled`, messageId);
|
|
367
386
|
} else {
|
|
368
|
-
logger.debug(`WebSocket request (${command}) handled`, messageId, result);
|
|
387
|
+
logger.debug(`[${connId}] WebSocket request (${command}) handled`, messageId, result);
|
|
369
388
|
}
|
|
370
389
|
return {
|
|
371
390
|
response: {
|
|
@@ -375,7 +394,7 @@ class WebSocketControllerHandler {
|
|
|
375
394
|
enableListeners
|
|
376
395
|
};
|
|
377
396
|
} catch (err) {
|
|
378
|
-
logger.error(
|
|
397
|
+
logger.error(`[${connId}] Failed to handle websocket request`, err);
|
|
379
398
|
const errorCode = err instanceof ServerError ? err.code : ServerErrorCode.UnknownError;
|
|
380
399
|
return {
|
|
381
400
|
response: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/server/WebSocketControllerHandler.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { FabricIndex, NodeId } from "@matter/main";
|
|
7
|
+
/**
|
|
8
|
+
* Format a NodeId as a PeerAddress string for logging.
|
|
9
|
+
* Uses the Matter address format: @fabricIndexDecimal:nodeIdHex (e.g., "@1:a", "@10:1f").
|
|
10
|
+
*
|
|
11
|
+
* @param nodeId The node ID to format (rendered in hexadecimal)
|
|
12
|
+
* @param fabricIndex The fabric index (rendered in decimal). If omitted or unknown, "?" is used.
|
|
13
|
+
* @returns Formatted PeerAddress string like "@1:a", "@10:1f", or "@?:1f" when fabric index is unknown.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatNodeId(nodeId: NodeId, fabricIndex?: FabricIndex): string;
|
|
16
|
+
//# sourceMappingURL=formatNodeId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatNodeId.d.ts","sourceRoot":"","sources":["../../../src/util/formatNodeId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAG9E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
function formatNodeId(nodeId, fabricIndex) {
|
|
7
|
+
const fabricIndexPart = fabricIndex === void 0 ? "?" : fabricIndex.toString(10);
|
|
8
|
+
return `@${fabricIndexPart}:${nodeId.toString(16)}`;
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
formatNodeId
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=formatNodeId.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter-server/ws-controller",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "matter.js based Matter controller library",
|
|
6
6
|
"bugs": {
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"node": ">=20.19.0 <22.0.0 || >=22.13.0"
|
|
23
23
|
},
|
|
24
24
|
"optionalDependencies": {
|
|
25
|
-
"@matter/nodejs-ble": "0.16.9-alpha.0-
|
|
25
|
+
"@matter/nodejs-ble": "0.16.9-alpha.0-20260204-fd5b6ed86"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@matter/main": "0.16.9-alpha.0-
|
|
29
|
-
"@project-chip/matter.js": "0.16.9-alpha.0-
|
|
28
|
+
"@matter/main": "0.16.9-alpha.0-20260204-fd5b6ed86",
|
|
29
|
+
"@project-chip/matter.js": "0.16.9-alpha.0-20260204-fd5b6ed86",
|
|
30
30
|
"ws": "^8.19.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
import { ClientNode, ClusterBehavior, Logger, NodeId } from "@matter/main";
|
|
8
8
|
import { DecodedAttributeReportValue } from "@matter/main/protocol";
|
|
9
9
|
import { AttributeId, ClusterId, EndpointNumber, getClusterById } from "@matter/main/types";
|
|
10
|
-
import { PairedNode } from "@project-chip/matter.js/device";
|
|
10
|
+
import { NodeStates, PairedNode } from "@project-chip/matter.js/device";
|
|
11
11
|
import { ClusterMap } from "../model/ModelMapper.js";
|
|
12
12
|
import { buildAttributePath, convertMatterToWebSocketTagBased } from "../server/Converters.js";
|
|
13
13
|
import { AttributesData } from "../types/CommandHandler.js";
|
|
14
|
+
import { formatNodeId } from "../util/formatNodeId.js";
|
|
14
15
|
|
|
15
16
|
const logger = Logger.get("AttributeDataCache");
|
|
16
17
|
|
|
@@ -128,15 +129,15 @@ export class AttributeDataCache {
|
|
|
128
129
|
*/
|
|
129
130
|
#populateFromNode(node: PairedNode): void {
|
|
130
131
|
const nodeId = node.nodeId;
|
|
131
|
-
if (!node.initialized) {
|
|
132
|
-
logger.debug(`Node ${nodeId} not initialized, skipping cache population`);
|
|
132
|
+
if (!node.initialized || node.connectionState === NodeStates.Disconnected || !node.node.lifecycle.isReady) {
|
|
133
|
+
logger.debug(`Node ${formatNodeId(nodeId)} not initialized, skipping cache population`);
|
|
133
134
|
return;
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
const nodeCache: EndpointAttributeCache = new Map();
|
|
137
138
|
this.#collectAttributes(node.node, nodeCache);
|
|
138
139
|
this.#cache.set(nodeId, nodeCache);
|
|
139
|
-
logger.debug(`Populated attribute cache for node ${nodeId}`);
|
|
140
|
+
logger.debug(`Populated attribute cache for node ${formatNodeId(nodeId)}`);
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
/**
|
|
@@ -103,6 +103,7 @@ import {
|
|
|
103
103
|
ServerError,
|
|
104
104
|
UpdateSource,
|
|
105
105
|
} from "../types/WebSocketMessageTypes.js";
|
|
106
|
+
import { formatNodeId } from "../util/formatNodeId.js";
|
|
106
107
|
import { pingIp } from "../util/network.js";
|
|
107
108
|
import { CustomClusterPoller } from "./CustomClusterPoller.js";
|
|
108
109
|
import { Nodes } from "./Nodes.js";
|
|
@@ -185,6 +186,15 @@ export class ControllerCommandHandler {
|
|
|
185
186
|
});
|
|
186
187
|
}
|
|
187
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Format a NodeId as a PeerAddress string for logging.
|
|
191
|
+
* Uses the controller's fabric index when available, otherwise defaults to 1.
|
|
192
|
+
*/
|
|
193
|
+
#formatNode(nodeId: NodeId): string {
|
|
194
|
+
const fabricIndex = this.#controller.fabric?.fabricIndex;
|
|
195
|
+
return formatNodeId(nodeId, fabricIndex);
|
|
196
|
+
}
|
|
197
|
+
|
|
188
198
|
get started() {
|
|
189
199
|
return this.#started;
|
|
190
200
|
}
|
|
@@ -300,7 +310,7 @@ export class ControllerCommandHandler {
|
|
|
300
310
|
// Emit availability changed if it actually changed
|
|
301
311
|
if (wasAvailable !== isAvailable) {
|
|
302
312
|
logger.info(
|
|
303
|
-
`Node ${nodeId} availability changed: ${wasAvailable} -> ${isAvailable} (state: ${NodeStates[previousState ?? -1]} -> ${NodeStates[state]})`,
|
|
313
|
+
`Node ${this.#formatNode(nodeId)} availability changed: ${wasAvailable} -> ${isAvailable} (state: ${NodeStates[previousState ?? -1]} -> ${NodeStates[state]})`,
|
|
304
314
|
);
|
|
305
315
|
this.events.nodeAvailabilityChanged.emit(nodeId, isAvailable);
|
|
306
316
|
}
|
|
@@ -341,11 +351,11 @@ export class ControllerCommandHandler {
|
|
|
341
351
|
await this.start();
|
|
342
352
|
|
|
343
353
|
const nodes = this.#controller.getCommissionedNodes();
|
|
344
|
-
logger.info(`Found ${nodes.length} nodes: ${nodes.map(nodeId => nodeId
|
|
354
|
+
logger.info(`Found ${nodes.length} nodes: ${nodes.map(nodeId => this.#formatNode(nodeId)).join(", ")}`);
|
|
345
355
|
|
|
346
356
|
for (const nodeId of nodes) {
|
|
347
357
|
try {
|
|
348
|
-
logger.info(`Initializing node "${nodeId}" ...`);
|
|
358
|
+
logger.info(`Initializing node "${this.#formatNode(nodeId)}" ...`);
|
|
349
359
|
// Initialize Node
|
|
350
360
|
const node = await this.#registerNode(nodeId);
|
|
351
361
|
|
|
@@ -355,7 +365,7 @@ export class ControllerCommandHandler {
|
|
|
355
365
|
subscribeMaxIntervalCeilingSeconds: undefined,
|
|
356
366
|
});
|
|
357
367
|
} catch (error) {
|
|
358
|
-
logger.warn(`Failed to connect to node "${nodeId}":`, error);
|
|
368
|
+
logger.warn(`Failed to connect to node "${this.#formatNode(nodeId)}":`, error);
|
|
359
369
|
}
|
|
360
370
|
}
|
|
361
371
|
}
|
|
@@ -381,7 +391,7 @@ export class ControllerCommandHandler {
|
|
|
381
391
|
// Our nodes are kept up-to-date via attribute subscriptions, so we don't need
|
|
382
392
|
// to re-read all attributes like the Python server does.
|
|
383
393
|
// Just emit a node_updated event with the current (already fresh) data.
|
|
384
|
-
logger.info(`Interview requested for node ${nodeId} - do a complete read`);
|
|
394
|
+
logger.info(`Interview requested for node ${this.#formatNode(nodeId)} - do a complete read`);
|
|
385
395
|
|
|
386
396
|
// Do a full Read of the node
|
|
387
397
|
const read = {
|
|
@@ -981,7 +991,7 @@ export class ControllerCommandHandler {
|
|
|
981
991
|
const commissioningAddresses = node.node.maybeStateOf(CommissioningClient)?.addresses;
|
|
982
992
|
if (commissioningAddresses !== undefined && commissioningAddresses.length > 0) {
|
|
983
993
|
logger.info(
|
|
984
|
-
`Node ${nodeId}: mDNS discovery returned no addresses, using commissioning addresses`,
|
|
994
|
+
`Node ${this.#formatNode(nodeId)}: mDNS discovery returned no addresses, using commissioning addresses`,
|
|
985
995
|
commissioningAddresses,
|
|
986
996
|
);
|
|
987
997
|
const fallbackAddresses = commissioningAddresses
|
|
@@ -1004,25 +1014,25 @@ export class ControllerCommandHandler {
|
|
|
1004
1014
|
const scanners = this.#controller.node.env.get(ScannerSet);
|
|
1005
1015
|
const mdnsScanner = scanners.scannerFor(ChannelType.UDP);
|
|
1006
1016
|
if (!mdnsScanner) {
|
|
1007
|
-
logger.debug(`Node ${nodeId}: No mDNS scanner available`);
|
|
1017
|
+
logger.debug(`Node ${this.#formatNode(nodeId)}: No mDNS scanner available`);
|
|
1008
1018
|
return [];
|
|
1009
1019
|
}
|
|
1010
1020
|
|
|
1011
1021
|
const fabric = this.#controller.fabric;
|
|
1012
|
-
logger.info(`Node ${nodeId}: Discovering addresses via mDNS (3s timeout)`);
|
|
1022
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: Discovering addresses via mDNS (3s timeout)`);
|
|
1013
1023
|
|
|
1014
1024
|
const device = await mdnsScanner.findOperationalDevice(fabric, nodeId, Seconds(3), false);
|
|
1015
1025
|
if (!device || device.addresses.length === 0) {
|
|
1016
|
-
logger.info(`Node ${nodeId}: mDNS discovery found no addresses`);
|
|
1026
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: mDNS discovery found no addresses`);
|
|
1017
1027
|
return [];
|
|
1018
1028
|
}
|
|
1019
1029
|
|
|
1020
1030
|
// Extract IP addresses from a discovered device (includes scoped addresses with %interface)
|
|
1021
1031
|
const addresses = device.addresses.map(addr => addr.ip);
|
|
1022
|
-
logger.info(`Node ${nodeId}: mDNS discovered ${addresses.length} addresses:`, addresses);
|
|
1032
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: mDNS discovered ${addresses.length} addresses:`, addresses);
|
|
1023
1033
|
return addresses;
|
|
1024
1034
|
} catch (error) {
|
|
1025
|
-
logger.info(`Node ${nodeId}: mDNS discovery failed`, error);
|
|
1035
|
+
logger.info(`Node ${this.#formatNode(nodeId)}: mDNS discovery failed`, error);
|
|
1026
1036
|
return [];
|
|
1027
1037
|
}
|
|
1028
1038
|
}
|
|
@@ -1042,11 +1052,11 @@ export class ControllerCommandHandler {
|
|
|
1042
1052
|
const ipAddresses = await this.getNodeIpAddresses(nodeId, false);
|
|
1043
1053
|
|
|
1044
1054
|
if (ipAddresses.length === 0) {
|
|
1045
|
-
logger.info(`No IP addresses found for node ${nodeId}`);
|
|
1055
|
+
logger.info(`No IP addresses found for node ${this.#formatNode(nodeId)}`);
|
|
1046
1056
|
return result;
|
|
1047
1057
|
}
|
|
1048
1058
|
|
|
1049
|
-
logger.info(`Pinging node ${nodeId} on ${ipAddresses.length} addresses:`, ipAddresses);
|
|
1059
|
+
logger.info(`Pinging node ${this.#formatNode(nodeId)} on ${ipAddresses.length} addresses:`, ipAddresses);
|
|
1050
1060
|
|
|
1051
1061
|
// Ping all addresses in parallel
|
|
1052
1062
|
const pingPromises = ipAddresses.map(async ip => {
|
|
@@ -1066,7 +1076,7 @@ export class ControllerCommandHandler {
|
|
|
1066
1076
|
if (!anySuccess && ipAddresses.length > 0) {
|
|
1067
1077
|
// Node is connected, but no pings succeeded - this can happen
|
|
1068
1078
|
// with Thread devices or certain network configurations
|
|
1069
|
-
logger.info(`Node ${nodeId} is connected but no pings succeeded`);
|
|
1079
|
+
logger.info(`Node ${this.#formatNode(nodeId)} is connected but no pings succeeded`);
|
|
1070
1080
|
}
|
|
1071
1081
|
}
|
|
1072
1082
|
|
|
@@ -1278,7 +1288,7 @@ export class ControllerCommandHandler {
|
|
|
1278
1288
|
|
|
1279
1289
|
return null;
|
|
1280
1290
|
} catch (error) {
|
|
1281
|
-
logger.warn(`Failed to check for updates for node ${nodeId}:`, error);
|
|
1291
|
+
logger.warn(`Failed to check for updates for node ${this.#formatNode(nodeId)}:`, error);
|
|
1282
1292
|
return null;
|
|
1283
1293
|
}
|
|
1284
1294
|
}
|
|
@@ -1303,7 +1313,7 @@ export class ControllerCommandHandler {
|
|
|
1303
1313
|
const updateState = cachedAttributes?.["0/42/2"];
|
|
1304
1314
|
if (updateState !== undefined && updateState !== 1) {
|
|
1305
1315
|
throw ServerError.updateError(
|
|
1306
|
-
`Node ${nodeId} is already in the process of updating (state: ${updateState})`,
|
|
1316
|
+
`Node ${this.#formatNode(nodeId)} is already in the process of updating (state: ${updateState})`,
|
|
1307
1317
|
);
|
|
1308
1318
|
}
|
|
1309
1319
|
|
|
@@ -1327,7 +1337,7 @@ export class ControllerCommandHandler {
|
|
|
1327
1337
|
}
|
|
1328
1338
|
}
|
|
1329
1339
|
|
|
1330
|
-
logger.info(`Starting update for node ${nodeId} to version ${softwareVersion}`);
|
|
1340
|
+
logger.info(`Starting update for node ${this.#formatNode(nodeId)} to version ${softwareVersion}`);
|
|
1331
1341
|
|
|
1332
1342
|
// Trigger the update using forceUpdate via dynamic behavior access
|
|
1333
1343
|
await otaProvider.act(agent =>
|
|
@@ -1344,7 +1354,7 @@ export class ControllerCommandHandler {
|
|
|
1344
1354
|
// Return the update info
|
|
1345
1355
|
return this.#convertToMatterSoftwareVersion(updateInfo);
|
|
1346
1356
|
} catch (error) {
|
|
1347
|
-
logger.error(`Failed to update node ${nodeId}:`, error);
|
|
1357
|
+
logger.error(`Failed to update node ${this.#formatNode(nodeId)}:`, error);
|
|
1348
1358
|
throw error;
|
|
1349
1359
|
}
|
|
1350
1360
|
}
|
package/src/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ export * from "./types/CommandHandler.js";
|
|
|
28
28
|
export * from "./types/WebSocketMessageTypes.js";
|
|
29
29
|
|
|
30
30
|
// Export utilities
|
|
31
|
+
export { formatNodeId } from "./util/formatNodeId.js";
|
|
31
32
|
export * from "./util/matterVersion.js";
|
|
32
33
|
|
|
33
34
|
// Re-Export classes from matter.js
|
|
@@ -43,6 +43,19 @@ const logger = Logger.get("WebSocketControllerHandler");
|
|
|
43
43
|
/** Maximum number of events to keep in the history buffer */
|
|
44
44
|
const EVENT_HISTORY_SIZE = 25;
|
|
45
45
|
|
|
46
|
+
/** Counter for generating unique connection IDs */
|
|
47
|
+
let connectionIdCounter = 0;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Generate a unique connection ID as a 4-digit hex string.
|
|
51
|
+
* Rolls over at 0xFFFF (65535) to keep IDs short and readable.
|
|
52
|
+
*/
|
|
53
|
+
function generateConnectionId(): string {
|
|
54
|
+
const id = connectionIdCounter;
|
|
55
|
+
connectionIdCounter = (connectionIdCounter + 1) & 0xffff; // Rollover at 0xFFFF
|
|
56
|
+
return id.toString(16);
|
|
57
|
+
}
|
|
58
|
+
|
|
46
59
|
const SCHEMA_VERSION = 11;
|
|
47
60
|
|
|
48
61
|
const skipMessageContentInLogFor = ["start_listening"];
|
|
@@ -113,6 +126,9 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
113
126
|
wss.on("connection", ws => {
|
|
114
127
|
if (this.#closed) return;
|
|
115
128
|
|
|
129
|
+
const connId = generateConnectionId();
|
|
130
|
+
logger.info(`[${connId}] WebSocket connection established`);
|
|
131
|
+
|
|
116
132
|
let listening = false;
|
|
117
133
|
const observers = new ObserverGroup();
|
|
118
134
|
|
|
@@ -124,14 +140,14 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
124
140
|
case "node_updated":
|
|
125
141
|
this.#collectNodeDetails(nodeId).then(
|
|
126
142
|
nodeDetails => {
|
|
127
|
-
logger.debug(`Sending ${eventName} event for Node ${nodeId}`);
|
|
143
|
+
logger.debug(`[${connId}] Sending ${eventName} event for Node ${nodeId}`);
|
|
128
144
|
ws.send(toBigIntAwareJson({ event: eventName, data: nodeDetails }));
|
|
129
145
|
},
|
|
130
|
-
err => logger.error(`Failed to collect node details for Node ${nodeId}`, err),
|
|
146
|
+
err => logger.error(`[${connId}] Failed to collect node details for Node ${nodeId}`, err),
|
|
131
147
|
);
|
|
132
148
|
break;
|
|
133
149
|
case "node_removed":
|
|
134
|
-
logger.debug(`Sending node_removed event for Node ${nodeId}`);
|
|
150
|
+
logger.debug(`[${connId}] Sending node_removed event for Node ${nodeId}`);
|
|
135
151
|
ws.send(toBigIntAwareJson({ event: eventName, data: nodeId }));
|
|
136
152
|
break;
|
|
137
153
|
}
|
|
@@ -149,7 +165,7 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
149
165
|
clusterData?.attributes[attributeId],
|
|
150
166
|
clusterData?.model,
|
|
151
167
|
);
|
|
152
|
-
logger.debug(`Sending attribute_updated event for Node ${nodeId}`, pathStr, value);
|
|
168
|
+
logger.debug(`[${connId}] Sending attribute_updated event for Node ${nodeId}`, pathStr, value);
|
|
153
169
|
ws.send(toBigIntAwareJson({ event: "attribute_updated", data: [nodeId, pathStr, value] }));
|
|
154
170
|
});
|
|
155
171
|
|
|
@@ -188,7 +204,7 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
188
204
|
// Store event in the history buffer
|
|
189
205
|
this.#addEventToHistory(nodeEvent);
|
|
190
206
|
|
|
191
|
-
logger.debug(`Sending node_event for Node ${nodeId}`, nodeEvent);
|
|
207
|
+
logger.debug(`[${connId}] Sending node_event for Node ${nodeId}`, nodeEvent);
|
|
192
208
|
ws.send(toBigIntAwareJson({ event: "node_event", data: nodeEvent }));
|
|
193
209
|
}
|
|
194
210
|
});
|
|
@@ -208,7 +224,7 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
208
224
|
|
|
209
225
|
// Send node_updated when availability changes (debounced)
|
|
210
226
|
observers.on(this.#commandHandler.events.nodeAvailabilityChanged, (nodeId, available) => {
|
|
211
|
-
logger.info(`Node ${nodeId} availability changed to ${available}`);
|
|
227
|
+
logger.info(`[${connId}] Node ${nodeId} availability changed to ${available}`);
|
|
212
228
|
sendNodeDetailsEvent("node_updated", nodeId);
|
|
213
229
|
});
|
|
214
230
|
|
|
@@ -222,7 +238,7 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
222
238
|
|
|
223
239
|
observers.on(this.#commandHandler.events.nodeEndpointAdded, (nodeId, endpointId) => {
|
|
224
240
|
if (this.#closed || !listening) return;
|
|
225
|
-
logger.info(`Sending endpoint_added event for Node ${nodeId} endpoint ${endpointId}`);
|
|
241
|
+
logger.info(`[${connId}] Sending endpoint_added event for Node ${nodeId} endpoint ${endpointId}`);
|
|
226
242
|
ws.send(
|
|
227
243
|
toBigIntAwareJson({ event: "endpoint_added", data: { node_id: nodeId, endpoint_id: endpointId } }),
|
|
228
244
|
);
|
|
@@ -230,7 +246,7 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
230
246
|
|
|
231
247
|
observers.on(this.#commandHandler.events.nodeEndpointRemoved, (nodeId, endpointId) => {
|
|
232
248
|
if (this.#closed || !listening) return;
|
|
233
|
-
logger.info(`Sending endpoint_removed event for Node ${nodeId} endpoint ${endpointId}`);
|
|
249
|
+
logger.info(`[${connId}] Sending endpoint_removed event for Node ${nodeId} endpoint ${endpointId}`);
|
|
234
250
|
ws.send(
|
|
235
251
|
toBigIntAwareJson({
|
|
236
252
|
event: "endpoint_removed",
|
|
@@ -242,22 +258,30 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
242
258
|
// Register test node event listeners
|
|
243
259
|
observers.on(this.#testNodeHandler.nodeAdded, (_nodeId, testNode) => {
|
|
244
260
|
if (this.#closed || !listening) return;
|
|
245
|
-
logger.info(`Sending node_added event for test node ${testNode.node_id}`);
|
|
261
|
+
logger.info(`[${connId}] Sending node_added event for test node ${testNode.node_id}`);
|
|
246
262
|
ws.send(toBigIntAwareJson({ event: "node_added", data: testNode }));
|
|
247
263
|
});
|
|
248
264
|
|
|
249
265
|
observers.on(this.#testNodeHandler.nodeRemoved, nodeId => {
|
|
250
266
|
if (this.#closed || !listening) return;
|
|
251
|
-
logger.info(`Sending node_removed event for test node ${nodeId}`);
|
|
267
|
+
logger.info(`[${connId}] Sending node_removed event for test node ${nodeId}`);
|
|
252
268
|
ws.send(toBigIntAwareJson({ event: "node_removed", data: nodeId }));
|
|
253
269
|
});
|
|
254
270
|
|
|
255
|
-
|
|
271
|
+
let connectionClosed = false;
|
|
272
|
+
const onClose = () => {
|
|
273
|
+
if (connectionClosed) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
connectionClosed = true;
|
|
277
|
+
logger.info(`[${connId}] WebSocket connection closed`);
|
|
278
|
+
observers.close();
|
|
279
|
+
};
|
|
256
280
|
|
|
257
281
|
ws.on(
|
|
258
282
|
"message",
|
|
259
283
|
data =>
|
|
260
|
-
void this.#handleWebSocketRequest(data.toString()).then(
|
|
284
|
+
void this.#handleWebSocketRequest(connId, data.toString()).then(
|
|
261
285
|
({ response, enableListeners }) => {
|
|
262
286
|
if (this.#closed) return;
|
|
263
287
|
if (enableListeners) {
|
|
@@ -265,19 +289,22 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
265
289
|
}
|
|
266
290
|
ws.send(toBigIntAwareJson(response));
|
|
267
291
|
},
|
|
268
|
-
err => logger.error(
|
|
292
|
+
err => logger.error(`[${connId}] WebSocket request error`, err),
|
|
269
293
|
),
|
|
270
294
|
);
|
|
271
295
|
|
|
272
296
|
ws.on("close", onClose);
|
|
273
297
|
ws.on("error", err => {
|
|
274
|
-
logger.error(
|
|
298
|
+
logger.error(`[${connId}] WebSocket error`, err);
|
|
275
299
|
onClose();
|
|
276
300
|
});
|
|
277
301
|
|
|
278
302
|
this.#getServerInfo().then(
|
|
279
|
-
response =>
|
|
280
|
-
|
|
303
|
+
response => {
|
|
304
|
+
logger.debug(`[${connId}] Sending server info`);
|
|
305
|
+
ws.send(toBigIntAwareJson(response));
|
|
306
|
+
},
|
|
307
|
+
err => logger.error(`[${connId}] WebSocket handshake error`, err),
|
|
281
308
|
);
|
|
282
309
|
});
|
|
283
310
|
|
|
@@ -319,11 +346,12 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
319
346
|
}
|
|
320
347
|
|
|
321
348
|
async #handleWebSocketRequest(
|
|
349
|
+
connId: string,
|
|
322
350
|
data: string,
|
|
323
351
|
): Promise<{ response: ErrorResultMessage | SuccessResultMessage<any>; enableListeners?: boolean }> {
|
|
324
352
|
let messageId: string | undefined;
|
|
325
353
|
try {
|
|
326
|
-
logger.debug(
|
|
354
|
+
logger.debug(`[${connId}] Received WebSocket request`, () => data);
|
|
327
355
|
const request = parseBigIntAwareJson(data) as { message_id: string; command: string; args: any };
|
|
328
356
|
const { command, args } = request;
|
|
329
357
|
messageId = request.message_id;
|
|
@@ -432,9 +460,9 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
432
460
|
throw ServerError.sdkStackError("Command handler returned no response");
|
|
433
461
|
}
|
|
434
462
|
if (skipMessageContentInLogFor.includes(command)) {
|
|
435
|
-
logger.debug(`WebSocket request (${command}) handled`, messageId);
|
|
463
|
+
logger.debug(`[${connId}] WebSocket request (${command}) handled`, messageId);
|
|
436
464
|
} else {
|
|
437
|
-
logger.debug(`WebSocket request (${command}) handled`, messageId, result);
|
|
465
|
+
logger.debug(`[${connId}] WebSocket request (${command}) handled`, messageId, result);
|
|
438
466
|
}
|
|
439
467
|
return {
|
|
440
468
|
response: {
|
|
@@ -444,7 +472,7 @@ export class WebSocketControllerHandler implements WebServerHandler {
|
|
|
444
472
|
enableListeners,
|
|
445
473
|
};
|
|
446
474
|
} catch (err) {
|
|
447
|
-
logger.error(
|
|
475
|
+
logger.error(`[${connId}] Failed to handle websocket request`, err);
|
|
448
476
|
const errorCode = err instanceof ServerError ? err.code : ServerErrorCode.UnknownError;
|
|
449
477
|
return {
|
|
450
478
|
response: {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { FabricIndex, NodeId } from "@matter/main";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Format a NodeId as a PeerAddress string for logging.
|
|
11
|
+
* Uses the Matter address format: @fabricIndexDecimal:nodeIdHex (e.g., "@1:a", "@10:1f").
|
|
12
|
+
*
|
|
13
|
+
* @param nodeId The node ID to format (rendered in hexadecimal)
|
|
14
|
+
* @param fabricIndex The fabric index (rendered in decimal). If omitted or unknown, "?" is used.
|
|
15
|
+
* @returns Formatted PeerAddress string like "@1:a", "@10:1f", or "@?:1f" when fabric index is unknown.
|
|
16
|
+
*/
|
|
17
|
+
export function formatNodeId(nodeId: NodeId, fabricIndex?: FabricIndex): string {
|
|
18
|
+
const fabricIndexPart = fabricIndex === undefined ? "?" : fabricIndex.toString(10);
|
|
19
|
+
return `@${fabricIndexPart}:${nodeId.toString(16)}`;
|
|
20
|
+
}
|