SUB FLOWS - something is going on

#1

Hi again folks.

Yet another problem has me stumped.

I had/have messy flows for things and monitoring my network.

One of the flows had a lot of nodes and a lot of repitative stuff.
I got into the subflow mode and replaced a lot of stuff with the subflow stuff.

Strangely it reduced the processor load as I was going through replacing the "groups of nodes" with the one "subflow". (Beats me)

Anyway, it is working. As machines come up the flow is doing the right thing and I am getting the right signals coming out and "all is nice".
Alas there is a but in this.

I had done maybe all but one RPI. Probably because I am not needing it to be online just now and it is a RPIZ(w).

Anyway, today I powered it up and it connected. Then the problem started.
(See attached)

The yellow machine is that RPI.

I've just found something which could be a problem so I shall chase it now before continuing with this, other than:

I thought I read that in the newer NR version/s the sub-flow allowed node-status to work?

I have NR 0.20.3

#2

I hope you haven't started reading this.

Ok, back to the original "problem":

How can I get the subflow to show node-status and how do I go into it to look at the inner workings?

#3

I don't know how to do node status for a subflow but...

for troubleshooting subflows I always end up:

  1. double clicking on the subflow in the palette sidebar to "open" the subflow
  2. copy the subflow to a regular flow (perhaps temporary flow)
  3. troubleshoot it in this regular flow
  4. copy and paste the working content back to the subflow
#4

Does this help? https://nodered.org/blog/2019/03/12/version-0-20-released#subflow-status

1 Like
#5

Thanks Nick.

I knew I saw it somewhere.

How do I connect the status output to the node?

I get that my node is ....... complicated. That's my problem.

But looking at the instructions, they don't explain how to set up the (I'm taking it as a) function node output?

Yes it is possibly obvious, but I want to check. I have this habit of running down rabbit holes and getting the wrong idea/s.

#6

You click the 'status node' button and the status node appears. You can then treat that as any other node - you wire it into your flow and pass it messages.

Passing it any of the following messages will emit the status "hi":

{
   payload: "hi"
}
{
   payload: {fill:"green",shape:"dot",text:"hi"}
}
{
   status: {fill:"green",shape:"dot",text:"hi"}
}

The format of the status property is described here: https://nodered.org/docs/creating-nodes/status

#7

Thanks the link was good.

Just to mention:
Ok, to get it all working with the node-status, you tick the box in the sub-flow window.
That gives you a status output node.

The example shown depicts connection to a function node with a specific output for node-status, which is not exactly standard.

To capture the entire sub_flow's status-s you put a catch-all node and connect its output to the status node.

That is shown, but the explination:

Redirecting status events from inside a subflow

Is slightly misleading.

Maybe: Redirecting status events from all nodes inside the subflow would be better.

(space for separation)

This whole first part:

Subflow Status

There is a new option to add a ‘status’ output to a subflow. This can be used to update the >Status of subflow instance nodes. With subflows currently, if any node inside the subflow emits >a status event, it would pass up to the flow containing the subflow instance - but it wouldn’t >appear to have come from the subflow instance. Now, if this new status output is used, only >messages passed to it will get passed to the parent flow and they will be properly identified >as having come from the subflow. This gives a lot more control and flexibility of working with >status events and subflows.

Adding a status output:

Status appears against the subflow instance node just like any other node with status

Is misleading and not really explained correctly - to me because rather than catching the node-status message, you have to re-write the code in said node and send it to the status node.

Anyway, I think I have it working now.