node-opcua-aggregates 2.76.2 → 2.78.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.
Files changed (43) hide show
  1. package/dist/aggregates.d.ts +19 -4
  2. package/dist/aggregates.js +95 -20
  3. package/dist/aggregates.js.map +1 -1
  4. package/dist/calculate_bad_good.d.ts +10 -0
  5. package/dist/calculate_bad_good.js +125 -0
  6. package/dist/calculate_bad_good.js.map +1 -0
  7. package/dist/common.js +1 -7
  8. package/dist/common.js.map +1 -1
  9. package/dist/count.d.ts +3 -0
  10. package/dist/count.js +87 -0
  11. package/dist/count.js.map +1 -0
  12. package/dist/duration_bad.d.ts +4 -0
  13. package/dist/duration_bad.js +33 -0
  14. package/dist/duration_bad.js.map +1 -0
  15. package/dist/duration_good.d.ts +4 -0
  16. package/dist/duration_good.js +33 -0
  17. package/dist/duration_good.js.map +1 -0
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +3 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/interval.d.ts +17 -1
  22. package/dist/interval.js +52 -5
  23. package/dist/interval.js.map +1 -1
  24. package/dist/percent_bad.d.ts +4 -0
  25. package/dist/percent_bad.js +26 -0
  26. package/dist/percent_bad.js.map +1 -0
  27. package/dist/percent_good.d.ts +7 -0
  28. package/dist/percent_good.js +50 -0
  29. package/dist/percent_good.js.map +1 -0
  30. package/dist/read_processed_details.js +44 -19
  31. package/dist/read_processed_details.js.map +1 -1
  32. package/package.json +18 -18
  33. package/source/aggregates.ts +118 -62
  34. package/source/calculate_bad_good.ts +148 -0
  35. package/source/common.ts +3 -9
  36. package/source/count.ts +98 -0
  37. package/source/duration_bad.ts +37 -0
  38. package/source/duration_good.ts +37 -0
  39. package/source/index.ts +7 -1
  40. package/source/interval.ts +53 -4
  41. package/source/percent_bad.ts +30 -0
  42. package/source/percent_good.ts +55 -0
  43. package/source/read_processed_details.ts +44 -23
@@ -1,7 +1,22 @@
1
- import { AddressSpace, BaseNode, UAObject, UAServerCapabilities, UAVariable } from "node-opcua-address-space";
1
+ /**
2
+ * @module node-opcua-aggregates
3
+ */
4
+ import { AggregateFunction } from "node-opcua-constants";
5
+ import { NodeId, NodeIdLike } from "node-opcua-nodeid";
6
+ import { AddressSpace, BaseNode, IAddressSpace, UAObject, UAServerCapabilities, UAVariable } from "node-opcua-address-space";
2
7
  import { AggregateConfigurationOptionsEx } from "./interval";
3
8
  export declare function createHistoryServerCapabilities(addressSpace: AddressSpace, serverCapabilities: UAServerCapabilities): UAObject;
4
- export declare type AggregateFunctionName = "AnnotationCount" | "Average" | "Count" | "Delta" | "DeltaBounds" | "DurationBad" | "DurationGood" | "DurationInStateNonZero" | "DurationInStateZero" | "EndBound" | "Interpolative" | "Maximum" | "Maximum2" | "MaximumActualTime" | "MaximumActualTime2" | "Minimum" | "Minimum2" | "MinimumActualTime" | "MinimumActualTime2" | "NumberOfTransitions" | "PercentBad" | "PercentGood" | "Range" | "Range2" | "StandardDeviationPopulation" | "StandardDeviationSample" | "Start" | "StartBound" | "TimeAverage" | "TimeAverage2" | "Total" | "Total2" | "VariancePopulation" | "VarianceSample" | "WorstQuality" | "WorstQuality2";
5
- export declare function addAggregateSupport(addressSpace: AddressSpace): void;
6
- export declare function installAggregateConfigurationOptions(node: UAVariable, options: AggregateConfigurationOptionsEx): void;
9
+ export declare function addAggregateFunctionSupport(addressSpace: AddressSpace, aggregateFunctionNodeId: NodeIdLike): void;
10
+ export declare function addAggregateStandardFunctionSupport(addressSpace: AddressSpace, functionName: AggregateFunction): void;
11
+ export declare function addAggregateSupport(addressSpace: AddressSpace, aggregatedFunctions?: AggregateFunction[]): void;
12
+ export declare function getAggregateFunctions(addressSpace: IAddressSpace): NodeId[];
13
+ /**
14
+ * Install aggregateConfiguration on an historizing variable
15
+ *
16
+ * @param node the variable on which to add the aggregateConfiguration.
17
+ * @param options the default AggregateConfigurationOptions.
18
+ * @param aggregateFunctions the aggregatedFunctions, if not specified the aggregatedFunction of ServerCapabilities.AggregatedFunction will be used.
19
+
20
+ */
21
+ export declare function installAggregateConfigurationOptions(node: UAVariable, options: AggregateConfigurationOptionsEx, aggregateFunctions?: NodeIdLike[]): void;
7
22
  export declare function getAggregateConfiguration(node: BaseNode): AggregateConfigurationOptionsEx;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAggregateConfiguration = exports.installAggregateConfigurationOptions = exports.addAggregateSupport = exports.createHistoryServerCapabilities = void 0;
