node-opcua-client
Version:
pure nodejs OPCUA SDK - module client
99 lines • 4.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.readHistoryServerCapabilities = readHistoryServerCapabilities;
/**
* @module node-opcua-client
*/
const node_opcua_assert_1 = require("node-opcua-assert");
const node_opcua_constants_1 = require("node-opcua-constants");
const node_opcua_data_model_1 = require("node-opcua-data-model");
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
const node_opcua_service_translate_browse_path_1 = require("node-opcua-service-translate-browse-path");
const node_opcua_utils_1 = require("node-opcua-utils");
function readHistoryServerCapabilities(session, callback) {
if (!callback) {
return new Promise((resolve, reject) => {
readHistoryServerCapabilities(session, (err, capabilities) => {
if (err) {
return reject(err);
}
resolve(capabilities);
});
});
}
// display HistoryCapabilities of server
const browsePath = (0, node_opcua_service_translate_browse_path_1.makeBrowsePath)(node_opcua_constants_1.ObjectIds.ObjectsFolder, "/Server/ServerCapabilities.HistoryServerCapabilities");
session.translateBrowsePath(browsePath, (err, result) => {
if (err) {
return callback(err);
}
/* c8 ignore next */
if (!result) {
return callback(new Error("Internal Error"));
}
if (result.statusCode.isNotGood()) {
return callback(new Error("StatusCode = " + result.statusCode.toString()));
}
result.targets = result.targets || [];
const historyServerCapabilitiesNodeId = result.targets[0].targetId;
// (should be ns=0;i=11192)
(0, node_opcua_assert_1.assert)(historyServerCapabilitiesNodeId.toString() === "ns=0;i=11192");
// -------------------------
const properties = [
"AccessHistoryDataCapability",
"AccessHistoryEventsCapability",
"DeleteAtTimeCapability",
"DeleteRawCapability",
"DeleteEventCapability",
"InsertAnnotationCapability",
"InsertDataCapability",
"InsertEventCapability",
"ReplaceDataCapability",
"ReplaceEventCapability",
"UpdateDataCapability",
"UpdateEventCapability",
"MaxReturnDataValues",
"MaxReturnEventValues",
"AggregateFunctions/AnnotationCount",
"AggregateFunctions/Average",
"AggregateFunctions/Count",
"AggregateFunctions/Delta",
"AggregateFunctions/DeltaBounds",
"AggregateFunctions/DurationBad",
"AggregateFunctions/DurationGood",
"AggregateFunctions/DurationStateNonZero"
// etc....
];
const browsePaths = properties.map((prop) => (0, node_opcua_service_translate_browse_path_1.makeBrowsePath)(historyServerCapabilitiesNodeId, "." + prop));
session.translateBrowsePath(browsePaths, (innerErr, results) => {
if (innerErr) {
return callback(innerErr);
}
/* c8 ignore next */
if (!results) {
return callback(new Error("Internal Error"));
}
const nodeIds = results.map((innerResult) => innerResult.statusCode.isGood() && innerResult.targets ? innerResult.targets[0].targetId : new node_opcua_nodeid_1.NodeId());
const nodesToRead = nodeIds.map((nodeId) => ({
attributeId: node_opcua_data_model_1.AttributeIds.Value,
nodeId /*: coerceNodeId(nodeId)*/
}));
const data = {};
session.read(nodesToRead, (err2, dataValues) => {
if (err2) {
return callback(err2);
}
/* c8 ignore next */
if (!dataValues) {
return callback(new Error("Internal Error"));
}
for (let i = 0; i < dataValues.length; i++) {
const propName = (0, node_opcua_utils_1.lowerFirstLetter)(properties[i]);
data[propName] = dataValues[i].value;
}
callback(null, data);
});
});
});
}
//# sourceMappingURL=read_history_server_capabilities.js.map