# Optimize my flow for reusing

**URL:** <https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642>\
**Category:** General\
**Created:** [27 December 2019 12:49 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642 "2019-12-27T12:49:13Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![pvanklink](https://avatars.discourse-cdn.com/v4/letter/p/bcef8e/32.png) [@pvanklink](https://discourse.nodered.org/u/pvanklink)\
**Post date:** [27 December 2019 12:49 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/1 "2019-12-27T12:49:13Z")

</div>

Hi i need some help for optimizing a working flow.

I made a flow that checks my domoticz service by checking responce from a zwave device  
when it responces its ok, if not, i send a pushover message and restart the service

I like to have one node with all my parameters for this flow with:

- ip-adress for the server to check (see post command)
- idx for device to check (see injector and post command)
- server desciption used in my functions

```auto
[{"id":"fb288bbc.6c7198","type":"tab","label":"servicecheck","disabled":false,"info":""},{"id":"20a68681.94848a","type":"inject","z":"fb288bbc.6c7198","name":"Check zwave device klink","topic":"1855","payload":"1855","payloadType":"str","repeat":"3600","crontab":"","once":false,"onceDelay":"","x":160,"y":180,"wires":[["fea7544a.53c218"]]},{"id":"fea7544a.53c218","type":"http request","z":"fb288bbc.6c7198","name":"post json naar dom","method":"POST","ret":"obj","paytoqs":false,"url":"http://192.168.20.35:82/json.htm?type=devices&rid={{payload}}","tls":"","persist":false,"proxy":"","authType":"","x":410,"y":180,"wires":[["622a11d0.2c49a"]]},{"id":"6f975bd7.345dc4","type":"debug","z":"fb288bbc.6c7198","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1290,"y":280,"wires":[]},{"id":"622a11d0.2c49a","type":"switch","z":"fb288bbc.6c7198","name":"check zwave","property":"payload.result[0].Status","propertyType":"msg","rules":[{"t":"eq","v":"On","vt":"str"},{"t":"eq","v":"Off","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":630,"y":180,"wires":[["3b3a3109.583eee"],["3b3a3109.583eee"],["3b3bfa6d.d23166","5644d612.e21c78"]]},{"id":"3b3bfa6d.d23166","type":"exec","z":"fb288bbc.6c7198","command":" sudo /home/pi/herstartdom.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"herstart domoticz en clean zwave cache","x":1160,"y":120,"wires":[["6f975bd7.345dc4"],["6f975bd7.345dc4"],["6f975bd7.345dc4"]]},{"id":"4f9f7e2d.cdd29","type":"pushover","z":"fb288bbc.6c7198","name":"Klink domoticz service herstart","device":"pvkmobiel","title":"Klink domoticz service herstart","priority":"2","sound":"","url":"","url_title":"","html":false,"x":1170,"y":340,"wires":[]},{"id":"7e669e16.05d98","type":"comment","z":"fb288bbc.6c7198","name":"adjust idx for device to check","info":"","x":140,"y":140,"wires":[]},{"id":"4c0f04fc.a1e93c","type":"comment","z":"fb288bbc.6c7198","name":"Adjust ip-adress","info":"","x":400,"y":140,"wires":[]},{"id":"b66fcd08.562db","type":"comment","z":"fb288bbc.6c7198","name":"pushover codes","info":"","x":1120,"y":380,"wires":[]},{"id":"e9370426.c62a88","type":"inject","z":"fb288bbc.6c7198","name":"herstart domoticz","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":640,"y":80,"wires":[["3b3bfa6d.d23166"]]},{"id":"5644d612.e21c78","type":"function","z":"fb288bbc.6c7198","name":"Server uit","func":"var payload = {\nidx: msg.topic,\ndomoticz: 'UIT',\nserver: \"Domoticz klink\"\n};\nmsg.payload = payload;\nreturn msg;","outputs":1,"noerr":0,"x":780,"y":340,"wires":[["6f975bd7.345dc4","4f9f7e2d.cdd29"]],"info":"if ( msg.payload === true )\n{waarde = \"On\"}\nelse \n{waarde = \"Off\"}\n\nvar uservar = '[{\"obj\": \"' + msg.topic + '\",\"act\":\"' + waarde + '\"}]';\n\nmsg.payload = {\"value\": uservar};\nmsg.payload.command = \"setuservariable\";\nmsg.payload.idx = 13;\n\nreturn msg\n\n\ndeze variant riep daarna ook json conversie aan"},{"id":"3b3a3109.583eee","type":"function","z":"fb288bbc.6c7198","name":"Server aan","func":"var payload = {\nidx: msg.topic,\ndomoticz: 'AAN',\nserver: \"Domoticz klink\"\n};\nmsg.payload = payload;\nreturn msg;","outputs":1,"noerr":0,"x":790,"y":280,"wires":[["6f975bd7.345dc4"]],"info":"if ( msg.payload === true )\n{waarde = \"On\"}\nelse \n{waarde = \"Off\"}\n\nvar uservar = '[{\"obj\": \"' + msg.topic + '\",\"act\":\"' + waarde + '\"}]';\n\nmsg.payload = {\"value\": uservar};\nmsg.payload.command = \"setuservariable\";\nmsg.payload.idx = 13;\n\nreturn msg\n\n\ndeze variant riep daarna ook json conversie aan"},{"id":"61f271a8.41f99","type":"comment","z":"fb288bbc.6c7198","name":"adjust server","info":"","x":810,"y":240,"wires":[]}]

```

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [27 December 2019 13:18 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/2 "2019-12-27T13:18:17Z")

</div>

Maybe look at creating a subflow to encapsulate this capability - you can set "environment" properties (just for the subflow) that can be used to set your parameters.

---

<div class="post-metadata">

**Author:** ![pvanklink](https://avatars.discourse-cdn.com/v4/letter/p/bcef8e/32.png) [@pvanklink](https://discourse.nodered.org/u/pvanklink)\
**Post date:** [27 December 2019 14:00 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/3 "2019-12-27T14:00:37Z")

</div>

thanks!  
I know how to make a subflow. So environment vars much do the trick..  
I hope i can use them in the post url commandline

---

<div class="post-metadata">

**Author:** ![pvanklink](https://avatars.discourse-cdn.com/v4/letter/p/bcef8e/32.png) [@pvanklink](https://discourse.nodered.org/u/pvanklink)\
**Post date:** [27 December 2019 14:07 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/4 "2019-12-27T14:07:51Z")

</div>

@dceejay  
Is it possible to set a var like msg.ipadress = '192.168.20.1'  
pass this to the subflow and to use this in the url part of a http request node ?  
How do i refer to this var in the url?  
I know i can use {{payload}} in the url

---

<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:** [27 December 2019 14:29 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/5 "2019-12-27T14:29:29Z")

</div>

> [@pvanklink](#):
>
> I know i can use {{payload}} in the url

Have you tried `{{ipadress}}`?

Note this is a particular feature of the HTTP Request node's URL field. It isn't something you can do generally.

---

<div class="post-metadata">

**Author:** ![pvanklink](https://avatars.discourse-cdn.com/v4/letter/p/bcef8e/32.png) [@pvanklink](https://discourse.nodered.org/u/pvanklink)\
**Post date:** [27 December 2019 14:46 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/6 "2019-12-27T14:46:06Z")

</div>

i have a function with  
msg.ipadress = '192.168.20.1',  
msg.devid = 1002  
return msg;

and a http request node with url  
http://{{ipadress}}/json.htm?type=devices&rid={{devid}}

the devid part works, but the ipadress part not

---

<div class="post-metadata">

**Author:** ![pvanklink](https://avatars.discourse-cdn.com/v4/letter/p/bcef8e/32.png) [@pvanklink](https://discourse.nodered.org/u/pvanklink)\
**Post date:** [27 December 2019 15:02 UTC](https://discourse.nodered.org/t/optimize-my-flow-for-reusing/19642/7 "2019-12-27T15:02:37Z")

</div>

think i got it...

http://{{{ipadress}}}/json.htm?type=devices&rid={{devid}}

extra brackets
