UNPKG

node-red-contrib-modbus

Version:

The all in one Modbus TCP, UDP and Serial contribution long term supported package for Node-RED.

3 lines (2 loc) 3.61 kB
module.exports=function(t){require("source-map-support").install();var r=require("./modbus-basics"),a=require("./core/modbus-core"),n=require("./core/modbus-io-core"),u=require("debug")("contribModbus:getter");t.nodes.registerType("modbus-getter",function(e){t.nodes.createNode(this,e),this.name=e.name,this.unitid=e.unitid,this.dataType=e.dataType,this.adr=e.adr,this.quantity=e.quantity,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.showWarnings=e.showWarnings,this.msgThruput=e.msgThruput,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=t.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities,this.emptyMsgOnFail=e.emptyMsgOnFail,this.keepMsgProperties=e.keepMsgProperties,this.internalDebugLog=u,this.verboseLogging=t.settings.verbose,this.delayOnStart=e.delayOnStart,this.enableDeformedMessages=e.enableDeformedMessages,this.startDelayTime=parseInt(e.startDelayTime)||10;var i=this,o=(i.bufferMessageList=new Map,i.INPUT_TIMEOUT_MILLISECONDS=1e3,i.delayOccured=!1,i.inputDelayTimer=null,r.setNodeStatusTo("waiting",i),t.nodes.getNode(e.server));function s(e){t.settings.verbose&&i.showWarnings&&i.warn("Getter -> "+e)}o&&(o.registerForModbus(i),r.initModbusClientEvents(i,o),i.onModbusCommandDone=function(e,t){i.showStatusActivities&&r.setNodeStatusTo("reading done",i),i.send(n.buildMessageWithIO(i,e.data,e,t)),i.emit("modbusGetterNodeDone")},i.errorProtocolMsg=function(e,t){i.showErrors&&r.logMsgError(i,e,t)},i.onModbusCommandError=function(e,t){i.internalDebugLog(e.message);var s=a.getOriginalMessage(i.bufferMessageList,t);i.errorProtocolMsg(e,s),r.sendEmptyMsgOnFail(i,e,t),r.setModbusError(i,o,e,s),i.emit("modbusGetterNodeError")},i.showWarnings&&i.enableDeformedMessages&&i.warn("Deformed Message support is enabled"),i.buildNewMessageObject=function(e,t){var s=a.getObjectId();return{topic:t.topic||e.id,messageId:s,payload:{value:t.payload.value||t.payload,unitid:e.unitid,fc:a.functionCodeModbusRead(e.dataType),address:e.adr,quantity:e.quantity,enableDeformedMessages:e.enableDeformedMessages,messageId:s}}},i.isReadyForInput=function(){return o.client&&o.isActive()&&i.delayOccured},i.isNotReadyForInput=function(){return!i.isReadyForInput()},i.resetInputDelayTimer=function(){i.inputDelayTimer&&(s("reset input delay timer node "+i.id),clearTimeout(i.inputDelayTimer)),i.inputDelayTimer=null,i.delayOccured=!1},i.initializeInputDelayTimer=function(){i.resetInputDelayTimer(),i.delayOnStart?(s("initialize input delay timer node "+i.id),i.inputDelayTimer=setTimeout(function(){i.delayOccured=!0},i.INPUT_TIMEOUT_MILLISECONDS*i.startDelayTime)):i.delayOccured=!0},i.initializeInputDelayTimer(),i.on("input",function(t){if(r.invalidPayloadIn(t))s("Invalid message on input.");else if(i.isNotReadyForInput())s("Inject while node is not ready for input.");else if(o.isInactive())s("You sent an input to inactive client. Please use initial delay on start or send data more slowly.");else{t=Object.assign({},t);try{var e=i.buildNewMessageObject(i,t);i.bufferMessageList.set(e.messageId,r.buildNewMessage(i.keepMsgProperties,t,e)),o.emit("readModbus",e,i.onModbusCommandDone,i.onModbusCommandError),i.showStatusActivities&&r.setNodeStatusTo(o.actualServiceState,i)}catch(e){i.errorProtocolMsg(e,t),r.sendEmptyMsgOnFail(i,e,t)}}}),i.on("close",function(e){r.setNodeStatusTo("closed",i),i.resetInputDelayTimer(),i.removeAllListeners(),i.bufferMessageList.clear(),o.deregisterForModbus(i.id,e)}),i.showStatusActivities||r.setNodeDefaultStatus(i))})}; //# sourceMappingURL=maps/modbus-getter.js.map