node-opcua-samples 2.143.0 → 2.144.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.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ts-node
2
+ export {};
@@ -0,0 +1,662 @@
1
+ #!/usr/bin/env ts-node
2
+ "use strict";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ /* eslint-disable complexity */
14
+ /* eslint-disable max-statements */
15
+ // tslint:disable:no-console
16
+ const fs = require("fs");
17
+ const path = require("path");
18
+ const util = require("util");
19
+ const yargs = require("yargs");
20
+ const chalk = require("chalk");
21
+ const node_opcua_1 = require("node-opcua");
22
+ const node_opcua_crypto_1 = require("node-opcua-crypto");
23
+ const node_opcua_client_crawler_1 = require("node-opcua-client-crawler");
24
+ // tslint:disable:no-var-requires
25
+ const Table = require("easy-table");
26
+ const treeify = require("treeify");
27
+ function w(str, l) {
28
+ return str.padEnd(l).substring(0, l);
29
+ }
30
+ function enumerateAllConditionTypes(session) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const tree = {};
33
+ const conditionEventTypes = {};
34
+ function findAllNodeOfType(tree1, typeNodeId1, browseName) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const browseDesc1 = {
37
+ nodeId: typeNodeId1,
38
+ referenceTypeId: (0, node_opcua_1.resolveNodeId)("HasSubtype"),
39
+ browseDirection: node_opcua_1.BrowseDirection.Forward,
40
+ includeSubtypes: true,
41
+ resultMask: 63
42
+ };
43
+ const browseDesc2 = {
44
+ nodeId: typeNodeId1,
45
+ referenceTypeId: (0, node_opcua_1.resolveNodeId)("HasTypeDefinition"),
46
+ browseDirection: node_opcua_1.BrowseDirection.Inverse,
47
+ includeSubtypes: true,
48
+ resultMask: 63
49
+ };
50
+ const browseDesc3 = {
51
+ nodeId: typeNodeId1,
52
+ referenceTypeId: (0, node_opcua_1.resolveNodeId)("HasTypeDefinition"),
53
+ browseDirection: node_opcua_1.BrowseDirection.Forward,
54
+ includeSubtypes: true,
55
+ resultMask: 63
56
+ };
57
+ const nodesToBrowse = [browseDesc1, browseDesc2, browseDesc3];
58
+ const browseResults = yield session.browse(nodesToBrowse);
59
+ tree1[browseName] = {};
60
+ browseResults[0].references = browseResults[0].references || [];
61
+ const promises = [];
62
+ for (const reference of browseResults[0].references) {
63
+ conditionEventTypes[reference.nodeId.toString()] = reference.browseName.toString();
64
+ promises.push(findAllNodeOfType(tree1[browseName], reference.nodeId, reference.browseName.toString()));
65
+ }
66
+ yield Promise.all(promises);
67
+ });
68
+ }
69
+ const typeNodeId = (0, node_opcua_1.resolveNodeId)("ConditionType");
70
+ yield findAllNodeOfType(tree, typeNodeId, "ConditionType");
71
+ return tree;
72
+ });
73
+ }
74
+ function enumerateAllAlarmAndConditionInstances(session) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ const conditions = {};
77
+ const found = [];
78
+ function isConditionEventType(nodeId) {
79
+ return Object.prototype.hasOwnProperty.call(conditions, nodeId.toString());
80
+ }
81
+ function exploreForObjectOfType(session1, nodeId) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ function worker(element) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ const nodeToBrowse = {
86
+ nodeId: element.nodeId,
87
+ referenceTypeId: (0, node_opcua_1.resolveNodeId)("HierarchicalReferences"),
88
+ browseDirection: node_opcua_1.BrowseDirection.Forward,
89
+ includeSubtypes: true,
90
+ nodeClassMask: 0x1,
91
+ resultMask: 63
92
+ };
93
+ const browseResult = yield session1.browse(nodeToBrowse);
94
+ for (const ref of browseResult.references) {
95
+ if (isConditionEventType(ref.typeDefinition)) {
96
+ //
97
+ const alarm = {
98
+ parent: element.nodeId,
99
+ alarmNodeId: ref.nodeId,
100
+ browseName: ref.browseName,
101
+ typeDefinition: ref.typeDefinition,
102
+ typeDefinitionName: conditions[ref.typeDefinition.toString()]
103
+ };
104
+ found.push(alarm);
105
+ }
106
+ else {
107
+ yield worker(ref.nodeId);
108
+ }
109
+ }
110
+ });
111
+ }
112
+ yield worker(nodeId);
113
+ });
114
+ }
115
+ yield enumerateAllConditionTypes(session);
116
+ yield exploreForObjectOfType(session, (0, node_opcua_1.resolveNodeId)("RootFolder"));
117
+ return Object.values(conditions);
118
+ });
119
+ }
120
+ function _getAllEventTypes(session, baseNodeId, tree) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ const browseDesc1 = {
123
+ nodeId: baseNodeId,
124
+ referenceTypeId: (0, node_opcua_1.resolveNodeId)("HasSubtype"),
125
+ browseDirection: node_opcua_1.BrowseDirection.Forward,
126
+ includeSubtypes: true,
127
+ nodeClassMask: node_opcua_1.NodeClassMask.ObjectType,
128
+ resultMask: 63
129
+ };
130
+ const browseResult = yield session.browse(browseDesc1);
131
+ // to do continuation points
132
+ for (const reference of browseResult.references) {
133
+ const subtree = { nodeId: reference.nodeId.toString() };
134
+ tree[reference.browseName.toString()] = subtree;
135
+ yield _getAllEventTypes(session, reference.nodeId, subtree);
136
+ }
137
+ });
138
+ }
139
+ /**
140
+ * getAllEventType recursively
141
+ */
142
+ function getAllEventTypes(session) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ const baseNodeId = (0, node_opcua_1.makeNodeId)(node_opcua_1.ObjectTypeIds.BaseEventType);
145
+ const result = {};
146
+ yield _getAllEventTypes(session, baseNodeId, result);
147
+ return result;
148
+ });
149
+ }
150
+ function monitorAlarm(subscription, alarmNodeId) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ try {
153
+ yield (0, node_opcua_1.callConditionRefresh)(subscription);
154
+ }
155
+ catch (err) {
156
+ if (err instanceof Error) {
157
+ console.log(" monitorAlarm failed , may be your server doesn't support A&E", err.message);
158
+ }
159
+ }
160
+ });
161
+ }
162
+ function getTick() {
163
+ return Date.now();
164
+ }
165
+ let theSubscription;
166
+ let the_session;
167
+ let client;
168
+ function main() {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ // ts-node bin/simple_client.ts --endpoint opc.tcp://localhost:53530/OPCUA/SimulationServer --node "ns=5;s=Sinusoid1"
171
+ const argv = yield yargs(process.argv)
172
+ .wrap(132)
173
+ // .usage("Usage: $0 -d --endpoint <endpointUrl> [--securityMode (None|SignAndEncrypt|Sign)] [--securityPolicy (None|Basic256|Basic128Rsa15)] --node <node_id_to_monitor> --crawl")
174
+ .option("endpoint", {
175
+ alias: "e",
176
+ demandOption: true,
177
+ describe: "the end point to connect to "
178
+ })
179
+ .option("securityMode", {
180
+ alias: "s",
181
+ default: "None",
182
+ describe: "the security mode ( None Sign SignAndEncrypt )"
183
+ })
184
+ .option("securityPolicy", {
185
+ alias: "P",
186
+ default: "None",
187
+ describe: "the policy mode : (" + Object.keys(node_opcua_1.SecurityPolicy).join(" - ") + ")"
188
+ })
189
+ .option("userName", {
190
+ alias: "u",
191
+ describe: "specify the user name of a UserNameIdentityToken"
192
+ })
193
+ .option("password", {
194
+ alias: "p",
195
+ describe: "specify the password of a UserNameIdentityToken"
196
+ })
197
+ .option("node", {
198
+ alias: "n",
199
+ describe: "the nodeId of the value to monitor"
200
+ })
201
+ .option("timeout", {
202
+ alias: "t",
203
+ describe: " the timeout of the session in second => (-1 for infinity)"
204
+ })
205
+ .option("debug", {
206
+ alias: "d",
207
+ boolean: true,
208
+ describe: " display more verbose information"
209
+ })
210
+ .option("history", {
211
+ alias: "h",
212
+ describe: "make an historical read"
213
+ })
214
+ .option("crawl", {
215
+ alias: "c",
216
+ describe: "crawl"
217
+ })
218
+ .option("discovery", {
219
+ alias: "D",
220
+ describe: "specify the endpoint uri of discovery server (by default same as server endpoint uri)"
221
+ })
222
+ .example("simple_client --endpoint opc.tcp://localhost:49230 -P=Basic256Rsa256 -s=Sign", "")
223
+ .example("simple_client -e opc.tcp://localhost:49230 -P=Basic256Sha256 -s=Sign -u JoeDoe -p P@338@rd ", "")
224
+ .example('simple_client --endpoint opc.tcp://localhost:49230 -n="ns=0;i=2258"', "").argv;
225
+ const securityMode = (0, node_opcua_1.coerceMessageSecurityMode)(argv.securityMode);
226
+ if (securityMode === node_opcua_1.MessageSecurityMode.Invalid) {
227
+ throw new Error("Invalid Security mode");
228
+ }
229
+ const securityPolicy = (0, node_opcua_1.coerceSecurityPolicy)(argv.securityPolicy);
230
+ if (securityPolicy === node_opcua_1.SecurityPolicy.Invalid) {
231
+ throw new Error("Invalid securityPolicy");
232
+ }
233
+ const timeout = argv.timeout * 1000 || 20000;
234
+ const monitored_node = (0, node_opcua_1.coerceNodeId)(argv.node || (0, node_opcua_1.makeNodeId)(node_opcua_1.VariableIds.Server_ServerStatus_CurrentTime));
235
+ console.log(chalk.cyan("securityMode = "), securityMode.toString());
236
+ console.log(chalk.cyan("securityPolicy = "), securityPolicy.toString());
237
+ console.log(chalk.cyan("timeout = "), timeout ? timeout : " Infinity ");
238
+ console.log(" monitoring node id = ", monitored_node);
239
+ const endpointUrl = argv.endpoint;
240
+ if (!endpointUrl) {
241
+ yargs.showHelp();
242
+ process.exit(0);
243
+ }
244
+ const discoveryUrl = argv.discovery ? argv.discovery : endpointUrl;
245
+ const doCrawling = !!argv.crawl;
246
+ const doHistory = !!argv.history;
247
+ const optionsInitial = {
248
+ securityMode,
249
+ securityPolicy,
250
+ endpointMustExist: false,
251
+ keepSessionAlive: true,
252
+ connectionStrategy: {
253
+ initialDelay: 2000,
254
+ maxDelay: 10 * 1000,
255
+ maxRetry: 10
256
+ },
257
+ discoveryUrl
258
+ };
259
+ client = node_opcua_1.OPCUAClient.create(optionsInitial);
260
+ client.on("backoff", (retry, delay) => {
261
+ console.log(chalk.bgWhite.yellow("backoff attempt #"), retry, " retrying in ", delay / 1000.0, " seconds");
262
+ });
263
+ console.log(" connecting to ", chalk.cyan.bold(endpointUrl));
264
+ console.log(" strategy", client.connectionStrategy);
265
+ try {
266
+ yield client.connect(endpointUrl);
267
+ console.log(" Connected ! exact endpoint url is ", client.endpointUrl);
268
+ }
269
+ catch (err) {
270
+ console.log(chalk.red(" Cannot connect to ") + endpointUrl);
271
+ if (err instanceof Error) {
272
+ console.log(" Error = ", err.message);
273
+ }
274
+ return;
275
+ }
276
+ const endpoints = yield client.getEndpoints();
277
+ if (argv.debug) {
278
+ fs.writeFileSync("tmp/endpoints.log", JSON.stringify(endpoints, null, " "));
279
+ console.log(treeify.asTree(endpoints, true));
280
+ }
281
+ const table = new Table();
282
+ let serverCertificate;
283
+ let i = 0;
284
+ for (const endpoint of endpoints) {
285
+ table.cell("endpoint", endpoint.endpointUrl + "");
286
+ table.cell("Application URI", endpoint.server.applicationUri);
287
+ table.cell("Product URI", endpoint.server.productUri);
288
+ table.cell("Application Name", endpoint.server.applicationName.text);
289
+ table.cell("Security Mode", node_opcua_1.MessageSecurityMode[endpoint.securityMode].toString());
290
+ table.cell("securityPolicyUri", endpoint.securityPolicyUri);
291
+ table.cell("Type", node_opcua_1.ApplicationType[endpoint.server.applicationType]);
292
+ table.cell("certificate", "..." /*endpoint.serverCertificate*/);
293
+ endpoint.server.discoveryUrls = endpoint.server.discoveryUrls || [];
294
+ table.cell("discoveryUrls", endpoint.server.discoveryUrls.join(" - "));
295
+ serverCertificate = endpoint.serverCertificate;
296
+ const certificate_filename = path.join(__dirname, "../certificates/PKI/server_certificate" + i + ".pem");
297
+ if (serverCertificate) {
298
+ fs.writeFile(certificate_filename, (0, node_opcua_crypto_1.toPem)(serverCertificate, "CERTIFICATE"), () => {
299
+ /**/
300
+ });
301
+ }
302
+ table.newRow();
303
+ i++;
304
+ }
305
+ console.log(table.toString());
306
+ for (const endpoint of endpoints) {
307
+ console.log("Identify Token for : Security Mode=", endpoint.securityMode.toString(), " Policy=", endpoint.securityPolicyUri);
308
+ const table2 = new Table();
309
+ for (const token of endpoint.userIdentityTokens) {
310
+ table2.cell("policyId", token.policyId);
311
+ table2.cell("tokenType", token.tokenType.toString());
312
+ table2.cell("issuedTokenType", token.issuedTokenType);
313
+ table2.cell("issuerEndpointUrl", token.issuerEndpointUrl);
314
+ table2.cell("securityPolicyUri", token.securityPolicyUri);
315
+ table2.newRow();
316
+ }
317
+ console.log(table2.toString());
318
+ }
319
+ yield client.disconnect();
320
+ // reconnect using the correct end point URL now
321
+ console.log(chalk.cyan("Server Certificate :"));
322
+ console.log(chalk.yellow((0, node_opcua_1.hexDump)(serverCertificate)));
323
+ console.log(" adjusted endpoint Url =", client.endpointUrl);
324
+ const adjustedEndpointUrl = client.endpointUrl;
325
+ const options = {
326
+ securityMode,
327
+ securityPolicy,
328
+ // we specify here server certificate
329
+ serverCertificate,
330
+ defaultSecureTokenLifetime: 40000,
331
+ endpointMustExist: false,
332
+ connectionStrategy: {
333
+ initialDelay: 2000,
334
+ maxDelay: 10 * 1000,
335
+ maxRetry: 10
336
+ }
337
+ };
338
+ console.log("Options = ", options.securityMode.toString(), options.securityPolicy.toString());
339
+ client = node_opcua_1.OPCUAClient.create(options);
340
+ console.log(" --------------------------------- Now connecting again to ", chalk.cyan.bold(adjustedEndpointUrl));
341
+ yield client.connect(adjustedEndpointUrl);
342
+ console.log(" Connected ! exact endpoint url is ", client.endpointUrl);
343
+ let userIdentity = { type: node_opcua_1.UserTokenType.Anonymous }; // anonymous
344
+ if (argv.userName && argv.password) {
345
+ userIdentity = {
346
+ type: node_opcua_1.UserTokenType.UserName,
347
+ password: argv.password,
348
+ userName: argv.userName
349
+ };
350
+ }
351
+ console.log(" now creating Session !");
352
+ the_session = yield client.createSession(userIdentity);
353
+ client.on("connection_reestablished", () => {
354
+ console.log(chalk.bgWhite.red(" !!!!!!!!!!!!!!!!!!!!!!!! CONNECTION RE-ESTABLISHED !!!!!!!!!!!!!!!!!!!"));
355
+ });
356
+ console.log(chalk.yellow(" session created"));
357
+ console.log(" sessionId : ", the_session.sessionId.toString());
358
+ client.on("backoff", (retry, delay) => {
359
+ console.log(chalk.bgWhite.yellow("backoff attempt #"), retry, " retrying in ", delay / 1000.0, " seconds");
360
+ });
361
+ client.on("start_reconnection", () => {
362
+ console.log(chalk.bgWhite.red(" !!!!!!!!!!!!!!!!!!!!!!!! Starting Reconnection !!!!!!!!!!!!!!!!!!!"));
363
+ });
364
+ // -----------------------------------------------------------------------------------------------------------
365
+ // NAMESPACE
366
+ // display namespace array
367
+ // -----------------------------------------------------------------------------------------------------------
368
+ const server_NamespaceArray_Id = (0, node_opcua_1.makeNodeId)(node_opcua_1.VariableIds.Server_NamespaceArray); // ns=0;i=2006
369
+ const dataValue = yield the_session.readVariableValue(server_NamespaceArray_Id);
370
+ console.log(" --- NAMESPACE ARRAY ---");
371
+ const namespaceArray = dataValue.value.value;
372
+ for (const namespace of namespaceArray) {
373
+ console.log(" Namespace ", namespace.index, " : ", namespace);
374
+ }
375
+ console.log(" -----------------------");
376
+ // -----------------------------------------------------------------------------------------------------------
377
+ // enumerate all EVENT TYPES
378
+ // -----------------------------------------------------------------------------------------------------------
379
+ const result = getAllEventTypes(the_session);
380
+ console.log(chalk.cyan("---------------------------------------------------- All Event Types "));
381
+ console.log(treeify.asTree(result, true));
382
+ console.log(" -----------------------");
383
+ // -----------------------------------------------------------------------------------------------------------
384
+ // Node Crawling
385
+ // -----------------------------------------------------------------------------------------------------------
386
+ let t1;
387
+ let t2;
388
+ function print_stat() {
389
+ t2 = Date.now();
390
+ const str = util.format("R= %d W= %d T=%d t= %d", client.bytesRead, client.bytesWritten, client.transactionsPerformed, t2 - t1);
391
+ console.log(chalk.yellow.bold(str));
392
+ }
393
+ if (doCrawling) {
394
+ (0, node_opcua_1.assert)(the_session !== null && typeof the_session === "object");
395
+ const crawler = new node_opcua_client_crawler_1.NodeCrawler(the_session);
396
+ let t5 = Date.now();
397
+ client.on("send_request", () => {
398
+ t1 = Date.now();
399
+ });
400
+ client.on("receive_response", print_stat);
401
+ t5 = Date.now();
402
+ // xx crawler.on("browsed", function (element) {
403
+ // xx console.log("->",(new Date()).getTime()-t,element.browseName.name,element.nodeId.toString());
404
+ // xx });
405
+ const nodeId = "ObjectsFolder";
406
+ console.log("now crawling object folder ...please wait...");
407
+ const obj = yield crawler.read(nodeId);
408
+ console.log(" Time = ", new Date().getTime() - t5);
409
+ console.log(" read = ", crawler.readCounter);
410
+ console.log(" browse = ", crawler.browseCounter);
411
+ console.log(" browseNext = ", crawler.browseNextCounter);
412
+ console.log(" transaction = ", crawler.transactionCounter);
413
+ if (false) {
414
+ // todo : treeify.asTree performance is *very* slow on large object, replace with better implementation
415
+ // xx console.log(treeify.asTree(obj, true));
416
+ treeify.asLines(obj, true, true, (line) => {
417
+ console.log(line);
418
+ });
419
+ }
420
+ crawler.dispose();
421
+ }
422
+ client.removeListener("receive_response", print_stat);
423
+ // -----------------------------------------------------------------------------------------------------------------
424
+ // enumerate all Condition Types exposed by the server
425
+ // -----------------------------------------------------------------------------------------------------------------
426
+ console.log("--------------------------------------------------------------- Enumerate all Condition Types exposed by the server");
427
+ const conditionTree = yield enumerateAllConditionTypes(the_session);
428
+ console.log(treeify.asTree(conditionTree));
429
+ console.log(" -----------------------------------------------------------------------------------------------------------------");
430
+ // -----------------------------------------------------------------------------------------------------------------
431
+ // enumerate all objects that have an Alarm & Condition instances
432
+ // -----------------------------------------------------------------------------------------------------------------
433
+ const alarms = yield enumerateAllAlarmAndConditionInstances(the_session);
434
+ console.log(" -------------------------------------------------------------- Alarms & Conditions ------------------------");
435
+ for (const alarm of alarms) {
436
+ console.log("parent = ", chalk.cyan(w(alarm.parent.toString(), 30)), chalk.green.bold(w(alarm.typeDefinitionName, 30)), "alarmName = ", chalk.cyan(w(alarm.browseName.toString(), 30)), chalk.yellow(w(alarm.alarmNodeId.toString(), 40)));
437
+ }
438
+ console.log(" -----------------------------------------------------------------------------------------------------------------");
439
+ // -----------------------------------------------------------------------------------------------------------------
440
+ // Testing if server implements QueryFirst
441
+ // -----------------------------------------------------------------------------------------------------------------
442
+ try {
443
+ console.log(" ---------------------------------------------------------- Testing QueryFirst");
444
+ const queryFirstRequest = {
445
+ view: {
446
+ viewId: node_opcua_1.NodeId.nullNodeId
447
+ },
448
+ nodeTypes: [
449
+ {
450
+ typeDefinitionNode: (0, node_opcua_1.makeExpandedNodeId)("i=58"),
451
+ includeSubTypes: true,
452
+ dataToReturn: [
453
+ {
454
+ attributeId: node_opcua_1.AttributeIds.AccessLevel,
455
+ relativePath: undefined
456
+ }
457
+ ]
458
+ }
459
+ ]
460
+ };
461
+ const queryFirstResult = yield the_session.queryFirst(queryFirstRequest);
462
+ console.log(" -----------------------------------------------------------------------------------------------------------------");
463
+ }
464
+ catch (err) {
465
+ if (err instanceof Error) {
466
+ console.log(" Server is not supporting queryFirst err=", err.message);
467
+ }
468
+ }
469
+ // create Read
470
+ if (doHistory) {
471
+ console.log(" ---------------------------------------------------------- History Read------------------------");
472
+ const now = Date.now();
473
+ const start = now - 1000; // read 1 seconds of history
474
+ const historicalReadResult = yield the_session.readHistoryValue(monitored_node, new Date(start), new Date(now));
475
+ console.log(historicalReadResult.toString());
476
+ console.log(" -----------------------------------------------------------------------------------------------------------------");
477
+ }
478
+ // ----------------------------------------------------------------------------------
479
+ // create subscription
480
+ // ----------------------------------------------------------------------------------
481
+ console.log(" ---------------------------------------------------------- Create Subscription ");
482
+ const parameters = {
483
+ maxNotificationsPerPublish: 10,
484
+ priority: 10,
485
+ publishingEnabled: true,
486
+ requestedLifetimeCount: 1000,
487
+ requestedMaxKeepAliveCount: 12,
488
+ requestedPublishingInterval: 2000
489
+ };
490
+ theSubscription = yield the_session.createSubscription2(parameters);
491
+ let t = getTick();
492
+ console.log("started subscription :", theSubscription.subscriptionId);
493
+ console.log(" revised parameters ");
494
+ console.log(" revised maxKeepAliveCount ", theSubscription.maxKeepAliveCount, " ( requested ", parameters.requestedMaxKeepAliveCount + ")");
495
+ console.log(" revised lifetimeCount ", theSubscription.lifetimeCount, " ( requested ", parameters.requestedLifetimeCount + ")");
496
+ console.log(" revised publishingInterval ", theSubscription.publishingInterval, " ( requested ", parameters.requestedPublishingInterval + ")");
497
+ theSubscription
498
+ .on("internal_error", (err) => {
499
+ console.log(" received internal error", err.message);
500
+ })
501
+ .on("keepalive", () => {
502
+ const t4 = getTick();
503
+ const span = t4 - t;
504
+ t = t4;
505
+ console.log("keepalive ", span / 1000, "sec", " pending request on server = ", theSubscription.getPublishEngine().nbPendingPublishRequests);
506
+ })
507
+ .on("terminated", () => {
508
+ /* */
509
+ });
510
+ try {
511
+ const results1 = yield theSubscription.getMonitoredItems();
512
+ console.log("MonitoredItems clientHandles", results1.clientHandles);
513
+ console.log("MonitoredItems serverHandles", results1.serverHandles);
514
+ }
515
+ catch (err) {
516
+ if (err instanceof Error) {
517
+ console.log("Server doesn't seems to implement getMonitoredItems method ", err.message);
518
+ }
519
+ }
520
+ // get_monitored_item
521
+ // monitor_a_variable_node_value
522
+ console.log("Monitoring monitor_a_variable_node_value");
523
+ // ---------------------------------------------------------------
524
+ // monitor a variable node value
525
+ // ---------------------------------------------------------------
526
+ console.log(" Monitoring node ", monitored_node.toString());
527
+ const monitoredItem = node_opcua_1.ClientMonitoredItem.create(theSubscription, {
528
+ attributeId: node_opcua_1.AttributeIds.Value,
529
+ nodeId: monitored_node
530
+ }, {
531
+ discardOldest: true,
532
+ queueSize: 10000,
533
+ samplingInterval: 1000
534
+ // xx filter: { parameterTypeId: "ns=0;i=0", encodingMask: 0 },
535
+ });
536
+ monitoredItem.on("initialized", () => {
537
+ console.log("monitoredItem initialized");
538
+ });
539
+ monitoredItem.on("changed", (dataValue1) => {
540
+ console.log(monitoredItem.itemToMonitor.nodeId.toString(), " value has changed to " + dataValue1.value.toString());
541
+ });
542
+ monitoredItem.on("err", (err_message) => {
543
+ console.log(monitoredItem.itemToMonitor.nodeId.toString(), chalk.red(" ERROR"), err_message);
544
+ });
545
+ const results = yield theSubscription.getMonitoredItems();
546
+ console.log("MonitoredItems clientHandles", results.clientHandles);
547
+ console.log("MonitoredItems serverHandles", results.serverHandles);
548
+ console.log("Monitoring monitor_the_object_events");
549
+ // ---------------------------------------------------------------
550
+ // monitor the object events
551
+ // ---------------------------------------------------------------
552
+ const baseEventTypeId = "i=2041"; // BaseEventType;
553
+ const serverObjectId = "i=2253";
554
+ const fields = [
555
+ "EventId",
556
+ "EventType",
557
+ "SourceNode",
558
+ "SourceName",
559
+ "Time",
560
+ "ReceiveTime",
561
+ "Message",
562
+ "Severity",
563
+ // ConditionType
564
+ "ConditionClassId",
565
+ "ConditionClassName",
566
+ "ConditionName",
567
+ "BranchId",
568
+ "Retain",
569
+ "EnabledState",
570
+ "Quality",
571
+ "LastSeverity",
572
+ "Comment",
573
+ "ClientUserId",
574
+ // AcknowledgeConditionType
575
+ "AckedState",
576
+ "ConfirmedState",
577
+ // AlarmConditionType
578
+ "ActiveState",
579
+ "InputNode",
580
+ "SuppressedState",
581
+ "HighLimit",
582
+ "LowLimit",
583
+ "HighHighLimit",
584
+ "LowLowLimit",
585
+ "Value"
586
+ ];
587
+ const eventFilter = (0, node_opcua_1.constructEventFilter)(fields, (0, node_opcua_1.ofType)("ConditionType"));
588
+ const event_monitoringItem = node_opcua_1.ClientMonitoredItem.create(theSubscription, {
589
+ attributeId: node_opcua_1.AttributeIds.EventNotifier,
590
+ nodeId: serverObjectId
591
+ }, {
592
+ discardOldest: true,
593
+ filter: eventFilter,
594
+ queueSize: 100000
595
+ });
596
+ event_monitoringItem.on("initialized", () => {
597
+ console.log("event_monitoringItem initialized");
598
+ });
599
+ event_monitoringItem.on("changed", (eventFields) => {
600
+ (0, node_opcua_1.dumpEvent)(the_session, fields, eventFields);
601
+ });
602
+ event_monitoringItem.on("err", (err_message) => {
603
+ console.log(chalk.red("event_monitoringItem ", baseEventTypeId, " ERROR"), err_message);
604
+ });
605
+ console.log("--------------------------------------------- Monitoring alarms");
606
+ const alarmNodeId = (0, node_opcua_1.coerceNodeId)("ns=2;s=1:Colours/EastTank?Green");
607
+ yield monitorAlarm(theSubscription, alarmNodeId);
608
+ console.log("Starting timer ", timeout);
609
+ if (timeout > 0) {
610
+ // simulate a connection break at t =timeout/2
611
+ // new Promise((resolve) => {
612
+ setTimeout(() => {
613
+ console.log(chalk.red(" -------------------------------------------------------------------- "));
614
+ console.log(chalk.red(" -- SIMULATE CONNECTION BREAK -- "));
615
+ console.log(chalk.red(" -------------------------------------------------------------------- "));
616
+ const socket = client._secureChannel._transport._socket;
617
+ socket.end();
618
+ socket.emit("error", new Error("ECONNRESET"));
619
+ }, timeout / 2.0);
620
+ // });
621
+ yield new Promise((resolve) => {
622
+ setTimeout(() => __awaiter(this, void 0, void 0, function* () {
623
+ console.log("time out => shutting down ");
624
+ if (!theSubscription) {
625
+ return resolve();
626
+ }
627
+ if (theSubscription) {
628
+ const s = theSubscription;
629
+ theSubscription = null;
630
+ yield s.terminate();
631
+ yield the_session.close();
632
+ yield client.disconnect();
633
+ console.log(" Done ");
634
+ process.exit(0);
635
+ }
636
+ }), timeout);
637
+ });
638
+ }
639
+ console.log(" closing session");
640
+ yield the_session.close();
641
+ console.log(" session closed");
642
+ console.log(" Calling disconnect");
643
+ yield client.disconnect();
644
+ console.log(chalk.cyan(" disconnected"));
645
+ console.log("success !! ");
646
+ });
647
+ }
648
+ process.once("SIGINT", () => __awaiter(void 0, void 0, void 0, function* () {
649
+ console.log(" user interruption ...");
650
+ if (theSubscription) {
651
+ console.log(chalk.red.bold(" Received client interruption from user "));
652
+ console.log(chalk.red.bold(" shutting down ..."));
653
+ const subscription = theSubscription;
654
+ theSubscription = null;
655
+ yield subscription.terminate();
656
+ }
657
+ yield the_session.close();
658
+ yield client.disconnect();
659
+ process.exit(0);
660
+ }));
661
+ main();
662
+ //# sourceMappingURL=simple_client_ts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_client_ts.js","sourceRoot":"","sources":["../bin/simple_client_ts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-samples",
3
- "version": "2.143.0",
3
+ "version": "2.144.0",
4
4
  "description": "pure nodejs OPCUA SDK - module samples",
