UNPKG

prisme-flow

Version:

prisme platform flow engine

61 lines (46 loc) 1.76 kB
/** * Created by prisme.io on 09/06/2017. */ module.exports = function (RED) { "use strict"; var opcua = require('node-opcua'); var opcuaBasics = require('./opcua-basics'); function OpcUaItemNode(n) { RED.nodes.createNode(this, n); this.item = n.item; // OPC UA address: ns=2;i=4 OR ns=3;s=MyVariable this.datatype = n.datatype; // String; this.value = n.value; // 66.6 this.name = n.name; // browseName shall be put here var node = this; function verbose_warn(logMessage) { if (RED.settings.verbose) { node.warn((node.name) ? node.name + ': ' + logMessage : 'OpcUaClientNode: ' + logMessage); } } function verbose_log(logMessage) { if (RED.settings.verbose) { node.log(logMessage); } } node.on("input", function (msg) { msg.topic = node.item; msg.datatype = node.datatype; msg.browseName = node.name; verbose_log('node value:' + node.value); if (node.value) { if (node.datatype) { msg.payload = opcuaBasics.build_new_value_by_datatype(node.datatype, node.value); } if (msg.datatype) { msg.payload = opcuaBasics.build_new_value_by_datatype(msg.datatype, node.value); } verbose_warn("setting value by Item " + msg.payload); } else { msg.payload = opcuaBasics.build_new_value_by_datatype(msg.datatype, msg.payload); verbose_warn("setting value by Input " + msg.payload); } node.send(msg); }); } RED.nodes.registerType("OpcUa-Item", OpcUaItemNode); };