# Pass parameter to a node

**URL:** <https://discourse.nodered.org/t/pass-parameter-to-a-node/19713>\
**Category:** General\
**Created:** [29 December 2019 18:44 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713 "2019-12-29T18:44:32Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [29 December 2019 18:44 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/1 "2019-12-29T18:44:32Z")

</div>

Hi,

I'm currently working on the Statistics Node, but I think my question is not Statistics-specific.

To make the node work, the node has a property called 'dataSetSize'. As long as I set this value directly on the node everything is working properly but, I need to set this property from my flow. How can i do this?

![Statistics](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/4/4f20871e6186c7c70bb5ad5b01498aa4a0984935.png)

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [29 December 2019 19:25 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/2 "2019-12-29T19:25:55Z")

</div>

Which node exactly is this? What module did you install to get it?

If the node supports you providing that value via a message property then it's sidebar help should tell you.

---

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [29 December 2019 19:52 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/3 "2019-12-29T19:52:10Z")

</div>

Node is named "Statistics" and I find it a bit hard to control 🙂

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [29 December 2019 19:56 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/4 "2019-12-29T19:56:04Z")

</div>

But what module did you install to get that node? Probably node-red-contrib-SOMETHING

---

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [29 December 2019 20:15 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/5 "2019-12-29T20:15:04Z")

</div>

Oh, sorry  
node-red-contrib-statistics (node)

> **[node-red-contrib-statistics](https://flows.nodered.org/node/node-red-contrib-statistics)**
>
> A node-red node to perform simple statistical operations on a flow.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [29 December 2019 21:33 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/6 "2019-12-29T21:33:31Z")

</div>

I don't see any suggestion in the node description that you can pass that property in a message.

---

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [29 December 2019 21:59 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/7 "2019-12-29T21:59:08Z")

</div>

Neither can I Colin.

My goal is to calculate the Mean and the StandardDeviation of the incoming payload where the array-length can by anything. Maybe there is a better way to do this in javascript? Any suggestions?

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [29 December 2019 22:17 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/8 "2019-12-29T22:17:43Z")

</div>

I haven't used that node, but I think the description says that if you specify `clear` when you pass the array then it will clear any existing data, add in the new array of values, and calculate the answer for you.

---

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [29 December 2019 22:33 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/9 "2019-12-29T22:33:25Z")

</div>

Yes, I checked that msg.topic = clear will celar the register. But msg.topic is also necessary to specify the kind of math you are doing, for example standardDeviation. Then things gets messy....

---

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [29 December 2019 22:52 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/10 "2019-12-29T22:52:46Z")

</div>

Well,  
It is probably easier to do it all in Javascript. Something like this:

var v = 0;  
var diffarr = ;  
var mean;  
var diffmean;

//mean value  
for (i=0; i \< msg.valuearr.length;i++) {  
v = v + msg.valuearr[i];  
}

mean = v / msg.valuearr.length;

//Standard deviation  
for (i=0; i \< msg.valuearr.length;i++) {  
v= Math.pow(msg.valuearr[i] - mean,2);  
diffarr.push(v);  
}

v=0;  
for (i=0; i \< diffarr.length;i++) {  
v = v + diffarr[i];  
}

diffmean = v / diffarr.length;

msg.stdev = Math.sqrt(diffmean);  
msg.mean = mean;  
return msg

---

<div class="post-metadata">

**Author:** ![Andrei](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei/32/10446_2.png) [@Andrei](https://discourse.nodered.org/u/Andrei)\
**Post date:** [29 December 2019 23:54 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/11 "2019-12-29T23:54:36Z")

</div>

I just installed that node and it seems to work fine.

I understood that the whole input array will be used in the calculation when the parameter `Data set size` is left as zero.

`maximum number of data elements to store. 0 for unlimited.`

The trick (as you already mentioned) is to set the topic of the message to the function to be applied, in your case "mean" or "standardDeviation"

![a-01](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/e/e3ca252b9e7e3581f7e0715289051d23b729d17d.png)

Edit: After playing a while with the node I understand what you mean. Indeed, it is not intuitive controlling the behaviour of the node. Still trying to get my head round.

---

<div class="post-metadata">

**Author:** ![Andrei](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei/32/10446_2.png) [@Andrei](https://discourse.nodered.org/u/Andrei)\
**Post date:** [30 December 2019 00:52 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/12 "2019-12-30T00:52:18Z")

</div>

An alternative is to install the underline [statistics library from NPM](https://www.npmjs.com/package/simple-statistics) and use it inside a function node like explained on [Node-RED documentation.](https://nodered.org/docs/user-guide/writing-functions#loading-additional-modules)

```auto
var ss = global.get('simple_statistics');
msg.mean = ss.mean(msg.payload);
msg.max = ss.max(msg.payload);
msg.standardDeviation = ss.standardDeviation(msg.payload);
return msg;

```

![ss-01](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/7/7f7ae5b0180f9141e4cd4f9a882fbeb3aa2d6970.png)

Following line has been added to settings.js under functionGlobalContext property:

`simple_statistics:require("simple-statistics"),`

---

<div class="post-metadata">

**Author:** ![olab](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@olab](https://discourse.nodered.org/u/olab)\
**Post date:** [30 December 2019 18:51 UTC](https://discourse.nodered.org/t/pass-parameter-to-a-node/19713/13 "2019-12-30T18:51:30Z")

</div>

Thank you for your support guys!
