Modbus via HTTP requests

some examples how to work with Modbus and HTTP requests and response ...

[{"id":"934a0213.59b38","type":"tab","label":"Modbus HTTP","disabled":false,"info":""},{"id":"84ee0e0b.ed5c9","type":"modbus-getter","z":"934a0213.59b38","name":"","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"0","quantity":"4","server":"7e257e6c.0c55","x":410,"y":190,"wires":[["52cb7240.5c223c","95a8b25.2972b5"],["1f9d545f.1fd4fc"]]},{"id":"44d50ac8.4bea94","type":"http in","z":"934a0213.59b38","name":"","url":"/modbus/flex/read","method":"get","upload":false,"swaggerDoc":"","x":190,"y":340,"wires":[["6fd20edd.9d64a"]]},{"id":"52cb7240.5c223c","type":"debug","z":"934a0213.59b38","name":"","active":true,"console":"false","complete":"true","x":770,"y":130,"wires":[]},{"id":"1f9d545f.1fd4fc","type":"modbus-response","z":"934a0213.59b38","name":"","registerShowMax":20,"x":680,"y":170,"wires":[]},{"id":"6fd20edd.9d64a","type":"modbus-flex-getter","z":"934a0213.59b38","name":"","showStatusActivities":false,"showErrors":false,"server":"7e257e6c.0c55","x":430,"y":340,"wires":[["6190d094.4b69d","90057f47.6116a"],["2ab12c2e.248074"]]},{"id":"2ab12c2e.248074","type":"modbus-response","z":"934a0213.59b38","name":"","registerShowMax":20,"x":670,"y":330,"wires":[]},{"id":"6190d094.4b69d","type":"debug","z":"934a0213.59b38","name":"","active":true,"console":"false","complete":"true","x":750,"y":290,"wires":[]},{"id":"ff16b6ed.33d458","type":"catch","z":"934a0213.59b38","name":"","scope":null,"x":650,"y":80,"wires":[["13def922.564957"]]},{"id":"bd6165cf.5556f8","type":"modbus-flex-server","z":"934a0213.59b38","name":"","logEnabled":false,"serverPort":"10502","responseDelay":100,"unitId":1,"delayUnit":"ms","coilsBufferSize":20000,"registersBufferSize":20000,"minAddress":0,"splitAddress":10000,"funcGetCoil":"function getFlexCoil(addr, unitID) {\n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\treturn node.coils.readUInt8(addr * node.bufferFactor) \n\t}  \n}","funcGetInputRegister":"function getFlexInputRegister(addr, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\treturn node.registers.readUInt16BE(addr * node.bufferFactor)  \n\t} \n}","funcGetHoldingRegister":"function getFlexHoldingRegsiter(addr, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr > node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\treturn node.registers.readUInt16BE(addr * node.bufferFactor)  \n\t} \n}","funcSetCoil":"function setFlexCoil(addr, value, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\tnode.coils.writeUInt8(value, addr * node.bufferFactor)  \n\t} \n}","funcSetRegister":"function setFlexRegister(addr, value, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\tnode.registers.writeUInt16BE(value, addr * node.bufferFactor)  \n\t} \n}","x":200,"y":70,"wires":[[],[],[]]},{"id":"90057f47.6116a","type":"http response","z":"934a0213.59b38","name":"","statusCode":"","headers":{},"x":630,"y":290,"wires":[]},{"id":"3e76ce1b.ecce22","type":"http in","z":"934a0213.59b38","name":"","url":"/modbus/read","method":"get","upload":false,"swaggerDoc":"","x":180,"y":190,"wires":[["84ee0e0b.ed5c9"]]},{"id":"95a8b25.2972b5","type":"http response","z":"934a0213.59b38","name":"","statusCode":"","headers":{},"x":640,"y":130,"wires":[]},{"id":"13def922.564957","type":"debug","z":"934a0213.59b38","name":"","active":true,"console":"false","complete":"true","x":800,"y":80,"wires":[]},{"id":"a5d36532.8f2178","type":"modbus-flex-write","z":"934a0213.59b38","name":"","showStatusActivities":false,"showErrors":false,"server":"7e257e6c.0c55","x":420,"y":530,"wires":[["8e948598.d4e568"],["1e6cd079.e072b"]]},{"id":"82fbb199.0ffde","type":"modbus-write","z":"934a0213.59b38","name":"","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"0","quantity":"1","server":"7e257e6c.0c55","x":410,"y":440,"wires":[["26dccb4e.a20d54"],["8281dfc5.214a5"]]},{"id":"837d3e77.7e547","type":"http in","z":"934a0213.59b38","name":"","url":"/modbus/write","method":"get","upload":false,"swaggerDoc":"","x":180,"y":440,"wires":[["82fbb199.0ffde"]]},{"id":"26dccb4e.a20d54","type":"http response","z":"934a0213.59b38","name":"","statusCode":"","headers":{},"x":640,"y":400,"wires":[]},{"id":"8281dfc5.214a5","type":"modbus-response","z":"934a0213.59b38","name":"","registerShowMax":20,"x":680,"y":440,"wires":[]},{"id":"eb0c0441.6acc08","type":"http in","z":"934a0213.59b38","name":"","url":"/modbus/flex/write","method":"get","upload":false,"swaggerDoc":"","x":190,"y":530,"wires":[["a5d36532.8f2178"]]},{"id":"8e948598.d4e568","type":"http response","z":"934a0213.59b38","name":"","statusCode":"","headers":{},"x":640,"y":490,"wires":[]},{"id":"1e6cd079.e072b","type":"modbus-response","z":"934a0213.59b38","name":"","registerShowMax":20,"x":680,"y":530,"wires":[]},{"id":"c0a27f1a.38377","type":"comment","z":"934a0213.59b38","name":"HTTP request GET working examples","info":"## Read\n\n### Flex Read\n\nhttp://localhost:1880/modbus/flex/read?value=0&unitid=1&fc=3&address=0&quantity=1\n\nhttp://localhost:1880/modbus/flex/read?value=0&unitid=1&fc=4&address=0&quantity=1\n\nhttp://localhost:1880/modbus/flex/read?value=0&unitid=1&fc=3&address=0&quantity=5\n\nhttp://localhost:1880/modbus/flex/read?value=0&unitid=1&fc=4&address=0&quantity=5\n\n### Read\n\nhttp://localhost:1880/modbus/read\n\n## Write\n\n### Test HTTP without Modbus\n\nhttp://localhost:1880/modbus/flex/write/test?value=[1,2,3,4,5]&unitid=1&fc=16&address=0&quantity=5\n\n\n### Flex Write\n\nhttp://localhost:1880/modbus/flex/write?value=10&unitid=1&fc=6&address=0&quantity=1\n\nhttp://localhost:1880/modbus/flex/write?value=[1,2,3,4,5]&unitid=1&fc=16&address=0&quantity=5\n\n### Write\n\nhttp://localhost:1880/modbus/write\n","x":240,"y":140,"wires":[]},{"id":"11651dd7.39ac22","type":"http in","z":"934a0213.59b38","name":"","url":"/modbus/flex/write/test","method":"get","upload":false,"swaggerDoc":"","x":220,"y":620,"wires":[["18b385b6.4daf0a"]]},{"id":"1fafc9da.7e6216","type":"debug","z":"934a0213.59b38","name":"","active":true,"console":"false","complete":"true","x":590,"y":620,"wires":[]},{"id":"18b385b6.4daf0a","type":"function","z":"934a0213.59b38","name":"","func":"if (msg.payload.value && msg.payload.value.indexOf(',') > -1) {\n    msg.payload.value = JSON.parse(msg.payload.value)\n}\n\nif (msg.value && msg.value.indexOf(',') > -1) {\n    msg.value = JSON.parse(msg.payload.value)\n}\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":620,"wires":[["1fafc9da.7e6216","5ba40073.7997a"]]},{"id":"5ba40073.7997a","type":"http response","z":"934a0213.59b38","name":"","statusCode":"","headers":{},"x":590,"y":660,"wires":[]},{"id":"7e257e6c.0c55","type":"modbus-client","z":"934a0213.59b38","name":"","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"10502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectTimeout":2000}]

Flow Info

Created 7 years ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • catch (x1)
  • comment (x1)
  • debug (x4)
  • function (x1)
  • http in (x5)
  • http response (x5)
Other
  • modbus-client (x1)
  • modbus-flex-getter (x1)
  • modbus-flex-server (x1)
  • modbus-flex-write (x1)
  • modbus-getter (x1)
  • modbus-response (x4)
  • modbus-write (x1)
  • tab (x1)

Tags

  • modbus
  • http
  • request
  • response
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option