@things-factory/integration-opc 9.0.0-beta.8 → 9.0.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-server/engine/connector/opc-ua.js +3 -3
- package/dist-server/engine/connector/opc-ua.js.map +1 -1
- package/dist-server/engine/index.d.ts +2 -2
- package/dist-server/engine/index.js +2 -2
- package/dist-server/engine/index.js.map +1 -1
- package/dist-server/engine/task/opc-ua-read.js +2 -2
- package/dist-server/engine/task/opc-ua-read.js.map +1 -1
- package/dist-server/engine/task/opc-ua-start-monitor.js +1 -1
- package/dist-server/engine/task/opc-ua-start-monitor.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -78,9 +78,9 @@ class OPCUAConnector {
|
|
|
78
78
|
return monitoredItem;
|
|
79
79
|
},
|
|
80
80
|
close: async function () {
|
|
81
|
-
await
|
|
82
|
-
await
|
|
83
|
-
await
|
|
81
|
+
await subscription?.terminate();
|
|
82
|
+
await session?.close();
|
|
83
|
+
await client?.disconnect();
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
86
|
integration_base_1.ConnectionManager.logger.info(`opc-ua connection(${name}:${endpoint}) is connected`);
|
|
@@ -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":";;;AAAA,2CAYmB;AAEnB,uEAA2F;AAE3F,MAAa,cAAc;IACzB,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,8BAA8B,CAAC,CAAA;IAC/D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,IAAI,EACF,IAAI,EACJ,QAAQ,EACR,MAAM,EAAE,EACN,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,EAAE,GAAG,IAAI,EACpB,2BAA2B,GAAG,IAAI,EAClC,sBAAsB,GAAG,GAAG,EAC5B,0BAA0B,GAAG,EAAE,EAC/B,0BAA0B,GAAG,EAAE,EAC/B,iBAAiB,GAAG,IAAI,EACxB,QAAQ,GAAG,EAAE,EACd,EACF,GAAG,MAAM,CAAA;QAEV,MAAM,MAAM,GAAG,wBAAW,CAAC,MAAM,CAAC;YAChC,mBAAmB,EAAE,KAAK;YAC1B,kBAAkB,EAAE;gBAClB,QAAQ;gBACR,YAAY;gBACZ,QAAQ;aACT;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;QAEhF,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAA;QAE5C,MAAM,YAAY,GAAiB,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAiB,CAAA;QAEvF,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAC3B,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7F,CAAA;QAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;YACrD,2BAA2B;YAC3B,sBAAsB;YACtB,0BAA0B;YAC1B,0BAA0B;YAC1B,iBAAiB;YACjB,QAAQ;SACT,CAAC,CAAA;QAEF,YAAY;aACT,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAClB,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,YAAY,CAAC,cAAc,CAAC,CACrG;aACA,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACjE,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAEnF,IAAI,CAAC;YACH,oCAAiB,CAAC,qBAAqB,CAAC,MAAM,EAAE;gBAC9C,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE;oBAC/C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;oBACtF,IAAI,SAAS,CAAC,UAAU,KAAK,wBAAW,CAAC,IAAI,EAAE,CAAC;wBAC9C,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;oBACtC,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;oBAEzD,OAAO,SAAS,CAAA;gBAClB,CAAC;gBACD,KAAK,EAAE,KAAK,WAAW,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE;oBAC1D,MAAM,aAAa,GAAG,IAAI,oBAAO,CAAC;wBAChC,QAAQ;wBACR,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAA;oBAEF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;wBACrC,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,yBAAY,CAAC,KAAK;wBAC/B,KAAK,EAAE;4BACL,KAAK,EAAE,aAAa;yBACrB;qBACF,CAAC,CAAA;oBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;oBAC7C,OAAO,UAAU,CAAA;gBACnB,CAAC;gBACD,YAAY,EAAE,KAAK,WACjB,IAAI,EACJ,QAAwC,EACxC,OAAgF,EAChF,EAAE,MAAM,EAAE;oBAEV,MAAM,EAAE,gBAAgB,GAAG,GAAG,EAAE,aAAa,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;oBACtF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,OAAO,CAC9C;wBACE,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,yBAAY,CAAC,KAAK;qBAChC,EACD;wBACE,gBAAgB;wBAChB,aAAa;wBACb,SAAS;qBACV,EACD,+BAAkB,CAAC,IAAI,CACxB,CAAA;oBAED,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;oBACrC,OAAO,aAAa,CAAA;gBACtB,CAAC;gBACD,WAAW,EAAE,KAAK,WAAW,aAAa,EAAE,EAAE,MAAM,EAAE;oBACpD,MAAM,aAAa,CAAC,SAAS,EAAE,CAAA;oBAC/B,OAAO,aAAa,CAAA;gBACtB,CAAC;gBACD,KAAK,EAAE,KAAK;oBACV,MAAM,YAAY,EAAE,SAAS,EAAE,CAAA;oBAC/B,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;oBACtB,MAAM,MAAM,EAAE,UAAU,EAAE,CAAA;gBAC5B,CAAC;aACF,CAAC,CAAA;YAEF,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,QAAQ,gBAAgB,CAAC,CAAA;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,QAAQ,qBAAqB,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAsB;QACrC,IAAI,EAAE,KAAK,EAAE,GAAG,oCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;QACtE,MAAM,KAAK,EAAE,CAAA;QAEb,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,IAAI,mBAAmB,CAAC,CAAA;IACxF,CAAC;IAED,IAAI,aAAa;QACf,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,WAAW;aACnB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,eAAe;aACvB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,WAAW;aACnB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,6BAA6B;gBACnC,KAAK,EAAE,+BAA+B;aACvC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,0BAA0B;aAClC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,4BAA4B;gBAClC,KAAK,EAAE,gCAAgC;aACxC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,4BAA4B;gBAClC,KAAK,EAAE,+BAA+B;aACvC;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,oBAAoB;aAC5B;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,UAAU;aAClB;SACF,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,8BAA8B,CAAA;IACvC,CAAC;CACF;AAjMD,wCAiMC;AAED,oCAAiB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,cAAc,EAAE,CAAC,CAAA","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,2 +1,2 @@
|
|
|
1
|
-
import './connector';
|
|
2
|
-
import './task';
|
|
1
|
+
import './connector/index.js';
|
|
2
|
+
import './task/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/engine/index.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/engine/index.ts"],"names":[],"mappings":";;AAAA,gCAA6B;AAC7B,2BAAwB","sourcesContent":["import './connector/index.js'\nimport './task/index.js'\n"]}
|
|
@@ -16,8 +16,8 @@ async function OPCUARead(step, { logger, domain }) {
|
|
|
16
16
|
var content = await read(node, attribute, { logger });
|
|
17
17
|
return {
|
|
18
18
|
data: {
|
|
19
|
-
dataType: utils_1.DataTypeString[content
|
|
20
|
-
value: content
|
|
19
|
+
dataType: utils_1.DataTypeString[content?.value.dataType],
|
|
20
|
+
value: content?.value.value
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
}
|
|
@@ -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,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;IACrB,IAAI,OAAO,GAAc,MAAM,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAEhE,OAAO;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,sBAAc,CAAC,OAAO,
|
|
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"]}
|
|
@@ -24,7 +24,7 @@ async function OPCUAStartMonitor(step, context) {
|
|
|
24
24
|
};
|
|
25
25
|
var { startMonitor, stopMonitor } = client;
|
|
26
26
|
var monitoredItem = await startMonitor(node, (dataValue) => {
|
|
27
|
-
MONINTORED_VALUE = dataValue
|
|
27
|
+
MONINTORED_VALUE = dataValue?.value.value;
|
|
28
28
|
}, {
|
|
29
29
|
samplingInterval,
|
|
30
30
|
discardOldest,
|
|
@@ -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,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,
|
|
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,EAAE,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"]}
|