3
+ exports.getAggregateConfiguration = exports.installAggregateConfigurationOptions = exports.getAggregateFunctions = exports.addAggregateSupport = exports.addAggregateStandardFunctionSupport = exports.addAggregateFunctionSupport = exports.createHistoryServerCapabilities = void 0;
4
4
  /**
5
5
  * @module node-opcua-aggregates
6
6
  */
@@ -8,6 +8,7 @@ const node_opcua_constants_1 = require("node-opcua-constants");
8
8
  const node_opcua_nodeid_1 = require("node-opcua-nodeid");
9
9
  const utils = require("node-opcua-utils");
10
10
  const node_opcua_variant_1 = require("node-opcua-variant");
11
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
11
12
  const read_processed_details_1 = require("./read_processed_details");
12
13
  // import { HistoryServerCapabilities } from "node-opcua-server";
13
14
  /*
@@ -100,11 +101,7 @@ function setHistoricalServerCapabilities(historyServerCapabilities, defaultPrope
100
101
  /// Standard nodeset2 says InsertAnnotationCapability ( without s )
101
102
  // xx setBoolean("InsertAnnotationsCapability");
102
103
  }
103
- function addAggregateFunctionSupport(addressSpace, functionName) {
104
- /* istanbul ignore next */
105
- if (!functionName) {
106
- throw new Error("Invalid function name");
107
- }
104
+ function addAggregateFunctionSupport(addressSpace, aggregateFunctionNodeId) {
108
105
  const serverCapabilities = addressSpace.rootFolder.objects.server.serverCapabilities;
109
106
  /* istanbul ignore next */
110
107
  if (!serverCapabilities.historyServerCapabilities) {
@@ -112,11 +109,18 @@ function addAggregateFunctionSupport(addressSpace, functionName) {
112
109
  }
113
110
  const aggregateFunctions = serverCapabilities.aggregateFunctions;
114
111
  const aggregateFunctionsInHist = serverCapabilities.historyServerCapabilities.aggregateFunctions;
115
- const functionNodeId = (0, node_opcua_nodeid_1.makeNodeId)(functionName);
116
- const functionNode = addressSpace.getNamespace(0).findNode(functionNodeId);
112
+ const functionNode = addressSpace.findNode(aggregateFunctionNodeId);
117
113
  /* istanbul ignore next */
118
114
  if (!functionNode) {
119
- throw new Error("Cannot find node " + functionName + " in addressSpace");
115
+ throw new Error("Cannot find node " + aggregateFunctionNodeId.toString() + " in addressSpace");
116
+ }
117
+ /* istanbul ignore next */
118
+ if (functionNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
119
+ throw new Error("Expecting an object Node");
120
+ }
121
+ /* istanbul ignore next */
122
+ if (!(0, node_opcua_nodeid_1.sameNodeId)(functionNode.typeDefinition, (0, node_opcua_nodeid_1.coerceNodeId)(node_opcua_constants_1.ObjectTypeIds.AggregateFunctionType))) {
123
+ throw new Error("Expecting an object with TypeDefinition AggregateFunctionType");
120
124
  }
121
125
  aggregateFunctions.addReference({
122
126
  nodeId: functionNode.nodeId,
@@ -127,7 +131,23 @@ function addAggregateFunctionSupport(addressSpace, functionName) {
127
131
  referenceType: "Organizes"
128
132
  });
129
133
  }
130
- function addAggregateSupport(addressSpace) {
134
+ exports.addAggregateFunctionSupport = addAggregateFunctionSupport;
135
+ function addAggregateStandardFunctionSupport(addressSpace, functionName) {
136
+ /* istanbul ignore next */
137
+ if (!functionName) {
138
+ throw new Error("Invalid function name");
139
+ }
140
+ const functionNodeId = (0, node_opcua_nodeid_1.makeNodeId)(functionName);
141
+ addAggregateFunctionSupport(addressSpace, functionNodeId);
142
+ }
143
+ exports.addAggregateStandardFunctionSupport = addAggregateStandardFunctionSupport;
144
+ function addAggregateSupport(addressSpace, aggregatedFunctions) {
145
+ aggregatedFunctions = aggregatedFunctions || [
146
+ node_opcua_constants_1.AggregateFunction.Interpolative,
147
+ node_opcua_constants_1.AggregateFunction.Minimum,
148
+ node_opcua_constants_1.AggregateFunction.Maximum,
149
+ node_opcua_constants_1.AggregateFunction.Average
150
+ ];
131
151
  const aggregateConfigurationType = addressSpace.getNamespace(0).findObjectType("AggregateConfigurationType");
132
152
  /* istanbul ignore next */
133
153
  if (!aggregateConfigurationType) {
@@ -152,31 +172,86 @@ function addAggregateSupport(addressSpace) {
152
172
  historyServerCapabilities = createHistoryServerCapabilities(addressSpace, serverCapabilities);
153
173
  }
154
174
  setHistoricalServerCapabilities(historyServerCapabilities, historicalCapabilitiesDefaultProperties);
155
- addAggregateFunctionSupport(addressSpace, node_opcua_constants_1.AggregateFunction.Interpolative);
156
- addAggregateFunctionSupport(addressSpace, node_opcua_constants_1.AggregateFunction.Minimum);
157
- addAggregateFunctionSupport(addressSpace, node_opcua_constants_1.AggregateFunction.Maximum);
158
- addAggregateFunctionSupport(addressSpace, node_opcua_constants_1.AggregateFunction.Average);
175
+ for (const f of aggregatedFunctions) {
176
+ addAggregateStandardFunctionSupport(addressSpace, f);
177
+ }
159
178
  const addressSpaceInternal = addressSpace;
160
179
  addressSpaceInternal._readProcessedDetails = read_processed_details_1.readProcessedDetails;
161
180
  }
162
181
  exports.addAggregateSupport = addAggregateSupport;
163
- function installAggregateConfigurationOptions(node, options) {
182
+ function getAggregateFunctions(addressSpace) {
183
+ const aggregateFunctionTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)(node_opcua_constants_1.ObjectTypeIds.AggregateFunctionType);
184
+ const aggregateFunctions = addressSpace.findNode(node_opcua_constants_1.ObjectIds.Server_ServerCapabilities_AggregateFunctions);
185
+ if (!aggregateFunctions) {
186
+ return [];
187
+ }
188
+ const referenceDescripitions = aggregateFunctions.browseNode({
189
+ referenceTypeId: node_opcua_constants_1.ReferenceTypeIds.HierarchicalReferences,
190
+ resultMask: 63,
191
+ nodeClassMask: node_opcua_data_model_1.NodeClassMask.Object,
192
+ browseDirection: node_opcua_data_model_1.BrowseDirection.Forward,
193
+ includeSubtypes: true
194
+ });
195
+ const aggregateFunctionsNodeIds = referenceDescripitions
196
+ .filter((a) => (0, node_opcua_nodeid_1.sameNodeId)(a.typeDefinition, aggregateFunctionTypeNodeId))
197
+ .map((a) => a.nodeId);
198
+ return aggregateFunctionsNodeIds;
199
+ }
200
+ exports.getAggregateFunctions = getAggregateFunctions;
201
+ /**
202
+ * Install aggregateConfiguration on an historizing variable
203
+ *
204
+ * @param node the variable on which to add the aggregateConfiguration.
205
+ * @param options the default AggregateConfigurationOptions.
206
+ * @param aggregateFunctions the aggregatedFunctions, if not specified the aggregatedFunction of ServerCapabilities.AggregatedFunction will be used.
207
+
208
+ */
209
+ function installAggregateConfigurationOptions(node, options, aggregateFunctions) {
164
210
  const nodePriv = node;
211
+ // istanbul ignore next
212
+ if (!nodePriv.historizing) {
213
+ throw new Error("variable.historizing is not set\n make sure addressSpace.installHistoricalDataNode(variable) has been called");
214
+ }
165
215
  const aggregateConfiguration = nodePriv.$historicalDataConfiguration.aggregateConfiguration;
166
- aggregateConfiguration.percentDataBad.setValueFromSource({ dataType: "Byte", value: options.percentDataBad });
167
- aggregateConfiguration.percentDataGood.setValueFromSource({ dataType: "Byte", value: options.percentDataGood });
216
+ const f = (a, defaultValue) => a === undefined ? defaultValue : a;
217
+ aggregateConfiguration.percentDataBad.setValueFromSource({ dataType: "Byte", value: f(options.percentDataBad, 100) });
218
+ aggregateConfiguration.percentDataGood.setValueFromSource({ dataType: "Byte", value: f(options.percentDataGood, 100) });
168
219
  aggregateConfiguration.treatUncertainAsBad.setValueFromSource({
169
220
  dataType: "Boolean",
170
- value: options.treatUncertainAsBad
221
+ value: f(options.treatUncertainAsBad, false)
171
222
  });
172
223
  aggregateConfiguration.useSlopedExtrapolation.setValueFromSource({
173
224
  dataType: "Boolean",
174
- value: options.useSlopedExtrapolation
225
+ value: f(options.useSlopedExtrapolation, false)
175
226
  });
176
227
  nodePriv.$historicalDataConfiguration.stepped.setValueFromSource({
177
228
  dataType: "Boolean",
178
- value: options.stepped
229
+ value: f(options.stepped, false)
179
230
  });
231
+ // https://reference.opcfoundation.org/v104/Core/docs/Part13/4.4/
232
+ // Exposing Supported Functions and Capabilities
233
+ if (!aggregateFunctions) {
234
+ aggregateFunctions = getAggregateFunctions(node.addressSpace);
235
+ }
236
+ let uaAggregateFunctions = nodePriv.$historicalDataConfiguration.aggregateFunctions;
237
+ if (!uaAggregateFunctions) {
238
+ const namespace = nodePriv.namespace;
239
+ uaAggregateFunctions = namespace.addObject({
240
+ browseName: (0, node_opcua_data_model_1.coerceQualifiedName)({ name: "AggregateFunctions", namespaceIndex: 0 }),
241
+ componentOf: nodePriv.$historicalDataConfiguration
242
+ });
243
+ uaAggregateFunctions = nodePriv.$historicalDataConfiguration.aggregateFunctions;
244
+ }
245
+ // verify that all aggregateFunctions are of type AggregateFunctionType
246
+ // ... to do
247
+ const referenceType = (0, node_opcua_nodeid_1.resolveNodeId)(node_opcua_constants_1.ReferenceTypeIds.Organizes);
248
+ for (const nodeId of aggregateFunctions) {
249
+ uaAggregateFunctions.addReference({
250
+ nodeId,
251
+ referenceType,
252
+ isForward: true
253
+ });
254
+ }
180
255
  }
181
256
  exports.installAggregateConfigurationOptions = installAggregateConfigurationOptions;
182
257
  function getAggregateConfiguration(node) {
@@ -1 +1 @@
1
- {"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../source/aggregates.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,+DAAyD;AACzD,yDAA+C;AAC/C,0CAA0C;AAC1C,2DAA8C;AAY9C,qEAAgE;AAEhE,iEAAiE;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,uCAAuC,CAAC,gCAAgC,GAAG;IAC7E,2BAA2B,EAAE,IAAI;IACjC,6BAA6B,EAAE,IAAI;IACnC,sBAAsB,EAAE,KAAK;IAC7B,qBAAqB,EAAE,KAAK;IAC5B,mBAAmB,EAAE,KAAK;IAC1B,0BAA0B,EAAE,KAAK;IACjC,oBAAoB,EAAE,KAAK;IAC3B,qBAAqB,EAAE,KAAK;IAC5B,mBAAmB,EAAE,CAAC;IACtB,oBAAoB,EAAE,CAAC;IACvB,qBAAqB,EAAE,KAAK;IAC5B,sBAAsB,EAAE,KAAK;IAC7B,oBAAoB,EAAE,KAAK;IAC3B,qBAAqB,EAAE,KAAK,CAAC,iCAAiC;CACjE,CAAC;AAEF,SAAgB,+BAA+B,CAAC,YAA0B,EAAE,kBAAwC;IAChH,0BAA0B;IAC1B,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,oBAAoB,EAAE;QACnE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KACpD;IAED,MAAM,6BAA6B,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,+BAA+B,CAAE,CAAC;IAEpH,0BAA0B;IAC1B,IAAI,CAAC,6BAA6B,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAChE;IACD,OAAO,6BAA6B,CAAC,WAAW,CAAC;QAC7C,UAAU,EAAE,2BAA2B;QACvC,WAAW,EAAE,kBAAkB;KAClC,CAAC,CAAC;AACP,CAAC;AAhBD,0EAgBC;AAED,SAAS,+BAA+B,CAAC,yBAA8B,EAAE,iBAAsB;IAC3F,SAAS,UAAU,CAAC,QAAgB;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEnD,0BAA0B;QAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE;YACrE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;SAC/C;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEhE,0BAA0B;QAC1B,IAAI,CAAC,IAAI,EAAE;YACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,QAAQ,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,6BAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,SAAS,SAAS,CAAC,QAAgB;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,0BAA0B;QAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAE;YAC7E,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;SAC/C;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAC1C,UAAU,CAAC,+BAA+B,CAAC,CAAC;IAE5C,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACjC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAElC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACnC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACpC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACnC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAClC,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACrC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACpC,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACrC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACpC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAEpC,0DAA0D;IAC1D,mEAAmE;IACnE,gDAAgD;AACpD,CAAC;AA2CD,SAAS,2BAA2B,CAAC,YAA0B,EAAE,YAAoB;IACjF,0BAA0B;IAC1B,IAAI,CAAC,YAAY,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC5C;IAED,MAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAsD,CAAC;IAEzH,0BAA0B;IAC1B,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;KAC3E;IAED,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC;IAEjE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;IAEjG,MAAM,cAAc,GAAG,IAAA,8BAAU,EAAC,YAAY,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAE3E,0BAA0B;IAC1B,IAAI,CAAC,YAAY,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,YAAY,GAAG,kBAAkB,CAAC,CAAC;KAC5E;IAED,kBAAkB,CAAC,YAAY,CAAC;QAC5B,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,aAAa,EAAE,WAAW;KAC7B,CAAC,CAAC;IACH,wBAAwB,CAAC,YAAY,CAAC;QAClC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,aAAa,EAAE,WAAW;KAC7B,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,mBAAmB,CAAC,YAA0B;IAC1D,MAAM,0BAA0B,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;IAE7G,0BAA0B;IAC1B,IAAI,CAAC,0BAA0B,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;KAC5E;IAED,MAAM,qBAAqB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAEnG,0BAA0B;IAC1B,IAAI,CAAC,qBAAqB,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACvE;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEtF,0BAA0B;IAC1B,IAAI,CAAC,YAAY,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAChE;IACD,mBAAmB;IAEnB,MAAM,kBAAkB,GAAG,YAAY,CAAC,cAAc,CAAC,oBAAoB,CAA0B,CAAC;IAEtG,sDAAsD;IACtD,IAAI,yBAAyB,GAAG,kBAAkB,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;IAE/F,0BAA0B;IAC1B,IAAI,CAAC,yBAAyB,EAAE;QAC5B,yBAAyB,GAAG,+BAA+B,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;KACjG;IAED,+BAA+B,CAAC,yBAAyB,EAAE,uCAAuC,CAAC,CAAC;IAEpG,2BAA2B,CAAC,YAAY,EAAE,wCAAiB,CAAC,aAAa,CAAC,CAAC;IAC3E,2BAA2B,CAAC,YAAY,EAAE,wCAAiB,CAAC,OAAO,CAAC,CAAC;IACrE,2BAA2B,CAAC,YAAY,EAAE,wCAAiB,CAAC,OAAO,CAAC,CAAC;IACrE,2BAA2B,CAAC,YAAY,EAAE,wCAAiB,CAAC,OAAO,CAAC,CAAC;IAErE,MAAM,oBAAoB,GAAG,YAA8C,CAAC;IAC5E,oBAAoB,CAAC,qBAAqB,GAAG,6CAAoB,CAAC;AACtE,CAAC;AA1CD,kDA0CC;AAED,SAAgB,oCAAoC,CAAC,IAAgB,EAAE,OAAwC;IAC3G,MAAM,QAAQ,GAAG,IAAW,CAAC;IAC7B,MAAM,sBAAsB,GAAG,QAAQ,CAAC,4BAA4B,CAAC,sBAAsB,CAAC;IAC5F,sBAAsB,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9G,sBAAsB,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAChH,sBAAsB,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;QAC1D,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,OAAO,CAAC,mBAAmB;KACrC,CAAC,CAAC;IACH,sBAAsB,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;QAC7D,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,OAAO,CAAC,sBAAsB;KACxC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC7D,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACP,CAAC;AAlBD,oFAkBC;AAED,SAAgB,yBAAyB,CAAC,IAAc;IACpD,MAAM,QAAQ,GAAG,IAAW,CAAC;IAE7B,0BAA0B;IAC1B,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACrC;IACD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,4BAA4B,CAAC,sBAAsB,CAAC;IAE5F,+DAA+D;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,4BAA4B,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IAEtF,OAAO;QACH,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK;QAC7E,eAAe,EAAE,sBAAsB,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK;QAC/E,OAAO;QACP,mBAAmB,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK;QACvF,+EAA+E;QAC/E,sBAAsB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK;KAChG,CAAC;AACN,CAAC;AApBD,8DAoBC"}
1
+ {"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../source/aggregates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { StatusCode } from "node-opcua-status-code";
2
+ import { Interval, AggregateConfigurationOptions } from "./interval";
3
+ export declare function calculateBadAndGood(interval: Interval, options: AggregateConfigurationOptions): {
4
+ durationGood: number;
5
+ durationBad: number;
6
+ durationUnknown: number;
7
+ percentBad: number;
8
+ percentGood: number;
9
+ statusCode: StatusCode;
10
+ };
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateBadAndGood = void 0;
4
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
5
+ const interval_1 = require("./interval");
6
+ // function isBadWithUncertain(statusCode: StatusCode, treatUncertainAsBad?: boolean): boolean {
7
+ // if (isGoodish(statusCode)) return false;
8
+ // if (isUncertain(statusCode)) {
9
+ // return treatUncertainAsBad || false;
10
+ // }
11
+ // return true;
12
+ // }
13
+ const a = (s, options) => !s || s === node_opcua_status_code_1.StatusCodes.BadNoData
14
+ ? node_opcua_status_code_1.StatusCodes.BadNoData
15
+ : (0, interval_1.isBad)(s) || (options.treatUncertainAsBad && (0, interval_1.isUncertain)(s))
16
+ ? node_opcua_status_code_1.StatusCodes.Bad
17
+ : node_opcua_status_code_1.StatusCodes.Good;
18
+ function findLowBound(interval, options) {
19
+ const indexStart = interval.index;
20
+ const initialValue = interval.dataValues[indexStart];
21
+ if (initialValue.sourceTimestamp.getTime() === interval.startTime.getTime()) {
22
+ return { previousStatus: initialValue.statusCode, previousTime: interval.startTime.getTime(), indexStart: indexStart + 1 };
23
+ }
24
+ const previousStatus = indexStart === 0 || !interval.dataValues[indexStart - 1]
25
+ ? node_opcua_status_code_1.StatusCodes.BadNoData
26
+ : a(interval.dataValues[indexStart - 1].statusCode, options);
27
+ const previousTime = interval.startTime.getTime();
28
+ return { previousStatus, previousTime, indexStart };
29
+ }
30
+ // eslint-disable-next-line max-statements, complexity
31
+ function calculateBadAndGood(interval, options) {
32
+ if (interval.count === 0) {
33
+ return {
34
+ durationGood: 0,
35
+ durationBad: 0,
36
+ durationUnknown: 0,
37
+ percentBad: 0,
38
+ percentGood: 0,
39
+ statusCode: node_opcua_status_code_1.StatusCodes.BadNoData
40
+ };
41
+ }
42
+ let durationGood = 0;
43
+ let durationBad = 0;
44
+ let durationUnknown = 0;
45
+ let partialFlag = interval.isPartial ? node_opcua_status_code_1.extraStatusCodeBits.HistorianPartial : 0;
46
+ let { previousStatus, previousTime, indexStart } = findLowBound(interval, options);
47
+ if (previousStatus === node_opcua_status_code_1.StatusCodes.BadNoData) {
48
+ partialFlag = node_opcua_status_code_1.extraStatusCodeBits.HistorianPartial;
49
+ previousStatus = node_opcua_status_code_1.StatusCodes.Bad;
50
+ }
51
+ let nbGood = 0;
52
+ let nbBad = 0;
53
+ let nbUncertain = 0;
54
+ indexStart += 0;
55
+ for (let i = indexStart; i < interval.index + interval.count; i++) {
56
+ const dataValue = interval.dataValues[i];
57
+ if ((0, interval_1.isGoodish)(dataValue.statusCode)) {
58
+ nbGood++;
59
+ }
60
+ if ((0, interval_1.isUncertain)(dataValue.statusCode)) {
61
+ nbUncertain++;
62
+ }
63
+ if ((0, interval_1.isBad)(dataValue.statusCode)) {
64
+ nbBad++;
65
+ }
66
+ const currentStatus = a(dataValue.statusCode, options);
67
+ if (currentStatus === node_opcua_status_code_1.StatusCodes.BadNoData) {
68
+ partialFlag = node_opcua_status_code_1.extraStatusCodeBits.HistorianPartial;
69
+ }
70
+ const currentTime = dataValue.sourceTimestamp.getTime();
71
+ // console.log(" ", dataValue.sourceTimestamp?.toISOString(), dataValue.statusCode.toString(), dataValue.value.value);
72
+ if (currentStatus === previousStatus)
73
+ continue;
74
+ if (previousStatus === node_opcua_status_code_1.StatusCodes.Good) {
75
+ // if (isBadWithUncertain(currentStatus, options.treatUncertainAsBad)) {
76
+ // durationBad += currentTime - previousTime;
77
+ // } else {
78
+ durationGood += currentTime - previousTime;
79
+ // }
80
+ }
81
+ else if (previousStatus === node_opcua_status_code_1.StatusCodes.BadNoData) {
82
+ durationUnknown += currentTime - previousTime;
83
+ }
84
+ else {
85
+ durationBad += currentTime - previousTime;
86
+ }
87
+ previousStatus = currentStatus;
88
+ previousTime = currentTime;
89
+ }
90
+ // final step
91
+ const currentTime = interval.getEffectiveEndTime();
92
+ if (previousStatus === node_opcua_status_code_1.StatusCodes.Good) {
93
+ durationGood += currentTime - previousTime;
94
+ }
95
+ else if (previousStatus === node_opcua_status_code_1.StatusCodes.BadNoData) {
96
+ durationUnknown += currentTime - previousTime;
97
+ }
98
+ else {
99
+ durationBad += currentTime - previousTime;
100
+ }
101
+ if (nbGood === 0) {
102
+ if (nbBad > 0) {
103
+ // we need at lest a Good Status in the intervale to be good & no bad !
104
+ durationGood = -1;
105
+ }
106
+ else {
107
+ durationGood = 0;
108
+ }
109
+ }
110
+ const effectiveProcessingInterval = currentTime - interval.startTime.getTime();
111
+ const percentGood = (durationGood / effectiveProcessingInterval) * 100;
112
+ const percentBad = (durationBad / effectiveProcessingInterval) * 100;
113
+ let percentDataGood = options.percentDataGood === undefined ? 100 : options.percentDataGood;
114
+ const percentDataBad = options.percentDataBad === undefined ? 100 : options.percentDataBad;
115
+ if (percentBad >= percentDataBad || (nbGood === 0 && nbUncertain === 0)) {
116
+ durationGood = 0; // BAD
117
+ percentDataGood = -1;
118
+ // const statusCode = StatusCodes.Bad;
119
+ //return { durationGood, durationBad, durationUnknown, percentBad, percentGood, statusCode };
120
+ }
121
+ const statusCode = node_opcua_status_code_1.StatusCode.makeStatusCode(node_opcua_status_code_1.StatusCodes.Good, node_opcua_status_code_1.extraStatusCodeBits.HistorianCalculated | partialFlag);
122
+ return { durationGood, durationBad, durationUnknown, percentBad, percentGood, statusCode };
123
+ }
124
+ exports.calculateBadAndGood = calculateBadAndGood;
125
+ //# sourceMappingURL=calculate_bad_good.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate_bad_good.js","sourceRoot":"","sources":["../source/calculate_bad_good.ts"],"names":[],"mappings":"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"}
package/dist/common.js CHANGED
@@ -14,13 +14,6 @@ const aggregates_1 = require("./aggregates");
14
14
  const interval_1 = require("./interval");
15
15
  /**
16
16
  * @internal
17
- * @param node
18
- * @param processingInterval
19
- * @param startDate
20
- * @param endDate
21
- * @param dataValues
22
- * @param lambda
23
- * @param callback
24
17
  */
25
18
  function processAggregateData(node, processingInterval, startDate, endDate, dataValues, lambda, callback) {
26
19
  const aggregateConfiguration = (0, aggregates_1.getAggregateConfiguration)(node);
@@ -39,6 +32,7 @@ function processAggregateData(node, processingInterval, startDate, endDate, data
39
32
  throw Error("invalid DataValue");
40
33
  }
41
34
  results.push(dataValue);
35
+ // console.log(" => ", dataValue.sourceTimestamp.toISOString(), dataValue.statusCode.toString(), dataValue.value.value);
42
36
  }
43
37
  setImmediate(() => {
44
38
  callback(null, results);
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { UAVariable } from "node-opcua-address-space";
2
+ import { DataValue } from "node-opcua-data-value";
3
+ export declare function getCountData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
package/dist/count.js ADDED
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCountData = void 0;
4
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
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_1 = require("./common");
8
+ const interval_1 = require("./interval");
9
+ /**
10
+ * The Count Aggregate retrieves a count of all the raw values within an interval.
11
+ * If one or more raw values are non-Good, they are not included in the count, and the Aggregate
12
+ * StatusCode is determined using the StatusCode Calculation for non-time based Aggregates.
13
+ * If no Good data exists for an interval, the count is zero.
14
+ */
15
+ function calculateCountValue(interval, options) {
16
+ const indexStart = interval.index;
17
+ let statusCode = node_opcua_status_code_1.StatusCodes.Good;
18
+ let isPartial = interval.isPartial;
19
+ let nbBad = 0;
20
+ let nbGood = 0;
21
+ let nbUncertain = 0;
22
+ let badDuration = 0;
23
+ let uncertainDuration = 0;
24
+ let goodDuration = 0;
25
+ for (let i = indexStart; i < indexStart + interval.count; i++) {
26
+ const dataValue = interval.dataValues[i];
27
+ if (dataValue.statusCode === node_opcua_status_code_1.StatusCodes.BadNoData) {
28
+ isPartial = true;
29
+ continue;
30
+ }
31
+ const regionDuration = interval.regionDuration(i);
32
+ if ((0, interval_1.isBad)(dataValue.statusCode)) {
33
+ nbBad++;
34
+ badDuration += regionDuration;
35
+ }
36
+ else if ((0, interval_1.isUncertain)(dataValue.statusCode)) {
37
+ nbUncertain++;
38
+ uncertainDuration += regionDuration;
39
+ }
40
+ else if ((0, interval_1.isGoodish)(dataValue.statusCode)) {
41
+ nbGood++;
42
+ goodDuration += regionDuration;
43
+ }
44
+ }
45
+ const partialFlag = isPartial ? node_opcua_status_code_1.extraStatusCodeBits.HistorianPartial : 0;
46
+ // console.log(" ", goodDuration, uncertainDuration, badDuration);
47
+ if (nbBad > 0) {
48
+ const duration = interval.duration();
49
+ if (options.treatUncertainAsBad) {
50
+ badDuration += uncertainDuration;
51
+ }
52
+ const actualPercentDataBad = (badDuration / duration) * 100.0;
53
+ const percentDataBad = options.percentDataBad === undefined ? 100 : options.percentDataBad;
54
+ if (actualPercentDataBad >= percentDataBad) {
55
+ return new node_opcua_data_value_1.DataValue({
56
+ sourceTimestamp: interval.startTime,
57
+ statusCode: node_opcua_status_code_1.StatusCodes.Bad
58
+ });
59
+ }
60
+ }
61
+ if (nbUncertain > 0 || nbBad > 0) {
62
+ statusCode = node_opcua_status_code_1.StatusCode.makeStatusCode(node_opcua_status_code_1.StatusCodes.UncertainDataSubNormal, node_opcua_status_code_1.extraStatusCodeBits.HistorianCalculated | partialFlag);
63
+ }
64
+ else {
65
+ statusCode = node_opcua_status_code_1.StatusCode.makeStatusCode(node_opcua_status_code_1.StatusCodes.Good, node_opcua_status_code_1.extraStatusCodeBits.HistorianCalculated | partialFlag);
66
+ }
67
+ if (nbUncertain === 0 && nbGood === 0) {
68
+ statusCode = node_opcua_status_code_1.StatusCodes.BadNoData;
69
+ return new node_opcua_data_value_1.DataValue({
70
+ sourceTimestamp: interval.startTime,
71
+ statusCode: statusCode
72
+ });
73
+ }
74
+ return new node_opcua_data_value_1.DataValue({
75
+ sourceTimestamp: interval.startTime,
76
+ statusCode: statusCode,
77
+ value: {
78
+ dataType: node_opcua_variant_1.DataType.UInt32,
79
+ value: nbGood
80
+ }
81
+ });
82
+ }
83
+ function getCountData(node, processingInterval, startDate, endDate, callback) {
84
+ (0, common_1.getAggregateData)(node, processingInterval, startDate, endDate, calculateCountValue, callback);
85
+ }
86
+ exports.getCountData = getCountData;
87
+ //# sourceMappingURL=count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count.js","sourceRoot":"","sources":["../source/count.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { UAVariable } from "node-opcua-address-space";
2
+ import { DataValue } from "node-opcua-data-value";
3
+ /**Retrieve the percentage of data (0 to 100) in the interval which has Bad StatusCode. */
4
+ export declare function getDurationBadData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDurationBadData = void 0;
4
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
5
+ const node_opcua_variant_1 = require("node-opcua-variant");
6
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
7
+ const common_1 = require("./common");
8
+ const interval_1 = require("./interval");
9
+ const calculate_bad_good_1 = require("./calculate_bad_good");
10
+ function calculateDurationBad(interval, options) {
11
+ const { durationBad, durationUnknown, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
12
+ if (durationUnknown > 0 && durationBad === 0) {
13
+ return new node_opcua_data_value_1.DataValue({
14
+ sourceTimestamp: interval.startTime,
15
+ statusCode: node_opcua_status_code_1.StatusCodes.Bad
16
+ });
17
+ }
18
+ const value = durationBad;
19
+ if ((0, interval_1.isGoodish)(statusCode)) {
20
+ return new node_opcua_data_value_1.DataValue({
21
+ sourceTimestamp: interval.startTime,
22
+ statusCode,
23
+ value: { dataType: node_opcua_variant_1.DataType.Double, value }
24
+ });
25
+ }
26
+ return new node_opcua_data_value_1.DataValue({ sourceTimestamp: interval.startTime, statusCode, value: { dataType: node_opcua_variant_1.DataType.Null } });
27
+ }
28
+ /**Retrieve the percentage of data (0 to 100) in the interval which has Bad StatusCode. */
29
+ function getDurationBadData(node, processingInterval, startDate, endDate, callback) {
30
+ (0, common_1.getAggregateData)(node, processingInterval, startDate, endDate, calculateDurationBad, callback);
31
+ }
32
+ exports.getDurationBadData = getDurationBadData;
33
+ //# sourceMappingURL=duration_bad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration_bad.js","sourceRoot":"","sources":["../source/duration_bad.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAqD;AAErD,qCAA4C;AAC5C,yCAAgF;AAChF,6DAA2D;AAE3D,SAAS,oBAAoB,CAAC,QAAkB,EAAE,OAAsC;IACpF,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAA,wCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5F,IAAI,eAAe,GAAG,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;QAC1C,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,oCAAW,CAAC,GAAG;SAC9B,CAAC,CAAC;KACN;IACD,MAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,IAAA,oBAAS,EAAC,UAAU,CAAC,EAAE;QACvB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU;YACV,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;SAC9C,CAAC,CAAC;KACN;IACD,OAAO,IAAI,iCAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClH,CAAC;AACD,0FAA0F;AAC1F,SAAgB,kBAAkB,CAC9B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AACnG,CAAC;AARD,gDAQC"}
@@ -0,0 +1,4 @@
1
+ import { UAVariable } from "node-opcua-address-space";
2
+ import { DataValue } from "node-opcua-data-value";
3
+ /**Retrieve the percentage of data (0 to 100) in the interval which has Bad StatusCode. */
4
+ export declare function getDurationGoodData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDurationGoodData = void 0;
4
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
5
+ const node_opcua_variant_1 = require("node-opcua-variant");
6
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
7
+ const common_1 = require("./common");
8
+ const interval_1 = require("./interval");
9
+ const calculate_bad_good_1 = require("./calculate_bad_good");
10
+ function calculateDurationGood(interval, options) {
11
+ const { durationGood, durationUnknown, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
12
+ if (durationUnknown > 0 && durationGood === 0) {
13
+ return new node_opcua_data_value_1.DataValue({
14
+ sourceTimestamp: interval.startTime,
15
+ statusCode: node_opcua_status_code_1.StatusCodes.Bad
16
+ });
17
+ }
18
+ const value = durationGood;
19
+ if ((0, interval_1.isGoodish)(statusCode)) {
20
+ return new node_opcua_data_value_1.DataValue({
21
+ sourceTimestamp: interval.startTime,
22
+ statusCode,
23
+ value: { dataType: node_opcua_variant_1.DataType.Double, value }
24
+ });
25
+ }
26
+ return new node_opcua_data_value_1.DataValue({ sourceTimestamp: interval.startTime, statusCode, value: { dataType: node_opcua_variant_1.DataType.Null } });
27
+ }
28
+ /**Retrieve the percentage of data (0 to 100) in the interval which has Bad StatusCode. */
29
+ function getDurationGoodData(node, processingInterval, startDate, endDate, callback) {
30
+ (0, common_1.getAggregateData)(node, processingInterval, startDate, endDate, calculateDurationGood, callback);
31
+ }
32
+ exports.getDurationGoodData = getDurationGoodData;
33
+ //# sourceMappingURL=duration_good.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration_good.js","sourceRoot":"","sources":["../source/duration_good.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAqD;AAErD,qCAA4C;AAC5C,yCAAgF;AAChF,6DAA2D;AAE3D,SAAS,qBAAqB,CAAC,QAAkB,EAAE,OAAsC;IACrF,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAA,wCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAI,eAAe,GAAC,CAAC,IAAK,YAAY,KAAI,CAAC,EAAE;QACzC,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,oCAAW,CAAC,GAAG;SAC9B,CAAC,CAAC;KACN;IACD,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,IAAI,IAAA,oBAAS,EAAC,UAAU,CAAC,EAAE;QACvB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU;YACV,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;SAC9C,CAAC,CAAC;KACN;IACD,OAAO,IAAI,iCAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClH,CAAC;AACD,0FAA0F;AAC1F,SAAgB,mBAAmB,CAC/B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AACpG,CAAC;AARD,kDAQC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module node-opca-aggregates
3
3
  */
4
- export { addAggregateSupport, installAggregateConfigurationOptions, getAggregateConfiguration } from "./aggregates";
4
+ export { addAggregateSupport, installAggregateConfigurationOptions, getAggregateConfiguration, addAggregateStandardFunctionSupport, addAggregateFunctionSupport } from "./aggregates";
5
5
  export * from "./interpolate";
6
6
  export * from "./minmax";
7
7
  export * from "./interval";