# Dynamic min max limit to gauge

**URL:** <https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894>\
**Category:** Dashboard\
**Created:** [13 November 2019 13:47 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894 "2019-11-13T13:47:23Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![naikritesh123](https://avatars.discourse-cdn.com/v4/letter/n/4af34b/32.png) [@naikritesh123](https://discourse.nodered.org/u/naikritesh123)\
**Post date:** [13 November 2019 13:47 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/1 "2019-11-13T13:47:23Z")

</div>

I am new in Node red following code i have created following example with 3 gauges in it.  
I wants to show limit of all gauges dynamically by single function not individual function for each

```auto

[{"id":"ca33fa4c.a42348","type":"mqtt in","z":"b0c1d592.40c9b8","name":"loadprofileout","topic":"LOAD PROFILE","qos":"2","datatype":"auto","broker":"f52c9088.7d7c1","x":110,"y":340,"wires":[["61549806.8da518"]]},{"id":"86c9ba30.a128a8","type":"mqtt out","z":"b0c1d592.40c9b8","name":"loadprofile","topic":"LOAD PROFILE","qos":"0","retain":"","broker":"f52c9088.7d7c1","x":129,"y":260,"wires":[]},{"id":"61549806.8da518","type":"json","z":"b0c1d592.40c9b8","name":"","property":"payload","action":"","pretty":false,"x":250,"y":340,"wires":[["81fee1bc.eaa1e"]]},{"id":"7c9fcf1d.f0cae","type":"split","z":"b0c1d592.40c9b8","name":"","splt":":","spltType":"str","arraySplt":"3","arraySpltType":"len","stream":false,"addname":"","x":250,"y":400,"wires":[["4e001d06.b60404"]]},{"id":"4e001d06.b60404","type":"function","z":"b0c1d592.40c9b8","name":"","func":"var parts = msg.payload.split('\":\"');\nmsg.key = parts[0].replace('\"', \"\");\nmsg.val = parts[1]\nmsg.ui_control = {max:parseInt(msg.payload)-100};\n/*var x = parseInt(msg.val)+100;\nvar y = parseInt(msg.val)-100;\nmsg = {ui_control:{max:x,min:y}};\n*/\n\nreturn msg;\n","outputs":1,"noerr":0,"x":270,"y":460,"wires":[["a836199b.351868"]]},{"id":"a836199b.351868","type":"join","z":"b0c1d592.40c9b8","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":430,"y":400,"wires":[["8dfa8b92.b80a58","f417118a.a172b","c0f916de.079f68","c6adacbd.bd3ae","3eaaa0c.783c36"]]},{"id":"81fee1bc.eaa1e","type":"split","z":"b0c1d592.40c9b8","name":"","splt":":","spltType":"str","arraySplt":"3","arraySpltType":"len","stream":false,"addname":"","x":370,"y":340,"wires":[["7c9fcf1d.f0cae"]]},{"id":"c0f916de.079f68","type":"debug","z":"b0c1d592.40c9b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":510,"y":480,"wires":[]},{"id":"3eaaa0c.783c36","type":"ui_gauge","z":"b0c1d592.40c9b8","name":"","group":"98ad6404.0f5d38","order":4,"width":"4","height":"4","gtype":"gage","title":"{{payload[3].parts.key}}","label":"units","format":"{{payload[3].key}}","min":0,"max":"3000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":440,"wires":[]},{"id":"c6adacbd.bd3ae","type":"ui_gauge","z":"b0c1d592.40c9b8","name":"","group":"98ad6404.0f5d38","order":3,"width":"4","height":"4","gtype":"gage","title":"{{payload[2].parts.key}}","label":"units","format":"{{payload[2].key}}","min":0,"max":"2000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":380,"wires":[]},{"id":"f417118a.a172b","type":"ui_gauge","z":"b0c1d592.40c9b8","name":"","group":"98ad6404.0f5d38","order":2,"width":"4","height":"4","gtype":"gage","title":"{{msg.payload[1].parts.key}}","label":"units","format":"{{msg.payload[1].key}}","min":"0","max":"80000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":320,"wires":[],"info":"# h1 Heading 8-)"},{"id":"8dfa8b92.b80a58","type":"ui_text","z":"b0c1d592.40c9b8","group":"98ad6404.0f5d38","order":1,"width":0,"height":0,"name":"","label":"{{msg.payload[0].parts.key}} :","format":"{{msg.payload[0].key}}","layout":"row-left","x":770,"y":240,"wires":[\*],"info":"`ui_{msg.payload[0].parts.key}`"},{"id":"f52c9088.7d7c1","type":"mqtt-broker","z":"","name":"loadprofileout","broker":"localhost","port":"1884","tls":"","clientid":"caa9f223-0c0d-4a27-9fe5-0311949d3145","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"Demo","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"98ad6404.0f5d38","type":"ui_group","z":"","name":"Load Profile Data EM","tab":"6c03b571.83fb1c","disp":true,"width":"10","collapse":false},{"id":"6c03b571.83fb1c","type":"ui_tab","z":"","name":"Load Profile","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

```

mqtt string:  
{"d":{"DatetimeLP":"1/23/2018 0:30","LP12":"450","LP14":"860","LP24":"1000"}}

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [13 November 2019 15:21 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/2 "2019-11-13T15:21:02Z")

</div>

Before we get to your issue, there is something wrong with your fro because it won't import. I've narrowed it down to the `ui_text` node.

Please open the `ui-text` node and take a screen shot of it's contents and paste it to a reply. Also

1. what version of NR and node.js (can be found in startup log)
2. what platform are you running on? (rpi, macOS, windoes etc)

Now on to your problem. Can you explain what you mean a bit more. Your flow shows all three gagues connected to the same join node.

---

<div class="post-metadata">

**Author:** ![naikritesh123](https://avatars.discourse-cdn.com/v4/letter/n/4af34b/32.png) [@naikritesh123](https://discourse.nodered.org/u/naikritesh123)\
**Post date:** [13 November 2019 16:00 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/3 "2019-11-13T16:00:16Z")

</div>

![Screenshot%20(31)](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/7/7b41a0c9517d0f6234f582bb98a799f046e0b178.png)

```auto
[{"id":"86c9ba30.a128a8","type":"mqtt out","z":"b0c1d592.40c9b8","name":"loadprofile","topic":"LOAD PROFILE","qos":"0","retain":"","broker":"f52c9088.7d7c1","x":130,"y":220,"wires":[]},{"id":"ca33fa4c.a42348","type":"mqtt in","z":"b0c1d592.40c9b8","name":"loadprofileout","topic":"LOAD PROFILE","qos":"2","datatype":"auto","broker":"f52c9088.7d7c1","x":130,"y":280,"wires":[["61549806.8da518"]]},{"id":"61549806.8da518","type":"json","z":"b0c1d592.40c9b8","name":"","property":"payload","action":"","pretty":false,"x":150,"y":340,"wires":[["81fee1bc.eaa1e"]]},{"id":"81fee1bc.eaa1e","type":"split","z":"b0c1d592.40c9b8","name":"","splt":":","spltType":"str","arraySplt":"3","arraySpltType":"len","stream":false,"addname":"","x":250,"y":400,"wires":[["7c9fcf1d.f0cae"]]},{"id":"7c9fcf1d.f0cae","type":"split","z":"b0c1d592.40c9b8","name":"","splt":":","spltType":"str","arraySplt":"3","arraySpltType":"len","stream":false,"addname":"","x":350,"y":360,"wires":[["4e001d06.b60404"]]},{"id":"4e001d06.b60404","type":"function","z":"b0c1d592.40c9b8","name":"","func":"var parts = msg.payload.split('\":\"');\nmsg.key = parts[0].replace('\"', \"\");\nmsg.val = parts[1]\nmsg.ui_control = {max:parseInt(msg.payload)+100};\n/*var x = parseInt(msg.val)+100;\nvar y = parseInt(msg.val)-100;\nmsg = {ui_control:{max:x,min:y}};\n*/\n\nreturn msg;\n","outputs":1,"noerr":0,"x":490,"y":420,"wires":[["a836199b.351868"]]},{"id":"a836199b.351868","type":"join","z":"b0c1d592.40c9b8","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":570,"y":360,"wires":[["8dfa8b92.b80a58","f417118a.a172b","c0f916de.079f68","c6adacbd.bd3ae","3eaaa0c.783c36"]]},{"id":"8dfa8b92.b80a58","type":"ui_text","z":"b0c1d592.40c9b8","group":"98ad6404.0f5d38","order":1,"width":0,"height":0,"name":"","label":"{{msg.payload[0].parts.key}} :","format":"{{msg.payload[0].key}}","layout":"row-left","x":770,"y":280,"wires":[],"info":"`ui_{msg.payload[0].parts.key}`"},{"id":"f417118a.a172b","type":"ui_gauge","z":"b0c1d592.40c9b8","name":"","group":"98ad6404.0f5d38","order":2,"width":"4","height":"4","gtype":"gage","title":"{{msg.payload[1].parts.key}}","label":"units","format":"{{msg.payload[1].key}}","min":"0","max":"80000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":320,"wires":[]},{"id":"c6adacbd.bd3ae","type":"ui_gauge","z":"b0c1d592.40c9b8","name":"","group":"98ad6404.0f5d38","order":3,"width":"4","height":"4","gtype":"gage","title":"{{payload[2].parts.key}}","label":"units","format":"{{payload[2].key}}","min":0,"max":"2000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":360,"wires":[]},{"id":"3eaaa0c.783c36","type":"ui_gauge","z":"b0c1d592.40c9b8","name":"","group":"98ad6404.0f5d38","order":4,"width":"4","height":"4","gtype":"gage","title":"{{payload[3].parts.key}}","label":"units","format":"{{payload[3].key}}","min":0,"max":"3000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":400,"wires":[]},{"id":"c0f916de.079f68","type":"debug","z":"b0c1d592.40c9b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":770,"y":440,"wires":[]},{"id":"f52c9088.7d7c1","type":"mqtt-broker","z":"","name":"loadprofileout","broker":"localhost","port":"1884","tls":"","clientid":"caa9f223-0c0d-4a27-9fe5-0311949d3145","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"Demo","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"98ad6404.0f5d38","type":"ui_group","z":"","name":"Load Profile Data EM","tab":"6c03b571.83fb1c","disp":true,"width":"10","collapse":false},{"id":"6c03b571.83fb1c","type":"ui_tab","z":"","name":"Load Profile","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

```

platform : windows  
Node-RED version: v1.0.2  
Node.js version: v10.16.3  
[info] Windows\_NT 10.0.17763 x64 LE

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [13 November 2019 17:21 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/4 "2019-11-13T17:21:52Z")

</div>

Well that export imports fine!

So can you explain what you mean a bit more. Your flow shows all three gagues connected to the same join node. I'm not clear what you are asking

---

<div class="post-metadata">

**Author:** ![naikritesh123](https://avatars.discourse-cdn.com/v4/letter/n/4af34b/32.png) [@naikritesh123](https://discourse.nodered.org/u/naikritesh123)\
**Post date:** [13 November 2019 17:57 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/5 "2019-11-13T17:57:46Z")

</div>

thank you sir.

through join node i am passing values to gauges by using payload.

you can see there is ui\_control value is present in payload. i wants to show that value in gauge as max limit

 ![Capture](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/b/be705ff87fae1d3676fd3ceb7069e69e5ce69e77.jpeg)

I have gone through examples they are showing how to assign value of min-max just for single gauge.

Here i have array and i want that values can populate dynamically

---

<div class="post-metadata">

**Author:** ![hotNipi](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hotnipi/32/383_2.png) [@hotNipi](https://discourse.nodered.org/u/hotNipi)\
**Post date:** [13 November 2019 18:14 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/6 "2019-11-13T18:14:34Z")

</div>

Jumping in with side note:  
In your setup you are going to change gauge max every time when value changes. This makes gauge pretty hard to read as you need to always compare value with limits. What you probably need to achieve is that max limit will be changed only if value gets higher than limit.

---

<div class="post-metadata">

**Author:** ![naikritesh123](https://avatars.discourse-cdn.com/v4/letter/n/4af34b/32.png) [@naikritesh123](https://discourse.nodered.org/u/naikritesh123)\
**Post date:** [13 November 2019 18:18 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/7 "2019-11-13T18:18:59Z")

</div>

Lower limit will be always 0.

Application is like I will get some values through MQTT. I Wants to show that values on gauge and limit of gauge will min : 0 , Max : Value+100

---

<div class="post-metadata">

**Author:** ![hotNipi](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hotnipi/32/383_2.png) [@hotNipi](https://discourse.nodered.org/u/hotNipi)\
**Post date:** [13 November 2019 18:24 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/8 "2019-11-13T18:24:39Z")

</div>

See the difference. Gauge with max changed with every payload shows needle pretty much at same angle. This is the readability issue I'm talking about.

```auto
[{"id":"be3de971.5ca098","type":"inject","z":"5d9558bc.413538","name":"","topic":"","payload":"","payloadType":"date","repeat":"2","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":200,"wires":[["448bfb4f.01eaf4"]]},{"id":"448bfb4f.01eaf4","type":"random","z":"5d9558bc.413538","name":"","low":"50","high":"100","inte":"true","property":"payload","x":350,"y":200,"wires":[["415ed978.900d28","f4d21c3c.bf389"]]},{"id":"415ed978.900d28","type":"function","z":"5d9558bc.413538","name":"","func":"msg.ui_control = {max:msg.payload +100}\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":250,"wires":[["a7f80d7d.42e9f"]]},{"id":"f4d21c3c.bf389","type":"ui_gauge","z":"5d9558bc.413538","name":"","group":"a2c09fe8.458d6","order":0,"width":0,"height":0,"gtype":"gage","title":"gauge","label":"units","format":"{{value}}","min":0,"max":"110","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":650,"y":150,"wires":[]},{"id":"a7f80d7d.42e9f","type":"ui_gauge","z":"5d9558bc.413538","name":"","group":"a2c09fe8.458d6","order":0,"width":0,"height":0,"gtype":"gage","title":"gauge","label":"units","format":"{{value}}","min":0,"max":"110","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":660,"y":240,"wires":[]},{"id":"a2c09fe8.458d6","type":"ui_group","z":"","name":"Default","tab":"5074feb8.5be66","disp":true,"width":"6","collapse":false},{"id":"5074feb8.5be66","type":"ui_tab","z":"","name":"Home","icon":"dashboard","disabled":false,"hidden":false}]

```

In addition, change of min and max makes gauge to refresh.

---

<div class="post-metadata">

**Author:** ![naikritesh123](https://avatars.discourse-cdn.com/v4/letter/n/4af34b/32.png) [@naikritesh123](https://discourse.nodered.org/u/naikritesh123)\
**Post date:** [14 November 2019 04:56 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/9 "2019-11-14T04:56:40Z")

</div>

Thank you sir,

I have imported your project.

I want both value to be change but without using 2 different functions.

e.g.

![eg](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/7/76d4e33a20130132b4cc1b0ac2708ffa97e21140.png)

but using only one function for both

---

<div class="post-metadata">

**Author:** ![hotNipi](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hotnipi/32/383_2.png) [@hotNipi](https://discourse.nodered.org/u/hotNipi)\
**Post date:** [14 November 2019 05:54 UTC](https://discourse.nodered.org/t/dynamic-min-max-limit-to-gauge/17894/10 "2019-11-14T05:54:51Z")

</div>

Create topics for outgoing messages in your function where you parse the data.  
And then use switch node where you send messages with different topics to different gauges.

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

_Maybe LP12 and LP14 and LP24 (the objcet keys) are best choice for your topic names._
