node-opcua-aggregates 2.183.1 → 2.184.0
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/aggregates.d.ts +1 -0
- package/dist/aggregates.d.ts.map +1 -0
- package/dist/aggregates.js +34 -43
- package/dist/aggregates.js.map +1 -1
- package/dist/average.d.ts +1 -0
- package/dist/average.d.ts.map +1 -0
- package/dist/average.js +15 -18
- package/dist/average.js.map +1 -1
- package/dist/calculate_bad_good.d.ts +1 -0
- package/dist/calculate_bad_good.d.ts.map +1 -0
- package/dist/calculate_bad_good.js +22 -25
- package/dist/calculate_bad_good.js.map +1 -1
- package/dist/common.d.ts +1 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +19 -23
- package/dist/common.js.map +1 -1
- package/dist/count.d.ts +1 -0
- package/dist/count.d.ts.map +1 -0
- package/dist/count.js +19 -22
- package/dist/count.js.map +1 -1
- package/dist/duration_bad.d.ts +1 -0
- package/dist/duration_bad.d.ts.map +1 -0
- package/dist/duration_bad.js +13 -16
- package/dist/duration_bad.js.map +1 -1
- package/dist/duration_good.d.ts +1 -0
- package/dist/duration_good.d.ts.map +1 -0
- package/dist/duration_good.js +13 -16
- package/dist/duration_good.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -41
- package/dist/index.js.map +1 -1
- package/dist/interpolate.d.ts +1 -0
- package/dist/interpolate.d.ts.map +1 -0
- package/dist/interpolate.js +28 -32
- package/dist/interpolate.js.map +1 -1
- package/dist/interval.d.ts +1 -0
- package/dist/interval.d.ts.map +1 -0
- package/dist/interval.js +13 -23
- package/dist/interval.js.map +1 -1
- package/dist/minmax.d.ts +1 -0
- package/dist/minmax.d.ts.map +1 -0
- package/dist/minmax.js +19 -25
- package/dist/minmax.js.map +1 -1
- package/dist/percent_bad.d.ts +1 -0
- package/dist/percent_bad.d.ts.map +1 -0
- package/dist/percent_bad.js +10 -13
- package/dist/percent_bad.js.map +1 -1
- package/dist/percent_good.d.ts +1 -0
- package/dist/percent_good.d.ts.map +1 -0
- package/dist/percent_good.js +14 -17
- package/dist/percent_good.js.map +1 -1
- package/dist/read_processed_details.d.ts +1 -0
- package/dist/read_processed_details.d.ts.map +1 -0
- package/dist/read_processed_details.js +39 -42
- package/dist/read_processed_details.js.map +1 -1
- package/distHelpers/create_historizing_variables.d.ts +1 -0
- package/distHelpers/create_historizing_variables.d.ts.map +1 -0
- package/distHelpers/create_historizing_variables.js +60 -66
- package/distHelpers/create_historizing_variables.js.map +1 -1
- package/distHelpers/helpers.d.ts +1 -0
- package/distHelpers/helpers.d.ts.map +1 -0
- package/distHelpers/helpers.js +9 -13
- package/distHelpers/helpers.js.map +1 -1
- package/distHelpers/index.d.ts +1 -0
- package/distHelpers/index.d.ts.map +1 -0
- package/distHelpers/index.js +2 -18
- package/distHelpers/index.js.map +1 -1
- package/package.json +18 -17
- package/testHelpers.js +1 -1
package/dist/aggregates.d.ts
CHANGED
|
@@ -20,3 +20,4 @@ export declare function getAggregateFunctions(addressSpace: IAddressSpace): Node
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function installAggregateConfigurationOptions(node: UAVariable, options: AggregateConfigurationOptionsEx, aggregateFunctions?: NodeIdLike[]): void;
|
|
22
22
|
export declare function getAggregateConfiguration(node: BaseNode): AggregateConfigurationOptionsEx;
|
|
23
|
+
//# sourceMappingURL=aggregates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregates.d.ts","sourceRoot":"","sources":["../source/aggregates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,QAAQ,EACR,aAAa,EAGb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACb,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAA8C,MAAM,sBAAsB,CAAC;AAErG,OAAO,EAA4B,KAAK,MAAM,EAAE,KAAK,UAAU,EAA6B,MAAM,mBAAmB,CAAC;AAItH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAsCrE,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,GAAG,QAAQ,CAgB9H;AA4DD,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,UAAU,GAAG,IAAI,CAmCjH;AAED,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAOrH;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAmD/G;AAMD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,EAAE,CAiB3E;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAChD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,+BAA+B,EACxC,kBAAkB,CAAC,EAAE,UAAU,EAAE,GAClC,IAAI,CAwDN;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,+BAA+B,CAoBzF"}
|
package/dist/aggregates.js
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @module node-opcua-aggregates
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.getAggregateConfiguration = getAggregateConfiguration;
|
|
13
|
-
const node_opcua_address_space_1 = require("node-opcua-address-space");
|
|
14
|
-
const node_opcua_constants_1 = require("node-opcua-constants");
|
|
15
|
-
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
16
|
-
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
17
|
-
const node_opcua_utils_1 = require("node-opcua-utils");
|
|
18
|
-
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
19
|
-
const read_processed_details_js_1 = require("./read_processed_details.js");
|
|
4
|
+
import { installReadProcessedDetails } from "node-opcua-address-space";
|
|
5
|
+
import { AggregateFunction, ObjectIds, ObjectTypeIds, ReferenceTypeIds } from "node-opcua-constants";
|
|
6
|
+
import { BrowseDirection, coerceQualifiedName, NodeClass, NodeClassMask } from "node-opcua-data-model";
|
|
7
|
+
import { coerceNodeId, makeNodeId, resolveNodeId, sameNodeId } from "node-opcua-nodeid";
|
|
8
|
+
import { lowerFirstLetter } from "node-opcua-utils";
|
|
9
|
+
import { DataType } from "node-opcua-variant";
|
|
10
|
+
import { readProcessedDetails } from "./read_processed_details.js";
|
|
20
11
|
// import { HistoryServerCapabilities } from "node-opcua-server";
|
|
21
12
|
/*
|
|
22
13
|
HasProperty Variable AccessHistoryDataCapability Boolean PropertyType Mandatory
|
|
@@ -50,7 +41,7 @@ const historicalCapabilitiesDefaultProperties /*: HistoryServerCapabilities */ =
|
|
|
50
41
|
updateDataCapability: false, // Boolean PropertyType Mandatory
|
|
51
42
|
updateEventCapability: false // Boolean PropertyType Mandatory
|
|
52
43
|
};
|
|
53
|
-
function createHistoryServerCapabilities(addressSpace, serverCapabilities) {
|
|
44
|
+
export function createHistoryServerCapabilities(addressSpace, serverCapabilities) {
|
|
54
45
|
/* c8 ignore next */
|
|
55
46
|
if (serverCapabilities.browseName.toString() !== "ServerCapabilities") {
|
|
56
47
|
throw new Error("Expecting server Capabilities");
|
|
@@ -67,7 +58,7 @@ function createHistoryServerCapabilities(addressSpace, serverCapabilities) {
|
|
|
67
58
|
}
|
|
68
59
|
function setHistoricalServerCapabilities(historyServerCapabilities, defaultProperties) {
|
|
69
60
|
function setBoolean(propName) {
|
|
70
|
-
const lowerCase =
|
|
61
|
+
const lowerCase = lowerFirstLetter(propName);
|
|
71
62
|
/* c8 ignore next */
|
|
72
63
|
if (!Object.hasOwn(defaultProperties, lowerCase)) {
|
|
73
64
|
throw new Error(`cannot find ${lowerCase}`);
|
|
@@ -78,10 +69,10 @@ function setHistoricalServerCapabilities(historyServerCapabilities, defaultPrope
|
|
|
78
69
|
if (!prop) {
|
|
79
70
|
throw new Error(` Cannot find property ${propName}`);
|
|
80
71
|
}
|
|
81
|
-
prop.setValueFromSource({ dataType:
|
|
72
|
+
prop.setValueFromSource({ dataType: DataType.Boolean, value });
|
|
82
73
|
}
|
|
83
74
|
function setUInt32(propName) {
|
|
84
|
-
const lowerCase =
|
|
75
|
+
const lowerCase = lowerFirstLetter(propName);
|
|
85
76
|
/* c8 ignore next */
|
|
86
77
|
if (!Object.hasOwn(defaultProperties, lowerCase)) {
|
|
87
78
|
throw new Error(`cannot find ${lowerCase}`);
|
|
@@ -92,7 +83,7 @@ function setHistoricalServerCapabilities(historyServerCapabilities, defaultPrope
|
|
|
92
83
|
if (!prop) {
|
|
93
84
|
throw new Error(` Cannot find property ${propName}`);
|
|
94
85
|
}
|
|
95
|
-
prop.setValueFromSource({ dataType:
|
|
86
|
+
prop.setValueFromSource({ dataType: DataType.UInt32, value });
|
|
96
87
|
}
|
|
97
88
|
setBoolean("AccessHistoryDataCapability");
|
|
98
89
|
setBoolean("AccessHistoryEventsCapability");
|
|
@@ -111,7 +102,7 @@ function setHistoricalServerCapabilities(historyServerCapabilities, defaultPrope
|
|
|
111
102
|
/// Standard nodeset2 says InsertAnnotationCapability ( without s )
|
|
112
103
|
// xx setBoolean("InsertAnnotationsCapability");
|
|
113
104
|
}
|
|
114
|
-
function addAggregateFunctionSupport(addressSpace, aggregateFunctionNodeId) {
|
|
105
|
+
export function addAggregateFunctionSupport(addressSpace, aggregateFunctionNodeId) {
|
|
115
106
|
const serverCapabilities = addressSpace.rootFolder.objects.server.serverCapabilities;
|
|
116
107
|
/* c8 ignore next */
|
|
117
108
|
if (!serverCapabilities.historyServerCapabilities) {
|
|
@@ -125,11 +116,11 @@ function addAggregateFunctionSupport(addressSpace, aggregateFunctionNodeId) {
|
|
|
125
116
|
throw new Error(`Cannot find node ${aggregateFunctionNodeId.toString()} in addressSpace`);
|
|
126
117
|
}
|
|
127
118
|
/* c8 ignore next */
|
|
128
|
-
if (functionNode.nodeClass !==
|
|
119
|
+
if (functionNode.nodeClass !== NodeClass.Object) {
|
|
129
120
|
throw new Error("Expecting an object Node");
|
|
130
121
|
}
|
|
131
122
|
/* c8 ignore next */
|
|
132
|
-
if (!
|
|
123
|
+
if (!sameNodeId(functionNode.typeDefinition, coerceNodeId(ObjectTypeIds.AggregateFunctionType))) {
|
|
133
124
|
throw new Error("Expecting an object with TypeDefinition AggregateFunctionType");
|
|
134
125
|
}
|
|
135
126
|
aggregateFunctions.addReference({
|
|
@@ -141,20 +132,20 @@ function addAggregateFunctionSupport(addressSpace, aggregateFunctionNodeId) {
|
|
|
141
132
|
referenceType: "Organizes"
|
|
142
133
|
});
|
|
143
134
|
}
|
|
144
|
-
function addAggregateStandardFunctionSupport(addressSpace, functionName) {
|
|
135
|
+
export function addAggregateStandardFunctionSupport(addressSpace, functionName) {
|
|
145
136
|
/* c8 ignore next */
|
|
146
137
|
if (!functionName) {
|
|
147
138
|
throw new Error("Invalid function name");
|
|
148
139
|
}
|
|
149
|
-
const functionNodeId =
|
|
140
|
+
const functionNodeId = makeNodeId(functionName);
|
|
150
141
|
addAggregateFunctionSupport(addressSpace, functionNodeId);
|
|
151
142
|
}
|
|
152
|
-
function addAggregateSupport(addressSpace, aggregatedFunctions) {
|
|
143
|
+
export function addAggregateSupport(addressSpace, aggregatedFunctions) {
|
|
153
144
|
aggregatedFunctions = aggregatedFunctions || [
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
145
|
+
AggregateFunction.Interpolative,
|
|
146
|
+
AggregateFunction.Minimum,
|
|
147
|
+
AggregateFunction.Maximum,
|
|
148
|
+
AggregateFunction.Average
|
|
158
149
|
];
|
|
159
150
|
const aggregateConfigurationType = addressSpace.getNamespace(0).findObjectType("AggregateConfigurationType");
|
|
160
151
|
/* c8 ignore next */
|
|
@@ -187,23 +178,23 @@ function addAggregateSupport(addressSpace, aggregatedFunctions) {
|
|
|
187
178
|
for (const f of aggregatedFunctions) {
|
|
188
179
|
addAggregateStandardFunctionSupport(addressSpace, f);
|
|
189
180
|
}
|
|
190
|
-
|
|
181
|
+
installReadProcessedDetails(addressSpace, readProcessedDetails);
|
|
191
182
|
}
|
|
192
|
-
function getAggregateFunctions(addressSpace) {
|
|
193
|
-
const aggregateFunctionTypeNodeId =
|
|
194
|
-
const aggregateFunctions = addressSpace.findNode(
|
|
183
|
+
export function getAggregateFunctions(addressSpace) {
|
|
184
|
+
const aggregateFunctionTypeNodeId = resolveNodeId(ObjectTypeIds.AggregateFunctionType);
|
|
185
|
+
const aggregateFunctions = addressSpace.findNode(ObjectIds.Server_ServerCapabilities_AggregateFunctions);
|
|
195
186
|
if (!aggregateFunctions) {
|
|
196
187
|
return [];
|
|
197
188
|
}
|
|
198
189
|
const referenceDescripitions = aggregateFunctions.browseNode({
|
|
199
|
-
referenceTypeId:
|
|
190
|
+
referenceTypeId: ReferenceTypeIds.HierarchicalReferences,
|
|
200
191
|
resultMask: 63,
|
|
201
|
-
nodeClassMask:
|
|
202
|
-
browseDirection:
|
|
192
|
+
nodeClassMask: NodeClassMask.Object,
|
|
193
|
+
browseDirection: BrowseDirection.Forward,
|
|
203
194
|
includeSubtypes: true
|
|
204
195
|
});
|
|
205
196
|
const aggregateFunctionsNodeIds = referenceDescripitions
|
|
206
|
-
.filter((a) =>
|
|
197
|
+
.filter((a) => sameNodeId(a.typeDefinition, aggregateFunctionTypeNodeId))
|
|
207
198
|
.map((a) => a.nodeId);
|
|
208
199
|
return aggregateFunctionsNodeIds;
|
|
209
200
|
}
|
|
@@ -215,7 +206,7 @@ function getAggregateFunctions(addressSpace) {
|
|
|
215
206
|
* @param aggregateFunctions the aggregatedFunctions, if not specified the aggregatedFunction of ServerCapabilities.AggregatedFunction will be used.
|
|
216
207
|
|
|
217
208
|
*/
|
|
218
|
-
function installAggregateConfigurationOptions(node, options, aggregateFunctions) {
|
|
209
|
+
export function installAggregateConfigurationOptions(node, options, aggregateFunctions) {
|
|
219
210
|
const nodePriv = node;
|
|
220
211
|
// c8 ignore next
|
|
221
212
|
if (!nodePriv.historizing) {
|
|
@@ -246,14 +237,14 @@ function installAggregateConfigurationOptions(node, options, aggregateFunctions)
|
|
|
246
237
|
if (!uaAggregateFunctions) {
|
|
247
238
|
const namespace = nodePriv.namespace;
|
|
248
239
|
uaAggregateFunctions = namespace.addObject({
|
|
249
|
-
browseName:
|
|
240
|
+
browseName: coerceQualifiedName({ name: "AggregateFunctions", namespaceIndex: 0 }),
|
|
250
241
|
componentOf: nodePriv.$historicalDataConfiguration
|
|
251
242
|
});
|
|
252
243
|
uaAggregateFunctions = nodePriv.$historicalDataConfiguration.aggregateFunctions;
|
|
253
244
|
}
|
|
254
245
|
// verify that all aggregateFunctions are of type AggregateFunctionType
|
|
255
246
|
// ... to do
|
|
256
|
-
const referenceType =
|
|
247
|
+
const referenceType = resolveNodeId(ReferenceTypeIds.Organizes);
|
|
257
248
|
for (const nodeId of aggregateFunctions) {
|
|
258
249
|
uaAggregateFunctions?.addReference({
|
|
259
250
|
nodeId,
|
|
@@ -262,7 +253,7 @@ function installAggregateConfigurationOptions(node, options, aggregateFunctions)
|
|
|
262
253
|
});
|
|
263
254
|
}
|
|
264
255
|
}
|
|
265
|
-
function getAggregateConfiguration(node) {
|
|
256
|
+
export function getAggregateConfiguration(node) {
|
|
266
257
|
const nodePriv = node;
|
|
267
258
|
/* c8 ignore next */
|
|
268
259
|
if (!nodePriv.$historicalDataConfiguration) {
|
package/dist/aggregates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../source/aggregates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../source/aggregates.ts"],"names":[],"mappings":"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"}
|
package/dist/average.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { UAVariable } from "node-opcua-address-space";
|
|
2
2
|
import { DataValue } from "node-opcua-data-value";
|
|
3
3
|
export declare function getAverageData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
|
|
4
|
+
//# sourceMappingURL=average.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"average.d.ts","sourceRoot":"","sources":["../source/average.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA6DlD,wBAAgB,cAAc,CAC1B,IAAI,EAAE,UAAU,EAChB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,GAChE,IAAI,CAEN"}
|
package/dist/average.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
6
|
-
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
7
|
-
const common_js_1 = require("./common.js");
|
|
1
|
+
import { DataValue } from "node-opcua-data-value";
|
|
2
|
+
import { StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
3
|
+
import { DataType } from "node-opcua-variant";
|
|
4
|
+
import { getAggregateData } from "./common.js";
|
|
8
5
|
function calculateIntervalAverageValue(interval, _options) {
|
|
9
6
|
const indexStart = interval.index;
|
|
10
7
|
let statusCode;
|
|
@@ -14,7 +11,7 @@ function calculateIntervalAverageValue(interval, _options) {
|
|
|
14
11
|
const values = [];
|
|
15
12
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
16
13
|
const dataValue = interval.dataValues[i];
|
|
17
|
-
if (dataValue.statusCode.equals(
|
|
14
|
+
if (dataValue.statusCode.equals(StatusCodes.BadNoData)) {
|
|
18
15
|
_isPartial = true;
|
|
19
16
|
continue;
|
|
20
17
|
}
|
|
@@ -26,35 +23,35 @@ function calculateIntervalAverageValue(interval, _options) {
|
|
|
26
23
|
}
|
|
27
24
|
if (isRaw) {
|
|
28
25
|
if (hasBad) {
|
|
29
|
-
statusCode =
|
|
26
|
+
statusCode = StatusCodes.UncertainDataSubNormal;
|
|
30
27
|
}
|
|
31
28
|
else {
|
|
32
|
-
statusCode =
|
|
29
|
+
statusCode = StatusCodes.Good;
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
32
|
else if (hasBad) {
|
|
36
|
-
statusCode =
|
|
33
|
+
statusCode = StatusCode.makeStatusCode(StatusCodes.UncertainDataSubNormal, "HistorianCalculated");
|
|
37
34
|
}
|
|
38
35
|
else {
|
|
39
|
-
statusCode =
|
|
36
|
+
statusCode = StatusCode.makeStatusCode(StatusCodes.Good, "HistorianCalculated");
|
|
40
37
|
}
|
|
41
38
|
if (values.length === 0) {
|
|
42
|
-
return new
|
|
39
|
+
return new DataValue({
|
|
43
40
|
sourceTimestamp: interval.startTime,
|
|
44
|
-
statusCode:
|
|
41
|
+
statusCode: StatusCodes.BadNoData
|
|
45
42
|
});
|
|
46
43
|
}
|
|
47
44
|
const mean = values.reduce((p, c) => p + c, 0) / values.length;
|
|
48
|
-
return new
|
|
45
|
+
return new DataValue({
|
|
49
46
|
sourceTimestamp: interval.startTime,
|
|
50
47
|
statusCode: statusCode,
|
|
51
48
|
value: {
|
|
52
|
-
dataType:
|
|
49
|
+
dataType: DataType.Double,
|
|
53
50
|
value: mean
|
|
54
51
|
}
|
|
55
52
|
});
|
|
56
53
|
}
|
|
57
|
-
function getAverageData(node, processingInterval, startDate, endDate, callback) {
|
|
58
|
-
|
|
54
|
+
export function getAverageData(node, processingInterval, startDate, endDate, callback) {
|
|
55
|
+
getAggregateData(node, processingInterval, startDate, endDate, calculateIntervalAverageValue, callback);
|
|
59
56
|
}
|
|
60
57
|
//# sourceMappingURL=average.js.map
|
package/dist/average.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"average.js","sourceRoot":"","sources":["../source/average.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"average.js","sourceRoot":"","sources":["../source/average.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,SAAS,6BAA6B,CAAC,QAAkB,EAAE,QAAuC;IAC9F,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;IAClC,IAAI,UAAsB,CAAC;IAC3B,IAAI,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACb,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACb,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACR,IAAI,MAAM,EAAE,CAAC;YACT,UAAU,GAAG,WAAW,CAAC,sBAAsB,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;QAClC,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;IACtG,CAAC;SAAM,CAAC;QACJ,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,SAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,WAAW,CAAC,SAAS;SACpC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/D,OAAO,IAAI,SAAS,CAAC;QACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;QACnC,UAAU,EAAE,UAAwB;QACpC,KAAK,EAAE;YACH,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,KAAK,EAAE,IAAI;SACd;KACJ,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,CAAC,CAAC;AAC5G,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate_bad_good.d.ts","sourceRoot":"","sources":["../source/calculate_bad_good.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAe,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAE,KAAK,6BAA6B,EAAE,KAAK,QAAQ,EAAe,MAAM,eAAe,CAAC;AA2B/F,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,6BAA6B,GACvC;IACC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CAC1B,CAmGA"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
: s.isBad() || (options.treatUncertainAsBad && (0, interval_js_1.isUncertain)(s))
|
|
9
|
-
? node_opcua_status_code_1.StatusCodes.Bad
|
|
10
|
-
: node_opcua_status_code_1.StatusCodes.Good;
|
|
1
|
+
import { extraStatusCodeBits, StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
2
|
+
import { isUncertain } from "./interval.js";
|
|
3
|
+
const a = (s, options) => !s || s === StatusCodes.BadNoData
|
|
4
|
+
? StatusCodes.BadNoData
|
|
5
|
+
: s.isBad() || (options.treatUncertainAsBad && isUncertain(s))
|
|
6
|
+
? StatusCodes.Bad
|
|
7
|
+
: StatusCodes.Good;
|
|
11
8
|
function findLowBound(interval, options) {
|
|
12
9
|
const indexStart = interval.index;
|
|
13
10
|
const initialValue = interval.dataValues[indexStart];
|
|
@@ -15,12 +12,12 @@ function findLowBound(interval, options) {
|
|
|
15
12
|
return { previousStatus: initialValue.statusCode, previousTime: interval.startTime.getTime(), indexStart: indexStart + 1 };
|
|
16
13
|
}
|
|
17
14
|
const previousStatus = indexStart === 0 || !interval.dataValues[indexStart - 1]
|
|
18
|
-
?
|
|
15
|
+
? StatusCodes.BadNoData
|
|
19
16
|
: a(interval.dataValues[indexStart - 1].statusCode, options);
|
|
20
17
|
const previousTime = interval.startTime.getTime();
|
|
21
18
|
return { previousStatus, previousTime, indexStart };
|
|
22
19
|
}
|
|
23
|
-
function calculateBadAndGood(interval, options) {
|
|
20
|
+
export function calculateBadAndGood(interval, options) {
|
|
24
21
|
if (interval.count === 0) {
|
|
25
22
|
return {
|
|
26
23
|
durationGood: 0,
|
|
@@ -28,17 +25,17 @@ function calculateBadAndGood(interval, options) {
|
|
|
28
25
|
durationUnknown: 0,
|
|
29
26
|
percentBad: 0,
|
|
30
27
|
percentGood: 0,
|
|
31
|
-
statusCode:
|
|
28
|
+
statusCode: StatusCodes.BadNoData
|
|
32
29
|
};
|
|
33
30
|
}
|
|
34
31
|
let durationGood = 0;
|
|
35
32
|
let durationBad = 0;
|
|
36
33
|
let durationUnknown = 0;
|
|
37
|
-
let partialFlag = interval.isPartial ?
|
|
34
|
+
let partialFlag = interval.isPartial ? extraStatusCodeBits.HistorianPartial : 0;
|
|
38
35
|
let { previousStatus, previousTime, indexStart } = findLowBound(interval, options);
|
|
39
|
-
if (previousStatus ===
|
|
40
|
-
partialFlag =
|
|
41
|
-
previousStatus =
|
|
36
|
+
if (previousStatus === StatusCodes.BadNoData) {
|
|
37
|
+
partialFlag = extraStatusCodeBits.HistorianPartial;
|
|
38
|
+
previousStatus = StatusCodes.Bad;
|
|
42
39
|
}
|
|
43
40
|
let nbGood = 0;
|
|
44
41
|
let nbBad = 0;
|
|
@@ -49,15 +46,15 @@ function calculateBadAndGood(interval, options) {
|
|
|
49
46
|
if (dataValue.statusCode.isGoodish()) {
|
|
50
47
|
nbGood++;
|
|
51
48
|
}
|
|
52
|
-
if (
|
|
49
|
+
if (isUncertain(dataValue.statusCode)) {
|
|
53
50
|
nbUncertain++;
|
|
54
51
|
}
|
|
55
52
|
if (dataValue.statusCode.isBad()) {
|
|
56
53
|
nbBad++;
|
|
57
54
|
}
|
|
58
55
|
const currentStatus = a(dataValue.statusCode, options);
|
|
59
|
-
if (currentStatus ===
|
|
60
|
-
partialFlag =
|
|
56
|
+
if (currentStatus === StatusCodes.BadNoData) {
|
|
57
|
+
partialFlag = extraStatusCodeBits.HistorianPartial;
|
|
61
58
|
}
|
|
62
59
|
if (!dataValue.sourceTimestamp) {
|
|
63
60
|
throw new Error("calculateBadAndGood: dataValue is missing a sourceTimestamp");
|
|
@@ -66,14 +63,14 @@ function calculateBadAndGood(interval, options) {
|
|
|
66
63
|
// debugLog(" ", dataValue.sourceTimestamp?.toISOString(), dataValue.statusCode.toString(), dataValue.value.value);
|
|
67
64
|
if (currentStatus === previousStatus)
|
|
68
65
|
continue;
|
|
69
|
-
if (previousStatus ===
|
|
66
|
+
if (previousStatus === StatusCodes.Good) {
|
|
70
67
|
// if (isBadWithUncertain(currentStatus, options.treatUncertainAsBad)) {
|
|
71
68
|
// durationBad += currentTime - previousTime;
|
|
72
69
|
// } else {
|
|
73
70
|
durationGood += currentTime - previousTime;
|
|
74
71
|
// }
|
|
75
72
|
}
|
|
76
|
-
else if (previousStatus ===
|
|
73
|
+
else if (previousStatus === StatusCodes.BadNoData) {
|
|
77
74
|
durationUnknown += currentTime - previousTime;
|
|
78
75
|
}
|
|
79
76
|
else {
|
|
@@ -84,10 +81,10 @@ function calculateBadAndGood(interval, options) {
|
|
|
84
81
|
}
|
|
85
82
|
// final step
|
|
86
83
|
const currentTime = interval.getEffectiveEndTime();
|
|
87
|
-
if (previousStatus ===
|
|
84
|
+
if (previousStatus === StatusCodes.Good) {
|
|
88
85
|
durationGood += currentTime - previousTime;
|
|
89
86
|
}
|
|
90
|
-
else if (previousStatus ===
|
|
87
|
+
else if (previousStatus === StatusCodes.BadNoData) {
|
|
91
88
|
durationUnknown += currentTime - previousTime;
|
|
92
89
|
}
|
|
93
90
|
else {
|
|
@@ -111,7 +108,7 @@ function calculateBadAndGood(interval, options) {
|
|
|
111
108
|
// const statusCode = StatusCodes.Bad;
|
|
112
109
|
//return { durationGood, durationBad, durationUnknown, percentBad, percentGood, statusCode };
|
|
113
110
|
}
|
|
114
|
-
const statusCode =
|
|
111
|
+
const statusCode = StatusCode.makeStatusCode(StatusCodes.Good, extraStatusCodeBits.HistorianCalculated | partialFlag);
|
|
115
112
|
return { durationGood, durationBad, durationUnknown, percentBad, percentGood, statusCode };
|
|
116
113
|
}
|
|
117
114
|
//# sourceMappingURL=calculate_bad_good.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate_bad_good.js","sourceRoot":"","sources":["../source/calculate_bad_good.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calculate_bad_good.js","sourceRoot":"","sources":["../source/calculate_bad_good.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAqD,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/F,MAAM,CAAC,GAAG,CAAC,CAAyB,EAAE,OAAsC,EAAE,EAAE,CAC5E,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,SAAS;IAC7B,CAAC,CAAC,WAAW,CAAC,SAAS;IACvB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,WAAW,CAAC,GAAG;QACjB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;AAE7B,SAAS,YAAY,CACjB,QAAkB,EAClB,OAAsC;IAEtC,MAAM,UAAU,GAAW,QAAQ,CAAC,KAAK,CAAC;IAE1C,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,YAAY,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3E,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;IAC/H,CAAC;IACD,MAAM,cAAc,GAChB,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,WAAW,CAAC,SAAS;QACvB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAClD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,QAAkB,EAClB,OAAsC;IAStC,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACH,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,CAAC;YAClB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,WAAW,CAAC,SAAS;SACpC,CAAC;IACN,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,IAAI,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhF,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnF,IAAI,cAAc,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3C,WAAW,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QACnD,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,UAAU,IAAI,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;YACnC,MAAM,EAAE,CAAC;QACb,CAAC;QACD,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,WAAW,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,aAAa,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1C,WAAW,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAExD,mHAAmH;QAEnH,IAAI,aAAa,KAAK,cAAc;YAAE,SAAS;QAC/C,IAAI,cAAc,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YACtC,wEAAwE;YACxE,iDAAiD;YACjD,WAAW;YACX,YAAY,IAAI,WAAW,GAAG,YAAY,CAAC;YAC3C,IAAI;QACR,CAAC;aAAM,IAAI,cAAc,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAClD,eAAe,IAAI,WAAW,GAAG,YAAY,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,WAAW,IAAI,WAAW,GAAG,YAAY,CAAC;QAC9C,CAAC;QACD,cAAc,GAAG,aAAa,CAAC;QAC/B,YAAY,GAAG,WAAW,CAAC;IAC/B,CAAC;IAED,aAAa;IACb,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACnD,IAAI,cAAc,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;QACtC,YAAY,IAAI,WAAW,GAAG,YAAY,CAAC;IAC/C,CAAC;SAAM,IAAI,cAAc,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;QAClD,eAAe,IAAI,WAAW,GAAG,YAAY,CAAC;IAClD,CAAC;SAAM,CAAC;QACJ,WAAW,IAAI,WAAW,GAAG,YAAY,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACf,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,uEAAuE;YACvE,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,YAAY,GAAG,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IACD,MAAM,2BAA2B,GAAG,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAE/E,MAAM,WAAW,GAAG,CAAC,YAAY,GAAG,2BAA2B,CAAC,GAAG,GAAG,CAAC;IACvE,MAAM,UAAU,GAAG,CAAC,WAAW,GAAG,2BAA2B,CAAC,GAAG,GAAG,CAAC;IAErE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAE3F,IAAI,UAAU,IAAI,cAAc,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACtE,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM;QACxB,sCAAsC;QACtC,6FAA6F;IACjG,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC;IAEtH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC/F,CAAC"}
|
package/dist/common.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ import { DataValue } from "node-opcua-data-value";
|
|
|
6
6
|
import { type AggregateConfigurationOptionsEx, type Interval } from "./interval.js";
|
|
7
7
|
export declare function getAggregateData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, lambda: (interval: Interval, aggregateConfiguration: AggregateConfigurationOptionsEx) => DataValue, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
|
|
8
8
|
export declare function interpolateValue(dataValue1: DataValue, dataValue2: DataValue, date: Date): DataValue;
|
|
9
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAoE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE7H,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMlD,OAAO,EAAE,KAAK,+BAA+B,EAAe,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AA4CjG,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,EAChB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,+BAA+B,KAAK,SAAS,EAClG,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,GAChE,IAAI,CAmDN;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,CAiBpG"}
|
package/dist/common.js
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAggregateData = getAggregateData;
|
|
4
|
-
exports.interpolateValue = interpolateValue;
|
|
5
1
|
/**
|
|
6
2
|
* @module node-opca-aggregates
|
|
7
3
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
import { ContinuationPointManager, SessionContext } from "node-opcua-address-space";
|
|
5
|
+
import { NodeClass } from "node-opcua-data-model";
|
|
6
|
+
import { DataValue } from "node-opcua-data-value";
|
|
7
|
+
import { coerceNodeId } from "node-opcua-nodeid";
|
|
8
|
+
import { ReadRawModifiedDetails } from "node-opcua-service-history";
|
|
9
|
+
import { StatusCode } from "node-opcua-status-code";
|
|
10
|
+
import { getAggregateConfiguration } from "./aggregates.js";
|
|
11
|
+
import { getInterval } from "./interval.js";
|
|
16
12
|
/**
|
|
17
13
|
* @internal
|
|
18
14
|
*/
|
|
19
15
|
function processAggregateData(node, processingInterval, startDate, endDate, dataValues, lambda, callback) {
|
|
20
|
-
const aggregateConfiguration =
|
|
16
|
+
const aggregateConfiguration = getAggregateConfiguration(node);
|
|
21
17
|
const results = [];
|
|
22
18
|
const startTime = startDate.getTime();
|
|
23
19
|
const endTime = endDate.getTime();
|
|
@@ -25,7 +21,7 @@ function processAggregateData(node, processingInterval, startDate, endDate, data
|
|
|
25
21
|
for (let t = startTime; t < endTime; t += processingInterval) {
|
|
26
22
|
const sourceTimestamp = new Date();
|
|
27
23
|
sourceTimestamp.setTime(t);
|
|
28
|
-
const interval =
|
|
24
|
+
const interval = getInterval(sourceTimestamp, processingInterval, indexHint, dataValues);
|
|
29
25
|
const dataValue = lambda(interval, aggregateConfiguration);
|
|
30
26
|
/* c8 ignore next */
|
|
31
27
|
if (!dataValue?.sourceTimestamp) {
|
|
@@ -39,9 +35,9 @@ function processAggregateData(node, processingInterval, startDate, endDate, data
|
|
|
39
35
|
callback(null, results);
|
|
40
36
|
});
|
|
41
37
|
}
|
|
42
|
-
function getAggregateData(node, processingInterval, startDate, endDate, lambda, callback) {
|
|
38
|
+
export function getAggregateData(node, processingInterval, startDate, endDate, lambda, callback) {
|
|
43
39
|
/* c8 ignore next */
|
|
44
|
-
if (node.nodeClass !==
|
|
40
|
+
if (node.nodeClass !== NodeClass.Variable) {
|
|
45
41
|
callback(new Error("node must be UAVariable"));
|
|
46
42
|
return;
|
|
47
43
|
}
|
|
@@ -50,14 +46,14 @@ function getAggregateData(node, processingInterval, startDate, endDate, lambda,
|
|
|
50
46
|
callback(new Error("Invalid processing interval, shall be greater than 0"));
|
|
51
47
|
return;
|
|
52
48
|
}
|
|
53
|
-
const continuationPointManager = new
|
|
54
|
-
const context = new
|
|
49
|
+
const continuationPointManager = new ContinuationPointManager();
|
|
50
|
+
const context = new SessionContext({
|
|
55
51
|
session: {
|
|
56
52
|
continuationPointManager,
|
|
57
|
-
getSessionId: () =>
|
|
53
|
+
getSessionId: () => coerceNodeId("i=0")
|
|
58
54
|
}
|
|
59
55
|
});
|
|
60
|
-
const historyReadDetails = new
|
|
56
|
+
const historyReadDetails = new ReadRawModifiedDetails({
|
|
61
57
|
endTime: endDate,
|
|
62
58
|
startTime: startDate,
|
|
63
59
|
isReadModified: false,
|
|
@@ -80,7 +76,7 @@ function getAggregateData(node, processingInterval, startDate, endDate, lambda,
|
|
|
80
76
|
processAggregateData(node, processingInterval, startDate, endDate, dataValues, lambda, callback);
|
|
81
77
|
});
|
|
82
78
|
}
|
|
83
|
-
function interpolateValue(dataValue1, dataValue2, date) {
|
|
79
|
+
export function interpolateValue(dataValue1, dataValue2, date) {
|
|
84
80
|
if (!dataValue1.sourceTimestamp || !dataValue2.sourceTimestamp) {
|
|
85
81
|
throw new Error("interpolateValue: both dataValues must have a sourceTimestamp");
|
|
86
82
|
}
|
|
@@ -91,8 +87,8 @@ function interpolateValue(dataValue1, dataValue2, date) {
|
|
|
91
87
|
const coef2 = (t1 - t) / (t1 - t0);
|
|
92
88
|
const value = dataValue1.value.clone();
|
|
93
89
|
value.value = coef2 * dataValue1.value.value + coef1 * dataValue2.value.value;
|
|
94
|
-
const statusCode =
|
|
95
|
-
return new
|
|
90
|
+
const statusCode = StatusCode.makeStatusCode(dataValue1.statusCode, "HistorianInterpolated");
|
|
91
|
+
return new DataValue({
|
|
96
92
|
sourceTimestamp: date,
|
|
97
93
|
statusCode,
|
|
98
94
|
value
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":"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"}
|
package/dist/count.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { UAVariable } from "node-opcua-address-space";
|
|
2
2
|
import { DataValue } from "node-opcua-data-value";
|
|
3
3
|
export declare function getCountData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
|
|
4
|
+
//# sourceMappingURL=count.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../source/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAwFlD,wBAAgB,YAAY,CACxB,IAAI,EAAE,UAAU,EAChB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,GAChE,IAAI,CAEN"}
|