# Parametric subflows? Or Dynamic serial port?

**URL:** <https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264>\
**Category:** General\
**Created:** [2 August 2023 19:18 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264 "2023-08-02T19:18:01Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [2 August 2023 19:18 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/1 "2023-08-02T19:18:01Z")

</div>

Just wondering if subflows can be made parametric in some way.  
I am developing a flow that can be saved as subflow to be used from other flows, but...  
Inside this subflow there is a serial port request node that should be pointed to a different serial port for each istance (maybe with the parent flow passing the serial port to use).  
Or seeing it from another point of view, is it possible to have a dynamically configured serial port node?  
Has anyone a clue or a suggestion, please?  
Advanced thanks

---

<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:** [2 August 2023 20:23 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/2 "2023-08-02T20:23:14Z")

</div>

Subflows can have env variables and most nodes can use env variables so the quick answer is probably. The longer answer depends on which properties you want to parameterise.

---

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [2 August 2023 20:24 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/3 "2023-08-02T20:24:10Z")

</div>

Just the serial port to which the serial port node is due to connect to

---

<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:** [2 August 2023 20:37 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/4 "2023-08-02T20:37:37Z")

</div>

See [Subflows : Node-RED](https://nodered.org/docs/user-guide/editor/workspace/subflows) for how to use subflow properties so each instance of the subflow could specify a different port.

---

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [2 August 2023 20:51 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/5 "2023-08-02T20:51:11Z")

</div>

Ok, if I understood correctly I can define the env variable in the subflow istance and use it into the nodes.  
It is then a static configuration that I need to make beforehand.  
It is not a variable that can be passed dynamically from the parent flow, right?

---

<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:** [2 August 2023 21:18 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/6 "2023-08-02T21:18:46Z")

</div>

> [@pacmanmt](#):
>
> It is not a variable that can be passed dynamically from the parent flow, right?

Correct.  
You could pass in dynamic data via message properties, but that cannot be used to specify the serial port, as the node does not allow dynamic assignment.

---

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [3 August 2023 05:50 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/7 "2023-08-03T05:50:44Z")

</div>

Thank you Steve-Mcl and Colin, I will give it a try and report here.  
Much appreciated 😃

---

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [3 August 2023 06:47 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/8 "2023-08-03T06:47:06Z")

</div>

I checked and Colin is right if I define an env variable

> serport = /dev/ttyUSB0

and use it into the serial node

> $env{serport}:115200-8N1

I receive the error

> "[serialconfig:33a190bb5f257765] serial port $env{serport} error: Error: Error: No such file or directory, cannot open $env{serport}"

it was worth a try 😢

---

<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:** [3 August 2023 06:56 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/9 "2023-08-03T06:56:49Z")

</div>

Show us exactly what you entered & where.

Also, check what you have done with the docs: [Using environment variables : Node-RED](https://nodered.org/docs/user-guide/environment-variables)

---

<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:** [3 August 2023 06:58 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/10 "2023-08-03T06:58:19Z")

</div>

Note. When Colin states

> [@Colin](#):
>
> the node does not allow dynamic assignment

That does not mean env vars cannot be used. He is referring to the fact you cannot use a message property to dynamically control the serial port.

---

<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:** [3 August 2023 07:52 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/11 "2023-08-03T07:52:08Z")

</div>

This is how to do it

```auto
[{"id":"2f2cbf69a09c4ac4","type":"subflow","name":"Serial port","info":"","category":"","in":[{"x":50,"y":30,"wires":[{"id":"690229bcf4c6ec3a"}]}],"out":[{"x":780,"y":140,"wires":[{"id":"690229bcf4c6ec3a","port":0}]}],"env":[{"name":"port","type":"str","value":""}],"meta":{},"color":"#DDAA99","status":{"x":840,"y":320,"wires":[{"id":"dca0b1adf50129c6","port":0}]}},{"id":"690229bcf4c6ec3a","type":"serial request","z":"2f2cbf69a09c4ac4","name":"","serial":"2d27b1670158b41d","x":430,"y":140,"wires":[[]]},{"id":"dca0b1adf50129c6","type":"status","z":"2f2cbf69a09c4ac4","name":"","scope":null,"x":460,"y":240,"wires":[[]]},{"id":"2d27b1670158b41d","type":"serial-port","z":"2f2cbf69a09c4ac4","serialport":"${port}","serialbaud":"57600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"},{"id":"18799fe40d048acf","type":"subflow:2f2cbf69a09c4ac4","z":"bdd7be38.d3b55","name":"Serial port subflow instance using /dev/ttyUSB0","env":[{"name":"port","value":"/dev/ttyUSB0","type":"str"}],"x":400,"y":2420,"wires":[[]]}]

```

---

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [3 August 2023 10:09 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/12 "2023-08-03T10:09:23Z")

</div>

I have read those documents and I think to have acted accordingly

---

<div class="post-metadata">

**Author:** ![pacmanmt](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@pacmanmt](https://discourse.nodered.org/u/pacmanmt)\
**Post date:** [3 August 2023 10:16 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/13 "2023-08-03T10:16:03Z")

</div>

Ok, now it works.  
I was mistakenly defining the env variable value inside the subflow

Thank you so much for your patience and help

---

<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 August 2023 10:16 UTC](https://discourse.nodered.org/t/parametric-subflows-or-dynamic-serial-port/80264/14 "2023-08-17T10:16:07Z")

</div>

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