General dynamic scheduler for Node Red?

Hi all

newbie here (but learning a lot thanks to this forum and excellent docs!). I'm in need of implementing a scheduler for all flows. I've seen some excellent scheduler modules, but I'm trying to understand more how to do something else, I think.

I'm lookig to have a way to have a 'general scheduler', one that can be programmatically changed (adding or deleting or changing schedules) by other flows, and that can manage all existing flows and trigger them according to the schedule.

Is there (or is even possible) to have such architecture? Sorry if a bit generic as a request, if I'm not clear I'll try explaining better...and even more sorry if it's already there and I missed it!

Hi @trialerra

You haven't mentioned what you have already looked at...
But the one that instantly comes to mind is.

it can create schedules dynamically via an input message.
its developed by our very own @Steve-Mcl

And should be able to do everything you want, just make use of topics, to direct the output to different flows via Link & switch Nodes

1 Like

I've seen that one and a few others, what I was missing was understanding how to communicate via different flows. I suppose I should use maybe some storage, but I'll explore that more and will follow up on it.

Link Nodes.

Link Nodes creates invisible wires - with the benefit of them being able to communicate with other links cross-flow.

  1. Create a schedule(s), with a topic for each
  2. Use a switch Node to direct the output based on that topic
  3. Connect the outputs of the switch node to a Link node(s)
  4. Connect the other end(s) of the link(s) to another link on a different flow.

see this demo, for link nodes

[{"id":"1a5a254c6bcffc86","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"391dafe210bcd564","type":"inject","z":"1a5a254c6bcffc86","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":120,"wires":[["d6830f4552264831"]]},{"id":"d6830f4552264831","type":"link out","z":"1a5a254c6bcffc86","name":"link out 19","mode":"link","links":["29768a766ea5543b"],"x":305,"y":120,"wires":[]},{"id":"7558c94066d8a614","type":"tab","label":"Flow 2","disabled":false,"info":"","env":[]},{"id":"29768a766ea5543b","type":"link in","z":"7558c94066d8a614","name":"link in 11","links":["d6830f4552264831"],"x":185,"y":120,"wires":[["2e94b89eaf617173"]]},{"id":"2e94b89eaf617173","type":"debug","z":"7558c94066d8a614","name":"debug 388","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":120,"wires":[]}]