node-opcua-client 2.98.0 → 2.98.1
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/alarms_and_conditions/client_alarm.d.ts +49 -0
- package/dist/alarms_and_conditions/client_alarm.js +110 -0
- package/dist/alarms_and_conditions/client_alarm.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_list.d.ts +25 -0
- package/dist/alarms_and_conditions/client_alarm_list.js +98 -0
- package/dist/alarms_and_conditions/client_alarm_list.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools.d.ts +4 -0
- package/dist/alarms_and_conditions/client_alarm_tools.js +157 -0
- package/dist/alarms_and_conditions/client_alarm_tools.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.d.ts +18 -0
- package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js +193 -0
- package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools_dump_event.d.ts +9 -0
- package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js +73 -0
- package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.d.ts +3 -0
- package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js +119 -0
- package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js.map +1 -0
- package/dist/alarms_and_conditions/client_tools.d.ts +7 -0
- package/dist/alarms_and_conditions/client_tools.js +180 -0
- package/dist/alarms_and_conditions/client_tools.js.map +1 -0
- package/dist/client_base.d.ts +277 -0
- package/dist/client_base.js +15 -0
- package/dist/client_base.js.map +1 -0
- package/dist/client_monitored_item.d.ts +21 -0
- package/dist/client_monitored_item.js +12 -0
- package/dist/client_monitored_item.js.map +1 -0
- package/dist/client_monitored_item_base.d.ts +39 -0
- package/dist/client_monitored_item_base.js +3 -0
- package/dist/client_monitored_item_base.js.map +1 -0
- package/dist/client_monitored_item_group.d.ts +21 -0
- package/dist/client_monitored_item_group.js +14 -0
- package/dist/client_monitored_item_group.js.map +1 -0
- package/dist/client_monitored_item_toolbox.d.ts +15 -0
- package/dist/client_monitored_item_toolbox.js +117 -0
- package/dist/client_monitored_item_toolbox.js.map +1 -0
- package/dist/client_session.d.ts +529 -0
- package/dist/client_session.js +11 -0
- package/dist/client_session.js.map +1 -0
- package/dist/client_session_keepalive_manager.d.ts +34 -0
- package/dist/client_session_keepalive_manager.js +150 -0
- package/dist/client_session_keepalive_manager.js.map +1 -0
- package/dist/client_subscription.d.ts +241 -0
- package/dist/client_subscription.js +15 -0
- package/dist/client_subscription.js.map +1 -0
- package/dist/client_utils.d.ts +22 -0
- package/dist/client_utils.js +88 -0
- package/dist/client_utils.js.map +1 -0
- package/dist/common.d.ts +17 -0
- package/dist/common.js +6 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/opcua_client.d.ts +118 -0
- package/dist/opcua_client.js +34 -0
- package/dist/opcua_client.js.map +1 -0
- package/dist/private/client_base_impl.d.ts +160 -0
- package/dist/private/client_base_impl.js +1349 -0
- package/dist/private/client_base_impl.js.map +1 -0
- package/dist/private/client_monitored_item_base_impl.d.ts +3 -0
- package/dist/private/client_monitored_item_base_impl.js +5 -0
- package/dist/private/client_monitored_item_base_impl.js.map +1 -0
- package/dist/private/client_monitored_item_group_impl.d.ts +53 -0
- package/dist/private/client_monitored_item_group_impl.js +162 -0
- package/dist/private/client_monitored_item_group_impl.js.map +1 -0
- package/dist/private/client_monitored_item_impl.d.ts +93 -0
- package/dist/private/client_monitored_item_impl.js +305 -0
- package/dist/private/client_monitored_item_impl.js.map +1 -0
- package/dist/private/client_publish_engine.d.ts +62 -0
- package/dist/private/client_publish_engine.js +409 -0
- package/dist/private/client_publish_engine.js.map +1 -0
- package/dist/private/client_session_impl.d.ts +631 -0
- package/dist/private/client_session_impl.js +1349 -0
- package/dist/private/client_session_impl.js.map +1 -0
- package/dist/private/client_subscription_impl.d.ts +93 -0
- package/dist/private/client_subscription_impl.js +780 -0
- package/dist/private/client_subscription_impl.js.map +1 -0
- package/dist/private/i_private_client.d.ts +21 -0
- package/dist/private/i_private_client.js +3 -0
- package/dist/private/i_private_client.js.map +1 -0
- package/dist/private/opcua_client_impl.d.ts +166 -0
- package/dist/private/opcua_client_impl.js +1001 -0
- package/dist/private/opcua_client_impl.js.map +1 -0
- package/dist/private/performance.d.ts +1 -0
- package/dist/private/performance.js +19 -0
- package/dist/private/performance.js.map +1 -0
- package/dist/reconnection.d.ts +9 -0
- package/dist/reconnection.js +382 -0
- package/dist/reconnection.js.map +1 -0
- package/dist/tools/findservers.d.ts +20 -0
- package/dist/tools/findservers.js +62 -0
- package/dist/tools/findservers.js.map +1 -0
- package/dist/tools/read_history_server_capabilities.d.ts +6 -0
- package/dist/tools/read_history_server_capabilities.js +99 -0
- package/dist/tools/read_history_server_capabilities.js.map +1 -0
- package/dist/user_identity_info.d.ts +1 -0
- package/dist/user_identity_info.js +3 -0
- package/dist/user_identity_info.js.map +1 -0
- package/dist/verify.d.ts +5 -0
- package/dist/verify.js +135 -0
- package/dist/verify.js.map +1 -0
- package/package.json +48 -44
- package/.nycrc.json +0 -14
- package/test_helpers/create_certificates.js +0 -1
- package/typedoc.js +0 -20
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { EventEmitter } from "events";
|
|
4
|
+
import { NodeId } from "node-opcua-nodeid";
|
|
5
|
+
import { StatusCode } from "node-opcua-status-code";
|
|
6
|
+
import { Variant } from "node-opcua-variant";
|
|
7
|
+
import { ClientSession } from "../client_session";
|
|
8
|
+
export interface TVariant<T> extends Variant {
|
|
9
|
+
value: T;
|
|
10
|
+
}
|
|
11
|
+
export interface TTwoStateStatus extends TVariant<string> {
|
|
12
|
+
id: TVariant<boolean>;
|
|
13
|
+
}
|
|
14
|
+
export interface EventStuff {
|
|
15
|
+
conditionId: TVariant<NodeId>;
|
|
16
|
+
eventType: TVariant<NodeId>;
|
|
17
|
+
eventId: TVariant<Buffer>;
|
|
18
|
+
retain: TVariant<boolean>;
|
|
19
|
+
activeState: TTwoStateStatus;
|
|
20
|
+
ackedState: TTwoStateStatus;
|
|
21
|
+
confirmedState: TTwoStateStatus;
|
|
22
|
+
conditionName?: TVariant<string>;
|
|
23
|
+
}
|
|
24
|
+
export interface ClientAlarm {
|
|
25
|
+
conditionId: NodeId;
|
|
26
|
+
eventType: NodeId;
|
|
27
|
+
fields: EventStuff;
|
|
28
|
+
on(eventName: "changed", eventHandler: () => void): this;
|
|
29
|
+
acknowledge(session: ClientSession, comment: string): Promise<StatusCode>;
|
|
30
|
+
getField(fieldName: string): Variant | null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* describes a OPCUA Alarm as seen in the client side
|
|
34
|
+
*/
|
|
35
|
+
export declare class ClientAlarm extends EventEmitter {
|
|
36
|
+
conditionId: NodeId;
|
|
37
|
+
eventType: NodeId;
|
|
38
|
+
eventId: Buffer;
|
|
39
|
+
fields: EventStuff;
|
|
40
|
+
constructor(eventFields: EventStuff);
|
|
41
|
+
confirm(session: ClientSession, comment: string): Promise<StatusCode>;
|
|
42
|
+
update(eventFields: EventStuff): void;
|
|
43
|
+
getRetain(): boolean;
|
|
44
|
+
toString(): string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
export declare function fieldsToJson(fields: string[], eventFields: Variant[], flat?: boolean): EventStuff;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.fieldsToJson = exports.ClientAlarm = void 0;
|
|
13
|
+
const events_1 = require("events");
|
|
14
|
+
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
15
|
+
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
16
|
+
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
17
|
+
const node_opcua_utils_1 = require("node-opcua-utils");
|
|
18
|
+
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
19
|
+
const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
|
|
20
|
+
/**
|
|
21
|
+
* describes a OPCUA Alarm as seen in the client side
|
|
22
|
+
*/
|
|
23
|
+
class ClientAlarm extends events_1.EventEmitter {
|
|
24
|
+
constructor(eventFields) {
|
|
25
|
+
super();
|
|
26
|
+
this.conditionId = (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.conditionId.value);
|
|
27
|
+
this.eventType = (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.eventType.value);
|
|
28
|
+
this.eventId = eventFields.eventId.value;
|
|
29
|
+
this.fields = eventFields;
|
|
30
|
+
this.update(eventFields);
|
|
31
|
+
}
|
|
32
|
+
acknowledge(session, comment) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
return yield session.acknowledgeCondition(this.conditionId, this.eventId, comment);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
confirm(session, comment) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
return yield session.confirmCondition(this.conditionId, this.eventId, comment);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
update(eventFields) {
|
|
43
|
+
(0, node_opcua_assert_1.assert)(this.conditionId.toString() === (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.conditionId.value).toString());
|
|
44
|
+
(0, node_opcua_assert_1.assert)(this.eventType.toString() === (0, node_opcua_nodeid_1.resolveNodeId)(eventFields.eventType.value).toString());
|
|
45
|
+
this.eventId = eventFields.eventId.value;
|
|
46
|
+
this.fields = eventFields;
|
|
47
|
+
}
|
|
48
|
+
getRetain() {
|
|
49
|
+
return this.fields.retain.value;
|
|
50
|
+
}
|
|
51
|
+
toString() {
|
|
52
|
+
return (this.constructor.name +
|
|
53
|
+
": " +
|
|
54
|
+
this.conditionId.toString() +
|
|
55
|
+
" " +
|
|
56
|
+
this.eventType.toString() +
|
|
57
|
+
" " +
|
|
58
|
+
Object.entries(this.fields)
|
|
59
|
+
.filter(([key, value]) => value.dataType !== node_opcua_variant_1.DataType.Null)
|
|
60
|
+
.map(([key, value]) => key.padEnd(30) + "=" + value.toString())
|
|
61
|
+
.join("\n") +
|
|
62
|
+
"\n\n");
|
|
63
|
+
}
|
|
64
|
+
getField(fieldName) {
|
|
65
|
+
return this.fields[fieldName] || null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.ClientAlarm = ClientAlarm;
|
|
69
|
+
/**
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
function fieldsToJson(fields, eventFields, flat) {
|
|
73
|
+
function setProperty(_data, fieldName, value) {
|
|
74
|
+
let name;
|
|
75
|
+
if (!fieldName || value === null) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!flat) {
|
|
79
|
+
const f = fieldName.split(".");
|
|
80
|
+
if (f.length === 1) {
|
|
81
|
+
fieldName = (0, node_opcua_utils_1.lowerFirstLetter)(fieldName);
|
|
82
|
+
_data[fieldName] = value;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
for (let i = 0; i < f.length - 1; i++) {
|
|
86
|
+
name = (0, node_opcua_utils_1.lowerFirstLetter)(f[i]);
|
|
87
|
+
_data[name] = _data[name] || {};
|
|
88
|
+
_data = _data[name];
|
|
89
|
+
}
|
|
90
|
+
name = (0, node_opcua_utils_1.lowerFirstLetter)(f[f.length - 1]);
|
|
91
|
+
_data[name] = value;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const name = fieldName.split(".").map(node_opcua_utils_1.lowerFirstLetter).join(".");
|
|
96
|
+
_data[name] = value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (fields.length > eventFields.length) {
|
|
100
|
+
warningLog("warning fields.length !== eventFields.length", fields.length, eventFields.length);
|
|
101
|
+
}
|
|
102
|
+
const data = {};
|
|
103
|
+
for (let index = 0; index < fields.length; index++) {
|
|
104
|
+
const variant = eventFields[index];
|
|
105
|
+
setProperty(data, fields[index], variant);
|
|
106
|
+
}
|
|
107
|
+
return data;
|
|
108
|
+
}
|
|
109
|
+
exports.fieldsToJson = fieldsToJson;
|
|
110
|
+
//# sourceMappingURL=client_alarm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client_alarm.js","sourceRoot":"","sources":["../../source/alarms_and_conditions/client_alarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from "events";
|
|
3
|
+
import { ClientAlarm, EventStuff } from "./client_alarm";
|
|
4
|
+
export interface ClientAlarmList {
|
|
5
|
+
on(eventName: "alarmChanged", handler: (alarm: ClientAlarm) => void): this;
|
|
6
|
+
on(eventName: "alarmDeleted", handler: (alarm: ClientAlarm) => void): this;
|
|
7
|
+
on(eventName: "newAlarm", handler: (alarm: ClientAlarm) => void): this;
|
|
8
|
+
emit(eventName: "alarmChanged", alarm: ClientAlarm): boolean;
|
|
9
|
+
emit(eventName: "newAlarm", alarm: ClientAlarm): boolean;
|
|
10
|
+
emit(eventName: "alarmDeleted", alarm: ClientAlarm): boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class ClientAlarmList extends EventEmitter implements Iterable<ClientAlarm> {
|
|
13
|
+
private _map;
|
|
14
|
+
constructor();
|
|
15
|
+
[Symbol.iterator](): Iterator<ClientAlarm>;
|
|
16
|
+
alarms(): ClientAlarm[];
|
|
17
|
+
update(eventField: EventStuff): void;
|
|
18
|
+
removeAlarm(eventField: EventStuff): void;
|
|
19
|
+
get length(): number;
|
|
20
|
+
purgeUnusedAlarms(): void;
|
|
21
|
+
private _removeAlarm;
|
|
22
|
+
private makeKey;
|
|
23
|
+
private findAlarm;
|
|
24
|
+
private deleteAlarm;
|
|
25
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientAlarmList = void 0;
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
6
|
+
const client_alarm_1 = require("./client_alarm");
|
|
7
|
+
// maintain a set of alarm list for a client
|
|
8
|
+
class ClientAlarmList extends events_1.EventEmitter {
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
this._map = {};
|
|
12
|
+
}
|
|
13
|
+
[Symbol.iterator]() {
|
|
14
|
+
let pointer = 0;
|
|
15
|
+
const components = Object.values(this._map);
|
|
16
|
+
return {
|
|
17
|
+
next() {
|
|
18
|
+
if (pointer >= components.length) {
|
|
19
|
+
return {
|
|
20
|
+
done: true,
|
|
21
|
+
value: components[pointer++]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return {
|
|
26
|
+
done: false,
|
|
27
|
+
value: components[pointer++]
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
alarms() {
|
|
34
|
+
return Object.values(this._map);
|
|
35
|
+
}
|
|
36
|
+
update(eventField) {
|
|
37
|
+
// Spec says:
|
|
38
|
+
// Clients shall check for multiple Event Notifications for a ConditionBranch to avoid
|
|
39
|
+
// overwriting a new state delivered together with an older state from the Refresh
|
|
40
|
+
// process.
|
|
41
|
+
const { conditionId, eventType } = eventField;
|
|
42
|
+
(0, node_opcua_assert_1.assert)(conditionId, "must have a valid conditionId ( verify that event is a acknodweldgeable type");
|
|
43
|
+
const alarm = this.findAlarm(conditionId.value, eventType.value);
|
|
44
|
+
if (!alarm) {
|
|
45
|
+
const key = this.makeKey(conditionId.value, eventType.value);
|
|
46
|
+
const newAlarm = new client_alarm_1.ClientAlarm(eventField);
|
|
47
|
+
this._map[key] = newAlarm;
|
|
48
|
+
this.emit("newAlarm", newAlarm);
|
|
49
|
+
this.emit("alarmChanged", newAlarm);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
alarm.update(eventField);
|
|
53
|
+
this.emit("alarmChanged", alarm);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
removeAlarm(eventField) {
|
|
57
|
+
const { conditionId, eventType } = eventField;
|
|
58
|
+
const alarm = this.findAlarm(conditionId.value, eventType.value);
|
|
59
|
+
if (alarm) {
|
|
60
|
+
alarm.update(eventField);
|
|
61
|
+
this._removeAlarm(alarm);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
get length() {
|
|
65
|
+
return Object.keys(this._map).length;
|
|
66
|
+
}
|
|
67
|
+
purgeUnusedAlarms() {
|
|
68
|
+
const alarms = this.alarms();
|
|
69
|
+
for (const alarm of alarms) {
|
|
70
|
+
if (!alarm.getRetain()) {
|
|
71
|
+
this._removeAlarm(alarm);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
_removeAlarm(alarm) {
|
|
76
|
+
this.emit("alarmDeleted", alarm);
|
|
77
|
+
this.deleteAlarm(alarm.conditionId, alarm.eventType);
|
|
78
|
+
}
|
|
79
|
+
makeKey(conditionId, eventType) {
|
|
80
|
+
return conditionId.toString() + "|" + eventType.toString();
|
|
81
|
+
}
|
|
82
|
+
findAlarm(conditionId, eventType) {
|
|
83
|
+
const key = this.makeKey(conditionId, eventType);
|
|
84
|
+
const _c = this._map[key];
|
|
85
|
+
return _c || null;
|
|
86
|
+
}
|
|
87
|
+
deleteAlarm(conditionId, eventType) {
|
|
88
|
+
const key = this.makeKey(conditionId, eventType);
|
|
89
|
+
const _c = this._map[key];
|
|
90
|
+
if (_c) {
|
|
91
|
+
delete this._map[key];
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.ClientAlarmList = ClientAlarmList;
|
|
98
|
+
//# sourceMappingURL=client_alarm_list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client_alarm_list.js","sourceRoot":"","sources":["../../source/alarms_and_conditions/client_alarm_list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ClientSession } from "../client_session";
|
|
2
|
+
import { ClientAlarmList } from "./client_alarm_list";
|
|
3
|
+
export declare function uninstallAlarmMonitoring(session: ClientSession): Promise<void>;
|
|
4
|
+
export declare function installAlarmMonitoring(session: ClientSession): Promise<ClientAlarmList>;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.installAlarmMonitoring = exports.uninstallAlarmMonitoring = void 0;
|
|
13
|
+
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
14
|
+
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
15
|
+
const node_opcua_service_filter_1 = require("node-opcua-service-filter");
|
|
16
|
+
const node_opcua_service_read_1 = require("node-opcua-service-read");
|
|
17
|
+
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
18
|
+
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
19
|
+
const client_alarm_1 = require("./client_alarm");
|
|
20
|
+
const client_alarm_list_1 = require("./client_alarm_list");
|
|
21
|
+
const client_alarm_tools_extractConditionFields_1 = require("./client_alarm_tools_extractConditionFields");
|
|
22
|
+
const client_tools_1 = require("./client_tools");
|
|
23
|
+
const doDebug = (0, node_opcua_debug_1.checkDebugFlag)("A&E");
|
|
24
|
+
const debugLog = (0, node_opcua_debug_1.make_debugLog)("A&E");
|
|
25
|
+
const warningLog = (0, node_opcua_debug_1.make_warningLog)("A&E");
|
|
26
|
+
function r(_key, o) {
|
|
27
|
+
if (o && o.dataType === "Null") {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return o;
|
|
31
|
+
}
|
|
32
|
+
// ------------------------------------------------------------------------------------------------------------------------------
|
|
33
|
+
function uninstallAlarmMonitoring(session) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const _sessionPriv = session;
|
|
36
|
+
if (!_sessionPriv.$clientAlarmList) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const mi = _sessionPriv.$monitoredItemForAlarmList;
|
|
40
|
+
mi.removeAllListeners();
|
|
41
|
+
_sessionPriv.$monitoredItemForAlarmList = null;
|
|
42
|
+
yield _sessionPriv.$subscriptionforAlarmList.terminate();
|
|
43
|
+
_sessionPriv.$clientAlarmList = null;
|
|
44
|
+
return;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
exports.uninstallAlarmMonitoring = uninstallAlarmMonitoring;
|
|
48
|
+
// Release 1.04 8 OPC Unified Architecture, Part 9
|
|
49
|
+
// 4.5 Condition state synchronization
|
|
50
|
+
//
|
|
51
|
+
// A Client that wishes to display the current status of Alarms and Conditions (known as a
|
|
52
|
+
// “current Alarm display”) would use the following logic to process Refresh Event Notifications.
|
|
53
|
+
// The Client flags all Retained Conditions as suspect on reception of the Event of the
|
|
54
|
+
// RefreshStartEventType. The Client adds any new Events that are received during the Refresh
|
|
55
|
+
// without flagging them as suspect. The Client also removes the suspect flag from any Retained
|
|
56
|
+
// Conditions that are returned as part of the Refresh. When the Client receives a
|
|
57
|
+
// RefreshEndEvent, the Client removes any remaining suspect Events, since they no longer
|
|
58
|
+
// apply.
|
|
59
|
+
// ------------------------------------------------------------------------------------------------------------------------------
|
|
60
|
+
function installAlarmMonitoring(session) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const _sessionPriv = session;
|
|
63
|
+
// create
|
|
64
|
+
if (_sessionPriv.$clientAlarmList) {
|
|
65
|
+
return _sessionPriv.$clientAlarmList;
|
|
66
|
+
}
|
|
67
|
+
const clientAlarmList = new client_alarm_list_1.ClientAlarmList();
|
|
68
|
+
_sessionPriv.$clientAlarmList = clientAlarmList;
|
|
69
|
+
const request = {
|
|
70
|
+
maxNotificationsPerPublish: 100,
|
|
71
|
+
priority: 6,
|
|
72
|
+
publishingEnabled: true,
|
|
73
|
+
requestedLifetimeCount: 10000,
|
|
74
|
+
requestedMaxKeepAliveCount: 10,
|
|
75
|
+
requestedPublishingInterval: 500
|
|
76
|
+
};
|
|
77
|
+
const subscription = yield session.createSubscription2(request);
|
|
78
|
+
_sessionPriv.$subscriptionforAlarmList = subscription;
|
|
79
|
+
const itemToMonitor = {
|
|
80
|
+
attributeId: node_opcua_data_model_1.AttributeIds.EventNotifier,
|
|
81
|
+
nodeId: (0, node_opcua_nodeid_1.resolveNodeId)("Server") // i=2253
|
|
82
|
+
};
|
|
83
|
+
const fields = yield (0, client_alarm_tools_extractConditionFields_1.extractConditionFields)(session, "AlarmConditionType");
|
|
84
|
+
const AcknowledgeableConditionType = (0, node_opcua_nodeid_1.resolveNodeId)("AcknowledgeableConditionType");
|
|
85
|
+
const eventFilter = (0, node_opcua_service_filter_1.constructEventFilter)(fields, (0, node_opcua_service_filter_1.ofType)(AcknowledgeableConditionType));
|
|
86
|
+
const monitoringParameters = {
|
|
87
|
+
discardOldest: false,
|
|
88
|
+
filter: eventFilter,
|
|
89
|
+
queueSize: 1000,
|
|
90
|
+
samplingInterval: 0
|
|
91
|
+
};
|
|
92
|
+
// now create a event monitored Item
|
|
93
|
+
const eventMonitoringItem = yield subscription.monitor(itemToMonitor, monitoringParameters, node_opcua_service_read_1.TimestampsToReturn.Both);
|
|
94
|
+
const queueEvent = [];
|
|
95
|
+
function flushQueue() {
|
|
96
|
+
const q = [...queueEvent];
|
|
97
|
+
queueEvent.length = 0;
|
|
98
|
+
for (const pojo of q) {
|
|
99
|
+
clientAlarmList.update(pojo);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let inInit = true;
|
|
103
|
+
eventMonitoringItem.on("changed", (eventFields) => {
|
|
104
|
+
var _a, _b;
|
|
105
|
+
const pojo = (0, client_alarm_1.fieldsToJson)(fields, eventFields);
|
|
106
|
+
const { eventType, eventId, conditionId, conditionName } = pojo;
|
|
107
|
+
debugLog("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ---- ALARM RECEIVED " +
|
|
108
|
+
eventType.value.toString() +
|
|
109
|
+
" " +
|
|
110
|
+
((_a = eventId.value) === null || _a === void 0 ? void 0 : _a.toString("hex")));
|
|
111
|
+
try {
|
|
112
|
+
if (!conditionId || !conditionId.value || conditionId.dataType === node_opcua_variant_1.DataType.Null) {
|
|
113
|
+
// not a acknowledgeable condition
|
|
114
|
+
warningLog(" not acknowledgeable condition ---- " + eventType.value.toString() + " ", conditionId, conditionName === null || conditionName === void 0 ? void 0 : conditionName.value, " " + ((_b = eventId.value) === null || _b === void 0 ? void 0 : _b.toString("hex")));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
queueEvent.push(pojo);
|
|
118
|
+
if (queueEvent.length === 1 && !inInit) {
|
|
119
|
+
setTimeout(() => flushQueue(), 10);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
warningLog(JSON.stringify(pojo, r, " "));
|
|
124
|
+
warningLog("Error !!", err);
|
|
125
|
+
}
|
|
126
|
+
// Release 1.04 8 OPC Unified Architecture, Part 9
|
|
127
|
+
// 4.5 Condition state synchronization
|
|
128
|
+
// RefreshRequiredEventType
|
|
129
|
+
// Under some circumstances a Server may not be capable of ensuring the Client is fully
|
|
130
|
+
// in sync with the current state of Condition instances. For example, if the underlying
|
|
131
|
+
// system represented by the Server is reset or communications are lost for some period
|
|
132
|
+
// of time the Server may need to resynchronize itself with the underlying system. In
|
|
133
|
+
// these cases, the Server shall send an Event of the RefreshRequiredEventType to
|
|
134
|
+
// advise the Client that a Refresh may be necessary. A Client receiving this special
|
|
135
|
+
// Event should initiate a ConditionRefresh as noted in this clause.
|
|
136
|
+
// TODO
|
|
137
|
+
});
|
|
138
|
+
try {
|
|
139
|
+
yield (0, client_tools_1.callConditionRefresh)(subscription);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
if (err.message.match(/BadNothingToDo/)) {
|
|
143
|
+
/** fine! nothing to do */
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
warningLog("Server may not implement condition refresh", err.message);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_sessionPriv.$monitoredItemForAlarmList = eventMonitoringItem;
|
|
150
|
+
setTimeout(() => flushQueue(), 10);
|
|
151
|
+
inInit = false;
|
|
152
|
+
// also request updates
|
|
153
|
+
return clientAlarmList;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
exports.installAlarmMonitoring = installAlarmMonitoring;
|
|
157
|
+
//# sourceMappingURL=client_alarm_tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client_alarm_tools.js","sourceRoot":"","sources":["../../source/alarms_and_conditions/client_alarm_tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StatusCode } from "node-opcua-status-code";
|
|
2
|
+
import { ClientSession } from "../client_session";
|
|
3
|
+
import { EventStuff } from "./client_alarm";
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param session
|
|
7
|
+
* @param eventStuff
|
|
8
|
+
* @param comment
|
|
9
|
+
*/
|
|
10
|
+
export declare function acknowledgeCondition(session: ClientSession, eventStuff: EventStuff, comment: string): Promise<StatusCode>;
|
|
11
|
+
export declare function confirmCondition(session: ClientSession, eventStuff: EventStuff, comment: string): Promise<StatusCode>;
|
|
12
|
+
/**
|
|
13
|
+
* Enumerate all events
|
|
14
|
+
* @param session
|
|
15
|
+
*/
|
|
16
|
+
export declare function findActiveConditions(session: ClientSession): Promise<EventStuff[]>;
|
|
17
|
+
export declare function acknwoledgeAllConditions(session: ClientSession, message: string): Promise<void>;
|
|
18
|
+
export declare function confirmAllConditions(session: ClientSession, message: string): Promise<void>;
|