@things-factory/integration-opc 6.2.177 → 6.2.178
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-server/engine/connector/index.d.ts +2 -0
- package/dist-server/engine/connector/opc-ua-server.d.ts +11 -0
- package/dist-server/engine/connector/opc-ua-server.js +3 -3
- package/dist-server/engine/connector/opc-ua-server.js.map +1 -1
- package/dist-server/engine/connector/opc-ua.d.ts +13 -0
- package/dist-server/engine/connector/opc-ua.js.map +1 -1
- package/dist-server/engine/index.d.ts +2 -0
- package/dist-server/engine/task/index.d.ts +4 -0
- package/dist-server/engine/task/opc-ua-read.d.ts +1 -0
- package/dist-server/engine/task/opc-ua-read.js.map +1 -1
- package/dist-server/engine/task/opc-ua-start-monitor.d.ts +1 -0
- package/dist-server/engine/task/opc-ua-start-monitor.js.map +1 -1
- package/dist-server/engine/task/opc-ua-stop-monitor.d.ts +1 -0
- package/dist-server/engine/task/opc-ua-stop-monitor.js.map +1 -1
- package/dist-server/engine/task/opc-ua-write.d.ts +1 -0
- package/dist-server/engine/task/opc-ua-write.js.map +1 -1
- package/dist-server/engine/task/utils.d.ts +28 -0
- package/dist-server/index.d.ts +2 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Connector, Connection } from '@things-factory/integration-base';
|
|
2
|
+
export declare class OPCUAServerConnector implements Connector {
|
|
3
|
+
ready(connectionConfigs: any): Promise<void>;
|
|
4
|
+
connect(config: any): Promise<void>;
|
|
5
|
+
disconnect(connection: Connection): Promise<void>;
|
|
6
|
+
get parameterSpec(): {
|
|
7
|
+
type: string;
|
|
8
|
+
name: string;
|
|
9
|
+
label: string;
|
|
10
|
+
}[];
|
|
11
|
+
}
|
|
@@ -49,10 +49,10 @@ class OPCUAServerConnector {
|
|
|
49
49
|
let variable2 = 10.0;
|
|
50
50
|
namespace.addVariable({
|
|
51
51
|
componentOf: device,
|
|
52
|
-
nodeId: 'ns=1;b=1020FFAA',
|
|
52
|
+
nodeId: 'ns=1;b=1020FFAA', // some opaque NodeId in namespace 4
|
|
53
53
|
browseName: 'MyVariable2',
|
|
54
54
|
dataType: 'Double',
|
|
55
|
-
minimumSamplingInterval: 1234,
|
|
55
|
+
minimumSamplingInterval: 1234, // we need to specify a minimumSamplingInterval when using a getter
|
|
56
56
|
value: {
|
|
57
57
|
get: () => new node_opcua_1.Variant({ dataType: node_opcua_1.DataType.Double, value: variable2 }),
|
|
58
58
|
set: variant => {
|
|
@@ -73,7 +73,7 @@ class OPCUAServerConnector {
|
|
|
73
73
|
}
|
|
74
74
|
namespace.addVariable({
|
|
75
75
|
componentOf: device,
|
|
76
|
-
nodeId: 's=free_memory',
|
|
76
|
+
nodeId: 's=free_memory', // a string nodeID
|
|
77
77
|
browseName: 'FreeMemory',
|
|
78
78
|
dataType: 'Double',
|
|
79
79
|
value: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opc-ua-server.js","sourceRoot":"","sources":["../../../server/engine/connector/opc-ua-server.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AACxE,uEAA2F;AAE3F,MAAa,oBAAoB;IAC/B,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAEtD,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,IAAI,EACF,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,IAAI,EAAE,iDAAiD;QACjE,MAAM,EAAE,EACN,YAAY,EAAE,wDAAwD;QACtE,WAAW,EACX,SAAS,EACV,EACF,GAAG,MAAM,CAAA;QAEV,MAAM,MAAM,GAAG,IAAI,wBAAW,CAAC;YAC7B,IAAI;YACJ,YAAY;YACZ,SAAS,EAAE;gBACT,WAAW;gBACX,WAAW;gBACX,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;aACxD;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAE5C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAA;QAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,eAAe,EAAE,CAAA;QAEhD,uBAAuB;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC;YACjC,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO;YAC5C,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,qBAAqB;QACrB,0EAA0E;QAC1E,IAAI,SAAS,GAAG,CAAC,CAAA;QAEjB,0CAA0C;QAC1C,WAAW,CAAC,GAAG,EAAE;YACf,SAAS,IAAI,CAAC,CAAA;QAChB,CAAC,EAAE,GAAG,CAAC,CAAA;QAEP,SAAS,CAAC,WAAW,CAAC;YACpB,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE;gBACL,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAO,CAAC,EAAE,QAAQ,EAAE,qBAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;aACxE;SACF,CAAC,CAAA;QAEF,0EAA0E;QAC1E,IAAI,SAAS,GAAG,IAAI,CAAA;QAEpB,SAAS,CAAC,WAAW,CAAC;YACpB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"opc-ua-server.js","sourceRoot":"","sources":["../../../server/engine/connector/opc-ua-server.ts"],"names":[],"mappings":"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","sourcesContent":["import { StatusCodes, OPCUAServer, Variant, DataType } from 'node-opcua'\nimport { ConnectionManager, Connector, Connection } from '@things-factory/integration-base'\n\nexport class OPCUAServerConnector implements Connector {\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect))\n\n ConnectionManager.logger.info('opc-ua-servers are ready')\n }\n\n async connect(config) {\n var {\n name: productName,\n endpoint: port, // the port of the listening socket of the server\n params: {\n resourcePath, // this path will be added to the endpoint resource name\n buildNumber,\n buildDate\n }\n } = config\n\n const server = new OPCUAServer({\n port,\n resourcePath,\n buildInfo: {\n productName,\n buildNumber,\n buildDate: buildDate ? new Date(buildDate) : new Date()\n }\n })\n\n await server.initialize()\n ConnectionManager.logger.info('initialized')\n\n const addressSpace = server.engine.addressSpace\n const namespace = addressSpace.getOwnNamespace()\n\n // declare a new object\n const device = namespace.addObject({\n organizedBy: addressSpace.rootFolder.objects,\n browseName: 'MyDevice'\n })\n\n // add some variables\n // add a variable named MyVariable1 to the newly created folder \"MyDevice\"\n let variable1 = 1\n\n // emulate variable1 changing every 500 ms\n setInterval(() => {\n variable1 += 1\n }, 500)\n\n namespace.addVariable({\n componentOf: device,\n browseName: 'MyVariable1',\n dataType: 'Double',\n value: {\n get: () => new Variant({ dataType: DataType.Double, value: variable1 })\n }\n })\n\n // add a variable named MyVariable2 to the newly created folder \"MyDevice\"\n let variable2 = 10.0\n\n namespace.addVariable({\n componentOf: device,\n nodeId: 'ns=1;b=1020FFAA', // some opaque NodeId in namespace 4\n browseName: 'MyVariable2',\n dataType: 'Double',\n minimumSamplingInterval: 1234, // we need to specify a minimumSamplingInterval when using a getter\n value: {\n get: () => new Variant({ dataType: DataType.Double, value: variable2 }),\n set: variant => {\n variable2 = parseFloat(variant.value)\n return StatusCodes.Good\n }\n }\n })\n const os = require('os')\n /**\n * returns the percentage of free memory on the running machine\n * @return {double}\n */\n function available_memory() {\n // var value = process.memoryUsage().heapUsed / 1000000;\n const percentageMemUsed = (os.freemem() / os.totalmem()) * 100.0\n return percentageMemUsed\n }\n namespace.addVariable({\n componentOf: device,\n\n nodeId: 's=free_memory', // a string nodeID\n browseName: 'FreeMemory',\n dataType: 'Double',\n value: {\n get: () => new Variant({ dataType: DataType.Double, value: available_memory() })\n }\n })\n\n server.start(function () {\n ConnectionManager.logger.info('Server is now listening ... ( press CTRL+C to stop)')\n ConnectionManager.logger.info('port ', server.endpoints[0].port)\n const endpointUrl = server.endpoints[0].endpointDescriptions()[0].endpointUrl\n ConnectionManager.logger.info(' the primary server endpoint url is ', endpointUrl)\n })\n\n ConnectionManager.addConnectionInstance(config, server)\n\n ConnectionManager.logger.info(`opc-ua-server connection(${config.name}:${port}) is connected`)\n }\n\n async disconnect(connection: Connection) {\n var server = ConnectionManager.removeConnectionInstance(connection)\n server && server._server.close()\n\n ConnectionManager.logger.info(`opc-ua-server connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'number',\n name: 'port',\n label: 'port'\n },\n {\n type: 'string',\n name: 'productName',\n label: 'product-name'\n },\n {\n type: 'string',\n name: 'buildNumber',\n label: 'build-number'\n },\n {\n type: 'string',\n name: 'buildDate',\n label: 'build-date'\n }\n ]\n }\n}\n\nConnectionManager.registerConnector('opc-ua-server', new OPCUAServerConnector())\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Connection, Connector } from '@things-factory/integration-base';
|
|
2
|
+
export declare class OPCUAConnector implements Connector {
|
|
3
|
+
ready(connectionConfigs: any): Promise<void>;
|
|
4
|
+
connect(config: any): Promise<void>;
|
|
5
|
+
disconnect(connection: Connection): Promise<void>;
|
|
6
|
+
get parameterSpec(): {
|
|
7
|
+
type: string;
|
|
8
|
+
name: string;
|
|
9
|
+
label: string;
|
|
10
|
+
}[];
|
|
11
|
+
get taskPrefixes(): string[];
|
|
12
|
+
get help(): string;
|
|
13
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opc-ua.js","sourceRoot":"","sources":["../../../server/engine/connector/opc-ua.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n OPCUAClient,\n BrowseResult,\n ReferenceDescription,\n AttributeIds,\n StatusCodes,\n TimestampsToReturn,\n DataValue,\n DataType,\n StatusCode,\n ClientMonitoredItem,\n Variant\n} from 'node-opcua'\n\nimport { Connection, ConnectionManager, Connector } from '@things-factory/integration-base'\n\nexport class OPCUAConnector implements Connector {\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect))\n\n ConnectionManager.logger.info('opc-ua connections are ready')\n }\n\n async connect(config) {\n var {\n name,\n endpoint,\n params: {\n maxRetry = 2,\n initialDelay = 2000,\n maxDelay = 10 * 1000,\n requestedPublishingInterval = 1000,\n requestedLifetimeCount = 100,\n requestedMaxKeepAliveCount = 20,\n maxNotificationsPerPublish = 10,\n publishingEnabled = true,\n priority = 10\n }\n } = config\n\n const client = OPCUAClient.create({\n endpoint_must_exist: false,\n connectionStrategy: {\n maxRetry,\n initialDelay,\n maxDelay\n }\n })\n\n client.on('backoff', () => ConnectionManager.logger.info('retrying connection'))\n\n await client.connect(endpoint)\n\n const session = await client.createSession()\n\n const browseResult: BrowseResult = (await session.browse('RootFolder')) as BrowseResult\n\n ConnectionManager.logger.info(\n browseResult.references.map((r: ReferenceDescription) => r.browseName.toString()).join('\\n')\n )\n\n const subscription = await session.createSubscription2({\n requestedPublishingInterval,\n requestedLifetimeCount,\n requestedMaxKeepAliveCount,\n maxNotificationsPerPublish,\n publishingEnabled,\n priority\n })\n\n subscription\n .on('started', () =>\n ConnectionManager.logger.info('subscription started - subscriptionId=', subscription.subscriptionId)\n )\n .on('keepalive', () => ConnectionManager.logger.info('keepalive'))\n .on('terminated', () => ConnectionManager.logger.info('subscription terminated'))\n\n try {\n ConnectionManager.addConnectionInstance(config, {\n read: async function (node, attribute, { logger }): Promise<DataValue> {\n const dataValue = await session.read({ nodeId: node, attributeId: Number(attribute) })\n if (dataValue.statusCode !== StatusCodes.Good) {\n logger.info('Could not read ', node)\n }\n logger.info(` dataValue = ${dataValue.value.toString()}`)\n\n return dataValue\n },\n write: async function (node, dataValue, dataType, { logger }): Promise<StatusCode> {\n const resultVariant = new Variant({\n dataType,\n value: dataValue\n })\n\n const statusCode = await session.write({\n nodeId: node,\n attributeId: AttributeIds.Value,\n value: {\n value: resultVariant\n }\n })\n\n logger.info('statusCode = ', statusCode.name)\n return statusCode\n },\n startMonitor: async function (\n node,\n callback: (dataValue: DataValue) => void,\n options: { samplingInterval: number; discardOldest: boolean; queueSize: number },\n { logger }\n ): Promise<ClientMonitoredItem> {\n const { samplingInterval = 100, discardOldest = true, queueSize = 10 } = options || {}\n const monitoredItem = await subscription.monitor(\n {\n nodeId: node,\n attributeId: AttributeIds.Value\n },\n {\n samplingInterval,\n discardOldest,\n queueSize\n },\n TimestampsToReturn.Both\n )\n\n monitoredItem.on('changed', callback)\n return monitoredItem\n },\n stopMonitor: async function (monitoredItem, { logger }): Promise<void> {\n await monitoredItem.terminate()\n return monitoredItem\n },\n close: async function (): Promise<void> {\n await subscription?.terminate()\n await session?.close()\n await client?.disconnect()\n }\n })\n\n ConnectionManager.logger.info(`opc-ua connection(${name}:${endpoint}) is connected`)\n } catch (error) {\n ConnectionManager.logger.info(`opc-ua connection(${name}:${endpoint}) failed to connect`)\n }\n }\n\n async disconnect(connection: Connection) {\n var { close } = ConnectionManager.removeConnectionInstance(connection)\n await close()\n\n ConnectionManager.logger.info(`opc-ua connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'number',\n name: 'maxRetry',\n label: 'max-retry'\n },\n {\n type: 'number',\n name: 'initialDelay',\n label: 'initial-delay'\n },\n {\n type: 'number',\n name: 'maxDelay',\n label: 'max-delay'\n },\n {\n type: 'number',\n name: 'requestedPublishingInterval',\n label: 'requested-publishing-interval'\n },\n {\n type: 'number',\n name: 'requestedLifetimeCount',\n label: 'requested-lifetime-count'\n },\n {\n type: 'number',\n name: 'requestedMaxKeepAliveCount',\n label: 'requested-max-keep-alive-count'\n },\n {\n type: 'number',\n name: 'maxNotificationsPerPublish',\n label: 'max-notifications-per-publish'\n },\n {\n type: 'boolean',\n name: 'publishingEnabled',\n label: 'publishing-enabled'\n },\n {\n type: 'number',\n name: 'priority',\n label: 'priority'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['opc-ua']\n }\n\n get help() {\n return 'integration/connector/opc-ua'\n }\n}\n\nConnectionManager.registerConnector('opc-ua', new OPCUAConnector())\n"]}
|
|
1
|
+
{"version":3,"file":"opc-ua.js","sourceRoot":"","sources":["../../../server/engine/connector/opc-ua.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n OPCUAClient,\n BrowseResult,\n ReferenceDescription,\n AttributeIds,\n StatusCodes,\n TimestampsToReturn,\n DataValue,\n DataType,\n StatusCode,\n ClientMonitoredItem,\n Variant\n} from 'node-opcua'\n\nimport { Connection, ConnectionManager, Connector } from '@things-factory/integration-base'\n\nexport class OPCUAConnector implements Connector {\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect))\n\n ConnectionManager.logger.info('opc-ua connections are ready')\n }\n\n async connect(config) {\n var {\n name,\n endpoint,\n params: {\n maxRetry = 2,\n initialDelay = 2000,\n maxDelay = 10 * 1000,\n requestedPublishingInterval = 1000,\n requestedLifetimeCount = 100,\n requestedMaxKeepAliveCount = 20,\n maxNotificationsPerPublish = 10,\n publishingEnabled = true,\n priority = 10\n }\n } = config\n\n const client = OPCUAClient.create({\n endpoint_must_exist: false,\n connectionStrategy: {\n maxRetry,\n initialDelay,\n maxDelay\n }\n })\n\n client.on('backoff', () => ConnectionManager.logger.info('retrying connection'))\n\n await client.connect(endpoint)\n\n const session = await client.createSession()\n\n const browseResult: BrowseResult = (await session.browse('RootFolder')) as BrowseResult\n\n ConnectionManager.logger.info(\n browseResult.references.map((r: ReferenceDescription) => r.browseName.toString()).join('\\n')\n )\n\n const subscription = await session.createSubscription2({\n requestedPublishingInterval,\n requestedLifetimeCount,\n requestedMaxKeepAliveCount,\n maxNotificationsPerPublish,\n publishingEnabled,\n priority\n })\n\n subscription\n .on('started', () =>\n ConnectionManager.logger.info('subscription started - subscriptionId=', subscription.subscriptionId)\n )\n .on('keepalive', () => ConnectionManager.logger.info('keepalive'))\n .on('terminated', () => ConnectionManager.logger.info('subscription terminated'))\n\n try {\n ConnectionManager.addConnectionInstance(config, {\n read: async function (node, attribute, { logger }): Promise<DataValue> {\n const dataValue = await session.read({ nodeId: node, attributeId: Number(attribute) })\n if (dataValue.statusCode !== StatusCodes.Good) {\n logger.info('Could not read ', node)\n }\n logger.info(` dataValue = ${dataValue.value.toString()}`)\n\n return dataValue\n },\n write: async function (node, dataValue, dataType, { logger }): Promise<StatusCode> {\n const resultVariant = new Variant({\n dataType,\n value: dataValue\n })\n\n const statusCode = await session.write({\n nodeId: node,\n attributeId: AttributeIds.Value,\n value: {\n value: resultVariant\n }\n })\n\n logger.info('statusCode = ', statusCode.name)\n return statusCode\n },\n startMonitor: async function (\n node,\n callback: (dataValue: DataValue) => void,\n options: { samplingInterval: number; discardOldest: boolean; queueSize: number },\n { logger }\n ): Promise<ClientMonitoredItem> {\n const { samplingInterval = 100, discardOldest = true, queueSize = 10 } = options || {}\n const monitoredItem = await subscription.monitor(\n {\n nodeId: node,\n attributeId: AttributeIds.Value\n },\n {\n samplingInterval,\n discardOldest,\n queueSize\n },\n TimestampsToReturn.Both\n )\n\n monitoredItem.on('changed', callback)\n return monitoredItem\n },\n stopMonitor: async function (monitoredItem, { logger }): Promise<void> {\n await monitoredItem.terminate()\n return monitoredItem\n },\n close: async function (): Promise<void> {\n await subscription?.terminate()\n await session?.close()\n await client?.disconnect()\n }\n })\n\n ConnectionManager.logger.info(`opc-ua connection(${name}:${endpoint}) is connected`)\n } catch (error) {\n ConnectionManager.logger.info(`opc-ua connection(${name}:${endpoint}) failed to connect`)\n }\n }\n\n async disconnect(connection: Connection) {\n var { close } = ConnectionManager.removeConnectionInstance(connection)\n await close()\n\n ConnectionManager.logger.info(`opc-ua connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'number',\n name: 'maxRetry',\n label: 'max-retry'\n },\n {\n type: 'number',\n name: 'initialDelay',\n label: 'initial-delay'\n },\n {\n type: 'number',\n name: 'maxDelay',\n label: 'max-delay'\n },\n {\n type: 'number',\n name: 'requestedPublishingInterval',\n label: 'requested-publishing-interval'\n },\n {\n type: 'number',\n name: 'requestedLifetimeCount',\n label: 'requested-lifetime-count'\n },\n {\n type: 'number',\n name: 'requestedMaxKeepAliveCount',\n label: 'requested-max-keep-alive-count'\n },\n {\n type: 'number',\n name: 'maxNotificationsPerPublish',\n label: 'max-notifications-per-publish'\n },\n {\n type: 'boolean',\n name: 'publishingEnabled',\n label: 'publishing-enabled'\n },\n {\n type: 'number',\n name: 'priority',\n label: 'priority'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['opc-ua']\n }\n\n get help() {\n return 'integration/connector/opc-ua'\n }\n}\n\nConnectionManager.registerConnector('opc-ua', new OPCUAConnector())\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opc-ua-read.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-read.ts"],"names":[],"mappings":";;AAAA,uEAAkF;AAClF,2CAA8D;AAC9D,mCAAwC;AAExC,KAAK,UAAU,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAC/C,IAAI,EACF,UAAU,EACV,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAC5B,GAAG,IAAI,CAAA;IAER,IAAI,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9E,IAAI,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"opc-ua-read.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-read.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\nimport { DataType, DataValue, AttributeIds } from 'node-opcua'\nimport { DataTypeString } from './utils'\n\nasync function OPCUARead(step, { logger, domain }) {\n var {\n connection,\n params: { node, attribute }\n } = step\n\n var client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n throw new Error(`no connection : ${connection}`)\n }\n\n if (!node) {\n throw new Error('node parameter should be defined')\n }\n\n var { read } = client\n var content: DataValue = await read(node, attribute, { logger })\n\n return {\n data: {\n dataType: DataTypeString[content?.value.dataType],\n value: content?.value.value\n }\n }\n}\n\nOPCUARead.parameterSpec = [\n {\n type: 'string',\n name: 'node',\n label: 'node'\n },\n {\n type: 'select',\n label: 'attribute',\n name: 'attribute',\n property: {\n options: [\n { display: 'Value', value: AttributeIds.Value },\n { display: 'DataType', value: AttributeIds.DataType },\n { display: 'NodeId', value: AttributeIds.NodeId },\n { display: 'NodeClass', value: AttributeIds.NodeClass },\n { display: 'BrowseName', value: AttributeIds.BrowseName },\n { display: 'DisplayName', value: AttributeIds.DisplayName },\n { display: 'Description', value: AttributeIds.Description },\n { display: 'WriteMask', value: AttributeIds.WriteMask },\n { display: 'UserWriteMask', value: AttributeIds.UserWriteMask },\n { display: 'IsAbstract', value: AttributeIds.IsAbstract },\n { display: 'Symmetric', value: AttributeIds.Symmetric },\n { display: 'InverseName', value: AttributeIds.InverseName },\n { display: 'ContainsNoLoops', value: AttributeIds.ContainsNoLoops },\n { display: 'EventNotifier', value: AttributeIds.EventNotifier },\n { display: 'ValueRank', value: AttributeIds.ValueRank },\n { display: 'ArrayDimensions', value: AttributeIds.ArrayDimensions },\n { display: 'AccessLevel', value: AttributeIds.AccessLevel },\n { display: 'UserAccessLevel', value: AttributeIds.UserAccessLevel },\n { display: 'MinimumSamplingInterval', value: AttributeIds.MinimumSamplingInterval },\n { display: 'Historizing', value: AttributeIds.Historizing },\n { display: 'Executable', value: AttributeIds.Executable },\n { display: 'UserExecutable', value: AttributeIds.UserExecutable },\n { display: 'DataTypeDefinition', value: AttributeIds.DataTypeDefinition },\n { display: 'RolePermissions', value: AttributeIds.RolePermissions },\n { display: 'UserRolePermissions', value: AttributeIds.UserRolePermissions },\n { display: 'AccessRestrictions', value: AttributeIds.AccessRestrictions },\n { display: 'AccessLevelEx', value: AttributeIds.AccessLevelEx }\n ]\n }\n }\n]\n\nOPCUARead.help = 'integration/task/opc-ua-read'\n\nTaskRegistry.registerTaskHandler('opc-ua-read', OPCUARead)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opc-ua-start-monitor.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-start-monitor.ts"],"names":[],"mappings":";;AAAA,uEAAkF;AAElF,iDAA6C;AAE7C,KAAK,UAAU,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAC5C,IAAI,EACF,UAAU,EACV,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,EAC7D,GAAG,IAAI,CAAA;IAER,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAC9D,IAAI,CAAC,gBAAgB,EAAE;
|
|
1
|
+
{"version":3,"file":"opc-ua-start-monitor.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-start-monitor.ts"],"names":[],"mappings":";;AAAA,uEAAkF;AAElF,iDAA6C;AAE7C,KAAK,UAAU,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAC5C,IAAI,EACF,UAAU,EACV,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,EAC7D,GAAG,IAAI,CAAA;IAER,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA;IAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAA;IAC/B,CAAC;IAED,IAAI,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,gBAAgB,CAAA;QACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;YAC1C,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBACzB,MAAM,IAAA,aAAK,EAAC,GAAG,CAAC,CAAA;YAClB,CAAC;YAED,IAAI,eAAe,GAAG,gBAAgB,CAAA;YAEtC,gBAAgB,GAAG,IAAI,CAAA;YAEvB,OAAO,eAAe,CAAA;QACxB,CAAC,CAAA;QAED,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;QAC1C,IAAI,aAAa,GAAG,MAAM,YAAY,CACpC,IAAI,EACJ,CAAC,SAAoB,EAAE,EAAE;YACvB,gBAAgB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,KAAK,CAAA;QAC3C,CAAC,EACD;YACE,gBAAgB;YAChB,aAAa;YACb,SAAS;SACV,EACD,EAAE,MAAM,EAAE,CACX,CAAA;QAED,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,aAAa,IAAI,CAAC,MAAM,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,eAAe,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAA;IAE5D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;AAClC,CAAC;AAED,iBAAiB,CAAC,aAAa,GAAG;IAChC;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,mBAAmB;KAC3B;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,gBAAgB;KACxB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;KACpB;CACF,CAAA;AAED,iBAAiB,CAAC,IAAI,GAAG,uCAAuC,CAAA;AAEhE,+BAAY,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA","sourcesContent":["import { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\nimport { DataValue } from 'node-opcua'\nimport { sleep } from '@things-factory/utils'\n\nasync function OPCUAStartMonitor(step, context) {\n var {\n connection,\n params: { node, samplingInterval, discardOldest, queueSize }\n } = step\n\n const { logger, domain, closures, __opcua_moinitor } = context\n if (!__opcua_moinitor) {\n context.__opcua_moinitor = {}\n }\n\n var client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n throw new Error(`no connection : ${connection}`)\n }\n\n if (!context.__opcua_moinitor[node]) {\n var MONINTORED_VALUE\n context.__opcua_moinitor[node] = async () => {\n while (!MONINTORED_VALUE) {\n await sleep(100)\n }\n\n var monitoringValue = MONINTORED_VALUE\n\n MONINTORED_VALUE = null\n\n return monitoringValue\n }\n\n var { startMonitor, stopMonitor } = client\n var monitoredItem = await startMonitor(\n node,\n (dataValue: DataValue) => {\n MONINTORED_VALUE = dataValue?.value.value\n },\n {\n samplingInterval,\n discardOldest,\n queueSize\n },\n { logger }\n )\n\n closures.push(async () => {\n try {\n monitoredItem && (await stopMonitor(monitoredItem, { logger }))\n } catch (e) {\n logger.error(e)\n }\n })\n }\n\n var monitoringValue = await context.__opcua_moinitor[node]()\n\n return { data: monitoringValue }\n}\n\nOPCUAStartMonitor.parameterSpec = [\n {\n type: 'string',\n name: 'node',\n label: 'node'\n },\n {\n type: 'number',\n name: 'samplingInterval',\n label: 'sampling-interval'\n },\n {\n type: 'boolean',\n name: 'discardOldest',\n label: 'discard-oldest'\n },\n {\n type: 'number',\n name: 'queueSize',\n label: 'queue-size'\n }\n]\n\nOPCUAStartMonitor.help = 'integration/task/opc-ua-start-monitor'\n\nTaskRegistry.registerTaskHandler('opc-ua-start-monitor', OPCUAStartMonitor)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opc-ua-stop-monitor.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-stop-monitor.ts"],"names":[],"mappings":";;AAAA,iDAA8C;AAC9C,uEAAkF;AAIlF,KAAK,UAAU,gBAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5D,IAAI,EACF,UAAU,EACV,MAAM,EAAE,EAAE,WAAW,EAAE,EACxB,GAAG,IAAI,CAAA;IAER,IAAI,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9E,IAAI,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"opc-ua-stop-monitor.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-stop-monitor.ts"],"names":[],"mappings":";;AAAA,iDAA8C;AAC9C,uEAAkF;AAIlF,KAAK,UAAU,gBAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5D,IAAI,EACF,UAAU,EACV,MAAM,EAAE,EAAE,WAAW,EAAE,EACxB,GAAG,IAAI,CAAA;IAER,IAAI,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAEtC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAC5B,IAAI,aAAa,GAAwB,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAE5E,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,UAAU;KAC/B,CAAA;AACH,CAAC;AAED,gBAAgB,CAAC,aAAa,GAAG;IAC/B;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;KACtB;CACF,CAAA;AAED,gBAAgB,CAAC,IAAI,GAAG,sCAAsC,CAAA;AAE9D,+BAAY,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA","sourcesContent":["import { access } from '@things-factory/utils'\nimport { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\n\nimport { ClientMonitoredItem } from 'node-opcua'\n\nasync function OPCUAStopMonitor(step, { logger, domain, data }) {\n var {\n connection,\n params: { monitorItem }\n } = step\n\n var client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n throw new Error(`no connection : ${connection}`)\n }\n\n const item = access(monitorItem, data)\n\n var { stopMonitor } = client\n var monitoredItem: ClientMonitoredItem = await stopMonitor(item, { logger })\n\n return {\n data: monitoredItem.statusCode\n }\n}\n\nOPCUAStopMonitor.parameterSpec = [\n {\n type: 'scenario-step-input',\n name: 'monitorItem',\n label: 'monitor-item'\n }\n]\n\nOPCUAStopMonitor.help = 'integration/task/opc-ua-stop-monitor'\n\nTaskRegistry.registerTaskHandler('opc-ua-stop-monitor', OPCUAStopMonitor)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opc-ua-write.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-write.ts"],"names":[],"mappings":";;AAAA,iDAA8C;AAC9C,uEAAkF;AAClF,2CAAiD;AAEjD,KAAK,UAAU,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IACtD,IAAI,EACF,UAAU,EACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EACjC,GAAG,IAAI,CAAA;IAER,IAAI,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9E,IAAI,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"opc-ua-write.js","sourceRoot":"","sources":["../../../server/engine/task/opc-ua-write.ts"],"names":[],"mappings":"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","sourcesContent":["import { access } from '@things-factory/utils'\nimport { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\nimport { StatusCode, DataType } from 'node-opcua'\n\nasync function OPCUAWrite(step, { logger, domain, data }) {\n var {\n connection,\n params: { node, accessor, type }\n } = step\n\n var client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n throw new Error(`no connection : ${connection}`)\n }\n\n const value = access(accessor, data)\n\n var { write } = client\n var content: StatusCode = await write(node, value, type, { logger })\n\n return {\n data: {\n name: content.name,\n description: content.description,\n result: content.isGood()\n }\n }\n}\n\nOPCUAWrite.parameterSpec = [\n {\n type: 'string',\n name: 'node',\n label: 'node'\n },\n {\n type: 'scenario-step-input',\n name: 'accessor',\n label: 'accessor'\n },\n {\n type: 'select',\n label: 'type',\n name: 'type',\n property: {\n options: [\n { display: 'Null', value: DataType.Null },\n { display: 'Boolean', value: DataType.Boolean },\n { display: 'SByte', value: DataType.SByte },\n { display: 'Byte', value: DataType.Byte },\n { display: 'Int16', value: DataType.Int16 },\n { display: 'UInt16', value: DataType.UInt16 },\n { display: 'Int32', value: DataType.Int32 },\n { display: 'UInt32', value: DataType.UInt32 },\n { display: 'Int64', value: DataType.Int64 },\n { display: 'UInt64', value: DataType.UInt64 },\n { display: 'Float', value: DataType.Float },\n { display: 'Double', value: DataType.Double },\n { display: 'String', value: DataType.String },\n { display: 'DateTime', value: DataType.DateTime },\n { display: 'Guid', value: DataType.Guid },\n { display: 'ByteString', value: DataType.ByteString },\n { display: 'XmlElement', value: DataType.XmlElement },\n { display: 'NodeId', value: DataType.NodeId },\n { display: 'ExpandedNodeId', value: DataType.ExpandedNodeId },\n { display: 'StatusCode', value: DataType.StatusCode },\n { display: 'QualifiedName', value: DataType.QualifiedName },\n { display: 'LocalizedText', value: DataType.LocalizedText },\n { display: 'ExtensionObject', value: DataType.ExtensionObject },\n { display: 'Variant', value: DataType.Variant },\n { display: 'DataValue', value: DataType.DataValue },\n { display: 'DiagnosticInfo', value: DataType.DiagnosticInfo }\n ]\n }\n }\n]\n\nOPCUAWrite.help = 'integration/task/opc-ua-write'\n\nTaskRegistry.registerTaskHandler('opc-ua-write', OPCUAWrite)\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const DataTypeString: {
|
|
2
|
+
0: string;
|
|
3
|
+
1: string;
|
|
4
|
+
2: string;
|
|
5
|
+
3: string;
|
|
6
|
+
4: string;
|
|
7
|
+
5: string;
|
|
8
|
+
6: string;
|
|
9
|
+
7: string;
|
|
10
|
+
8: string;
|
|
11
|
+
9: string;
|
|
12
|
+
10: string;
|
|
13
|
+
11: string;
|
|
14
|
+
12: string;
|
|
15
|
+
13: string;
|
|
16
|
+
14: string;
|
|
17
|
+
15: string;
|
|
18
|
+
16: string;
|
|
19
|
+
17: string;
|
|
20
|
+
18: string;
|
|
21
|
+
19: string;
|
|
22
|
+
20: string;
|
|
23
|
+
21: string;
|
|
24
|
+
22: string;
|
|
25
|
+
23: string;
|
|
26
|
+
24: string;
|
|
27
|
+
25: string;
|
|
28
|
+
};
|