@matter-server/ws-controller 0.2.3 → 0.2.4-alpha.0-20260116-d0b21f3
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 +6 -0
- package/dist/esm/controller/AttributeDataCache.js.map +1 -1
- package/dist/esm/controller/ControllerCommandHandler.d.ts +2 -3
- package/dist/esm/controller/ControllerCommandHandler.d.ts.map +1 -1
- package/dist/esm/controller/ControllerCommandHandler.js +46 -103
- package/dist/esm/controller/ControllerCommandHandler.js.map +2 -2
- package/dist/esm/controller/CustomClusterPoller.d.ts +47 -0
- package/dist/esm/controller/CustomClusterPoller.d.ts.map +1 -0
- package/dist/esm/controller/CustomClusterPoller.js +171 -0
- package/dist/esm/controller/CustomClusterPoller.js.map +6 -0
- package/dist/esm/controller/TestNodeCommandHandler.d.ts +1 -6
- package/dist/esm/controller/TestNodeCommandHandler.d.ts.map +1 -1
- package/dist/esm/controller/TestNodeCommandHandler.js +0 -41
- package/dist/esm/controller/TestNodeCommandHandler.js.map +1 -1
- package/dist/esm/types/CommandHandler.d.ts +0 -4
- package/dist/esm/types/CommandHandler.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/controller/AttributeDataCache.ts +6 -0
- package/src/controller/ControllerCommandHandler.ts +59 -128
- package/src/controller/CustomClusterPoller.ts +250 -0
- package/src/controller/TestNodeCommandHandler.ts +0 -56
- package/src/types/CommandHandler.ts +0 -5
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/controller/CustomClusterPoller.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,SAA4B,UAAU,QAAQ,QAAgB,YAAmB;AAGjF,MAAM,SAAS,OAAO,IAAI,qBAAqB;AAG/C,MAAM,gBAAgB;AAGtB,MAAM,iBAAiB;AAGvB,MAAM,2BAA2B;AAAA,EAC7B,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,SAAS;AACb;AAGA,MAAM,0CAA0C;AAGhD,MAAM,sBAAsB;AAG5B,MAAM,uBAAuB;AAiBtB,SAAS,sBAAsB,YAAgD;AAClF,QAAM,mBAAmB,oBAAI,IAAmB;AAGhD,QAAM,WAAW,WAAW,QAAQ;AACpC,MAAI,aAAa,eAAe;AAE5B,WAAO;AAAA,EACX;AAGA,QAAM,eAAe,oBAAI,IAAY;AACrC,aAAW,YAAY,OAAO,KAAK,UAAU,GAAG;AAC5C,UAAM,CAAC,aAAa,UAAU,IAAI,SAAS,MAAM,GAAG;AACpD,UAAM,YAAY,OAAO,UAAU;AACnC,QAAI,cAAc,gBAAgB;AAC9B,mBAAa,IAAI,OAAO,WAAW,CAAC;AAAA,IACxC;AAAA,EACJ;AAEA,MAAI,aAAa,SAAS,GAAG;AACzB,WAAO;AAAA,EACX;AAIA,aAAW,YAAY,OAAO,KAAK,UAAU,GAAG;AAC5C,UAAM,CAAC,EAAE,UAAU,IAAI,SAAS,MAAM,GAAG;AACzC,UAAM,YAAY,OAAO,UAAU;AACnC,QAAI,cAAc,yCAAyC;AAEvD,aAAO,MAAM,mFAAmF;AAChG,aAAO;AAAA,IACX;AAAA,EACJ;AAGA,aAAW,YAAY,cAAc;AACjC,eAAW,CAAC,EAAE,WAAW,KAAK,OAAO,QAAQ,wBAAwB,GAAG;AACpE,YAAM,WAAW,GAAG,QAAQ,IAAI,cAAc,IAAI,WAAW;AAE7D,UAAI,WAAW,QAAQ,MAAM,QAAW;AACpC,yBAAiB,IAAI,QAAQ;AAAA,MACjC;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,iBAAiB,OAAO,GAAG;AAC3B,WAAO,KAAK,kCAAkC,iBAAiB,IAAI,oBAAoB;AAAA,EAC3F;AAEA,SAAO;AACX;AAKO,MAAM,oBAAoB;AAAA,EAC7B,oBAAoB,oBAAI,IAAgC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EAEV,YAAY,iBAAsC;AAC9C,SAAK,mBAAmB;AACxB,UAAM,QAAQ,OAAO,KAAK,OAAO,IAAI,oBAAoB;AACzD,SAAK,eAAe,KAAK,SAAS,cAAc,OAAO,MAAM,KAAK,cAAc,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,QAAgB,YAAkC;AAC3D,UAAM,mBAAmB,sBAAsB,UAAU;AAEzD,QAAI,iBAAiB,SAAS,GAAG;AAE7B,WAAK,eAAe,MAAM;AAC1B;AAAA,IACJ;AAEA,SAAK,kBAAkB,IAAI,QAAQ,gBAAgB;AACnD,WAAO;AAAA,MACH,mBAAmB,MAAM,kCAAkC,MAAM,KAAK,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAAA,IACtG;AAGA,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,QAAsB;AACjC,QAAI,KAAK,kBAAkB,OAAO,MAAM,GAAG;AACvC,aAAO,KAAK,qBAAqB,MAAM,gCAAgC;AAAA,IAC3E;AACA,QAAI,KAAK,kBAAkB,SAAS,GAAG;AACnC,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,OAAa;AACT,SAAK,UAAU;AACf,SAAK,sBAAsB,OAAO,IAAI,MAAM,OAAO,CAAC;AACpD,SAAK,cAAc,KAAK;AACxB,SAAK,kBAAkB,MAAM;AAC7B,WAAO,KAAK,iCAAiC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAAwB;AAEpB,QAAI,KAAK,kBAAkB,SAAS,KAAK,KAAK,SAAS;AACnD;AAAA,IACJ;AAGA,QAAI,KAAK,cAAc,aAAa,KAAK,YAAY;AACjD;AAAA,IACJ;AAGA,SAAK,aAAa,MAAM;AACxB,WAAO,KAAK,uCAAuC,SAAS,OAAO,KAAK,aAAa,QAAQ,CAAC,EAAE;AAAA,EACpG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAA+B;AACjC,QAAI,KAAK,YAAY;AAEjB;AAAA,IACJ;AAEA,UAAM,iBAAiB,OAAO,mBAAmB;AACjD,QAAI,KAAK,aAAa,aAAa,gBAAgB;AAC/C,WAAK,aAAa,WAAW;AAAA,IACjC;AAEA,SAAK,aAAa;AAElB,QAAI;AACA,YAAM,UAAU,MAAM,KAAK,KAAK,kBAAkB,QAAQ,CAAC;AAC3D,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,cAAM,CAAC,QAAQ,cAAc,IAAI,QAAQ,CAAC;AAC1C,YAAI,CAAC,KAAK,kBAAkB,IAAI,MAAM,GAAG;AAErC;AAAA,QACJ;AACA,cAAM,KAAK,UAAU,QAAQ,cAAc;AAG3C,YAAI,IAAI,QAAQ,SAAS,GAAG;AACxB,eAAK,uBAAuB,KAAK,MAAM,SAAS,OAAO,GAAK,CAAC,EAAE,QAAQ,MAAM;AACzE,iBAAK,uBAAuB;AAAA,UAChC,CAAC;AACD,gBAAM,KAAK;AAAA,QACf;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,WAAK,aAAa;AAElB,WAAK,gBAAgB;AAAA,IACzB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,QAAgB,gBAAmD;AAC/E,UAAM,QAAQ,MAAM,KAAK,cAAc;AACvC,WAAO,MAAM,WAAW,MAAM,MAAM,+BAA+B,MAAM,EAAE;AAE3E,QAAI;AAGA,YAAM,KAAK,iBAAiB,qBAAqB,QAAQ,OAAO,IAAI;AAAA,IACxE,SAAS,OAAO;AACZ,aAAO,KAAK,6CAA6C,MAAM,MAAM,KAAK;AAAA,IAC9E;AAAA,EACJ;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { NodeId, Observable } from "@matter/main";
|
|
7
|
-
import { AttributeResponseStatus, AttributesData, InvokeRequest, MatterNodeData, NodeCommandHandler,
|
|
7
|
+
import { AttributeResponseStatus, AttributesData, InvokeRequest, MatterNodeData, NodeCommandHandler, WriteAttributeRequest } from "../types/CommandHandler.js";
|
|
8
8
|
import { MatterNode } from "../types/WebSocketMessageTypes.js";
|
|
9
9
|
/**
|
|
10
10
|
* Command handler for test nodes (imported diagnostic dumps).
|
|
@@ -51,11 +51,6 @@ export declare class TestNodeCommandHandler implements NodeCommandHandler {
|
|
|
51
51
|
* @returns Array of imported node IDs
|
|
52
52
|
*/
|
|
53
53
|
importTestNodes(dump: string): NodeId[];
|
|
54
|
-
/**
|
|
55
|
-
* Read attributes from a test node.
|
|
56
|
-
* Returns values from the stored attributes map.
|
|
57
|
-
*/
|
|
58
|
-
handleReadAttribute(data: ReadAttributeRequest): Promise<ReadAttributeResponse>;
|
|
59
54
|
/**
|
|
60
55
|
* Write an attribute to a test node.
|
|
61
56
|
* Logs the write and returns success (no actual write occurs).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestNodeCommandHandler.d.ts","sourceRoot":"","sources":["../../../src/controller/TestNodeCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAU,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EACH,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"TestNodeCommandHandler.d.ts","sourceRoot":"","sources":["../../../src/controller/TestNodeCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAU,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EACH,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAmB,MAAM,mCAAmC,CAAC;AAIhF;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;;IAG7D,uCAAuC;IACvC,QAAQ,CAAC,SAAS,uDAAwD;IAE1E,yCAAyC;IACzC,QAAQ,CAAC,WAAW,qCAAsC;IAE1D;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAKrD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,QAAQ,IAAI,UAAU,EAAE;IAIxB;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI/C;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ7D;;;OAGG;IACG,oBAAoB,CACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EAAE,EACxB,eAAe,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,cAAc,CAAC;IA6B1B;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IA6DvC;;;OAGG;IACG,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAezF;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzD;;;OAGG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpF;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIrF;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYlD"}
|
|
@@ -123,47 +123,6 @@ class TestNodeCommandHandler {
|
|
|
123
123
|
}
|
|
124
124
|
return importedNodeIds;
|
|
125
125
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Read attributes from a test node.
|
|
128
|
-
* Returns values from the stored attributes map.
|
|
129
|
-
*/
|
|
130
|
-
async handleReadAttribute(data) {
|
|
131
|
-
const { nodeId, endpointId, clusterId, attributeId } = data;
|
|
132
|
-
const testNode = this.#testNodes.get(BigInt(nodeId));
|
|
133
|
-
if (testNode === void 0) {
|
|
134
|
-
throw new Error(`Test node ${nodeId} not found`);
|
|
135
|
-
}
|
|
136
|
-
const values = [];
|
|
137
|
-
const hasWildcards = endpointId === void 0 || clusterId === void 0 || attributeId === void 0;
|
|
138
|
-
if (hasWildcards) {
|
|
139
|
-
for (const [attrPath, value] of Object.entries(testNode.attributes)) {
|
|
140
|
-
const parts = attrPath.split("/").map(Number);
|
|
141
|
-
if ((endpointId === void 0 || parts[0] === endpointId) && (clusterId === void 0 || parts[1] === clusterId) && (attributeId === void 0 || parts[2] === attributeId)) {
|
|
142
|
-
values.push({
|
|
143
|
-
endpointId: parts[0],
|
|
144
|
-
clusterId: parts[1],
|
|
145
|
-
attributeId: parts[2],
|
|
146
|
-
dataVersion: 0,
|
|
147
|
-
value
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
} else {
|
|
152
|
-
const path = `${endpointId}/${clusterId}/${attributeId}`;
|
|
153
|
-
const value = testNode.attributes[path];
|
|
154
|
-
if (value !== void 0) {
|
|
155
|
-
values.push({
|
|
156
|
-
endpointId,
|
|
157
|
-
clusterId,
|
|
158
|
-
attributeId,
|
|
159
|
-
dataVersion: 0,
|
|
160
|
-
value
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
logger.debug(`read_attribute for test node ${nodeId}: ${values.length} values`);
|
|
165
|
-
return { values };
|
|
166
|
-
}
|
|
167
126
|
/**
|
|
168
127
|
* Write an attribute to a test node.
|
|
169
128
|
* Logs the write and returns success (no actual write occurs).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/controller/TestNodeCommandHandler.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,QAAQ,QAAQ,kBAAkB;AAC3C,SAAS,sBAAsB,0BAA0B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -230,10 +230,6 @@ export interface NodeCommandHandler {
|
|
|
230
230
|
* Handles wildcards in paths (e.g., asterisk/29/asterisk for all descriptor attributes).
|
|
231
231
|
*/
|
|
232
232
|
handleReadAttributes(nodeId: NodeId, attributePaths: string[], fabricFiltered?: boolean): Promise<AttributesData>;
|
|
233
|
-
/**
|
|
234
|
-
* Read attributes from a node.
|
|
235
|
-
*/
|
|
236
|
-
handleReadAttribute(data: ReadAttributeRequest): Promise<ReadAttributeResponse>;
|
|
237
233
|
/**
|
|
238
234
|
* Write an attribute to a node.
|
|
239
235
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHandler.d.ts","sourceRoot":"","sources":["../../../src/types/CommandHandler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CommandHandler.d.ts","sourceRoot":"","sources":["../../../src/types/CommandHandler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -87,6 +87,9 @@ export class AttributeDataCache {
|
|
|
87
87
|
clusterData?.attributes[attributeId],
|
|
88
88
|
clusterData?.model,
|
|
89
89
|
);
|
|
90
|
+
if (convertedValue === undefined) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
90
93
|
clusterCache.set(attributeId, convertedValue);
|
|
91
94
|
}
|
|
92
95
|
|
|
@@ -174,6 +177,9 @@ export class AttributeDataCache {
|
|
|
174
177
|
clusterData?.attributes[attribute.id],
|
|
175
178
|
clusterData?.model,
|
|
176
179
|
);
|
|
180
|
+
if (convertedValue === undefined) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
177
183
|
clusterCache.set(attribute.id, convertedValue);
|
|
178
184
|
}
|
|
179
185
|
|
|
@@ -8,7 +8,6 @@ import { AsyncObservable, isObject } from "@matter/general";
|
|
|
8
8
|
import {
|
|
9
9
|
Bytes,
|
|
10
10
|
ClientNodeInteraction,
|
|
11
|
-
ClusterBehavior,
|
|
12
11
|
FabricId,
|
|
13
12
|
FabricIndex,
|
|
14
13
|
ipv4BytesToString,
|
|
@@ -40,6 +39,7 @@ import {
|
|
|
40
39
|
} from "@matter/main/protocol";
|
|
41
40
|
import {
|
|
42
41
|
Attribute,
|
|
42
|
+
AttributeId,
|
|
43
43
|
ClusterId,
|
|
44
44
|
Command,
|
|
45
45
|
DeviceTypeId,
|
|
@@ -62,7 +62,7 @@ import {
|
|
|
62
62
|
VendorId,
|
|
63
63
|
} from "@matter/main/types";
|
|
64
64
|
import { CommissioningController, NodeCommissioningOptions } from "@project-chip/matter.js";
|
|
65
|
-
import {
|
|
65
|
+
import { NodeStates } from "@project-chip/matter.js/device";
|
|
66
66
|
import { ClusterMap, ClusterMapEntry } from "../model/ModelMapper.js";
|
|
67
67
|
import {
|
|
68
68
|
buildAttributePath,
|
|
@@ -83,8 +83,6 @@ import {
|
|
|
83
83
|
MatterNodeData,
|
|
84
84
|
OpenCommissioningWindowRequest,
|
|
85
85
|
OpenCommissioningWindowResponse,
|
|
86
|
-
ReadAttributeRequest,
|
|
87
|
-
ReadAttributeResponse,
|
|
88
86
|
ReadEventRequest,
|
|
89
87
|
ReadEventResponse,
|
|
90
88
|
SubscribeAttributeRequest,
|
|
@@ -104,6 +102,7 @@ import {
|
|
|
104
102
|
UpdateSource,
|
|
105
103
|
} from "../types/WebSocketMessageTypes.js";
|
|
106
104
|
import { pingIp } from "../util/network.js";
|
|
105
|
+
import { CustomClusterPoller } from "./CustomClusterPoller.js";
|
|
107
106
|
import { Nodes } from "./Nodes.js";
|
|
108
107
|
|
|
109
108
|
const logger = Logger.get("ControllerCommandHandler");
|
|
@@ -118,6 +117,8 @@ export class ControllerCommandHandler {
|
|
|
118
117
|
#nodes = new Nodes();
|
|
119
118
|
/** Cache of available updates keyed by nodeId */
|
|
120
119
|
#availableUpdates = new Map<NodeId, SoftwareUpdateInfo>();
|
|
120
|
+
/** Poller for custom cluster attributes (Eve energy, etc.) */
|
|
121
|
+
#customClusterPoller: CustomClusterPoller;
|
|
121
122
|
events = {
|
|
122
123
|
started: new AsyncObservable(),
|
|
123
124
|
attributeChanged: new Observable<[nodeId: NodeId, data: DecodedAttributeReportValue<any>]>(),
|
|
@@ -135,6 +136,13 @@ export class ControllerCommandHandler {
|
|
|
135
136
|
|
|
136
137
|
this.#bleEnabled = bleEnabled;
|
|
137
138
|
this.#otaEnabled = otaEnabled;
|
|
139
|
+
|
|
140
|
+
// Initialize custom cluster poller for Eve energy attributes etc.
|
|
141
|
+
// Reads automatically trigger change events through the normal attribute flow
|
|
142
|
+
this.#customClusterPoller = new CustomClusterPoller({
|
|
143
|
+
handleReadAttributes: (nodeId, paths, fabricFiltered) =>
|
|
144
|
+
this.handleReadAttributes(nodeId, paths, fabricFiltered),
|
|
145
|
+
});
|
|
138
146
|
}
|
|
139
147
|
|
|
140
148
|
get started() {
|
|
@@ -206,6 +214,7 @@ export class ControllerCommandHandler {
|
|
|
206
214
|
|
|
207
215
|
close() {
|
|
208
216
|
if (!this.#started) return;
|
|
217
|
+
this.#customClusterPoller.stop();
|
|
209
218
|
return this.#controller.close();
|
|
210
219
|
}
|
|
211
220
|
|
|
@@ -225,6 +234,11 @@ export class ControllerCommandHandler {
|
|
|
225
234
|
// Only refresh cache on Connected state (not Reconnecting, WaitingForDiscovery, etc.)
|
|
226
235
|
if (state === NodeStates.Connected) {
|
|
227
236
|
attributeCache.update(node);
|
|
237
|
+
// Register for custom cluster polling (e.g., Eve energy) after cache is updated
|
|
238
|
+
const attributes = attributeCache.get(nodeId);
|
|
239
|
+
if (attributes) {
|
|
240
|
+
this.#customClusterPoller.registerNode(nodeId, attributes);
|
|
241
|
+
}
|
|
228
242
|
}
|
|
229
243
|
this.events.nodeStateChanged.emit(nodeId, state);
|
|
230
244
|
});
|
|
@@ -245,6 +259,11 @@ export class ControllerCommandHandler {
|
|
|
245
259
|
// Initialize attribute cache if node is already initialized
|
|
246
260
|
if (node.initialized) {
|
|
247
261
|
attributeCache.add(node);
|
|
262
|
+
// Register for custom cluster polling (e.g., Eve energy)
|
|
263
|
+
const attributes = attributeCache.get(nodeId);
|
|
264
|
+
if (attributes) {
|
|
265
|
+
this.#customClusterPoller.registerNode(nodeId, attributes);
|
|
266
|
+
}
|
|
248
267
|
}
|
|
249
268
|
|
|
250
269
|
return node;
|
|
@@ -359,114 +378,55 @@ export class ControllerCommandHandler {
|
|
|
359
378
|
|
|
360
379
|
/**
|
|
361
380
|
* Read multiple attributes from a node by path strings.
|
|
362
|
-
*
|
|
381
|
+
* Supports wildcards in paths. Batches up to 9 paths per read call.
|
|
363
382
|
*/
|
|
364
383
|
async handleReadAttributes(
|
|
365
384
|
nodeId: NodeId,
|
|
366
385
|
attributePaths: string[],
|
|
367
386
|
fabricFiltered = false,
|
|
368
387
|
): Promise<AttributesData> {
|
|
369
|
-
const node = this.#nodes.get(nodeId);
|
|
370
|
-
|
|
371
388
|
const result: AttributesData = {};
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
const
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
for (const path of attributePaths) {
|
|
391
|
-
const { endpointId, clusterId, attributeId } = splitAttributePath(path);
|
|
392
|
-
|
|
393
|
-
// For wildcard paths, filter from collected attributes
|
|
394
|
-
if (path.includes("*") && allAttributes !== undefined) {
|
|
395
|
-
for (const [attrPath, value] of Object.entries(allAttributes)) {
|
|
396
|
-
const parts = attrPath.split("/").map(Number);
|
|
397
|
-
if (
|
|
398
|
-
(endpointId === undefined || parts[0] === endpointId) &&
|
|
399
|
-
(clusterId === undefined || parts[1] === clusterId) &&
|
|
400
|
-
(attributeId === undefined || parts[2] === attributeId)
|
|
401
|
-
) {
|
|
402
|
-
result[attrPath] = value;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
continue;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
// For non-wildcard paths, use the SDK to read the specific attribute
|
|
409
|
-
const { values, status } = await this.handleReadAttribute({
|
|
410
|
-
nodeId,
|
|
411
|
-
endpointId,
|
|
412
|
-
clusterId,
|
|
413
|
-
attributeId,
|
|
414
|
-
fabricFiltered,
|
|
389
|
+
const client = await this.#nodes.interactionClientFor(nodeId);
|
|
390
|
+
const batchSize = 9;
|
|
391
|
+
|
|
392
|
+
// Parse all paths (wildcards become undefined for that component)
|
|
393
|
+
const parsedPaths = attributePaths.map(path => splitAttributePath(path));
|
|
394
|
+
|
|
395
|
+
// Process in batches of up to 9
|
|
396
|
+
for (let i = 0; i < parsedPaths.length; i += batchSize) {
|
|
397
|
+
const batch = parsedPaths.slice(i, i + batchSize);
|
|
398
|
+
const attributes = batch.map(({ endpointId, clusterId, attributeId }) => ({
|
|
399
|
+
endpointId: endpointId !== undefined ? EndpointNumber(endpointId) : undefined,
|
|
400
|
+
clusterId: clusterId !== undefined ? ClusterId(clusterId) : undefined,
|
|
401
|
+
attributeId: attributeId !== undefined ? AttributeId(attributeId) : undefined,
|
|
402
|
+
}));
|
|
403
|
+
|
|
404
|
+
const { attributeData, attributeStatus } = await client.getMultipleAttributesAndStatus({
|
|
405
|
+
attributes,
|
|
406
|
+
isFabricFiltered: fabricFiltered,
|
|
415
407
|
});
|
|
416
408
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
result[pathStr] = value;
|
|
428
|
-
}
|
|
429
|
-
} else if (status && status.length > 0) {
|
|
430
|
-
logger.warn(`Failed to read attribute ${path}: status=${JSON.stringify(status)}`);
|
|
409
|
+
for (const { path: attrPath, value } of attributeData) {
|
|
410
|
+
const { pathStr, value: wsValue } = this.#convertAttributeToWebSocket(
|
|
411
|
+
{
|
|
412
|
+
endpointId: EndpointNumber(attrPath.endpointId),
|
|
413
|
+
clusterId: ClusterId(attrPath.clusterId),
|
|
414
|
+
attributeId: attrPath.attributeId,
|
|
415
|
+
},
|
|
416
|
+
value,
|
|
417
|
+
);
|
|
418
|
+
result[pathStr] = wsValue;
|
|
431
419
|
}
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
return result;
|
|
435
|
-
}
|
|
436
420
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
const endpointId = endpoint.number!;
|
|
442
|
-
for (const behavior of endpoint.endpoint.behaviors.active) {
|
|
443
|
-
if (!ClusterBehavior.is(behavior)) {
|
|
444
|
-
continue;
|
|
445
|
-
}
|
|
446
|
-
const cluster = behavior.cluster;
|
|
447
|
-
const clusterId = cluster.id;
|
|
448
|
-
const clusterData = ClusterMap[cluster.name.toLowerCase()];
|
|
449
|
-
const clusterState = endpoint.endpoint.stateOf(behavior);
|
|
450
|
-
|
|
451
|
-
for (const attributeName in cluster.attributes) {
|
|
452
|
-
const attribute = cluster.attributes[attributeName];
|
|
453
|
-
if (attribute === undefined) {
|
|
454
|
-
continue;
|
|
421
|
+
if (attributeStatus && attributeStatus.length > 0) {
|
|
422
|
+
for (const { path: attrPath, status } of attributeStatus) {
|
|
423
|
+
const pathStr = buildAttributePath(attrPath.endpointId, attrPath.clusterId, attrPath.attributeId);
|
|
424
|
+
logger.warn(`Failed to read attribute ${pathStr}: status=${status}`);
|
|
455
425
|
}
|
|
456
|
-
const attributeValue = (clusterState as Record<string, unknown>)[attributeName];
|
|
457
|
-
const { pathStr, value } = this.#convertAttributeToWebSocket(
|
|
458
|
-
{ endpointId, clusterId, attributeId: attribute.id },
|
|
459
|
-
attributeValue,
|
|
460
|
-
clusterData,
|
|
461
|
-
);
|
|
462
|
-
attributesData[pathStr] = value;
|
|
463
426
|
}
|
|
464
427
|
}
|
|
465
428
|
|
|
466
|
-
|
|
467
|
-
for (const childEndpoint of endpoint.getChildEndpoints()) {
|
|
468
|
-
this.#collectAttributesFromEndpoint(childEndpoint, attributesData);
|
|
469
|
-
}
|
|
429
|
+
return result;
|
|
470
430
|
}
|
|
471
431
|
|
|
472
432
|
/**
|
|
@@ -501,37 +461,6 @@ export class ControllerCommandHandler {
|
|
|
501
461
|
return this.#controller.disconnectNode(nodeId, true);
|
|
502
462
|
}
|
|
503
463
|
|
|
504
|
-
async handleReadAttribute(data: ReadAttributeRequest): Promise<ReadAttributeResponse> {
|
|
505
|
-
const { nodeId, endpointId, clusterId, attributeId, fabricFiltered = true } = data;
|
|
506
|
-
const client = await this.#nodes.interactionClientFor(nodeId);
|
|
507
|
-
|
|
508
|
-
// Note: This method is for direct SDK reads with explicit paths.
|
|
509
|
-
// Wildcard handling is done at the WebSocket layer before calling this method.
|
|
510
|
-
const { attributeData, attributeStatus } = await client.getMultipleAttributesAndStatus({
|
|
511
|
-
attributes: [{ endpointId, clusterId, attributeId }],
|
|
512
|
-
isFabricFiltered: fabricFiltered,
|
|
513
|
-
});
|
|
514
|
-
|
|
515
|
-
return {
|
|
516
|
-
values: attributeData.map(
|
|
517
|
-
({ path: { endpointId, clusterId, attributeId }, value, version: dataVersion }) => ({
|
|
518
|
-
attributeId,
|
|
519
|
-
clusterId,
|
|
520
|
-
dataVersion,
|
|
521
|
-
endpointId,
|
|
522
|
-
value,
|
|
523
|
-
}),
|
|
524
|
-
),
|
|
525
|
-
status: attributeStatus?.map(({ path: { endpointId, clusterId, attributeId }, status, clusterStatus }) => ({
|
|
526
|
-
attributeId,
|
|
527
|
-
clusterId,
|
|
528
|
-
endpointId,
|
|
529
|
-
status,
|
|
530
|
-
clusterStatus,
|
|
531
|
-
})),
|
|
532
|
-
};
|
|
533
|
-
}
|
|
534
|
-
|
|
535
464
|
async handleReadEvent(data: ReadEventRequest): Promise<ReadEventResponse> {
|
|
536
465
|
const { nodeId, endpointId, clusterId, eventId, eventMin } = data;
|
|
537
466
|
const client = await this.#nodes.interactionClientFor(nodeId);
|
|
@@ -999,6 +928,8 @@ export class ControllerCommandHandler {
|
|
|
999
928
|
await this.#controller.removeNode(nodeId, !!node?.isConnected);
|
|
1000
929
|
// Remove node from storage (also clears attribute cache)
|
|
1001
930
|
this.#nodes.delete(nodeId);
|
|
931
|
+
// Unregister from custom cluster polling
|
|
932
|
+
this.#customClusterPoller.unregisterNode(nodeId);
|
|
1002
933
|
// Emit nodeDecommissioned event after successful removal
|
|
1003
934
|
this.events.nodeDecommissioned.emit(nodeId);
|
|
1004
935
|
}
|