# Modbus tcp readout

**URL:** <https://discourse.nodered.org/t/modbus-tcp-readout/84311>\
**Category:** General\
**Created:** [5 January 2024 09:25 UTC](https://discourse.nodered.org/t/modbus-tcp-readout/84311 "2024-01-05T09:25:52Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![UnborN](https://avatars.discourse-cdn.com/v4/letter/u/4491bb/32.png) [@UnborN](https://discourse.nodered.org/u/UnborN)\
**Post date:** [6 January 2024 10:00 UTC](https://discourse.nodered.org/t/modbus-tcp-readout/84311/9 "2024-01-06T10:00:20Z")

</div>

> [@Egge](#):
>
> I also tried node-red-contrib-buffer-parser, but with this I didn't get good results

What have you tried ?  
If your register values are **floatbe** you set that as the type in buffer parser.

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/5/9/5953b1e08744fc18e17ed180ad37b1386f5cf198.png)

The **offset** defines how many bytes to offset from the initial read register 16000  
and since you have enough data in the buffer (because i see you are reading 12 registers)  
you can convert many registers all at once and name them with the convenience of buffer-parser.

( One 32bit float value needs 2 x 16bit registers hence the offset 4 bytes)  
read this post that better explains offset calculations ([link](https://discourse.nodered.org/t/adding-two-values/32784/50))

**Flow :**

```auto
[{"id":"17b04ff71b9b3717","type":"modbus-read","z":"2e2ed7e132dcaa18","name":"Voltage","topic":"","showStatusActivities":true,"logIOActivities":false,"showErrors":true,"showWarnings":true,"unitid":"","dataType":"InputRegister","adr":"19000","quantity":"12","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"9782f823cc54f17a","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":230,"y":560,"wires":[["92737732fdc11aa6"],[]]},{"id":"92737732fdc11aa6","type":"buffer-parser","z":"2e2ed7e132dcaa18","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"floatbe","name":"Voltage L1-N","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"floatbe","name":"Voltage L2-N","offset":4,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"floatbe","name":"Voltage L3-N","offset":8,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":430,"y":560,"wires":[["5b47032292f14787"]]},{"id":"5b47032292f14787","type":"debug","z":"2e2ed7e132dcaa18","name":"debug 60","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":610,"y":560,"wires":[]},{"id":"9782f823cc54f17a","type":"modbus-client","name":"Janitza_Test","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"172.20.44.18","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"0x3A","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true,"showWarnings":true,"showLogs":true}]

```

* * *

Regarding storage solutions there are many databases and some very good nodes like sqlite, mysql, mongodb, influxdb. I use sqlite in my project with node-red-node-sqlite. its simple and lightweight.

---

_[View the full topic](https://discourse.nodered.org/t/modbus-tcp-readout/84311)._
