# Sumar variables de dos contadores modbus

**URL:** <https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087>\
**Category:** General\
**Created:** [16 February 2021 12:11 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087 "2021-02-16T12:11:29Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 12:11 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/1 "2021-02-16T12:11:29Z")

</div>

Buenos dias, necesito sumar dos variables de dos contadores modbus diferentes pero no se como hacerlo. adjunto instruccion. Un saludo

[{"id":"27195760.addd28","type":"modbus-read","z":"db2fd8f9.a97c98","name":"Contador General","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"14","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":true,"startDelayTime":"6","server":"f4de446a.47c808","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":250,"y":1220,"wires":[["35a5b3f4.5cdc3c"],]},{"id":"35a5b3f4.5cdc3c","type":"function","z":"db2fd8f9.a97c98","name":"","func":"\n\nobj = {}\nobj.payload = {};\nobj.payload.W=(msg.payload[0]/1 \<\< 16) \>\> 16;\nreturn obj;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":1220,"wires":[["52ae5c23.54faf4"]]},{"id":"190e3cb0.0defe3","type":"modbus-read","z":"db2fd8f9.a97c98","name":"Contador Solar","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"3","dataType":"HoldingRegister","adr":"14","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":true,"startDelayTime":"7","server":"f4de446a.47c808","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":240,"y":1320,"wires":[["35a5b3f4.5cdc3c"],]},{"id":"52ae5c23.54faf4","type":"debug","z":"db2fd8f9.a97c98","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":880,"y":1220,"wires":},{"id":"f4de446a.47c808","type":"modbus-client","name":"General","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.1.11","tcpPort":"502","tcpType":"TPC-RTU-BUFFERED","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit\_id":"3","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true}]

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 February 2021 13:09 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/2 "2021-02-16T13:09:27Z")

</div>

Hi first welcome.

The flow you posted is corrupt you need to follow these instructions to post code. [How to share code or flow json](https://discourse.nodered.org/t/how-to-share-code-or-flow-json/506)

To access your 2 modbus readings you will need to join the messages, so both readings are in the same message. There is an example in the node-red cookbook [Create a single message from separate streams of messages : Node-RED](https://cookbook.nodered.org/basic/join-streams)

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [16 February 2021 13:30 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/3 "2021-02-16T13:30:19Z")

</div>

As @E1cid says, your flow cannot be imported because you have not correctly formatted it in the forum

As far as I can see, you have 2 separate modbus reads from the same modbus device then you try to use both?

It is FAR better to read all registers in one go then all data will be in the same `msg`

The [buffer-parser](https://flows.nodered.org/node/node-red-contrib-buffer-parser) node is very useful for selecting values from the modbus data and setting the correct data types - works very well with modbus nodes.

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 13:51 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/4 "2021-02-16T13:51:28Z")

</div>

```auto

[{"id":"27195760.addd28","type":"modbus-read","z":"db2fd8f9.a97c98","name":"Contador General","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"14","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":true,"startDelayTime":"6","server":"f4de446a.47c808","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":250,"y":1200,"wires":[["35a5b3f4.5cdc3c"],[]]},{"id":"35a5b3f4.5cdc3c","type":"function","z":"db2fd8f9.a97c98","name":"","func":"\n\nobj = {}\nobj.payload = {};\nobj.payload.W=(msg.payload[0]/1 << 16) >> 16;\nreturn obj;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":1200,"wires":[["52ae5c23.54faf4"]]},{"id":"190e3cb0.0defe3","type":"modbus-read","z":"db2fd8f9.a97c98","name":"Contador Solar","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"3","dataType":"HoldingRegister","adr":"14","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":true,"startDelayTime":"7","server":"f4de446a.47c808","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":240,"y":1300,"wires":[["35a5b3f4.5cdc3c"],[]]},{"id":"52ae5c23.54faf4","type":"debug","z":"db2fd8f9.a97c98","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":880,"y":1200,"wires":[]},{"id":"f4de446a.47c808","type":"modbus-client","name":"General","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.1.11","tcpPort":"502","tcpType":"TPC-RTU-BUFFERED","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"3","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true}]
```

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 13:53 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/5 "2021-02-16T13:53:36Z")

</div>

Yo quiero sumar los dos valores que se obtienen en la funcion.

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 13:56 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/6 "2021-02-16T13:56:28Z")

</div>

El problema, es que los valores a sumar corresponden a dos contadores modbus diferentes.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [16 February 2021 16:03 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/7 "2021-02-16T16:03:16Z")

</div>

Try this...

```auto
[{"id":"27195760.addd28","type":"modbus-read","z":"f3939210.feec5","name":"Contador General","topic":"unit1","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"14","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":true,"startDelayTime":"6","server":"f4de446a.47c808","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":810,"y":280,"wires":[["fe029515.d2f938"],[]]},{"id":"190e3cb0.0defe3","type":"modbus-read","z":"f3939210.feec5","name":"Contador Solar","topic":"unit3","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"3","dataType":"HoldingRegister","adr":"14","quantity":"1","rate":"10","rateUnit":"s","delayOnStart":true,"startDelayTime":"7","server":"","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":820,"y":340,"wires":[["fe029515.d2f938"],[]]},{"id":"52ae5c23.54faf4","type":"debug","z":"f3939210.feec5","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1210,"y":300,"wires":[]},{"id":"fe029515.d2f938","type":"join","z":"f3939210.feec5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1030,"y":300,"wires":[["52ae5c23.54faf4"]]},{"id":"f4de446a.47c808","type":"modbus-client","name":"General","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.1.11","tcpPort":"502","tcpType":"TPC-RTU-BUFFERED","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"3","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true}]

```

Look in the debug output - you should have both values in payload.

Then the docs can will explain how to use the debug panel to find the right path to any data item.

[https://nodered.org/docs/user-guide/messages](https://nodered.org/docs/user-guide/messages)

Pay particular attention to the bit about the **copy path** button that appears when you hover over the item in the debug window.

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 16:48 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/8 "2021-02-16T16:48:15Z")

</div>

la respuesta es:  
16/2/2021 17:46:22[node: 90559441.d2ba88]([http://192.168.1.166:1880](http://192.168.1.166:1880)  
/#)unit3 : msg.payload : Object

{ unit1: array[1], unit3: array[1] }

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [16 February 2021 16:49 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/9 "2021-02-16T16:49:48Z")

</div>

Ok, so now you have both values in the same message.

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 16:50 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/10 "2021-02-16T16:50:26Z")

</div>

16/2/2021 17:49:13[node: 90559441.d2ba88  
unit3 : msg.payload : Object

object

unit1: array[1]

unit3: array[1]

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 16:51 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/11 "2021-02-16T16:51:38Z")

</div>

pero tiene que se un valor numérico W

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [16 February 2021 16:56 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/12 "2021-02-16T16:56:48Z")

</div>

So move the array element [0] to wherever you need it.

What do you really need the output to look like?

Also, post a screenshot of the debug output with all elements and properties expanded

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 17:06 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/13 "2021-02-16T17:06:33Z")

</div>

![WhatsApp Image 2021-02-16 at 18.03.37](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/a/fa0af597607df7db775d507f9e78d91978b534b9.jpeg) Uploading: WhatsApp Image 2021-02-16 at 18.03.37.jpeg...

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [16 February 2021 17:16 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/14 "2021-02-16T17:16:32Z")

</div>

You didn't say what you expect the output to be and you didn't expand all the properties/elements

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 February 2021 17:20 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/15 "2021-02-16T17:20:21Z")

</div>

so your values will be at  
`msg.payload.unit1[0]`  
and  
`msg.payload.unit3[0]`  
Use them in your function  
e.g.  
`obj.payload.W=(msg.payload.unit1[0]/1 << 16) >> 16;`

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 17:50 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/16 "2021-02-16T17:50:30Z")

</div>

Uploading: WhatsApp Image 2021-02-16 at 18.03.37.jpeg...

 ![WhatsApp Image 2021-02-16 at 18.03.37](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/a/fa0af597607df7db775d507f9e78d91978b534b9.jpeg)

---

<div class="post-metadata">

**Author:** ![jjverdu1969](https://avatars.discourse-cdn.com/v4/letter/j/6bbea6/32.png) [@jjverdu1969](https://discourse.nodered.org/u/jjverdu1969)\
**Post date:** [16 February 2021 18:06 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/17 "2021-02-16T18:06:11Z")

</div>

Disculpa pero soy muy nuevo en este tipo de programacion. no entiendo

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [16 February 2021 18:25 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/18 "2021-02-16T18:25:33Z")

</div>

In your original function you used `msg.payload[0]` in  
`obj.payload.W=(msg.payload[0]/1 << 16) >> 16;` to access the buffer.  
After the join node both device buffers are at  
`msg.payload.unit1[0]` one buffer from sensor 1  
and  
`msg.payload.unit3[0]` one bffer from sensor 2

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [17 April 2021 18:26 UTC](https://discourse.nodered.org/t/sumar-variables-de-dos-contadores-modbus/41087/19 "2021-04-17T18:26:32Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
