UNPKG

prisme-flow

Version:

prisme platform flow engine

105 lines (93 loc) 4.87 kB
module.exports = function(RED) { function wago(config) { RED.nodes.createNode(this,config); var context = this.context(); var node = this; this.on('input', function(msg) { var mbOutData = {payload: [0,0,0,0]}; var mbInData = msg; var diagMsg = "Im Waiting"; var statusColor; var getDataState = context.get('getDataState')||1; var voltsHold = []; var voltsL1 = context.get('voltsL1')||0; var voltsL2 = context.get('voltsL2')||0; var voltsL3 = context.get('voltsL3')||0; var ampresHold = []; var ampresL1 = context.get('ampresL1')||0; var ampresL2 = context.get('ampresL2')||0; var ampresL3 = context.get('ampresL3')||0; var freqHold = []; var freqL1 = context.get('freqL1')||0; var freqL2 = context.get('freqL2')||0; var freqL3 = context.get('freqL3')||0; mbOutData.payload[0] = "0"; // no reg comms and L1 measure mbOutData.payload[1] = "2304"; // AC line measurement switch(getDataState) { case 1: //voltage mbOutData.payload[2] = "1284"; // requests volts for L1 and L2 mbOutData.payload[3] = "6"; // requests volts for L3 statusColor = "red"; break; case 2: // current mbOutData.payload[2] = "513"; // requests ampres for L1 and L2 mbOutData.payload[3] = "3" ; // requests ampres for L3 statusColor = "yellow"; break; case 3: //frequency mbOutData.payload[2] = "4368"; // requests frequency for L1 and L2 mbOutData.payload[3] = "18" ; // requests frequency for L3 statusColor = "green"; break; case 4: // wattage break; } // voltage if ((mbInData.payload[2] == "1284") && (mbInData.payload[3] == "6")) { diagMsg = {payload: "getting voltage"}; voltsHold[0] = parseInt(mbInData.payload[4] + (mbInData.payload[5] << 8)); voltsHold[1] = parseInt(mbInData.payload[6] + (mbInData.payload[7] << 8)); voltsHold[2] = parseInt(mbInData.payload[8] + (mbInData.payload[9] << 8)); voltsL1 = {payload: voltsHold[0].toString() / 100}; voltsL2 = {payload: voltsHold[1].toString() / 100}; voltsL3 = {payload: voltsHold[2].toString() / 100}; context.set('voltsL1', voltsL1); context.set('voltsL2', voltsL2); context.set('voltsL3', voltsL3); getDataState = 2; } // current if ((mbInData.payload[2] == "513") && (mbInData.payload[3] == "3")) { diagMsg = {payload: "getting current"}; ampresHold[0] = parseInt(mbInData.payload[4] + (mbInData.payload[5] << 8)); ampresHold[1] = parseInt(mbInData.payload[6] + (mbInData.payload[7] << 8)); ampresHold[2] = parseInt(mbInData.payload[8] + (mbInData.payload[9] << 8)); ampresL1 = {payload: ampresHold[0].toString() / 1000}; ampresL2 = {payload: ampresHold[1].toString() / 1000}; ampresL3 = {payload: ampresHold[2].toString() / 1000}; context.set('ampresL1', ampresL1); context.set('ampresL2', ampresL2); context.set('ampresL3', ampresL3); getDataState = 3; } // frequency if ((mbInData.payload[2] == "4368") && (mbInData.payload[3] == "18")) { diagMsg = {payload: "getting frequency"}; freqHold[0] = parseInt(mbInData.payload[4] + (mbInData.payload[5] << 8)); freqHold[1] = parseInt(mbInData.payload[6] + (mbInData.payload[7] << 8)); freqHold[2] = parseInt(mbInData.payload[8] + (mbInData.payload[9] << 8)); freqL1 = {payload: freqHold[0].toString() / 1000}; freqL2 = {payload: freqHold[1].toString() / 1000}; freqL3 = {payload: freqHold[2].toString() / 1000}; context.set('freqL1', freqL1); context.set('freqL2', freqL2); context.set('freqL3', freqL3); getDataState = 1; } node.status({fill: statusColor,shape: "ring",text: diagMsg.payload}); context.set('getDataState', getDataState); node.send([diagMsg, mbOutData, voltsL1, voltsL2, voltsL3, ampresL1, ampresL2, ampresL3, freqL1, freqL2, freqL3]); }); } RED.nodes.registerType("Power Meas.",wago); };