5
5
  "bin": {
6
6
  "simple_client": "./dist/simple_client_ts.js",
@@ -24,17 +24,17 @@
24
24
  "easy-table": "^1.2.0",
25
25
  "env-paths": "2.2.1",
26
26
  "exit": "^0.1.2",
27
- "node-opcua": "2.143.0",
28
- "node-opcua-address-space": "2.143.0",
29
- "node-opcua-address-space-for-conformance-testing": "2.143.0",
27
+ "node-opcua": "2.144.0",
28
+ "node-opcua-address-space": "2.144.0",
29
+ "node-opcua-address-space-for-conformance-testing": "2.144.0",
30
30
  "node-opcua-assert": "2.139.0",
31
31
  "node-opcua-client-proxy": "2.143.0",
32
32
  "node-opcua-crypto": "4.16.0",
33
33
  "node-opcua-packet-analyzer": "2.139.0",
34
34
  "node-opcua-pki": "5.1.0",
35
- "node-opcua-server-configuration": "2.143.0",
35
+ "node-opcua-server-configuration": "2.144.0",
36
36
  "node-opcua-utils": "2.139.0",
37
- "node-opcua-vendor-diagnostic": "2.143.0",
37
+ "node-opcua-vendor-diagnostic": "2.144.0",
38
38
  "sprintf-js": "^1.1.3",
39
39
  "treeify": "^1.1.0",
40
40
  "yargs": "15.4.1"
@@ -54,7 +54,7 @@
54
54
  "internet of things"
55
55
  ],
56
56
  "homepage": "http://node-opcua.github.io/",
57
- "gitHead": "3bd85d4036f219f6f7e401d54e60afb3592ff1ba",
57
+ "gitHead": "bc32254c261b46a02dbc085b633a570ce21e64b7",
58
58
  "files": [
59
59
  "dist"
60
60
  ]