# Sensor average function

**URL:** <https://discourse.nodered.org/t/sensor-average-function/59743>\
**Category:** General\
**Tags:** database, function-node\
**Created:** [12 March 2022 08:50 UTC](https://discourse.nodered.org/t/sensor-average-function/59743 "2022-03-12T08:50:56Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![stepinskir](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/stepinskir/32/58332_2.png) [@stepinskir](https://discourse.nodered.org/u/stepinskir)\
**Post date:** [12 March 2022 08:50 UTC](https://discourse.nodered.org/t/sensor-average-function/59743/1 "2022-03-12T08:50:56Z")

</div>

Looking for solution to count avarage of ‘value’ parameter from this table:

!

 ![ScreenHunter_67 Mar. 12 01.10](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/c/6/c61304dbcca4ef8178db2a3b8e9b73b6268e1467.jpeg)

currently have this code but it returns Nan error:

```auto
const val = Object.values(msg.payload)
function calculate(array) {
    return array.reduce((a, b) => a + b) / array.length;
}
msg.payload = calculate(val)
return msg;

```

---

<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:** [12 March 2022 09:30 UTC](https://discourse.nodered.org/t/sensor-average-function/59743/3 "2022-03-12T09:30:59Z")

</div>

```auto
function calculate(array) {
    return array.reduce((a, b) => a + b.value, 0) / array.length;
}
msg.payload = calculate(msg.payload)

```

payload is already an array

---

<div class="post-metadata">

**Author:** ![stepinskir](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/stepinskir/32/58332_2.png) [@stepinskir](https://discourse.nodered.org/u/stepinskir)\
**Post date:** [12 March 2022 09:37 UTC](https://discourse.nodered.org/t/sensor-average-function/59743/4 "2022-03-12T09:37:01Z")

</div>

Works now! Thank you! it returned 245.54500000000002 value, how to round it to 245.5? (found it with SMOOTH node). Thank you for your help!!!

---

<div class="post-metadata">

**Author:** ![stepinskir](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/stepinskir/32/58332_2.png) [@stepinskir](https://discourse.nodered.org/u/stepinskir)\
**Post date:** [12 March 2022 11:03 UTC](https://discourse.nodered.org/t/sensor-average-function/59743/5 "2022-03-12T11:03:03Z")

</div>

strange, after installation NodeRED Companion (I want to create sensor for average value) it stopped working (NaN error). Even when I uninstalled Node red Companion repository... my current function looks like this:

```auto
const val = Object.values(msg.payload)
function calculate(array) {
    return array.reduce((a, b) => a + b.value, 0) / array.length;
}
msg.payload = calculate(val)
return msg;

```

 ![ScreenHunter_70 Mar. 12 12.10](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/b/2babd8615260c7e28ea4a77bfecebde45bf92d7c.jpeg)

---

<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:** [12 March 2022 11:36 UTC](https://discourse.nodered.org/t/sensor-average-function/59743/6 "2022-03-12T11:36:15Z")

</div>

You have messed up the function. Look again at what E1cid posted.

---

<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:** [26 March 2022 11:36 UTC](https://discourse.nodered.org/t/sensor-average-function/59743/7 "2022-03-26T11:36:55Z")

</div>

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