attributeKeys.map((attr) => ({ nodeId: node.id, attributeId: opcua.AttributeIds[attr] }))
/** * Disconnect the OPC UA client and close session if used * @param {*} callback */ var _disconnect = function (callback) { if (!the_session) { client.disconnect(function (err) { callback(err); }); } else { the_session.close(function () { client.disconnect(function (err) { callback(err); }); }); } }
/** * Start the monitor by subsribe the Tags to check if value change * samplingInterval = 1000 msec. * @param {*} callback */ var _startMonitor = function (callback) { if (the_session && the_subscription) { for (var id in data.tags) { var nodeId = id; var monitoredItem = the_subscription.monitor( { nodeId: nodeId, attributeId: opcua.AttributeIds.Value }, { samplingInterval: 1000, discardOldest: true, queueSize: 1 }, opcua.read_service.TimestampsToReturn.Both, ); monitoredItem.on('changed', _monitorcallback(nodeId)); } callback(true); } else { callback(false); } }
/** * Convert value from string depending of type * @param {*} type * @param {*} value */ var _toValue = function (type, value) { switch (type) { case opcua.DataType.Boolean: if (value.toLowerCase() === 'true' || value === '1') { return true; } return false; case opcua.DataType.SByte: case opcua.DataType.Byte: case opcua.DataType.Int16: case opcua.DataType.UInt16: case opcua.DataType.Int32: case opcua.DataType.UInt3: case opcua.DataType.Int64: case opcua.DataType.UInt64: return parseInt(value); case opcua.DataType.Float: case opcua.DataType.Double: return parseFloat(value); default: return value; } }
return new Promise(function (resolve, reject) { let opts = { connectionStrategy: { maxRetry: 1 } }; let client = new opcua.OPCUAClient(opts); try { client.connect(endpointUrl, function (err) { if (err) { reject('getendpoints-connect-error: ' + err.message); } else { const endpoints = client.getEndpoints().then(endpoints => { const reducedEndpoints = endpoints.map(endpoint => ({ endpointUrl: endpoint.endpointUrl, securityMode: endpoint.securityMode.toString(), securityPolicy: endpoint.securityPolicyUri.toString(), })); resolve( reducedEndpoints); client.disconnect(); }, reason => { reject('getendpoints-error: ' + reason); client.disconnect(); });
Object.keys(opcua.AttributeIds).filter((x) => x === 'DataType' || x === 'AccessLevel' || x === 'UserAccessLevel')
return opcua.DataType.Boolean; } else if (type === 'SByte') { return opcua.DataType.SByte; } else if (type === 'Byte') { return opcua.DataType.Byte; } else if (type === 'Int16') { return opcua.DataType.Int16; } else if (type === 'UInt16') { return opcua.DataType.UInt16; } else if (type === 'Int32') { return opcua.DataType.Int32; } else if (type === 'UInt32') { return opcua.DataType.UInt32; } else if (type === 'Int64') { return opcua.DataType.Int64; } else if (type === 'UInt64') { return opcua.DataType.UInt64; } else if (type === 'Float') { return opcua.DataType.Float; } else if (type === 'Double') { return opcua.DataType.Double; } else if (type === 'String') { return opcua.DataType.String; } else if (type === 'DateTime') { return opcua.DataType.DateTime; } else if (type === 'Guid') { return opcua.DataType.Guid; } else if (type === 'ByteString') { return opcua.DataType.ByteString;
var browseNextRequest = new opcua.browse_service.BrowseNextRequest({ continuationPoints: [contipoint] });
case opcua.AttributeIds.DataType: let dtype = opcua.DataType[dataValue.value.value.value]; return { attribute: dtype }; case opcua.AttributeIds.UserAccessLevel: case opcua.AttributeIds.AccessLevel: if (!dataValue.value.value) { return null; let rlev = opcua.AccessLevelFlag[dataValue.value.value & 1]; let wlev = opcua.AccessLevelFlag[dataValue.value.value & 2]; let lev = ''; if (rlev) {
client = new opcua.OPCUAClient(opts); client.connect(endpoint, function (err) { if (err) { _clearVarsValue(); userIdentityInfo['password'] = property.pwd; client.createSession(userIdentityInfo, function (err, session) { if (err) { _clearVarsValue(); connected = false; reject(); client.disconnect(function () { }); } else { logger.info(data.name + ': connected!');