node-red-contrib-modbus
Advanced tools
Comparing version 5.1.0 to 5.2.0
@@ -5,2 +5,16 @@ # Changelog | ||
## [5.2.0](https://github.com/biancoroyal/node-red-contrib-modbus/compare/v5.1.0...v5.2.0) (2019-12-08) | ||
### Features | ||
* [#161](https://github.com/biancoroyal/node-red-contrib-modbus/issues/161) multiple RTU devices via UnitID ([b0b5011](https://github.com/biancoroyal/node-red-contrib-modbus/commit/b0b5011be4ab5e7c06ab44fd9df7b0ff5ddd0fd8)) | ||
### Bug Fixes | ||
* [#160](https://github.com/biancoroyal/node-red-contrib-modbus/issues/160) error on show activities true ([af27fe6](https://github.com/biancoroyal/node-red-contrib-modbus/commit/af27fe616654eb074bb29f34a163d4ffabc742bd)) | ||
* serialport list call ([f401c58](https://github.com/biancoroyal/node-red-contrib-modbus/commit/f401c58cb384ce87489aecaa99a3000f18e4222b)) | ||
* typo config node client ([9be8b16](https://github.com/biancoroyal/node-red-contrib-modbus/commit/9be8b1634469abfe6b8b6fb471a16f9387b6cee4)) | ||
## [5.1.0](https://github.com/biancoroyal/node-red-contrib-modbus/compare/v5.1.0-1...v5.1.0) (2019-12-03) | ||
@@ -7,0 +21,0 @@ |
@@ -1,2 +0,2 @@ | ||
"use strict";require("source-map-support").install();var de=de||{biancoroyal:{modbus:{core:{client:{}}}}};de.biancoroyal.modbus.core.client.internalDebug=de.biancoroyal.modbus.core.client.internalDebug||require("debug")("contribModbus:core:client"),de.biancoroyal.modbus.core.client.internalDebugFSM=de.biancoroyal.modbus.core.client.internalDebugFSM||require("debug")("contribModbus:core:client:fsm"),de.biancoroyal.modbus.core.client.modbusSerialDebug=de.biancoroyal.modbus.core.client.modbusSerialDebug||require("debug")("modbus-serial"),de.biancoroyal.modbus.core.client.XStateFSM=de.biancoroyal.modbus.core.client.XStateFSM||require("@xstate/fsm"),de.biancoroyal.modbus.core.client.stateLogEnabled=de.biancoroyal.modbus.core.client.stateLogEnabled||!1,de.biancoroyal.modbus.core.client.networkErrors=["ESOCKETTIMEDOUT","ETIMEDOUT","ECONNRESET","ENETRESET","ECONNABORTED","ECONNREFUSED","ENETUNREACH","ENOTCONN","ESHUTDOWN","EHOSTDOWN","ENETDOWN","EWOULDBLOCK","EAGAIN","EHOSTUNREACH"],de.biancoroyal.modbus.core.client.createStateMachineService=function(){return this.stateLogEnabled=!1,this.XStateFSM.createMachine({id:"modbus",initial:"new",states:{new:{on:{INIT:"init",STOP:"stoped"}},broken:{on:{INIT:"init",STOP:"stoped",FAILURE:"failed",CLOSE:"closed"}},init:{on:{OPENSERIAL:"opened",CONNECT:"connected",FAILURE:"failed"}},opened:{on:{CONNECT:"connected",FAILURE:"failed",CLOSE:"closed"}},connected:{on:{CLOSE:"closed",ACTIVATE:"activated",FAILURE:"failed"}},activated:{on:{CLOSE:"closed",READ:"reading",WRITE:"writing",QUEUE:"queueing",FAILURE:"failed"}},queueing:{on:{CONNECT:"connected",ACTIVATE:"activated",READ:"reading",WRITE:"writing",EMPTY:"empty",FAILURE:"failed",CLOSE:"closed"}},empty:{on:{QUEUE:"queueing",FAILURE:"failed",CLOSE:"closed"}},reading:{on:{ACTIVATE:"activated",FAILURE:"failed"}},writing:{on:{ACTIVATE:"activated",FAILURE:"failed"}},closed:{on:{FAILURE:"failed",BREAK:"broken"}},failed:{on:{CLOSE:"closed",BREAK:"broken",STOP:"stoped"}},stoped:{on:{QUEUE:"stoped",ACTIVATE:"stoped"}}}})},de.biancoroyal.modbus.core.client.startStateService=function(e){return this.XStateFSM.interpret(e).start()},de.biancoroyal.modbus.core.client.messagesAllowedStates=["activated","queueing","empty"],module.exports=de.biancoroyal.modbus.core.client; | ||
"use strict";require("source-map-support").install();var de=de||{biancoroyal:{modbus:{core:{client:{}}}}};de.biancoroyal.modbus.core.client.internalDebug=de.biancoroyal.modbus.core.client.internalDebug||require("debug")("contribModbus:core:client"),de.biancoroyal.modbus.core.client.internalDebugFSM=de.biancoroyal.modbus.core.client.internalDebugFSM||require("debug")("contribModbus:core:client:fsm"),de.biancoroyal.modbus.core.client.modbusSerialDebug=de.biancoroyal.modbus.core.client.modbusSerialDebug||require("debug")("modbus-serial"),de.biancoroyal.modbus.core.client.XStateFSM=de.biancoroyal.modbus.core.client.XStateFSM||require("@xstate/fsm"),de.biancoroyal.modbus.core.client.stateLogEnabled=de.biancoroyal.modbus.core.client.stateLogEnabled||!1,de.biancoroyal.modbus.core.client.networkErrors=["ESOCKETTIMEDOUT","ETIMEDOUT","ECONNRESET","ENETRESET","ECONNABORTED","ECONNREFUSED","ENETUNREACH","ENOTCONN","ESHUTDOWN","EHOSTDOWN","ENETDOWN","EWOULDBLOCK","EAGAIN","EHOSTUNREACH"],de.biancoroyal.modbus.core.client.createStateMachineService=function(){return this.stateLogEnabled=!1,this.XStateFSM.createMachine({id:"modbus",initial:"new",states:{new:{on:{INIT:"init",STOP:"stopped"}},broken:{on:{INIT:"init",STOP:"stopped",FAILURE:"failed",CLOSE:"closed",ACTIVATE:"activated"}},init:{on:{OPENSERIAL:"opened",CONNECT:"connected",FAILURE:"failed"}},opened:{on:{CONNECT:"connected",FAILURE:"failed",CLOSE:"closed"}},connected:{on:{CLOSE:"closed",ACTIVATE:"activated",FAILURE:"failed"}},activated:{on:{CLOSE:"closed",READ:"reading",WRITE:"writing",QUEUE:"queueing",FAILURE:"failed"}},queueing:{on:{ACTIVATE:"activated",READ:"reading",WRITE:"writing",EMPTY:"empty",FAILURE:"failed",CLOSE:"closed"}},empty:{on:{QUEUE:"queueing",FAILURE:"failed",CLOSE:"closed"}},reading:{on:{ACTIVATE:"activated",FAILURE:"failed"}},writing:{on:{ACTIVATE:"activated",FAILURE:"failed"}},closed:{on:{FAILURE:"failed",BREAK:"broken",CONNECT:"connected"}},failed:{on:{CLOSE:"closed",BREAK:"broken",STOP:"stopped"}},stopped:{on:{NEW:"new",STOP:"stopped"}}}})},de.biancoroyal.modbus.core.client.startStateService=function(e){return this.XStateFSM.interpret(e).start()},de.biancoroyal.modbus.core.client.checkUnitId=function(e,a){return"tcp"===a?0<=e&&e<=255:1<=e&&e<=247},de.biancoroyal.modbus.core.client.readModbus=function(a,t,n,i){if(a.client){a.bufferCommands||a.stateService.send("READ"),a.setUnitIdFromPayload(t),a.client.setTimeout(a.clientTimeout),a.queueLog(JSON.stringify({info:"read msg",message:t.payload,unitid:t.queueUnitId,timeout:a.client.getTimeout(),state:a.actualServiceState.value}));try{switch(parseInt(t.payload.fc)){case 1:a.client.readCoils(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;case 2:a.client.readDiscreteInputs(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;case 3:a.client.readHoldingRegisters(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;case 4:a.client.readInputRegisters(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;default:a.activateSending(t),i(new Error("Function Code Unknown"),t),this.internalDebug("Function Code Unknown %s",t.payload.fc)}}catch(e){this.internalDebug(e.message),a.modbusErrorHandling(e)}}},de.biancoroyal.modbus.core.client.writeModbus=function(a,t,n,i){if(a.client){a.bufferCommands||a.stateService.send("WRITE"),a.setUnitIdFromPayload(t),a.client.setTimeout(a.clientTimeout),a.queueLog(JSON.stringify({info:"write msg",message:t.payload,unitid:t.queueUnitId,timeout:a.client.getTimeout(),state:a.actualServiceState.value}));try{switch(parseInt(t.payload.fc)){case 15:parseInt(t.payload.value.length)!==parseInt(t.payload.quantity)?(a.activateSending(t),i(new Error("Quantity should be less or equal to coil payload array length: "+t.payload.value.length+" Addr: "+t.payload.address+" Q: "+t.payload.quantity),t)):a.client.writeCoils(parseInt(t.payload.address),t.payload.value).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;case 5:t.payload.value?t.payload.value=!0:t.payload.value=!1,a.client.writeCoil(parseInt(t.payload.address),t.payload.value).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;case 16:parseInt(t.payload.value.length)!==parseInt(t.payload.quantity)?(a.activateSending(t),i(new Error("Quantity should be less or equal to register payload array length: "+t.payload.value.length+" Addr: "+t.payload.address+" Q: "+t.payload.quantity),t)):a.client.writeRegisters(parseInt(t.payload.address),t.payload.value).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;case 6:a.client.writeRegister(parseInt(t.payload.address),parseInt(t.payload.value)).then(function(e){a.activateSending(t),n(e,t)}).catch(function(e){a.activateSending(t),i(e,t),a.modbusErrorHandling(e)});break;default:a.activateSending(t),i(new Error("Function Code Unknown"),t),this.internalDebug("Function Code Unknown %s",t.payload.fc)}}catch(e){this.internalDebug(e.message),a.modbusErrorHandling(e)}}},de.biancoroyal.modbus.core.client.setNewNodeSettings=function(e,a){switch(a||this.internalDebug("New Connection message invalid."),a.payload.connectorType){case"TCP":e.tcpHost=a.payload.tcpHost||e.tcpHost,e.tcpPort=a.payload.tcpPort||e.tcpPort,e.tcpType=a.payload.tcpType||e.tcpType,this.internalDebug("New Connection Data "+e.tcpHost+" "+e.tcpPort+" "+e.tcpType);break;case"SERIAL":a.payload.serialPort&&(e.serialPort=a.payload.serialPort||e.serialPort),a.payload.serialBaudrate&&(e.serialBaudrate=parseInt(a.payload.serialBaudrate)||e.serialBaudrate),e.serialDatabits=a.payload.serialDatabits||e.serialDatabits,e.serialStopbits=a.payload.serialStopbits||e.serialStopbits,e.serialParity=a.payload.serialParity||e.serialParity,e.serialType=a.payload.serialType||e.serialType,a.payload.serialConnectionDelay&&(e.serialConnectionDelay=parseInt(a.payload.serialConnectionDelay)||e.serialConnectionDelay),this.internalDebug("New Connection Data "+e.serialPort+" "+e.serialBaudrate+" "+e.serialType);break;default:this.internalDebug("Unknown Dynamic Reconnect Type "+a.payload.connectorType)}a.payload.unitId&&(e.unit_id=parseInt(a.payload.unitId)||e.unit_id),a.payload.commandDelay&&(e.commandDelay=parseInt(a.payload.commandDelay)||e.commandDelay),a.payload.clientTimeout&&(e.clientTimeout=parseInt(a.payload.clientTimeout)||e.clientTimeout),a.payload.reconnectTimeout&&(e.reconnectTimeout=parseInt(a.payload.reconnectTimeout)||e.reconnectTimeout)},de.biancoroyal.modbus.core.client.messagesAllowedStates=["activated","queueing","empty"],module.exports=de.biancoroyal.modbus.core.client; | ||
//# sourceMappingURL=../maps/core/modbus-client-core.js.map |
@@ -21,2 +21,3 @@ { | ||
"timeout": "Timeout (ms)", | ||
"reconnectOnTimeout": "Reconnect bei Timeouts", | ||
"reconnectTimeout": "Reconnect-Timeout (ms)" | ||
@@ -23,0 +24,0 @@ } |
@@ -21,5 +21,7 @@ { | ||
"timeout": "Timeout (ms)", | ||
"reconnectTimeout": "Reconnect timeout (ms)" | ||
"reconnectOnTimeout": "Reconnect on timeout", | ||
"reconnectTimeout": "Reconnect timeout (ms)", | ||
"parallelUnitIdsAllowed": "UnitId's in parallel" | ||
} | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
"use strict";require("source-map-support").install();var de=de||{biancoroyal:{modbus:{basics:{}}}};de.biancoroyal.modbus.basics.internalDebug=de.biancoroyal.modbus.basics.internalDebug||require("debug")("contribModbus:basics"),de.biancoroyal.modbus.basics.util=de.biancoroyal.modbus.basics.util||require("util"),de.biancoroyal.modbus.basics.statusLog=!1,de.biancoroyal.modbus.basics.get_timeUnit_name=function(e){var o="";switch(e){case"ms":o="msec.";break;case"s":o="sec.";break;case"m":o="min.";break;case"h":o="h."}return o},de.biancoroyal.modbus.basics.calc_rateByUnit=function(e,o){switch(o){case"ms":break;case"s":e=1e3*parseInt(e);break;case"m":e=6e4*parseInt(e);break;case"h":e=36e5*parseInt(e);break;default:e=1e4}return e},de.biancoroyal.modbus.basics.setNodeStatusProperties=function(e,o){var s="yellow",t="ring";switch(e){case"connecting":s="yellow",t="ring";break;case"error":s="red",t="ring";break;case"initialized":s="yellow",t="dot";break;case"not ready to read":case"not ready to write":s="yellow",t="ring";break;case"connected":s="green",t="ring";break;case"timeout":s="red",t="ring";break;case"active":case"active reading":case"active writing":o||(e="active"),s="green",t="dot";break;case"disconnected":case"terminated":s="red",t="ring";break;case"polling":s="green",t=o?"ring":(e="active","dot");break;default:e&&"waiting"!==e||(s="blue",e="waiting ...")}return{fill:s,shape:t,status:e}},de.biancoroyal.modbus.basics.setNodeStatusByResponseTo=function(e,o,s){var t="red",a="dot";switch(e){case"initialized":t="green",a="ring";break;case"active":t="green",a="dot";break;default:e&&"waiting"!==e||(t="blue",e="waiting ...")}s.status({fill:t,shape:a,text:this.util.inspect(o,!1,null)})},de.biancoroyal.modbus.basics.setNodeStatusResponse=function(e,o){o.status({fill:"green",shape:"dot",text:"active got length: "+e})},de.biancoroyal.modbus.basics.setModbusError=function(e,o,s,t){if(s)switch(s.message){case"Timed out":this.setNodeStatusTo("timeout",e);break;case"FSM Not Ready To Reconnect":this.setNodeStatusTo("not ready to reconnect",e);break;case"Port Not Open":this.setNodeStatusTo("reconnect",e),o.emit("reconnect");break;default:this.internalDebug(s.message),e.showErrors&&(this.setNodeStatusTo("error "+s.message,e),e.error(s,t))}},de.biancoroyal.modbus.basics.setNodeStatusTo=function(e,o){var s=this.setNodeStatusProperties(e,o.showStatusActivities);o.status({fill:s.fill,shape:s.shape,text:s.status})},de.biancoroyal.modbus.basics.onModbusInit=function(e){this.setNodeStatusTo("initialize",e)},de.biancoroyal.modbus.basics.onModbusConnect=function(e){this.setNodeStatusTo("connected",e)},de.biancoroyal.modbus.basics.onModbusActive=function(e){this.setNodeStatusTo("active",e)},de.biancoroyal.modbus.basics.onModbusError=function(e,o){this.setNodeStatusTo("failure",e),e.showErrors&&e.warn(o)},de.biancoroyal.modbus.basics.onModbusClose=function(e){this.setNodeStatusTo("closed",e)},de.biancoroyal.modbus.basics.onModbusBroken=function(e,o){this.setNodeStatusTo("reconnecting after "+o.reconnectTimeout+" msec.",e)},de.biancoroyal.modbus.basics.initModbusClientEvents=function(o,e){var s=this;e.on("mbinit",function(){s.onModbusInit(o)}),e.on("mbconnected",function(){s.onModbusConnect(o)}),e.on("mbactive",function(){s.onModbusActive(o)}),e.on("mberror",function(e){s.onModbusError(o,e)}),e.on("mbbroken",function(){s.onModbusBroken(o,e)}),e.on("mbclosed",function(){s.onModbusClose(o)})},de.biancoroyal.modbus.basics.invalidPayloadIn=function(e){return!(e&&Object.prototype.hasOwnProperty.call(e,"payload"))},module.exports=de.biancoroyal.modbus.basics; | ||
"use strict";require("source-map-support").install();var de=de||{biancoroyal:{modbus:{basics:{}}}};de.biancoroyal.modbus.basics.internalDebug=de.biancoroyal.modbus.basics.internalDebug||require("debug")("contribModbus:basics"),de.biancoroyal.modbus.basics.util=de.biancoroyal.modbus.basics.util||require("util"),de.biancoroyal.modbus.basics.statusLog=!1,de.biancoroyal.modbus.basics.get_timeUnit_name=function(e){var s="";switch(e){case"ms":s="msec.";break;case"s":s="sec.";break;case"m":s="min.";break;case"h":s="h."}return s},de.biancoroyal.modbus.basics.calc_rateByUnit=function(e,s){switch(s){case"ms":break;case"s":e=1e3*parseInt(e);break;case"m":e=6e4*parseInt(e);break;case"h":e=36e5*parseInt(e);break;default:e=1e4}return e},de.biancoroyal.modbus.basics.setNodeStatusProperties=function(e,s){var o="yellow",t="ring",a=(e=e||"waiting").value||e;switch(a){case"connecting":o="yellow",t="ring";break;case"error":o="red",t="ring";break;case"initialized":o="yellow",t="dot";break;case"not ready to read":case"not ready to write":o="yellow",t="ring";break;case"connected":o="green",t="ring";break;case"timeout":o="red",t="ring";break;case"active":case"reading":case"writing":case"active reading":case"active writing":s||(a="active"),o="green",t="dot";break;case"disconnected":case"terminated":o="red",t="ring";break;case"stopped":o="red",t="dot";break;case"polling":o="green",t=s?"ring":(a="active","dot");break;default:"waiting"===a&&(o="blue",a="waiting ...")}return{fill:o,shape:t,status:a}},de.biancoroyal.modbus.basics.setNodeStatusByResponseTo=function(e,s,o){var t="red",a="dot";switch(e){case"initialized":t="green",a="ring";break;case"active":t="green",a="dot";break;default:e&&"waiting"!==e||(t="blue",e="waiting ...")}o.status({fill:t,shape:a,text:this.util.inspect(s,!1,null)})},de.biancoroyal.modbus.basics.setNodeStatusResponse=function(e,s){s.status({fill:"green",shape:"dot",text:"active got length: "+e})},de.biancoroyal.modbus.basics.setModbusError=function(e,s,o,t){if(o)switch(o.message){case"Timed out":this.setNodeStatusTo("timeout",e);break;case"FSM Not Ready To Reconnect":this.setNodeStatusTo("not ready to reconnect",e);break;case"Port Not Open":this.setNodeStatusTo("reconnect",e),s.emit("reconnect");break;default:this.internalDebug(o.message),e.showErrors&&(this.setNodeStatusTo("error "+o.message,e),e.error(o,t))}},de.biancoroyal.modbus.basics.setNodeStatusTo=function(e,s){var o=this.setNodeStatusProperties(e,s.showStatusActivities);s.status({fill:o.fill,shape:o.shape,text:o.status})},de.biancoroyal.modbus.basics.onModbusInit=function(e){this.setNodeStatusTo("initialize",e)},de.biancoroyal.modbus.basics.onModbusConnect=function(e){this.setNodeStatusTo("connected",e)},de.biancoroyal.modbus.basics.onModbusActive=function(e){this.setNodeStatusTo("active",e)},de.biancoroyal.modbus.basics.onModbusError=function(e,s){this.setNodeStatusTo("failure",e),e.showErrors&&e.warn(s)},de.biancoroyal.modbus.basics.onModbusClose=function(e){this.setNodeStatusTo("closed",e)},de.biancoroyal.modbus.basics.onModbusBroken=function(e,s){this.setNodeStatusTo("reconnecting after "+s.reconnectTimeout+" msec.",e)},de.biancoroyal.modbus.basics.initModbusClientEvents=function(s,e){var o=this;e.on("mbinit",function(){o.onModbusInit(s)}),e.on("mbconnected",function(){o.onModbusConnect(s)}),e.on("mbactive",function(){o.onModbusActive(s)}),e.on("mberror",function(e){o.onModbusError(s,e)}),e.on("mbbroken",function(){o.onModbusBroken(s,e)}),e.on("mbclosed",function(){o.onModbusClose(s)})},de.biancoroyal.modbus.basics.invalidPayloadIn=function(e){return!(e&&Object.prototype.hasOwnProperty.call(e,"payload"))},module.exports=de.biancoroyal.modbus.basics; | ||
//# sourceMappingURL=maps/modbus-basics.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(i){require("source-map-support").install();var o=require("./modbus-basics"),c=require("./core/modbus-client-core");i.nodes.registerType("modbus-client",function(e){i.nodes.createNode(this,e);var t=require("modbus-serial");this.clienttype=e.clienttype,this.bufferCommands=e.bufferCommands,this.stateLogEnabled=e.stateLogEnabled,this.tcpHost=e.tcpHost,this.tcpPort=parseInt(e.tcpPort)||502,this.tcpType=e.tcpType,this.serialPort=e.serialPort,this.serialBaudrate=e.serialBaudrate,this.serialDatabits=e.serialDatabits,this.serialStopbits=e.serialStopbits,this.serialParity=e.serialParity,this.serialType=e.serialType,this.serialConnectionDelay=parseInt(e.serialConnectionDelay)||500,this.unit_id=parseInt(e.unit_id)||1,this.commandDelay=parseInt(e.commandDelay)||1,this.clientTimeout=parseInt(e.clientTimeout)||1e3,this.reconnectTimeout=parseInt(e.reconnectTimeout)||2e3;var r=this;function n(e){i.settings.verbose&&r.warn("Client -> "+e+r.serverInfo)}function a(e){i.settings.verbose&&c.internalDebug("Client -> "+e+r.serverInfo)}function s(e){r.bufferCommands&&a(e)}r.isFirstInitOfConnection=!0,r.closingModbus=!1,r.client=null,r.bufferCommandList=new Map,r.sendAllowed=new Map,r.unitSendingAllowed=[],r.messageAllowedStates=c.messagesAllowedStates,r.serverInfo="",r.stateMachine=null,r.stateService=null,r.stateMachine=c.createStateMachineService(),r.actualServiceState=r.stateMachine.initialState,r.stateService=c.startStateService(r.stateMachine),r.initQueue=function(){r.bufferCommandList.clear(),r.sendAllowed.clear(),r.unitSendingAllowed=[];for(var e=0;e<=255;e++)r.bufferCommandList.set(e,[]),r.sendAllowed.set(e,!0)},r.checkUnitId=function(e){return"tcp"===r.clienttype?0<=e&&e<=255:1<=e&&e<=247},r.setUnitIdFromPayload=function(e){var t=parseInt(e.payload.unitid);Number.isInteger(t)?(r.client.setID(t),e.queueUnitId=t):(r.checkUnitId(r.unit_id)||(r.unit_id=1),r.client.setID(r.unit_id),e.queueUnitId=r.unit_id)},!Number.isNaN(r.unit_id)&&r.checkUnitId(r.unit_id)||(r.unit_id=1),r.sequentialDequeueCommand=function(){var e=null,t=!0,n=parseInt(r.unitSendingAllowed.shift());Number.isInteger(n)&&0<r.bufferCommandList.get(n).length?(s(JSON.stringify({type:"queue check",unitid:n,sendAllowed:r.sendAllowed.get(n),queueLength:r.bufferCommandList.get(n).length})),r.sendAllowed.get(n)&&(e=r.bufferCommandList.get(n).shift())&&(r.sendAllowed.set(n,!1),s(JSON.stringify({type:"serial sending and wait",unitid:n,queueLength:r.bufferCommandList.get(n).length,sendAllowedForNext:r.sendAllowed.get(n),delay:r.commandDelay})),0<r.bufferCommandList.get(n).length&&r.unitSendingAllowed.push(n),t=!1,e.callModbus(e.msg,e.cb,e.cberr))):s(JSON.stringify({type:"queue check is not a unit",unitid:n})),t&&r.stateService.send("EMPTY")},r.dequeueCommand=function(){var e=r.actualServiceState;-1===r.messageAllowedStates.indexOf(e.value)?s(JSON.stringify({state:e.value,message:"dequeue command disallowed state",delay:r.commandDelay})):(s(JSON.stringify({state:e.value,message:"dequeue command "+r.clienttype,delay:r.commandDelay})),r.sequentialDequeueCommand()),r.checkQueuesAreEmpty()&&r.stateService.send("EMPTY")},r.checkQueuesAreEmpty=function(){for(var e=!0,t=0;t<=255;t++)e&=0<r.bufferCommandList.get(t).length;return e},r.updateServerinfo=function(){"tcp"===r.clienttype?r.serverInfo=" TCP@"+r.tcpHost+":"+r.tcpPort:r.serverInfo=" Serial@"+r.serialPort+":"+r.serialBaudrate+"bit/s",r.serverInfo+=" default Unit-Id: "+r.unit_id},r.stateService.subscribe(function(e){if(function(e){r.stateLogEnabled&&a(e)}((r.actualServiceState=e).value),e.matches("init")){r.updateServerinfo(),r.initQueue();try{r.isFirstInitOfConnection?(r.isFirstInitOfConnection=!1,setTimeout(r.connectClient,500)):setTimeout(r.connectClient,r.reconnectTimeout)}catch(e){r.error(e,{payload:"client connection error"})}n("reconnect in "+r.reconnectTimeout+" ms"),r.emit("mbinit")}e.matches("connected")&&(r.emit("mbconnected"),r.stateService.send("ACTIVATE")),e.matches("activated")&&(r.emit("mbactive"),r.bufferCommands&&r.stateService.send("QUEUE")),e.matches("queueing")&&(setTimeout(r.dequeueCommand,r.commandDelay),r.emit("mbqueue")),e.matches("opened")&&r.emit("mbopen"),e.matches("closed")&&(r.emit("mbclosed"),r.stateService.send("BREAK")),e.matches("failed")&&(r.emit("mberror","FSM Reset On State "+e),r.stateService.send("BREAK")),e.matches("broken")&&(r.emit("mbbroken"),r.reconnectTimeout<=0&&(r.reconnectTimeout=2e3),n("try to reconnect by init in "+r.reconnectTimeout+" ms"),setTimeout(function(){r.stateService.send("INIT")},r.reconnectTimeout))}),r.connectClient=function(){if(r.client)try{r.client.close(function(){a("connection closed")})}catch(e){a(e.message)}if(r.client=null,r.client=new t,r.clientTimeout||(r.clientTimeout=1e3),r.reconnectTimeout||(r.reconnectTimeout=2e3),"tcp"===r.clienttype){if(!r.checkUnitId(r.unit_id))return r.error(new Error("wrong unit-id (0..255)"),{payload:r.unit_id}),void r.stateService.send("FAILURE");switch(r.tcpType){case"C701":a("C701 port UDP bridge"),r.client.connectC701(r.tcpHost,{port:r.tcpPort,autoOpen:!0}).then(r.setTCPConnectionOptions).then(r.setTCPConnected).catch(r.modbusTcpErrorHandling);break;case"TELNET":a("Telnet port"),r.client.connectTelnet(r.tcpHost,{port:r.tcpPort,autoOpen:!0}).then(r.setTCPConnectionOptions).catch(r.modbusTcpErrorHandling);break;case"TPC-RTU-BUFFERED":a("TCP RTU buffered port"),r.client.connectTcpRTUBuffered(r.tcpHost,{port:r.tcpPort,autoOpen:!0}).then(r.setTCPConnectionOptions).catch(r.modbusTcpErrorHandling);break;default:a("TCP port"),r.client.connectTCP(r.tcpHost,{port:r.tcpPort,autoOpen:!0}).then(r.setTCPConnectionOptions).catch(r.modbusTcpErrorHandling)}}else{if(!r.checkUnitId(r.unit_id))return r.error(new Error("wrong unit-id serial (1..247)"),{payload:r.unit_id}),void r.stateService.send("FAILURE");if(r.serialConnectionDelay||(r.serialConnectionDelay=500),!r.serialPort)return r.error(new Error("wrong serial port"),{payload:r.serialPort}),void r.stateService.send("FAILURE");switch(r.serialType){case"ASCII":a("ASCII port serial"),r.client.connectAsciiSerial(r.serialPort,{baudRate:parseInt(r.serialBaudrate),dataBits:parseInt(r.serialDatabits),stopBits:parseInt(r.serialStopbits),parity:r.serialParity,autoOpen:!1}).then(r.setSerialConnectionOptions).catch(r.modbusSerialErrorHandling);break;case"RTU":a("RTU port serial"),r.client.connectRTU(r.serialPort,{baudRate:parseInt(r.serialBaudrate),dataBits:parseInt(r.serialDatabits),stopBits:parseInt(r.serialStopbits),parity:r.serialParity,autoOpen:!1}).then(r.setSerialConnectionOptions).catch(r.modbusSerialErrorHandling);break;default:a("RTU buffered port serial"),r.client.connectRTUBuffered(r.serialPort,{baudRate:parseInt(r.serialBaudrate),dataBits:parseInt(r.serialDatabits),stopBits:parseInt(r.serialStopbits),parity:r.serialParity,autoOpen:!1}).then(r.setSerialConnectionOptions).catch(r.modbusSerialErrorHandling)}}},r.setTCPConnectionOptions=function(){r.client.setID(r.unit_id),r.client.setTimeout(r.clientTimeout),r.stateService.send("CONNECT")},r.setTCPConnected=function(){c.modbusSerialDebug("modbus tcp connected on "+r.tcpHost)},r.setSerialConnectionOptions=function(){r.stateService.send("OPENSERIAL"),setTimeout(r.openSerialClient,parseInt(r.serialConnectionDelay))},r.modbusErrorHandling=function(e){e.message?c.modbusSerialDebug("modbusErrorHandling:"+e.message):c.modbusSerialDebug("modbusErrorHandling:"+JSON.stringify(e)),e.errno&&c.networkErrors.includes(e.errno)&&r.stateService.send("FAILURE")},r.modbusTcpErrorHandling=function(e){e.message?c.modbusSerialDebug("modbusTcpErrorHandling:"+e.message):c.modbusSerialDebug("modbusTcpErrorHandling:"+JSON.stringify(e)),e.errno&&c.networkErrors.includes(e.errno)&&r.stateService.send("FAILURE")},r.modbusSerialErrorHandling=function(e){e.message?c.modbusSerialDebug("modbusSerialErrorHandling:"+e.message):c.modbusSerialDebug("modbusSerialErrorHandling:"+JSON.stringify(e)),r.stateService.send("FAILURE")},r.openSerialClient=function(){"opened"===r.actualServiceState.value?(a("time to open Unit "+r.unit_id),c.modbusSerialDebug("modbus connection opened"),r.client.setID(r.unit_id),r.client.setTimeout(parseInt(r.clientTimeout)),r.client._port.on("close",r.onModbusClose),r.stateService.send("CONNECT")):(a("wrong state on connect serial "+r.actualServiceState.value),c.modbusSerialDebug("modbus connection not opened state is %s",r.actualServiceState.value),r.stateService.send("FAILURE"))},r.onModbusClose=function(){n("modbus closed port"),c.modbusSerialDebug("modbus closed port"),r.stateService.send("CLOSE")},r.getQueueNumber=function(e){var t=parseInt(e.payload.unitid);return Number.isInteger(t)?r.bufferCommandList.get(t).length:r.bufferCommandList.get(r.unit_id).length},r.pushToQueueByUnitId=function(e,t,n,a){var i=parseInt(t.payload.unitid);Number.isInteger(i)?(t.queueUnit=i,s(JSON.stringify({info:"push to Queue by Unit-Id",message:t.payload,unit:i})),-1===r.unitSendingAllowed.indexOf(i)&&r.unitSendingAllowed.push(i),r.bufferCommandList.get(i).push({callModbus:e,msg:t,cb:n,cberr:a})):(t.queueUnit=r.unit_id,s(JSON.stringify({info:"push to Queue by default Unit-Id",message:t.payload,unit:r.unit_id})),-1===r.unitSendingAllowed.indexOf(r.unit_id)&&r.unitSendingAllowed.push(r.unit_id),r.bufferCommandList.get(r.unit_id).push({callModbus:e,msg:t,cb:n,cberr:a}))},r.on("readModbus",function(e,t,n){var a=r.actualServiceState;-1!==r.messageAllowedStates.indexOf(a.value)?r.bufferCommands?(e.queueNumber=r.getQueueNumber(e),r.pushToQueueByUnitId(r.readModbus,e,t,n),r.stateService.send("QUEUE"),s(JSON.stringify({info:"queue read msg",message:e.payload,state:a.value,queueLength:r.bufferCommandList.get(e.queueUnit).length}))):r.readModbus(e,t,n):n(new Error("FSM Not Ready To Read At State "+a.value),e)}),r.readModbus=function(t,n,a){if(r.client){r.bufferCommands||r.stateService.send("READ"),r.setUnitIdFromPayload(t),r.client.setTimeout(r.clientTimeout),s(JSON.stringify({info:"read msg",message:t.payload,unitid:t.queueUnitId,timeout:r.client.getTimeout(),state:r.actualServiceState.value}));try{switch(parseInt(t.payload.fc)){case 1:r.client.readCoils(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;case 2:r.client.readDiscreteInputs(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;case 3:r.client.readHoldingRegisters(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;case 4:r.client.readInputRegisters(parseInt(t.payload.address),parseInt(t.payload.quantity)).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;default:r.activateSending(t),a(new Error("Function Code Unknown"),t),c.internalDebug("Function Code Unknown %s",t.payload.fc)}}catch(e){c.internalDebug(e.message),r.modbusErrorHandling(e)}}},r.on("writeModbus",function(e,t,n){var a=r.actualServiceState;-1!==r.messageAllowedStates.indexOf(a.value)?r.bufferCommands?(e.queueNumber=r.getQueueNumber(e),r.pushToQueueByUnitId(r.writeModbus,e,t,n),r.stateService.send("QUEUE"),s(JSON.stringify({info:"queue write msg",message:e.payload,state:a.value,queueLength:r.bufferCommandList.get(e.queueUnit).length}))):r.writeModbus(e,t,n):n(new Error("FSM Not Ready To Write At State "+a.value),e)}),r.writeModbus=function(t,n,a){if(r.client){r.bufferCommands||r.stateService.send("WRITE"),r.setUnitIdFromPayload(t),r.client.setTimeout(r.clientTimeout),s(JSON.stringify({info:"write msg",message:t.payload,unitid:t.queueUnitId,timeout:r.client.getTimeout(),state:r.actualServiceState.value}));try{switch(parseInt(t.payload.fc)){case 15:parseInt(t.payload.value.length)!==parseInt(t.payload.quantity)?(r.activateSending(t),a(new Error("Quantity should be less or equal to coil payload array length: "+t.payload.value.length+" Addr: "+t.payload.address+" Q: "+t.payload.quantity),t)):r.client.writeCoils(parseInt(t.payload.address),t.payload.value).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;case 5:t.payload.value?t.payload.value=!0:t.payload.value=!1,r.client.writeCoil(parseInt(t.payload.address),t.payload.value).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;case 16:parseInt(t.payload.value.length)!==parseInt(t.payload.quantity)?(r.activateSending(t),a(new Error("Quantity should be less or equal to register payload array length: "+t.payload.value.length+" Addr: "+t.payload.address+" Q: "+t.payload.quantity),t)):r.client.writeRegisters(parseInt(t.payload.address),t.payload.value).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;case 6:r.client.writeRegister(parseInt(t.payload.address),parseInt(t.payload.value)).then(function(e){r.activateSending(t),n(e,t)}).catch(function(e){r.activateSending(t),a(e,t),r.modbusErrorHandling(e)});break;default:r.activateSending(t),a(new Error("Function Code Unknown"),t),c.internalDebug("Function Code Unknown %s",t.payload.fc)}}catch(e){c.internalDebug(e.message),r.modbusErrorHandling(e)}}},r.activateSending=function(e){r.bufferCommands&&(r.sendAllowed.set(e.queueUnit,!0),s(JSON.stringify({info:"queue response activate sending",message:e.payload,queueLength:r.bufferCommandList.length}))),r.stateService.send("ACTIVATE")},a("initialized"),r.setMaxListeners(0),r.on("reconnect",function(){r.stateService.send("FAILURE"),r.stateService.send("CLOSE")}),r.on("dynamicReconnect",function(e){if(o.invalidPayloadIn(e))throw new Error("Message Or Payload Not Valid");switch(c.internalDebug("Dynamic Reconnect Parameters "+JSON.stringify(e.payload)),e.payload.connectorType){case"TCP":r.tcpHost=e.payload.tcpHost||r.tcpHost,r.tcpPort=e.payload.tcpPort||r.tcpPort,r.tcpType=e.payload.tcpType||r.tcpType,c.internalDebug("New Connection Data "+r.tcpHost+" "+r.tcpPort+" "+r.tcpType);break;case"SERIAL":e.payload.serialPort&&(r.serialPort=e.payload.serialPort||r.serialPort),e.payload.serialBaudrate&&(r.serialBaudrate=parseInt(e.payload.serialBaudrate)||r.serialBaudrate),r.serialDatabits=e.payload.serialDatabits||r.serialDatabits,r.serialStopbits=e.payload.serialStopbits||r.serialStopbits,r.serialParity=e.payload.serialParity||r.serialParity,r.serialType=e.payload.serialType||r.serialType,e.payload.serialConnectionDelay&&(r.serialConnectionDelay=parseInt(e.payload.serialConnectionDelay)||r.serialConnectionDelay),c.internalDebug("New Connection Data "+r.serialPort+" "+r.serialBaudrate+" "+r.serialType);break;default:c.internalDebug("Unknown Dynamic Reconnect Type "+e.payload.connectorType)}e.payload.unitId&&(r.unit_id=parseInt(e.payload.unitId)||r.unit_id),e.payload.commandDelay&&(r.commandDelay=parseInt(e.payload.commandDelay)||r.commandDelay),e.payload.clientTimeout&&(r.clientTimeout=parseInt(e.payload.clientTimeout)||r.clientTimeout),e.payload.reconnectTimeout&&(r.reconnectTimeout=parseInt(e.payload.reconnectTimeout)||r.reconnectTimeout),c.internalDebug("Dynamic Reconnect Starts on actual state "+r.actualServiceState.value),r.stateService.send("CLOSE")}),r.on("close",function(t){r.stateService.send("FAILURE"),r.stateService.send("STOP"),a("close node"),r.client?r.client.close(function(){a("connection closed"),t()}).catch(function(e){a(e.message),t()}):t()}),r.registeredNodeList={},r.registerForModbus=function(e){r.registeredNodeList[e.id]=e,1===Object.keys(r.registeredNodeList).length&&(r.closingModbus=!1,r.stateService.send("INIT"))},r.deregisterForModbus=function(e,t){delete r.registeredNodeList[e.id],r.closingModbus&&t(),0===Object.keys(r.registeredNodeList).length?(r.closingModbus=!0,r.client?r.client.close(function(){r.stateService.send("CLOSE"),r.stateService.send("BREAK"),r.stateService.send("STOP"),t()}).catch(function(e){r.stateService.send("FAILURE"),r.stateService.send("STOP"),a(e.message),t()}):t()):t()}}),i.httpAdmin.get("/modbus/serial/ports",i.auth.needsPermission("serial.read"),function(e,n){require("serialport").list(function(e,t){e&&c.internalDebug(e.message),n.json(t)})})}; | ||
"use strict";module.exports=function(o){require("source-map-support").install();var r=require("./modbus-basics"),a=require("./core/modbus-client-core"),c=require("./core/modbus-queue-core");o.nodes.registerType("modbus-client",function(e){o.nodes.createNode(this,e);var t=require("modbus-serial");this.clienttype=e.clienttype,this.bufferCommands=e.bufferCommands,this.stateLogEnabled=e.stateLogEnabled,this.tcpHost=e.tcpHost,this.tcpPort=parseInt(e.tcpPort)||502,this.tcpType=e.tcpType,this.serialPort=e.serialPort,this.serialBaudrate=e.serialBaudrate,this.serialDatabits=e.serialDatabits,this.serialStopbits=e.serialStopbits,this.serialParity=e.serialParity,this.serialType=e.serialType,this.serialConnectionDelay=parseInt(e.serialConnectionDelay)||500,this.unit_id=parseInt(e.unit_id)||1,this.commandDelay=parseInt(e.commandDelay)||1,this.clientTimeout=parseInt(e.clientTimeout)||1e3,this.reconnectTimeout=parseInt(e.reconnectTimeout)||2e3,this.reconnectOnTimeout=e.reconnectOnTimeout,this.parallelUnitIdsAllowed=e.parallelUnitIdsAllowed;var s=this;function n(e){o.settings.verbose&&s.warn("Client -> "+e+s.serverInfo)}function i(e){o.settings.verbose&&a.internalDebug("Client -> "+e+s.serverInfo)}s.isFirstInitOfConnection=!0,s.closingModbus=!1,s.client=null,s.bufferCommandList=new Map,s.sendAllowed=new Map,s.unitSendingAllowed=[],s.sendToDeviceAllowed=[],s.messageAllowedStates=a.messagesAllowedStates,s.serverInfo="",s.stateMachine=null,s.stateService=null,s.stateMachine=a.createStateMachineService(),s.actualServiceState=s.stateMachine.initialState,s.actualServiceStateBefore=s.actualServiceState,s.stateService=a.startStateService(s.stateMachine),s.setUnitIdFromPayload=function(e){var t=parseInt(e.payload.unitid);Number.isInteger(t)?(s.client.setID(t),e.queueUnitId=t):(a.checkUnitId(s.unit_id,s.clienttype)||(s.unit_id=1),s.client.setID(s.unit_id),e.queueUnitId=s.unit_id)},!Number.isNaN(s.unit_id)&&a.checkUnitId(s.unit_id,s.clienttype)||(s.unit_id=1),s.updateServerinfo=function(){"tcp"===s.clienttype?s.serverInfo=" TCP@"+s.tcpHost+":"+s.tcpPort:s.serverInfo=" Serial@"+s.serialPort+":"+s.serialBaudrate+"bit/s",s.serverInfo+=" default Unit-Id: "+s.unit_id},s.queueLog=function(e){s.bufferCommands&&i(e)},s.stateService.subscribe(function(e){if(s.actualServiceStateBefore=s.actualServiceState,function(e){s.stateLogEnabled&&i(e)}((s.actualServiceState=e).value),e.matches("init")){s.updateServerinfo(),c.initQueue(s);try{s.isFirstInitOfConnection?(s.isFirstInitOfConnection=!1,setTimeout(s.connectClient,500)):setTimeout(s.connectClient,s.reconnectTimeout)}catch(e){s.error(e,{payload:"client connection error"})}n("reconnect in "+s.reconnectTimeout+" ms"),s.emit("mbinit")}e.matches("connected")&&(s.emit("mbconnected"),s.stateService.send("ACTIVATE")),e.matches("activated")&&(s.emit("mbactive"),s.bufferCommands&&s.stateService.send("QUEUE")),e.matches("queueing")&&(setTimeout(function(){c.dequeueCommand(s)},s.commandDelay),s.emit("mbqueue")),e.matches("opened")&&s.emit("mbopen"),e.matches("closed")&&(s.emit("mbclosed"),s.stateService.send("BREAK")),e.matches("failed")&&(s.emit("mberror","FSM Reset On State "+JSON.stringify(e)),s.stateService.send("BREAK")),e.matches("broken")&&(s.emit("mbbroken"),s.reconnectOnTimeout?(s.reconnectTimeout<=0&&(s.reconnectTimeout=2e3),n("try to reconnect by init in "+s.reconnectTimeout+" ms"),setTimeout(function(){s.stateService.send("INIT")},s.reconnectTimeout)):(n("stay active on broken state without reconnecting"),s.stateService.send("ACTIVATE")))}),s.connectClient=function(){if(s.client)try{s.client.close(function(){i("connection closed")})}catch(e){i(e.message)}if(s.client=null,s.client=new t,s.clientTimeout||(s.clientTimeout=1e3),s.reconnectTimeout||(s.reconnectTimeout=2e3),"tcp"===s.clienttype){if(!a.checkUnitId(s.unit_id,s.clienttype))return s.error(new Error("wrong unit-id (0..255)"),{payload:s.unit_id}),void s.stateService.send("FAILURE");switch(s.tcpType){case"C701":i("C701 port UDP bridge"),s.client.connectC701(s.tcpHost,{port:s.tcpPort,autoOpen:!0}).then(s.setTCPConnectionOptions).then(s.setTCPConnected).catch(s.modbusTcpErrorHandling);break;case"TELNET":i("Telnet port"),s.client.connectTelnet(s.tcpHost,{port:s.tcpPort,autoOpen:!0}).then(s.setTCPConnectionOptions).catch(s.modbusTcpErrorHandling);break;case"TPC-RTU-BUFFERED":i("TCP RTU buffered port"),s.client.connectTcpRTUBuffered(s.tcpHost,{port:s.tcpPort,autoOpen:!0}).then(s.setTCPConnectionOptions).catch(s.modbusTcpErrorHandling);break;default:i("TCP port"),s.client.connectTCP(s.tcpHost,{port:s.tcpPort,autoOpen:!0}).then(s.setTCPConnectionOptions).catch(s.modbusTcpErrorHandling)}}else{if(!a.checkUnitId(s.unit_id,s.clienttype))return s.error(new Error("wrong unit-id serial (1..247)"),{payload:s.unit_id}),void s.stateService.send("FAILURE");if(s.serialConnectionDelay||(s.serialConnectionDelay=500),!s.serialPort)return s.error(new Error("wrong serial port"),{payload:s.serialPort}),void s.stateService.send("FAILURE");var e={baudRate:parseInt(s.serialBaudrate),dataBits:parseInt(s.serialDatabits),stopBits:parseInt(s.serialStopbits),parity:s.serialParity,autoOpen:!1};switch(s.serialType){case"ASCII":i("ASCII port serial"),s.client.connectAsciiSerial(s.serialPort,e).then(s.setSerialConnectionOptions).catch(s.modbusSerialErrorHandling);break;case"RTU":i("RTU port serial"),s.client.connectRTU(s.serialPort,e).then(s.setSerialConnectionOptions).catch(s.modbusSerialErrorHandling);break;default:i("RTU buffered port serial"),s.client.connectRTUBuffered(s.serialPort,e).then(s.setSerialConnectionOptions).catch(s.modbusSerialErrorHandling)}}},s.setTCPConnectionOptions=function(){s.client.setID(s.unit_id),s.client.setTimeout(s.clientTimeout),s.stateService.send("CONNECT")},s.setTCPConnected=function(){a.modbusSerialDebug("modbus tcp connected on "+s.tcpHost)},s.setSerialConnectionOptions=function(){s.stateService.send("OPENSERIAL"),setTimeout(s.openSerialClient,parseInt(s.serialConnectionDelay))},s.modbusErrorHandling=function(e){e.message?a.modbusSerialDebug("modbusErrorHandling:"+e.message):a.modbusSerialDebug("modbusErrorHandling:"+JSON.stringify(e)),e.errno&&a.networkErrors.includes(e.errno)&&s.stateService.send("FAILURE")},s.modbusTcpErrorHandling=function(e){e.message?a.modbusSerialDebug("modbusTcpErrorHandling:"+e.message):a.modbusSerialDebug("modbusTcpErrorHandling:"+JSON.stringify(e)),e.errno&&a.networkErrors.includes(e.errno)&&s.stateService.send("FAILURE")},s.modbusSerialErrorHandling=function(e){e.message?a.modbusSerialDebug("modbusSerialErrorHandling:"+e.message):a.modbusSerialDebug("modbusSerialErrorHandling:"+JSON.stringify(e)),s.stateService.send("FAILURE")},s.openSerialClient=function(){"opened"===s.actualServiceState.value?(i("time to open Unit "+s.unit_id),a.modbusSerialDebug("modbus connection opened"),s.client.setID(s.unit_id),s.client.setTimeout(parseInt(s.clientTimeout)),s.client._port.on("close",s.onModbusClose),s.stateService.send("CONNECT")):(i("wrong state on connect serial "+s.actualServiceState.value),a.modbusSerialDebug("modbus connection not opened state is %s",s.actualServiceState.value),s.stateService.send("FAILURE"))},s.onModbusClose=function(){n("modbus closed port"),a.modbusSerialDebug("modbus closed port"),s.stateService.send("CLOSE")},s.on("readModbus",function(e,t,n){var i=s.actualServiceState;-1!==s.messageAllowedStates.indexOf(i.value)?s.bufferCommands?(e.queueNumber=c.getQueueNumber(s,e),c.pushToQueueByUnitId(s,a.readModbus,e,t,n),s.stateService.send("QUEUE"),s.queueLog(JSON.stringify({info:"queue read msg",message:e.payload,state:i.value,queueLength:s.bufferCommandList.get(e.queueUnit).length}))):a.readModbus(s,e,t,n):n(new Error("FSM Not Ready To Read At State "+i.value),e)}),s.on("writeModbus",function(e,t,n){var i=s.actualServiceState;-1!==s.messageAllowedStates.indexOf(i.value)?s.bufferCommands?(e.queueNumber=c.getQueueNumber(s,e),c.pushToQueueByUnitId(s,a.writeModbus,e,t,n),s.stateService.send("QUEUE"),s.queueLog(JSON.stringify({info:"queue write msg",message:e.payload,state:i.value,queueLength:s.bufferCommandList.get(e.queueUnit).length}))):a.writeModbus(s,e,t,n):n(new Error("FSM Not Ready To Write At State "+i.value),e)}),s.activateSending=function(e){var t=s.sendToDeviceAllowed.shift();s.bufferCommands&&(s.sendAllowed.set(e.queueUnit,!0),s.queueLog(JSON.stringify({info:"queue response activate sending",message:e.payload,queueLength:s.bufferCommandList.length,serialUnitId:t}))),s.stateService.send("ACTIVATE")},i("initialized"),s.setMaxListeners(0),s.on("reconnect",function(){s.stateService.send("FAILURE"),s.stateService.send("CLOSE")}),s.on("dynamicReconnect",function(e){if(r.invalidPayloadIn(e))throw new Error("Message Or Payload Not Valid");a.internalDebug("Dynamic Reconnect Parameters "+JSON.stringify(e.payload)),a.setNewNodeSettings(s,e),a.internalDebug("Dynamic Reconnect Starts on actual state "+s.actualServiceState.value),s.stateService.send("CLOSE")}),s.on("close",function(t){s.stateService.send("FAILURE"),s.stateService.send("CLOSE"),s.stateService.send("STOP"),i("close node"),s.client?s.client.close(function(){i("connection closed"),t()}).catch(function(e){i(e.message),t()}):t()}),s.registeredNodeList={},s.registerForModbus=function(e){s.registeredNodeList[e.id]=e,1===Object.keys(s.registeredNodeList).length&&(s.closingModbus=!1,s.stateService.send("INIT"))},s.deregisterForModbus=function(e,t){delete s.registeredNodeList[e.id],s.closingModbus&&t(),0===Object.keys(s.registeredNodeList).length?(s.closingModbus=!0,s.client?s.client.close(function(){s.stateService.send("CLOSE"),s.stateService.send("BREAK"),s.stateService.send("STOP"),t()}).catch(function(e){s.stateService.send("FAILURE"),s.stateService.send("STOP"),i(e.message),t()}):t()):t()}}),o.httpAdmin.get("/modbus/serial/ports",o.auth.needsPermission("serial.read"),function(e,t){require("serialport").list().then(function(e){t.json(e)}).catch(function(e){a.internalDebug(e.message)})})}; | ||
//# sourceMappingURL=maps/modbus-client.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(n){require("source-map-support").install();var i=require("./modbus-basics"),s=require("debug")("contribModbus:flex:connector");n.nodes.registerType("modbus-flex-connector",function(e){n.nodes.createNode(this,e),this.name=e.name,this.maxReconnectsPerMinute=e.maxReconnectsPerMinute||4,this.emptyQueue=e.emptyQueue,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.connection=null;var t=this,o=n.nodes.getNode(e.server);o.registerForModbus(t),i.initModbusClientEvents(t,o),i.setNodeStatusTo("waiting",t),t.on("input",function(e){i.invalidPayloadIn(e)||o.client&&(t.showStatusActivities&&i.setNodeStatusTo(o.statlyMachine.getMachineState(),t),e.payload.connectorType?(s("dynamicReconnect: "+JSON.stringify(e.payload)),e.payload.emptyQueue=t.emptyQueue,o.emit("dynamicReconnect",e)):t.error(new Error("Payload Not Valid - Connector Type"),e))})})}; | ||
"use strict";module.exports=function(i){require("source-map-support").install();var n=require("./modbus-basics"),s=require("debug")("contribModbus:flex:connector");i.nodes.registerType("modbus-flex-connector",function(e){i.nodes.createNode(this,e),this.name=e.name,this.maxReconnectsPerMinute=e.maxReconnectsPerMinute||4,this.emptyQueue=e.emptyQueue,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.connection=null;var t=this;n.setNodeStatusTo("waiting",t);var o=i.nodes.getNode(e.server);o&&(o.registerForModbus(t),n.initModbusClientEvents(t,o),t.on("input",function(e){n.invalidPayloadIn(e)||o.client&&(t.showStatusActivities&&n.setNodeStatusTo(o.actualServiceState,t),e.payload.connectorType?(s("dynamicReconnect: "+JSON.stringify(e.payload)),e.payload.emptyQueue=t.emptyQueue,o.emit("dynamicReconnect",e)):t.error(new Error("Payload Not Valid - Connector Type"),e))}))})}; | ||
//# sourceMappingURL=maps/modbus-flex-connector.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(s){require("source-map-support").install();var o=require("./modbus-basics"),i=require("./core/modbus-core"),r=require("./core/modbus-io-core"),d=require("debug")("contribModbus:flex:getter");s.nodes.registerType("modbus-flex-getter",function(e){s.nodes.createNode(this,e),this.name=e.name,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=s.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities;var a=this;a.bufferMessageList=new Map;var t=s.nodes.getNode(e.server);t.registerForModbus(a),o.initModbusClientEvents(a,t),o.setNodeStatusTo("waiting",a),a.onModbusReadDone=function(e,s){a.showStatusActivities&&o.setNodeStatusTo("reading done",a),a.send(r.buildMessageWithIO(a,e.data,e,s))},a.onModbusReadError=function(e,s){d(e.message),a.showErrors&&a.error(e,s),o.setModbusError(a,t,e,i.getOriginalMessage(a.bufferMessageList,s))},a.on("input",function(s){if(!o.invalidPayloadIn(s)&&t.client){try{if("string"==typeof s.payload&&(s.payload=JSON.parse(s.payload)),s.payload.fc=parseInt(s.payload.fc)||3,s.payload.unitid=parseInt(s.payload.unitid),s.payload.address=parseInt(s.payload.address)||0,s.payload.quantity=parseInt(s.payload.quantity)||1,!(Number.isInteger(s.payload.fc)&&1<=s.payload.fc&&s.payload.fc<=4))return void a.error("FC Not Valid",s);if(!(Number.isInteger(s.payload.address)&&0<=s.payload.address&&s.payload.address<=65535))return void a.error("Address Not Valid",s);if(!(Number.isInteger(s.payload.quantity)&&1<=s.payload.quantity&&s.payload.quantity<=65535))return void a.error("Quantity Not Valid",s);s.messageId=i.getObjectId(),a.bufferMessageList.set(s.messageId,s),s={topic:s.topic||a.id,payload:{value:s.payload.value||s.value,unitid:s.payload.unitid,fc:s.payload.fc,address:s.payload.address,quantity:s.payload.quantity,messageId:s.messageId},_msgid:s._msgid},t.emit("readModbus",s,a.onModbusReadDone,a.onModbusReadError)}catch(e){d(e.message),a.showErrors&&a.error(e,s)}a.showStatusActivities&&o.setNodeStatusTo(t.statlyMachine.getMachineState(),a)}}),a.on("close",function(e){o.setNodeStatusTo("closed",a),a.bufferMessageList.clear(),t.deregisterForModbus(a,e)})})}; | ||
"use strict";module.exports=function(s){require("source-map-support").install();var o=require("./modbus-basics"),i=require("./core/modbus-core"),r=require("./core/modbus-io-core"),d=require("debug")("contribModbus:flex:getter");s.nodes.registerType("modbus-flex-getter",function(e){s.nodes.createNode(this,e),this.name=e.name,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=s.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities;var a=this;a.bufferMessageList=new Map,o.setNodeStatusTo("waiting",a);var t=s.nodes.getNode(e.server);t&&(t.registerForModbus(a),o.initModbusClientEvents(a,t),a.onModbusReadDone=function(e,s){a.showStatusActivities&&o.setNodeStatusTo("reading done",a),a.send(r.buildMessageWithIO(a,e.data,e,s))},a.onModbusReadError=function(e,s){d(e.message),a.showErrors&&a.error(e,s),o.setModbusError(a,t,e,i.getOriginalMessage(a.bufferMessageList,s))},a.on("input",function(s){if(!o.invalidPayloadIn(s)&&t.client){try{if("string"==typeof s.payload&&(s.payload=JSON.parse(s.payload)),s.payload.fc=parseInt(s.payload.fc)||3,s.payload.unitid=parseInt(s.payload.unitid),s.payload.address=parseInt(s.payload.address)||0,s.payload.quantity=parseInt(s.payload.quantity)||1,!(Number.isInteger(s.payload.fc)&&1<=s.payload.fc&&s.payload.fc<=4))return void a.error("FC Not Valid",s);if(!(Number.isInteger(s.payload.address)&&0<=s.payload.address&&s.payload.address<=65535))return void a.error("Address Not Valid",s);if(!(Number.isInteger(s.payload.quantity)&&1<=s.payload.quantity&&s.payload.quantity<=65535))return void a.error("Quantity Not Valid",s);s.messageId=i.getObjectId(),a.bufferMessageList.set(s.messageId,s),s={topic:s.topic||a.id,payload:{value:s.payload.value||s.value,unitid:s.payload.unitid,fc:s.payload.fc,address:s.payload.address,quantity:s.payload.quantity,messageId:s.messageId},_msgid:s._msgid},t.emit("readModbus",s,a.onModbusReadDone,a.onModbusReadError)}catch(e){d(e.message),a.showErrors&&a.error(e,s)}a.showStatusActivities&&o.setNodeStatusTo(t.actualServiceState,a)}}),a.on("close",function(e){o.setNodeStatusTo("closed",a),a.bufferMessageList.clear(),t.deregisterForModbus(a,e)}))})}; | ||
//# sourceMappingURL=maps/modbus-flex-getter.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(a){require("source-map-support").install();var o=require("./modbus-basics"),r=require("./core/modbus-core"),d=require("debug")("contribModbus:flex:write");a.nodes.registerType("modbus-flex-write",function(e){a.nodes.createNode(this,e),this.name=e.name,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors;var s=this,t=a.nodes.getNode(e.server);t.registerForModbus(s),s.bufferMessageList=new Map,o.initModbusClientEvents(s,t),o.setNodeStatusTo("waiting",s),s.onModbusWriteDone=function(e,a){s.showStatusActivities&&o.setNodeStatusTo("writing done",s),s.send(r.buildMessage(s.bufferMessageList,a.payload,e,a))},s.onModbusWriteError=function(e,a){d(e.message),s.showErrors&&s.error(e,a),o.setModbusError(s,t,e,r.getOriginalMessage(s.bufferMessageList,a))},s.on("input",function(a){if(!o.invalidPayloadIn(a)&&t.client){try{if("string"==typeof a.payload&&(a.payload=JSON.parse(a.payload)),a.payload.fc=parseInt(a.payload.fc),a.payload.unitid=parseInt(a.payload.unitid),a.payload.address=parseInt(a.payload.address),a.payload.quantity=parseInt(a.payload.quantity),!Number.isInteger(a.payload.fc)||5!==a.payload.fc&&6!==a.payload.fc&&15!==a.payload.fc&&16!==a.payload.fc)return void s.error("FC Not Valid",a);if(!(Number.isInteger(a.payload.address)&&0<=a.payload.address&&a.payload.address<=65535))return void s.error("Address Not Valid",a);if(!(Number.isInteger(a.payload.quantity)&&1<=a.payload.quantity&&a.payload.quantity<=65535))return void s.error("Quantity Not Valid",a);Object.prototype.hasOwnProperty.call(a.payload,"value")&&"string"==typeof a.payload.value&&("true"===a.payload.value||"false"===a.payload.value?a.payload.value="true"===a.payload.value:-1<a.payload.value.indexOf(",")&&(a.payload.value=JSON.parse(a.payload.value))),a.messageId=r.getObjectId(),s.bufferMessageList.set(a.messageId,a),a={topic:a.topic||s.id,payload:{value:a.payload.value||a.value,unitid:a.payload.unitid,fc:a.payload.fc,address:a.payload.address,quantity:a.payload.quantity,messageId:a.messageId},_msgid:a._msgid},t.emit("writeModbus",a,s.onModbusWriteDone,s.onModbusWriteError)}catch(e){d(e.message),s.showErrors&&s.error(e,a)}s.showStatusActivities&&o.setNodeStatusTo(t.statlyMachine.getMachineState(),s)}}),s.on("close",function(e){o.setNodeStatusTo("closed",s),s.bufferMessageList.clear(),t.deregisterForModbus(s,e)})})}; | ||
"use strict";module.exports=function(a){require("source-map-support").install();var o=require("./modbus-basics"),r=require("./core/modbus-core"),d=require("debug")("contribModbus:flex:write");a.nodes.registerType("modbus-flex-write",function(e){a.nodes.createNode(this,e),this.name=e.name,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors;var s=this;s.bufferMessageList=new Map,o.setNodeStatusTo("waiting",s);var t=a.nodes.getNode(e.server);t&&(t.registerForModbus(s),o.initModbusClientEvents(s,t),s.onModbusWriteDone=function(e,a){s.showStatusActivities&&o.setNodeStatusTo("writing done",s),s.send(r.buildMessage(s.bufferMessageList,a.payload,e,a))},s.onModbusWriteError=function(e,a){d(e.message),s.showErrors&&s.error(e,a),o.setModbusError(s,t,e,r.getOriginalMessage(s.bufferMessageList,a))},s.on("input",function(a){if(!o.invalidPayloadIn(a)&&t.client){try{if("string"==typeof a.payload&&(a.payload=JSON.parse(a.payload)),a.payload.fc=parseInt(a.payload.fc),a.payload.unitid=parseInt(a.payload.unitid),a.payload.address=parseInt(a.payload.address),a.payload.quantity=parseInt(a.payload.quantity),!Number.isInteger(a.payload.fc)||5!==a.payload.fc&&6!==a.payload.fc&&15!==a.payload.fc&&16!==a.payload.fc)return void s.error("FC Not Valid",a);if(!(Number.isInteger(a.payload.address)&&0<=a.payload.address&&a.payload.address<=65535))return void s.error("Address Not Valid",a);if(!(Number.isInteger(a.payload.quantity)&&1<=a.payload.quantity&&a.payload.quantity<=65535))return void s.error("Quantity Not Valid",a);Object.prototype.hasOwnProperty.call(a.payload,"value")&&"string"==typeof a.payload.value&&("true"===a.payload.value||"false"===a.payload.value?a.payload.value="true"===a.payload.value:-1<a.payload.value.indexOf(",")&&(a.payload.value=JSON.parse(a.payload.value))),a.messageId=r.getObjectId(),s.bufferMessageList.set(a.messageId,a),a={topic:a.topic||s.id,payload:{value:a.payload.value||a.value,unitid:a.payload.unitid,fc:a.payload.fc,address:a.payload.address,quantity:a.payload.quantity,messageId:a.messageId},_msgid:a._msgid},t.emit("writeModbus",a,s.onModbusWriteDone,s.onModbusWriteError)}catch(e){d(e.message),s.showErrors&&s.error(e,a)}s.showStatusActivities&&o.setNodeStatusTo(t.actualServiceState,s)}}),s.on("close",function(e){o.setNodeStatusTo("closed",s),s.bufferMessageList.clear(),t.deregisterForModbus(s,e)}))})}; | ||
//# sourceMappingURL=maps/modbus-flex-write.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(s){require("source-map-support").install();var o=require("./modbus-basics"),a=require("./core/modbus-core"),r=require("./core/modbus-io-core"),d=require("debug")("contribModbus:getter");s.nodes.registerType("modbus-getter",function(e){s.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.msgThruput=e.msgThruput,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=s.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities;var t=this;t.bufferMessageList=new Map;var i=s.nodes.getNode(e.server);i.registerForModbus(t),o.initModbusClientEvents(t,i),o.setNodeStatusTo("waiting",t),t.onModbusCommandDone=function(e,s){t.showStatusActivities&&o.setNodeStatusTo("reading done",t),t.send(r.buildMessageWithIO(t,e.data,e,s))},t.onModbusCommandError=function(e,s){d(e.message),t.showErrors&&t.error(e,s),o.setModbusError(t,i,e,a.getOriginalMessage(t.bufferMessageList,s))},t.on("input",function(e){o.invalidPayloadIn(e)||i.client&&(e.messageId=a.getObjectId(),t.bufferMessageList.set(e.messageId,e),e={topic:e.topic||t.id,payload:{value:e.payload.value||e.payload,unitid:t.unitid,fc:a.functionCodeModbusRead(t.dataType),address:t.adr,quantity:t.quantity,messageId:e.messageId},_msgid:e._msgid},i.emit("readModbus",e,t.onModbusCommandDone,t.onModbusCommandError),t.showStatusActivities&&o.setNodeStatusTo(i.statlyMachine.getMachineState(),t))}),t.on("close",function(e){o.setNodeStatusTo("closed",t),t.bufferMessageList.clear(),i.deregisterForModbus(t,e)})})}; | ||
"use strict";module.exports=function(s){require("source-map-support").install();var o=require("./modbus-basics"),a=require("./core/modbus-core"),r=require("./core/modbus-io-core"),d=require("debug")("contribModbus:getter");s.nodes.registerType("modbus-getter",function(e){s.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.msgThruput=e.msgThruput,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=s.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities;var t=this;t.bufferMessageList=new Map,o.setNodeStatusTo("waiting",t);var i=s.nodes.getNode(e.server);i&&(i.registerForModbus(t),o.initModbusClientEvents(t,i),t.onModbusCommandDone=function(e,s){t.showStatusActivities&&o.setNodeStatusTo("reading done",t),t.send(r.buildMessageWithIO(t,e.data,e,s))},t.onModbusCommandError=function(e,s){d(e.message),t.showErrors&&t.error(e,s),o.setModbusError(t,i,e,a.getOriginalMessage(t.bufferMessageList,s))},t.on("input",function(e){o.invalidPayloadIn(e)||i.client&&(e.messageId=a.getObjectId(),t.bufferMessageList.set(e.messageId,e),e={topic:e.topic||t.id,payload:{value:e.payload.value||e.payload,unitid:t.unitid,fc:a.functionCodeModbusRead(t.dataType),address:t.adr,quantity:t.quantity,messageId:e.messageId},_msgid:e._msgid},i.emit("readModbus",e,t.onModbusCommandDone,t.onModbusCommandError),t.showStatusActivities&&o.setNodeStatusTo(i.actualServiceState,t))}),t.on("close",function(e){o.setNodeStatusTo("closed",t),t.bufferMessageList.clear(),i.deregisterForModbus(t,e)}))})}; | ||
//# sourceMappingURL=maps/modbus-getter.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(t){require("source-map-support").install();var h=require("./modbus-basics"),u=require("debug")("contribModbus:queue");t.nodes.registerType("modbus-queue-info",function(e){t.nodes.createNode(this,e),this.name=e.name,this.topic=e.topic,this.unitid=parseInt(e.unitid),this.lowLowLevel=parseInt(e.lowLowLevel),this.lowLevel=parseInt(e.lowLevel),this.highLevel=parseInt(e.highLevel),this.highHighLevel=parseInt(e.highHighLevel),this.errorOnHighLevel=e.errorOnHighLevel,this.queueReadIntervalTime=e.queueReadIntervalTime||1e3;var n=this,a=t.nodes.getNode(e.server);a.registerForModbus(n),n.queueReadInterval=null,h.setNodeStatusTo("waiting",n),n.resetStates=function(){n.lowLowLevelReached=!0,n.lowLevelReached=!1,n.highLevelReached=!1,n.highHighLevelReached=!1},n.resetStates(),n.readFromQueue=function(){var e=n.unitid||1;if(a.bufferCommands){(e<0||255<e)&&(e=1);var i=a.bufferCommandList.get(e).length;if((!i||!n.lowLowLevelReached&&i<n.lowLowLevel)&&n.resetStates(),!n.lowLevelReached&&i>n.lowLowLevel&&i<n.lowLevel){n.lowLevelReached=!0;var t={payload:Date.now(),topic:n.topic,state:"low level reached",unitid:e,modbusClientName:a.name,items:i};n.send(t)}if(!n.highLevelReached&&i>n.lowLevel&&i>n.highLevel){n.highLevelReached=!0;var u={payload:Date.now(),topic:n.topic,state:"high level reached",unitid:e,modbusClientName:a.name,highLevel:n.highLevel,items:i};n.errorOnHighLevel?n.error(new Error("Queue High Level Reached"),u):n.warn(u),n.send(u)}if(!n.highHighLevelReached&&i>n.highLevel&&i>n.highHighLevel){n.highHighLevelReached=!0;var o={payload:Date.now(),topic:n.topic,state:"high high level reached",unitid:e,modbusClientName:a.name,highLevel:n.highLevel,highHighLevel:n.highHighLevel,items:i};n.error(new Error("Queue High High Level Reached"),o),n.send(o)}var l="blue";n.lowLevelReached&&(l="green"),n.highLevelReached&&(l=n.errorOnHighLevel?"red":"yellow"),n.highHighLevelReached&&(l="red"),n.status({fill:l,shape:"ring",text:"active unit "+e+" queue items: "+i})}else h.setNodeStatusTo("active unit "+e+" without queue",n)},n.onModbusInit=function(){n.readFromQueue()},n.onModbusActive=function(){n.readFromQueue()},n.onModbusQueue=function(){n.readFromQueue()},a.on("mbinit",n.onModbusInit),a.on("mbqueue",n.onModbusQueue),a.on("mbactive",n.onModbusActive),n.queueReadInterval=setInterval(n.readFromQueue,n.queueReadIntervalTime),n.on("input",function(e){if(e.queueEnabled=a.bufferCommands,Number.isInteger(n.unitid)?(e.queue=a.bufferCommandList.get(n.unitid),e.unitid=n.unitid):e.queues=a.bufferCommandList,e.queueOptions={date:Date.now(),state:"queue request",modbusClientName:a.name,lowlowLevel:n.lowlowLevel,lowLevel:n.lowLevel,highLevel:n.highLevel,highHighLevel:n.highHighLevel},e&&e.resetQueue&&a.bufferCommands){if(a.initQueue(),t.settings.verbose){var i="Init Queue By External Node";a.warn(i),u(i)}n.resetStates(),n.status({fill:"blue",shape:"ring",text:"active empty unit queue"}),e.queueOptions.state="queue reset done"}n.send(e)}),n.on("close",function(e){h.setNodeStatusTo("closed",n),n.queueReadInterval&&clearInterval(n.queueReadInterval),n.queueReadInterval=null,a.deregisterForModbus(n,e)})})}; | ||
"use strict";module.exports=function(t){require("source-map-support").install();var r=require("./modbus-basics"),u=require("debug")("contribModbus:queue");t.nodes.registerType("modbus-queue-info",function(e){t.nodes.createNode(this,e),this.name=e.name,this.topic=e.topic,this.unitid=parseInt(e.unitid),this.lowLowLevel=parseInt(e.lowLowLevel),this.lowLevel=parseInt(e.lowLevel),this.highLevel=parseInt(e.highLevel),this.highHighLevel=parseInt(e.highHighLevel),this.errorOnHighLevel=e.errorOnHighLevel,this.queueReadIntervalTime=e.queueReadIntervalTime||1e3;var l=this;l.queueReadInterval=null,r.setNodeStatusTo("waiting",l);var a=t.nodes.getNode(e.server);a&&(a.registerForModbus(l),r.initModbusClientEvents(l,a),l.resetStates=function(){l.lowLowLevelReached=!0,l.lowLevelReached=!1,l.highLevelReached=!1,l.highHighLevelReached=!1},l.resetStates(),l.readFromQueue=function(){var e=l.unitid||1;if(a.bufferCommands){(e<0||255<e)&&(e=1);var i=a.bufferCommandList.get(e).length;if((!i||!l.lowLowLevelReached&&i<l.lowLowLevel)&&l.resetStates(),!l.lowLevelReached&&i>l.lowLowLevel&&i<l.lowLevel){l.lowLevelReached=!0;var t={payload:Date.now(),topic:l.topic,state:"low level reached",unitid:e,modbusClientName:a.name,items:i};l.send(t)}if(!l.highLevelReached&&i>l.lowLevel&&i>l.highLevel){l.highLevelReached=!0;var u={payload:Date.now(),topic:l.topic,state:"high level reached",unitid:e,modbusClientName:a.name,highLevel:l.highLevel,items:i};l.errorOnHighLevel?l.error(new Error("Queue High Level Reached"),u):l.warn(u),l.send(u)}if(!l.highHighLevelReached&&i>l.highLevel&&i>l.highHighLevel){l.highHighLevelReached=!0;var o={payload:Date.now(),topic:l.topic,state:"high high level reached",unitid:e,modbusClientName:a.name,highLevel:l.highLevel,highHighLevel:l.highHighLevel,items:i};l.error(new Error("Queue High High Level Reached"),o),l.send(o)}var n="blue";l.lowLevelReached&&(n="green"),l.highLevelReached&&(n=l.errorOnHighLevel?"red":"yellow"),l.highHighLevelReached&&(n="red"),l.status({fill:n,shape:"ring",text:"active unit "+e+" queue items: "+i})}else r.setNodeStatusTo("active unit "+e+" without queue",l)},l.onModbusInit=function(){l.readFromQueue()},l.onModbusActive=function(){l.readFromQueue()},l.onModbusQueue=function(){l.readFromQueue()},a.on("mbinit",l.onModbusInit),a.on("mbqueue",l.onModbusQueue),a.on("mbactive",l.onModbusActive),l.queueReadInterval=setInterval(l.readFromQueue,l.queueReadIntervalTime),l.on("input",function(e){if(e.queueEnabled=a.bufferCommands,Number.isInteger(l.unitid)?(e.queue=a.bufferCommandList.get(l.unitid),e.unitid=l.unitid):e.queues=a.bufferCommandList,e.queueOptions={date:Date.now(),state:"queue request",modbusClientName:a.name,lowlowLevel:l.lowlowLevel,lowLevel:l.lowLevel,highLevel:l.highLevel,highHighLevel:l.highHighLevel},e&&e.resetQueue&&a.bufferCommands){if(a.initQueue(),t.settings.verbose){var i="Init Queue By External Node";a.warn(i),u(i)}l.resetStates(),l.status({fill:"blue",shape:"ring",text:"active empty unit queue"}),e.queueOptions.state="queue reset done"}l.send(e)}),l.on("close",function(e){r.setNodeStatusTo("closed",l),l.queueReadInterval&&clearInterval(l.queueReadInterval),l.queueReadInterval=null,a.deregisterForModbus(l,e)}))})}; | ||
//# sourceMappingURL=maps/modbus-queue-info.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(r){require("source-map-support").install();var u=require("./modbus-basics"),d=require("./core/modbus-core"),l=require("./core/modbus-io-core"),c=require("debug")("contribModbus:read");r.nodes.registerType("modbus-read",function(e){r.nodes.createNode(this,e),this.name=e.name,this.topic=e.topic,this.unitid=e.unitid,this.dataType=e.dataType,this.adr=e.adr,this.quantity=e.quantity||1,this.rate=e.rate,this.rateUnit=e.rateUnit,this.delayOnStart=e.delayOnStart,this.startDelayTime=parseInt(e.startDelayTime)||10,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=r.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities;var a=this,o=r.nodes.getNode(e.server);o.registerForModbus(a);var t=null,s=null,i=!1;function n(e){if("polling"!==e||!i){var t=u.setNodeStatusProperties(e,a.showStatusActivities);-1!==e.search("active")||"polling"===e?(i=!1,a.status({fill:t.fill,shape:t.shape,text:t.status+" ( "+a.rate+" "+u.get_timeUnit_name(a.rateUnit)+" ) "})):a.status({fill:t.fill,shape:t.shape,text:t.status})}}a.INPUT_TIMEOUT_MILLISECONDS=1e3,u.setNodeStatusTo("waiting",a),a.onModbusInit=function(){u.setNodeStatusTo("initialize",a)},a.onModbusConnect=function(){a.delayOnStart?t=(t&&clearTimeout(t),setTimeout(a.startIntervalReading,a.INPUT_TIMEOUT_MILLISECONDS*a.startDelayTime)):(t&&clearTimeout(t),a.startIntervalReading()),n("connected")},a.startIntervalReading=function(){s=s||setInterval(a.modbusPollingRead,u.calc_rateByUnit(a.rate,a.rateUnit))},a.onModbusActive=function(){n("active")},a.onModbusError=function(e){u.setNodeStatusTo("failure",a),s&&clearInterval(s),s=null,a.showErrors&&a.warn(e)},a.onModbusClose=function(){u.setNodeStatusTo("closed",a),s&&clearInterval(s),s=null},a.onModbusBroken=function(){u.setNodeStatusTo("reconnecting after "+o.reconnectTimeout+" msec.",a),s&&clearInterval(s),s=null},o.on("mbinit",a.onModbusInit),o.on("mbconnected",a.onModbusConnect),o.on("mbactive",a.onModbusActive),o.on("mberror",a.onModbusError),o.on("mbbroken",a.onModbusBroken),o.on("mbclosed",a.onModbusClose),a.modbusPollingRead=function(){if(o.client){var e={topic:a.topic||"polling",from:a.name,payload:{unitid:a.unitid,fc:d.functionCodeModbusRead(a.dataType),address:a.adr,quantity:a.quantity,messageId:d.getObjectId()}};a.showStatusActivities&&n("polling"),o.emit("readModbus",e,a.onModbusReadDone,a.onModbusReadError)}else n("waiting")},a.onModbusReadDone=function(e,t){a.showStatusActivities&&n("reading done"),function(e,t,o){if(a.useIOFile&&a.ioFile.lastUpdatedAt){a.logIOActivities&&l.internalDebug("node.adr:"+a.adr+" node.quantity:"+a.quantity);var s=l.nameValuesFromIOFile(a,o,e,t,a.adr),i=l.filterValueNames(a,s,d.functionCodeModbusRead(a.dataType),a.adr,a.quantity),n={topic:o.topic,responseBuffer:t,input:o};a.useIOForPayload?(n.payload=i,n.values=e):(n.payload=e,n.valueNames=i),a.send([n,{payload:t,values:e,input:o,valueNames:i}])}else a.send([{payload:e,responseBuffer:t,input:o},{payload:t,values:e,input:o}])}(e.data,e,t)},a.onModbusReadError=function(e,t){c(e.message),a.showErrors&&a.error(e,t),u.setModbusError(a,o,e,t)},a.on("close",function(e){s&&clearInterval(s),s=null,u.setNodeStatusTo("closed",a),o.deregisterForModbus(a,e)})}),r.httpAdmin.post("/modbus/read/inject/:id",r.auth.needsPermission("modbus.inject.write"),function(e,t){var o=r.nodes.getNode(e.params.id);if(o)try{o.modbusPollingRead(),t.sendStatus(200)}catch(e){t.sendStatus(500),o.error(r._("modbusinject.failed",{error:e.toString()}))}else t.sendStatus(404)})}; | ||
"use strict";module.exports=function(r){require("source-map-support").install();var u=require("./modbus-basics"),d=require("./core/modbus-core"),l=require("./core/modbus-io-core"),c=require("debug")("contribModbus:read");r.nodes.registerType("modbus-read",function(e){r.nodes.createNode(this,e),this.name=e.name,this.topic=e.topic,this.unitid=e.unitid,this.dataType=e.dataType,this.adr=e.adr,this.quantity=e.quantity||1,this.rate=e.rate,this.rateUnit=e.rateUnit,this.delayOnStart=e.delayOnStart,this.startDelayTime=parseInt(e.startDelayTime)||10,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.connection=null,this.useIOFile=e.useIOFile,this.ioFile=r.nodes.getNode(e.ioFile),this.useIOForPayload=e.useIOForPayload,this.logIOActivities=e.logIOActivities;var a=this,t=null,o=null,i=!1;a.INPUT_TIMEOUT_MILLISECONDS=1e3,u.setNodeStatusTo("waiting",a);var s=r.nodes.getNode(e.server);function n(e){if("polling"!==e||!i){var t=u.setNodeStatusProperties(e,a.showStatusActivities);-1!==e.search("active")||"polling"===e?(i=!1,a.status({fill:t.fill,shape:t.shape,text:t.status+" ( "+a.rate+" "+u.get_timeUnit_name(a.rateUnit)+" ) "})):a.status({fill:t.fill,shape:t.shape,text:t.status})}}s&&(s.registerForModbus(a),u.initModbusClientEvents(a,s),a.onModbusInit=function(){u.setNodeStatusTo("initialize",a)},a.onModbusConnect=function(){a.delayOnStart?t=(t&&clearTimeout(t),setTimeout(a.startIntervalReading,a.INPUT_TIMEOUT_MILLISECONDS*a.startDelayTime)):(t&&clearTimeout(t),a.startIntervalReading()),n("connected")},a.startIntervalReading=function(){o=o||setInterval(a.modbusPollingRead,u.calc_rateByUnit(a.rate,a.rateUnit))},a.onModbusActive=function(){n("active")},a.onModbusError=function(e){u.setNodeStatusTo("failure",a),s.reconnectOnTimeout&&(o&&clearInterval(o),o=null),a.showErrors&&a.warn(e)},a.onModbusClose=function(){u.setNodeStatusTo("closed",a),o&&clearInterval(o),o=null},a.onModbusBroken=function(){s.reconnectOnTimeout&&(u.setNodeStatusTo("reconnecting after "+s.reconnectTimeout+" msec.",a),o&&clearInterval(o),o=null)},s.on("mbinit",a.onModbusInit),s.on("mbconnected",a.onModbusConnect),s.on("mbactive",a.onModbusActive),s.on("mberror",a.onModbusError),s.on("mbbroken",a.onModbusBroken),s.on("mbclosed",a.onModbusClose),a.modbusPollingRead=function(){if(s.client){var e={topic:a.topic||"polling",from:a.name,payload:{unitid:a.unitid,fc:d.functionCodeModbusRead(a.dataType),address:a.adr,quantity:a.quantity,messageId:d.getObjectId()}};a.showStatusActivities&&n("polling"),s.emit("readModbus",e,a.onModbusReadDone,a.onModbusReadError)}else n("waiting")},a.onModbusReadDone=function(e,t){a.showStatusActivities&&n("reading done"),function(e,t,o){if(a.useIOFile&&a.ioFile.lastUpdatedAt){a.logIOActivities&&l.internalDebug("node.adr:"+a.adr+" node.quantity:"+a.quantity);var i=l.nameValuesFromIOFile(a,o,e,t,a.adr),s=l.filterValueNames(a,i,d.functionCodeModbusRead(a.dataType),a.adr,a.quantity),n={topic:o.topic,responseBuffer:t,input:o};a.useIOForPayload?(n.payload=s,n.values=e):(n.payload=e,n.valueNames=s),a.send([n,{payload:t,values:e,input:o,valueNames:s}])}else a.send([{payload:e,responseBuffer:t,input:o},{payload:t,values:e,input:o}])}(e.data,e,t)},a.onModbusReadError=function(e,t){c(e.message),a.showErrors&&a.error(e,t),u.setModbusError(a,s,e,t)},a.on("close",function(e){o&&clearInterval(o),o=null,u.setNodeStatusTo("closed",a),s.deregisterForModbus(a,e)}))}),r.httpAdmin.post("/modbus/read/inject/:id",r.auth.needsPermission("modbus.inject.write"),function(e,t){var o=r.nodes.getNode(e.params.id);if(o)try{o.modbusPollingRead(),t.sendStatus(200)}catch(e){t.sendStatus(500),o.error(r._("modbusinject.failed",{error:e.toString()}))}else t.sendStatus(404)})}; | ||
//# sourceMappingURL=maps/modbus-read.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";module.exports=function(t){require("source-map-support").install();var o=require("./modbus-basics"),i=require("./core/modbus-core"),r=require("debug")("contribModbus:write");t.nodes.registerType("modbus-write",function(e){t.nodes.createNode(this,e),this.name=e.name,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.unitid=e.unitid,this.dataType=e.dataType,this.adr=Number(e.adr),this.quantity=e.quantity;var s=this,a=t.nodes.getNode(e.server);a.registerForModbus(s),s.bufferMessageList=new Map,o.initModbusClientEvents(s,a),o.setNodeStatusTo("waiting",s),s.onModbusWriteDone=function(e,t){s.showStatusActivities&&o.setNodeStatusTo("write done",s),s.send(i.buildMessage(s.bufferMessageList,t.payload,e,t))},s.onModbusWriteError=function(e,t){r(e.message),s.showErrors&&s.error(e,t),o.setModbusError(s,a,e,i.getOriginalMessage(s.bufferMessageList,t))},s.on("input",function(e){o.invalidPayloadIn(e)||a.client&&(Object.prototype.hasOwnProperty.call(e.payload,"value")&&"string"==typeof e.payload.value&&("true"===e.payload.value||"false"===e.payload.value?e.payload.value="true"===e.payload.value:-1<e.payload.value.indexOf(",")&&(e.payload.value=JSON.parse(e.payload.value))),e.messageId=i.getObjectId(),s.bufferMessageList.set(e.messageId,e),e={payload:{value:e.payload.value||e.payload,unitid:s.unitid,fc:i.functionCodeModbusWrite(s.dataType),address:s.adr,quantity:s.quantity,messageId:e.messageId},_msgid:e._msgid},a.emit("writeModbus",e,s.onModbusWriteDone,s.onModbusWriteError),s.showStatusActivities&&o.setNodeStatusTo(a.statlyMachine.getMachineState(),s))}),s.on("close",function(e){o.setNodeStatusTo("closed",s),s.bufferMessageList.clear(),a.deregisterForModbus(s,e)})})}; | ||
"use strict";module.exports=function(s){require("source-map-support").install();var o=require("./modbus-basics"),i=require("./core/modbus-core"),r=require("debug")("contribModbus:write");s.nodes.registerType("modbus-write",function(e){s.nodes.createNode(this,e),this.name=e.name,this.showStatusActivities=e.showStatusActivities,this.showErrors=e.showErrors,this.unitid=e.unitid,this.dataType=e.dataType,this.adr=Number(e.adr),this.quantity=e.quantity;var t=this;t.bufferMessageList=new Map,o.setNodeStatusTo("waiting",t);var a=s.nodes.getNode(e.server);a&&(a.registerForModbus(t),o.initModbusClientEvents(t,a),t.onModbusWriteDone=function(e,s){t.showStatusActivities&&o.setNodeStatusTo("write done",t),t.send(i.buildMessage(t.bufferMessageList,s.payload,e,s))},t.onModbusWriteError=function(e,s){r(e.message),t.showErrors&&t.error(e,s),o.setModbusError(t,a,e,i.getOriginalMessage(t.bufferMessageList,s))},t.on("input",function(e){o.invalidPayloadIn(e)||a.client&&(Object.prototype.hasOwnProperty.call(e.payload,"value")&&"string"==typeof e.payload.value&&("true"===e.payload.value||"false"===e.payload.value?e.payload.value="true"===e.payload.value:-1<e.payload.value.indexOf(",")&&(e.payload.value=JSON.parse(e.payload.value))),e.messageId=i.getObjectId(),t.bufferMessageList.set(e.messageId,e),e={payload:{value:e.payload.value||e.payload,unitid:t.unitid,fc:i.functionCodeModbusWrite(t.dataType),address:t.adr,quantity:t.quantity,messageId:e.messageId},_msgid:e._msgid},a.emit("writeModbus",e,t.onModbusWriteDone,t.onModbusWriteError),t.showStatusActivities&&o.setNodeStatusTo(a.actualServiceState,t))}),t.on("close",function(e){o.setNodeStatusTo("closed",t),t.bufferMessageList.clear(),a.deregisterForModbus(t,e)}))})}; | ||
//# sourceMappingURL=maps/modbus-write.js.map |
{ | ||
"name": "node-red-contrib-modbus", | ||
"version": "5.1.0", | ||
"version": "5.2.0", | ||
"description": "The all in one Modbus TCP and Serial contribution package for Node-RED.", | ||
@@ -16,3 +16,4 @@ "dependencies": { | ||
"optionalDependencies": { | ||
"serialport": "8.0.5" | ||
"serialport": "8.0.5", | ||
"@serialport/list": "8.0.4" | ||
}, | ||
@@ -96,3 +97,3 @@ "keywords": [ | ||
"nock": "^11.7.0", | ||
"node-red": "^1.0.2", | ||
"node-red": "^1.0.3", | ||
"node-red-node-test-helper": "^0.2.3", | ||
@@ -99,0 +100,0 @@ "pump": "^3.0.0", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
8237937
177
138406
10
20