@matter-server/ws-controller 0.2.2 → 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/server/WebSocketControllerHandler.d.ts +1 -1
- package/dist/esm/server/WebSocketControllerHandler.d.ts.map +1 -1
- package/dist/esm/server/WebSocketControllerHandler.js +4 -2
- package/dist/esm/server/WebSocketControllerHandler.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 +4 -4
- 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/server/WebSocketControllerHandler.ts +4 -2
- package/src/types/CommandHandler.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeDataCache.d.ts","sourceRoot":"","sources":["../../../src/controller/AttributeDataCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA2B,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAY,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAU5D;;;;;;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;
|
|
1
|
+
{"version":3,"file":"AttributeDataCache.d.ts","sourceRoot":"","sources":["../../../src/controller/AttributeDataCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA2B,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAY,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAU5D;;;;;;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;CA+E/B"}
|
|
@@ -59,6 +59,9 @@ class AttributeDataCache {
|
|
|
59
59
|
clusterData?.attributes[attributeId],
|
|
60
60
|
clusterData?.model
|
|
61
61
|
);
|
|
62
|
+
if (convertedValue === void 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
62
65
|
clusterCache.set(attributeId, convertedValue);
|
|
63
66
|
}
|
|
64
67
|
/**
|
|
@@ -134,6 +137,9 @@ class AttributeDataCache {
|
|
|
134
137
|
clusterData?.attributes[attribute.id],
|
|
135
138
|
clusterData?.model
|
|
136
139
|
);
|
|
140
|
+
if (convertedValue === void 0) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
137
143
|
clusterCache.set(attribute.id, convertedValue);
|
|
138
144
|
}
|
|
139
145
|
if (clusterCache.size) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/controller/AttributeDataCache.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -10,7 +10,7 @@ import { DecodedAttributeReportValue, DecodedEventReportValue } from "@matter/ma
|
|
|
10
10
|
import { EndpointNumber, VendorId } from "@matter/main/types";
|
|
11
11
|
import { CommissioningController } from "@project-chip/matter.js";
|
|
12
12
|
import { NodeStates } from "@project-chip/matter.js/device";
|
|
13
|
-
import { AttributeResponseStatus, AttributesData, CommissioningRequest, CommissioningResponse, DiscoveryRequest, DiscoveryResponse, InvokeByIdRequest, InvokeRequest, MatterNodeData, OpenCommissioningWindowRequest, OpenCommissioningWindowResponse,
|
|
13
|
+
import { AttributeResponseStatus, AttributesData, CommissioningRequest, CommissioningResponse, DiscoveryRequest, DiscoveryResponse, InvokeByIdRequest, InvokeRequest, MatterNodeData, OpenCommissioningWindowRequest, OpenCommissioningWindowResponse, ReadEventRequest, ReadEventResponse, SubscribeAttributeRequest, SubscribeAttributeResponse, SubscribeEventRequest, SubscribeEventResponse, WriteAttributeByIdRequest, WriteAttributeRequest } from "../types/CommandHandler.js";
|
|
14
14
|
import { AccessControlEntry, AttributeWriteResult, BindingTarget, MatterSoftwareVersion, NodePingResult } from "../types/WebSocketMessageTypes.js";
|
|
15
15
|
export declare class ControllerCommandHandler {
|
|
16
16
|
#private;
|
|
@@ -46,7 +46,7 @@ export declare class ControllerCommandHandler {
|
|
|
46
46
|
getNodeDetails(nodeId: NodeId, lastInterviewDate?: Date): Promise<MatterNodeData>;
|
|
47
47
|
/**
|
|
48
48
|
* Read multiple attributes from a node by path strings.
|
|
49
|
-
*
|
|
49
|
+
* Supports wildcards in paths. Batches up to 9 paths per read call.
|
|
50
50
|
*/
|
|
51
51
|
handleReadAttributes(nodeId: NodeId, attributePaths: string[], fabricFiltered?: boolean): Promise<AttributesData>;
|
|
52
52
|
/**
|
|
@@ -55,7 +55,6 @@ export declare class ControllerCommandHandler {
|
|
|
55
55
|
*/
|
|
56
56
|
setFabricLabel(label: string | null): Promise<void>;
|
|
57
57
|
disconnectNode(nodeId: NodeId): Promise<void>;
|
|
58
|
-
handleReadAttribute(data: ReadAttributeRequest): Promise<ReadAttributeResponse>;
|
|
59
58
|
handleReadEvent(data: ReadEventRequest): Promise<ReadEventResponse>;
|
|
60
59
|
handleSubscribeAttribute(data: SubscribeAttributeRequest): Promise<SubscribeAttributeResponse>;
|
|
61
60
|
handleSubscribeEvent(data: SubscribeEventRequest): Promise<SubscribeEventResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerCommandHandler.d.ts","sourceRoot":"","sources":["../../../src/controller/ControllerCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAY,MAAM,iBAAiB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"ControllerCommandHandler.d.ts","sourceRoot":"","sources":["../../../src/controller/ControllerCommandHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAY,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAGH,QAAQ,EACR,WAAW,EAKX,MAAM,EACN,UAAU,EAMb,MAAM,cAAc,CAAC;AACtB,OAAO,EAKH,sBAAsB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,2BAA2B,EAC3B,uBAAuB,EAK1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAMH,cAAc,EAgBd,QAAQ,EACX,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,EAEjB,MAAM,mCAAmC,CAAC;AAO3C,qBAAa,wBAAwB;;IAYjC,MAAM;;;;;;;;;;MAUJ;gBAEU,kBAAkB,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAcjG,IAAI,OAAO,YAEV;IAED,IAAI,UAAU,YAEb;IAEK,KAAK;IA2DX,KAAK;IAyDC,OAAO;IA4Bb,UAAU;IAIV,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM;IAsBlC;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAqCvF;;;OAGG;IACG,oBAAoB,CACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EAAE,EACxB,cAAc,UAAQ,GACvB,OAAO,CAAC,cAAc,CAAC;IAgE1B;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,cAAc,CAAC,MAAM,EAAE,MAAM;IAIvB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkCnE,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA8C9F,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgDlF,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0BnF,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAkCrD,0EAA0E;IACpE,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoHxE,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWhF,qBAAqB;IAIf,yBAAyB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ9F,sCAAsC;IAChC,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+CzE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAO;IAwB3D;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAwC/D,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAW/B,uBAAuB,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAOvG,UAAU,CAAC,MAAM,EAAE,MAAM;;;;;;IAW/B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW;;;;;IAMrD;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC;IA8CxG;;;OAGG;IACG,cAAc,CAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAyCzC;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA+C5E;;;;OAIG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;CAuEnG"}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
import { AsyncObservable, isObject } from "@matter/general";
|
|
7
7
|
import {
|
|
8
8
|
Bytes,
|
|
9
|
-
ClusterBehavior,
|
|
10
9
|
FabricIndex,
|
|
11
10
|
ipv4BytesToString,
|
|
12
11
|
ipv6BytesToString,
|
|
@@ -31,6 +30,7 @@ import {
|
|
|
31
30
|
} from "@matter/main/protocol";
|
|
32
31
|
import {
|
|
33
32
|
Attribute,
|
|
33
|
+
AttributeId,
|
|
34
34
|
ClusterId,
|
|
35
35
|
Command,
|
|
36
36
|
DeviceTypeId,
|
|
@@ -65,6 +65,7 @@ import {
|
|
|
65
65
|
UpdateSource
|
|
66
66
|
} from "../types/WebSocketMessageTypes.js";
|
|
67
67
|
import { pingIp } from "../util/network.js";
|
|
68
|
+
import { CustomClusterPoller } from "./CustomClusterPoller.js";
|
|
68
69
|
import { Nodes } from "./Nodes.js";
|
|
69
70
|
const logger = Logger.get("ControllerCommandHandler");
|
|
70
71
|
class ControllerCommandHandler {
|
|
@@ -77,6 +78,8 @@ class ControllerCommandHandler {
|
|
|
77
78
|
#nodes = new Nodes();
|
|
78
79
|
/** Cache of available updates keyed by nodeId */
|
|
79
80
|
#availableUpdates = /* @__PURE__ */ new Map();
|
|
81
|
+
/** Poller for custom cluster attributes (Eve energy, etc.) */
|
|
82
|
+
#customClusterPoller;
|
|
80
83
|
events = {
|
|
81
84
|
started: new AsyncObservable(),
|
|
82
85
|
attributeChanged: new Observable(),
|
|
@@ -92,6 +95,9 @@ class ControllerCommandHandler {
|
|
|
92
95
|
this.#controller = controllerInstance;
|
|
93
96
|
this.#bleEnabled = bleEnabled;
|
|
94
97
|
this.#otaEnabled = otaEnabled;
|
|
98
|
+
this.#customClusterPoller = new CustomClusterPoller({
|
|
99
|
+
handleReadAttributes: (nodeId, paths, fabricFiltered) => this.handleReadAttributes(nodeId, paths, fabricFiltered)
|
|
100
|
+
});
|
|
95
101
|
}
|
|
96
102
|
get started() {
|
|
97
103
|
return this.#started;
|
|
@@ -146,6 +152,7 @@ class ControllerCommandHandler {
|
|
|
146
152
|
}
|
|
147
153
|
close() {
|
|
148
154
|
if (!this.#started) return;
|
|
155
|
+
this.#customClusterPoller.stop();
|
|
149
156
|
return this.#controller.close();
|
|
150
157
|
}
|
|
151
158
|
async #registerNode(nodeId) {
|
|
@@ -159,6 +166,10 @@ class ControllerCommandHandler {
|
|
|
159
166
|
node.events.stateChanged.on((state) => {
|
|
160
167
|
if (state === NodeStates.Connected) {
|
|
161
168
|
attributeCache.update(node);
|
|
169
|
+
const attributes = attributeCache.get(nodeId);
|
|
170
|
+
if (attributes) {
|
|
171
|
+
this.#customClusterPoller.registerNode(nodeId, attributes);
|
|
172
|
+
}
|
|
162
173
|
}
|
|
163
174
|
this.events.nodeStateChanged.emit(nodeId, state);
|
|
164
175
|
});
|
|
@@ -174,6 +185,10 @@ class ControllerCommandHandler {
|
|
|
174
185
|
this.#nodes.set(nodeId, node);
|
|
175
186
|
if (node.initialized) {
|
|
176
187
|
attributeCache.add(node);
|
|
188
|
+
const attributes = attributeCache.get(nodeId);
|
|
189
|
+
if (attributes) {
|
|
190
|
+
this.#customClusterPoller.registerNode(nodeId, attributes);
|
|
191
|
+
}
|
|
177
192
|
}
|
|
178
193
|
return node;
|
|
179
194
|
}
|
|
@@ -256,90 +271,43 @@ class ControllerCommandHandler {
|
|
|
256
271
|
}
|
|
257
272
|
/**
|
|
258
273
|
* Read multiple attributes from a node by path strings.
|
|
259
|
-
*
|
|
274
|
+
* Supports wildcards in paths. Batches up to 9 paths per read call.
|
|
260
275
|
*/
|
|
261
276
|
async handleReadAttributes(nodeId, attributePaths, fabricFiltered = false) {
|
|
262
|
-
const node = this.#nodes.get(nodeId);
|
|
263
277
|
const result = {};
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
for (const path of attributePaths) {
|
|
278
|
-
const { endpointId, clusterId, attributeId } = splitAttributePath(path);
|
|
279
|
-
if (path.includes("*") && allAttributes !== void 0) {
|
|
280
|
-
for (const [attrPath, value] of Object.entries(allAttributes)) {
|
|
281
|
-
const parts = attrPath.split("/").map(Number);
|
|
282
|
-
if ((endpointId === void 0 || parts[0] === endpointId) && (clusterId === void 0 || parts[1] === clusterId) && (attributeId === void 0 || parts[2] === attributeId)) {
|
|
283
|
-
result[attrPath] = value;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
continue;
|
|
287
|
-
}
|
|
288
|
-
const { values, status } = await this.handleReadAttribute({
|
|
289
|
-
nodeId,
|
|
290
|
-
endpointId,
|
|
291
|
-
clusterId,
|
|
292
|
-
attributeId,
|
|
293
|
-
fabricFiltered
|
|
278
|
+
const client = await this.#nodes.interactionClientFor(nodeId);
|
|
279
|
+
const batchSize = 9;
|
|
280
|
+
const parsedPaths = attributePaths.map((path) => splitAttributePath(path));
|
|
281
|
+
for (let i = 0; i < parsedPaths.length; i += batchSize) {
|
|
282
|
+
const batch = parsedPaths.slice(i, i + batchSize);
|
|
283
|
+
const attributes = batch.map(({ endpointId, clusterId, attributeId }) => ({
|
|
284
|
+
endpointId: endpointId !== void 0 ? EndpointNumber(endpointId) : void 0,
|
|
285
|
+
clusterId: clusterId !== void 0 ? ClusterId(clusterId) : void 0,
|
|
286
|
+
attributeId: attributeId !== void 0 ? AttributeId(attributeId) : void 0
|
|
287
|
+
}));
|
|
288
|
+
const { attributeData, attributeStatus } = await client.getMultipleAttributesAndStatus({
|
|
289
|
+
attributes,
|
|
290
|
+
isFabricFiltered: fabricFiltered
|
|
294
291
|
});
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
result[pathStr] = value;
|
|
306
|
-
}
|
|
307
|
-
} else if (status && status.length > 0) {
|
|
308
|
-
logger.warn(`Failed to read attribute ${path}: status=${JSON.stringify(status)}`);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return result;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Collect all attributes from an endpoint and its children into WebSocket format.
|
|
315
|
-
*/
|
|
316
|
-
#collectAttributesFromEndpoint(endpoint, attributesData) {
|
|
317
|
-
const endpointId = endpoint.number;
|
|
318
|
-
for (const behavior of endpoint.endpoint.behaviors.active) {
|
|
319
|
-
if (!ClusterBehavior.is(behavior)) {
|
|
320
|
-
continue;
|
|
292
|
+
for (const { path: attrPath, value } of attributeData) {
|
|
293
|
+
const { pathStr, value: wsValue } = this.#convertAttributeToWebSocket(
|
|
294
|
+
{
|
|
295
|
+
endpointId: EndpointNumber(attrPath.endpointId),
|
|
296
|
+
clusterId: ClusterId(attrPath.clusterId),
|
|
297
|
+
attributeId: attrPath.attributeId
|
|
298
|
+
},
|
|
299
|
+
value
|
|
300
|
+
);
|
|
301
|
+
result[pathStr] = wsValue;
|
|
321
302
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
for (const attributeName in cluster.attributes) {
|
|
327
|
-
const attribute = cluster.attributes[attributeName];
|
|
328
|
-
if (attribute === void 0) {
|
|
329
|
-
continue;
|
|
303
|
+
if (attributeStatus && attributeStatus.length > 0) {
|
|
304
|
+
for (const { path: attrPath, status } of attributeStatus) {
|
|
305
|
+
const pathStr = buildAttributePath(attrPath.endpointId, attrPath.clusterId, attrPath.attributeId);
|
|
306
|
+
logger.warn(`Failed to read attribute ${pathStr}: status=${status}`);
|
|
330
307
|
}
|
|
331
|
-
const attributeValue = clusterState[attributeName];
|
|
332
|
-
const { pathStr, value } = this.#convertAttributeToWebSocket(
|
|
333
|
-
{ endpointId, clusterId, attributeId: attribute.id },
|
|
334
|
-
attributeValue,
|
|
335
|
-
clusterData
|
|
336
|
-
);
|
|
337
|
-
attributesData[pathStr] = value;
|
|
338
308
|
}
|
|
339
309
|
}
|
|
340
|
-
|
|
341
|
-
this.#collectAttributesFromEndpoint(childEndpoint, attributesData);
|
|
342
|
-
}
|
|
310
|
+
return result;
|
|
343
311
|
}
|
|
344
312
|
/**
|
|
345
313
|
* Convert attribute data to WebSocket tag-based format.
|
|
@@ -366,32 +334,6 @@ class ControllerCommandHandler {
|
|
|
366
334
|
disconnectNode(nodeId) {
|
|
367
335
|
return this.#controller.disconnectNode(nodeId, true);
|
|
368
336
|
}
|
|
369
|
-
async handleReadAttribute(data) {
|
|
370
|
-
const { nodeId, endpointId, clusterId, attributeId, fabricFiltered = true } = data;
|
|
371
|
-
const client = await this.#nodes.interactionClientFor(nodeId);
|
|
372
|
-
const { attributeData, attributeStatus } = await client.getMultipleAttributesAndStatus({
|
|
373
|
-
attributes: [{ endpointId, clusterId, attributeId }],
|
|
374
|
-
isFabricFiltered: fabricFiltered
|
|
375
|
-
});
|
|
376
|
-
return {
|
|
377
|
-
values: attributeData.map(
|
|
378
|
-
({ path: { endpointId: endpointId2, clusterId: clusterId2, attributeId: attributeId2 }, value, version: dataVersion }) => ({
|
|
379
|
-
attributeId: attributeId2,
|
|
380
|
-
clusterId: clusterId2,
|
|
381
|
-
dataVersion,
|
|
382
|
-
endpointId: endpointId2,
|
|
383
|
-
value
|
|
384
|
-
})
|
|
385
|
-
),
|
|
386
|
-
status: attributeStatus?.map(({ path: { endpointId: endpointId2, clusterId: clusterId2, attributeId: attributeId2 }, status, clusterStatus }) => ({
|
|
387
|
-
attributeId: attributeId2,
|
|
388
|
-
clusterId: clusterId2,
|
|
389
|
-
endpointId: endpointId2,
|
|
390
|
-
status,
|
|
391
|
-
clusterStatus
|
|
392
|
-
}))
|
|
393
|
-
};
|
|
394
|
-
}
|
|
395
337
|
async handleReadEvent(data) {
|
|
396
338
|
const { nodeId, endpointId, clusterId, eventId, eventMin } = data;
|
|
397
339
|
const client = await this.#nodes.interactionClientFor(nodeId);
|
|
@@ -801,6 +743,7 @@ class ControllerCommandHandler {
|
|
|
801
743
|
const node = this.#nodes.has(nodeId) ? this.#nodes.get(nodeId) : void 0;
|
|
802
744
|
await this.#controller.removeNode(nodeId, !!node?.isConnected);
|
|
803
745
|
this.#nodes.delete(nodeId);
|
|
746
|
+
this.#customClusterPoller.unregisterNode(nodeId);
|
|
804
747
|
this.events.nodeDecommissioned.emit(nodeId);
|
|
805
748
|
}
|
|
806
749
|
async openCommissioningWindow(data) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/controller/ControllerCommandHandler.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["endpointId", "clusterId", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["endpointId", "clusterId", "eventId", "data", "attributeId"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Handles polling of custom cluster attributes that don't support subscriptions.
|
|
8
|
+
* This is primarily for Eve Energy devices that expose power measurements via
|
|
9
|
+
* a custom cluster without standard Matter subscription support.
|
|
10
|
+
*/
|
|
11
|
+
import { NodeId } from "@matter/main";
|
|
12
|
+
import { AttributesData } from "../types/CommandHandler.js";
|
|
13
|
+
type AttributePath = string;
|
|
14
|
+
export interface NodeAttributeReader {
|
|
15
|
+
handleReadAttributes(nodeId: NodeId, attributePaths: string[], fabricFiltered?: boolean): Promise<AttributesData>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if a node needs custom attribute polling based on its attributes.
|
|
19
|
+
*
|
|
20
|
+
* A node needs polling if:
|
|
21
|
+
* 1. It has Eve vendor ID (4874) at endpoint 0/40/2 (BasicInformation.VendorID)
|
|
22
|
+
* 2. It has Eve custom cluster (0x130AFC01) with energy attributes
|
|
23
|
+
* 3. It does NOT have the standard ElectricalPowerMeasurement cluster (0x0090)
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkPolledAttributes(attributes: AttributesData): Set<AttributePath>;
|
|
26
|
+
/**
|
|
27
|
+
* Manages polling of custom cluster attributes for multiple nodes.
|
|
28
|
+
*/
|
|
29
|
+
export declare class CustomClusterPoller {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(attributeReader: NodeAttributeReader);
|
|
32
|
+
/**
|
|
33
|
+
* Register a node for polling if it has custom attributes that need polling.
|
|
34
|
+
* Call this after a node is connected and its attributes are available.
|
|
35
|
+
*/
|
|
36
|
+
registerNode(nodeId: NodeId, attributes: AttributesData): void;
|
|
37
|
+
/**
|
|
38
|
+
* Unregister a node from polling (e.g., when decommissioned or disconnected).
|
|
39
|
+
*/
|
|
40
|
+
unregisterNode(nodeId: NodeId): void;
|
|
41
|
+
/**
|
|
42
|
+
* Stop all polling and cleanup.
|
|
43
|
+
*/
|
|
44
|
+
stop(): void;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=CustomClusterPoller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomClusterPoller.d.ts","sourceRoot":"","sources":["../../../src/controller/CustomClusterPoller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AAEH,OAAO,EAA+C,MAAM,EAAe,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AA4B5D,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,MAAM,WAAW,mBAAmB;IAChC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACrH;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,CAoDpF;AAED;;GAEG;AACH,qBAAa,mBAAmB;;gBAQhB,eAAe,EAAE,mBAAmB;IAMhD;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI;IAkB9D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,IAAI,IAAI,IAAI;CAsFf"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025-2026 Open Home Foundation
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Duration, Logger, Millis, Time } from "@matter/main";
|
|
7
|
+
const logger = Logger.get("CustomClusterPoller");
|
|
8
|
+
const VENDOR_ID_EVE = 4874;
|
|
9
|
+
const EVE_CLUSTER_ID = 319486977;
|
|
10
|
+
const EVE_ENERGY_ATTRIBUTE_IDS = {
|
|
11
|
+
watt: 319422474,
|
|
12
|
+
wattAccumulated: 319422475,
|
|
13
|
+
voltage: 319422472,
|
|
14
|
+
current: 319422473
|
|
15
|
+
};
|
|
16
|
+
const ELECTRICAL_POWER_MEASUREMENT_CLUSTER_ID = 144;
|
|
17
|
+
const POLLING_INTERVAL_MS = 3e4;
|
|
18
|
+
const MAX_INITIAL_DELAY_MS = 3e4;
|
|
19
|
+
function checkPolledAttributes(attributes) {
|
|
20
|
+
const polledAttributes = /* @__PURE__ */ new Set();
|
|
21
|
+
const vendorId = attributes["0/40/2"];
|
|
22
|
+
if (vendorId !== VENDOR_ID_EVE) {
|
|
23
|
+
return polledAttributes;
|
|
24
|
+
}
|
|
25
|
+
const eveEndpoints = /* @__PURE__ */ new Set();
|
|
26
|
+
for (const attrPath of Object.keys(attributes)) {
|
|
27
|
+
const [endpointStr, clusterStr] = attrPath.split("/");
|
|
28
|
+
const clusterId = Number(clusterStr);
|
|
29
|
+
if (clusterId === EVE_CLUSTER_ID) {
|
|
30
|
+
eveEndpoints.add(Number(endpointStr));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (eveEndpoints.size === 0) {
|
|
34
|
+
return polledAttributes;
|
|
35
|
+
}
|
|
36
|
+
for (const attrPath of Object.keys(attributes)) {
|
|
37
|
+
const [, clusterStr] = attrPath.split("/");
|
|
38
|
+
const clusterId = Number(clusterStr);
|
|
39
|
+
if (clusterId === ELECTRICAL_POWER_MEASUREMENT_CLUSTER_ID) {
|
|
40
|
+
logger.debug("Node has standard ElectricalPowerMeasurement cluster, skipping Eve energy polling");
|
|
41
|
+
return polledAttributes;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
for (const endpoint of eveEndpoints) {
|
|
45
|
+
for (const [, attributeId] of Object.entries(EVE_ENERGY_ATTRIBUTE_IDS)) {
|
|
46
|
+
const attrPath = `${endpoint}/${EVE_CLUSTER_ID}/${attributeId}`;
|
|
47
|
+
if (attributes[attrPath] !== void 0) {
|
|
48
|
+
polledAttributes.add(attrPath);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (polledAttributes.size > 0) {
|
|
53
|
+
logger.info(`Eve device detected, will poll ${polledAttributes.size} energy attributes`);
|
|
54
|
+
}
|
|
55
|
+
return polledAttributes;
|
|
56
|
+
}
|
|
57
|
+
class CustomClusterPoller {
|
|
58
|
+
#polledAttributes = /* @__PURE__ */ new Map();
|
|
59
|
+
#pollerTimer;
|
|
60
|
+
#attributeReader;
|
|
61
|
+
#isPolling = false;
|
|
62
|
+
#currentDelayPromise;
|
|
63
|
+
#closed = false;
|
|
64
|
+
constructor(attributeReader) {
|
|
65
|
+
this.#attributeReader = attributeReader;
|
|
66
|
+
const delay = Millis(Math.random() * MAX_INITIAL_DELAY_MS);
|
|
67
|
+
this.#pollerTimer = Time.getTimer("eve-poller", delay, () => this.#pollAllNodes());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Register a node for polling if it has custom attributes that need polling.
|
|
71
|
+
* Call this after a node is connected and its attributes are available.
|
|
72
|
+
*/
|
|
73
|
+
registerNode(nodeId, attributes) {
|
|
74
|
+
const attributesToPoll = checkPolledAttributes(attributes);
|
|
75
|
+
if (attributesToPoll.size === 0) {
|
|
76
|
+
this.unregisterNode(nodeId);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this.#polledAttributes.set(nodeId, attributesToPoll);
|
|
80
|
+
logger.info(
|
|
81
|
+
`Registered node ${nodeId} for custom attribute polling: ${Array.from(attributesToPoll).join(", ")}`
|
|
82
|
+
);
|
|
83
|
+
this.#schedulePoller();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Unregister a node from polling (e.g., when decommissioned or disconnected).
|
|
87
|
+
*/
|
|
88
|
+
unregisterNode(nodeId) {
|
|
89
|
+
if (this.#polledAttributes.delete(nodeId)) {
|
|
90
|
+
logger.info(`Unregistered node ${nodeId} from custom attribute polling`);
|
|
91
|
+
}
|
|
92
|
+
if (this.#polledAttributes.size === 0) {
|
|
93
|
+
this.#pollerTimer.stop();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Stop all polling and cleanup.
|
|
98
|
+
*/
|
|
99
|
+
stop() {
|
|
100
|
+
this.#closed = true;
|
|
101
|
+
this.#currentDelayPromise?.cancel(new Error("Close"));
|
|
102
|
+
this.#pollerTimer?.stop();
|
|
103
|
+
this.#polledAttributes.clear();
|
|
104
|
+
logger.info("Custom attribute poller stopped");
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Schedule the next polling cycle.
|
|
108
|
+
* Uses a random initial delay (0-30s) on first run to stagger startup,
|
|
109
|
+
* then polls every 30s thereafter.
|
|
110
|
+
*/
|
|
111
|
+
#schedulePoller() {
|
|
112
|
+
if (this.#polledAttributes.size === 0 || this.#closed) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (this.#pollerTimer?.isRunning || this.#isPolling) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.#pollerTimer.start();
|
|
119
|
+
logger.info(`Scheduling custom attribute poll in ${Duration.format(this.#pollerTimer.interval)}`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Poll all registered nodes for their custom attributes.
|
|
123
|
+
*/
|
|
124
|
+
async #pollAllNodes() {
|
|
125
|
+
if (this.#isPolling) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const targetInterval = Millis(POLLING_INTERVAL_MS);
|
|
129
|
+
if (this.#pollerTimer.interval !== targetInterval) {
|
|
130
|
+
this.#pollerTimer.interval = targetInterval;
|
|
131
|
+
}
|
|
132
|
+
this.#isPolling = true;
|
|
133
|
+
try {
|
|
134
|
+
const entries = Array.from(this.#polledAttributes.entries());
|
|
135
|
+
for (let i = 0; i < entries.length; i++) {
|
|
136
|
+
const [nodeId, attributePaths] = entries[i];
|
|
137
|
+
if (!this.#polledAttributes.has(nodeId)) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
await this.#pollNode(nodeId, attributePaths);
|
|
141
|
+
if (i < entries.length - 1) {
|
|
142
|
+
this.#currentDelayPromise = Time.sleep("sleep", Millis(1e3)).finally(() => {
|
|
143
|
+
this.#currentDelayPromise = void 0;
|
|
144
|
+
});
|
|
145
|
+
await this.#currentDelayPromise;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
} finally {
|
|
149
|
+
this.#isPolling = false;
|
|
150
|
+
this.#schedulePoller();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Poll a single node for its custom attributes.
|
|
155
|
+
* The read will automatically trigger change events through the normal attribute flow.
|
|
156
|
+
*/
|
|
157
|
+
async #pollNode(nodeId, attributePaths) {
|
|
158
|
+
const paths = Array.from(attributePaths);
|
|
159
|
+
logger.debug(`Polling ${paths.length} custom attributes for node ${nodeId}`);
|
|
160
|
+
try {
|
|
161
|
+
await this.#attributeReader.handleReadAttributes(nodeId, paths, true);
|
|
162
|
+
} catch (error) {
|
|
163
|
+
logger.warn(`Failed to poll custom attributes for node ${nodeId}: `, error);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export {
|
|
168
|
+
CustomClusterPoller,
|
|
169
|
+
checkPolledAttributes
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=CustomClusterPoller.js.map
|