UNPKG

prisme-flow

Version:

prisme platform flow engine

413 lines (363 loc) 10.8 kB
/** * Created by prisme.io on 09/06/2017. */ "use strict"; module.exports.get_timeUnit_name = function (unit) { var unitAbbreviation = ''; switch (unit) { case "ms": unitAbbreviation = 'msec.'; break; case "s": unitAbbreviation = 'sec.'; break; case "m": unitAbbreviation = 'min.'; break; case "h": unitAbbreviation = 'h.'; break; default: break; } return unitAbbreviation; }; module.exports.calc_milliseconds_by_time_and_unit = function (time, unit) { switch (unit) { case "ms": break; case "s": time = time * 1000; // seconds break; case "m": time = time * 60000; // minutes break; case "h": time = time * 3600000; // hours break; default: time = 10000; // 10 sec. break; } return time; }; module.exports.collectAlarmFields = function (field, key, value, msg) { switch (field) { // Common fields case "EventId": msg.EventId = value; break; case "EventType": msg.EventType = value; break; case "SourceNode": msg.SourceNode = value; break; case "SourceName": msg.SourceName = value; break; case "Time": msg.Time = value; break; case "ReceiveTime": msg.ReceiveTime = value; break; case "Message": msg.Message = value.text; break; case "Severity": msg.Severity = value; break; // ConditionType case "ConditionClassId": msg.ConditionClassId = value; break; case "ConditionClassName": msg.ConditionClassNameName = value; break; case "ConditionName": msg.ConditionName = value; break; case "BranchId": msg.BranchId = value; break; case "Retain": msg.Retain = value; break; case "EnabledState": msg.EnabledState = value.text; break; case "Quality": msg.Quality = value; break; case "LastSeverity": msg.LastSeverity = value; break; case "Comment": msg.Comment = value.text; break; case "ClientUserId": msg.ClientUserId = value; break; // AcknowledgeConditionType case "AckedState": msg.AckedState = value.text; break; case "ConfirmedState": msg.ConfirmedState = value.text; break; // AlarmConditionType case "ActiveState": msg.ActiveState = value.text; break; case "InputNode": msg.InputNode = value; break; case "SupressedState": msg.SupressedState = value.text; break; // Limits case "HighHighLimit": msg.HighHighLimit = value; break; case "HighLimit": msg.HighLimit = value; break; case "LowLimit": msg.LowLimit = value; break; case "LowLowLimit": msg.LowLowLimit = value; break; case "Value": msg.Value = value; break; default: msg.error = "unknown collected Alarm field " + field; break; } return msg; }; module.exports.getBasicEventFields = function () { return [ // Common fields "EventId", "EventType", "SourceNode", "SourceName", "Time", "ReceiveTime", "Message", "Severity", // ConditionType "ConditionClassId", "ConditionClassName", "ConditionName", "BranchId", "Retain", "EnabledState", "Quality", "LastSeverity", "Comment", "ClientUserId", // AcknowledgeConditionType "AckedState", "ConfirmedState", // AlarmConditionType "ActiveState", "InputNode", "SuppressedState", "HighLimit", "LowLimit", "HighHighLimit", "LowLowLimit", "Value" ]; }; /* Options defaults node-opcua options.requestedPublishingInterval = options.requestedPublishingInterval || 100; options.requestedLifetimeCount = options.requestedLifetimeCount || 60; options.requestedMaxKeepAliveCount = options.requestedMaxKeepAliveCount || 2; options.maxNotificationsPerPublish = options.maxNotificationsPerPublish || 2; options.publishingEnabled = options.publishingEnabled ? true : false; options.priority = options.priority || 1; */ module.exports.getEventSubscribtionParameters = function (timeMilliseconds) { return { requestedPublishingInterval: timeMilliseconds || 100, requestedLifetimeCount: 120, requestedMaxKeepAliveCount: 3, maxNotificationsPerPublish: 4, publishingEnabled: true, priority: 1 }; }; module.exports.getSubscriptionParameters = function (timeMilliseconds) { return { requestedPublishingInterval: timeMilliseconds || 100, requestedLifetimeCount: 30, requestedMaxKeepAliveCount: 3, maxNotificationsPerPublish: 10, publishingEnabled: true, priority: 10 } }; module.exports.buildBrowseMessage = function (topic) { return { "topic": topic, "nodeId": "", "browseName": "", "nodeClassType": "", "typeDefinition": "", "payload": "" }; }; module.exports.toInt32 = function (x) { var uint16 = x; if (uint16 >= Math.pow(2, 15)) { uint16 = x - Math.pow(2, 16); return uint16; } else { return uint16; } }; module.exports.get_node_status = function (statusValue) { var fillValue = "red"; var shapeValue = "dot"; switch (statusValue) { case "create client": case "connecting": case "connected": case "initialized": case "keepalive": fillValue = "green"; shapeValue = "ring"; break; case "active": case "active reading": case "active writing": case "active subscribing": case "active subscribed": case "active browsing": case "active alarm": case "active event": case "session active": case "subscribed": case "browse done": case "changed": fillValue = "green"; shapeValue = "dot"; break; case "disconnected": case "terminated": fillValue = "red"; shapeValue = "ring"; break; default: if (!statusValue) { fillValue = "blue"; statusValue = "waiting ..."; } break; } return { fill: fillValue, shape: shapeValue, status: statusValue }; }; module.exports.build_new_variant = function (opcua, datatype, value) { var nValue = new opcua.Variant({ dataType: opcua.DataType.Float, value: 0.0 }); switch (datatype) { case "Float": nValue = new opcua.Variant({ dataType: opcua.DataType.Float, value: parseFloat(value) }); break; case "Double": nValue = new opcua.Variant({ dataType: opcua.DataType.Double, value: parseFloat(value) }); break; case "Int32": nValue = new opcua.Variant({ dataType: opcua.DataType.Int32, value: parseInt(value) }); break; case "Int16": nValue = new opcua.Variant({ dataType: opcua.DataType.Int16, value: parseInt(value) }); break; case "Int8": nValue = new opcua.Variant({ dataType: opcua.DataType.Int8, value: parseInt(value) }); break; case "UInt32": nValue = new opcua.Variant({ dataType: opcua.DataType.UInt32, value: parseInt(value) }); break; case "UInt16": nValue = new opcua.Variant({ dataType: opcua.DataType.UInt16, value: parseInt(value) }); break; case "UInt8": nValue = new opcua.Variant({ dataType: opcua.DataType.UInt8, value: parseInt(value) }); break; case "Boolean": if (value && value !== "false") { nValue = new opcua.Variant({ dataType: opcua.DataType.Boolean, value: true }); } else { nValue = new opcua.Variant({ dataType: opcua.DataType.Boolean, value: false }); } break; case "String": nValue = new opcua.Variant({ dataType: opcua.DataType.String, value: value }); break; case "Byte": nValue = new opcua.Variant({ dataType: opcua.DataType.Byte, value: value }); break; default: nValue = new opcua.Variant({ dataType: opcua.DataType.BaseDataType, value: value }); break; } return nValue; }; module.exports.build_new_value_by_datatype = function (datatype, value) { var nValue = 0; switch (datatype) { case "Float": nValue = parseFloat(value); break; case "Double": nValue = parseFloat(value); // (Double) or Float64 ? break; case "Int8": var int8 = new Int8Array([value]); nValue = int8[0]; break; case "Int16": var int16 = new Int16Array([value]); nValue = int16[0]; break; case "Int32": var int32 = new Int32Array([value]); nValue = int32[0]; break; case "UInt8": var uint8 = new Uint8Array([value]); nValue = uint8[0]; break; case "UInt16": var uint16 = new Uint16Array([value]); nValue = uint16[0]; break; case "UInt32": var uint32 = new Uint32Array([value]); nValue = uint32[0]; break; case "Boolean": if (value && value !== "false") { nValue = true; } else { nValue = false; } break; case "String": nValue = value.toString(); break; default: nValue = value; break; } return nValue; };