[{"data":1,"prerenderedAt":275},["ShallowReactive",2],{"agmd-node-red-worked-examples":3,"application-guide-nav":175},{"id":4,"title":5,"blurb":6,"body":7,"description":165,"extension":166,"guide":167,"meta":168,"navOrder":160,"navTitle":5,"navigation":169,"parent":170,"path":171,"seo":172,"slug":13,"stem":173,"__hash__":174},"applicationGuideDoc\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples.md","Worked examples","Turn an app concept into a Node-RED flow — or a few — leaning on the design patterns and data handling. The method, then the OEE apps end to end.",{"type":8,"value":9,"toc":158},"minimark",[10,14,37,50,57,62,65,111,119,123,131,144,155],[11,12,5],"h1",{"id":13},"worked-examples",[15,16,17,18,22,23,28,29,32,33,36],"p",{},"An ",[19,20,21],"strong",{},"app"," is a job to do — with a delivery method and a pattern, decided in the ",[24,25,27],"a",{"href":26},"\u002Fapplication-guide\u002Fflowfuse\u002Fworked-examples\u002F","FlowFuse guide",". The ",[19,30,31],{},"solution"," is a Node-RED flow — and an app isn't always a single one. A bigger app is ",[19,34,35],{},"one or more flows working together",".",[15,38,39,40,44,45,49],{},"Each worked example takes a real app and turns it into a flow — showing the ",[24,41,43],{"href":42},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F","design pattern(s)"," and ",[24,46,48],{"href":47},"\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F","data-handling method(s)"," it selects, and why.",[15,51,52,53,56],{},"The app can be ",[19,54,55],{},"built entirely by FlowFuse, built together with your team, or built by you"," from these examples. The build is the same either way.",[58,59,61],"h2",{"id":60},"from-app-to-flow","From app to flow",[15,63,64],{},"Turn the app into a flow the same way each time — two selections, then keep to good form:",[66,67,68,79,85,96],"ol",{},[69,70,71,74,75,78],"li",{},[19,72,73],{},"Start from the app"," — its one job, and (from the ",[24,76,27],{"href":77},"\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F",") how it's delivered and what shape it takes.",[69,80,81,84],{},[19,82,83],{},"Break it into flows"," — most apps are a single flow; a bigger one is a few, each doing a clear part.",[69,86,87,92,93],{},[19,88,89,90],{},"Select the ",[24,91,43],{"href":42}," — find the seams, then pick a reuse level for each piece: link in\u002Fout, link call, subflow, or packaged node. A flow often uses more than one — ",[19,94,95],{},"or none: a simple, one-path flow may need no pattern at all, and that's fine.",[69,97,98,102,103,106,107,110],{},[19,99,89,100],{},[24,101,48],{"href":47}," — this part is never skippable. Even a simple flow with no pattern still has to ",[19,104,105],{},"classify"," what it's getting (event or stream?) and decide whether it needs ",[19,108,109],{},"batching \u002F rate-limit",", separate paths, context, or config.",[15,112,113,114,118],{},"Then keep it in ",[24,115,117],{"href":116},"\u002Fapplication-guide\u002Fnode-red\u002Fgood-form\u002F","good form"," — the general habits (call shared things, one path per beginning, a single sink, catch errors) that keep any flow readable.",[58,120,122],{"id":121},"the-examples","The examples",[15,124,125,126,130],{},"The FlowFuse ",[24,127,129],{"href":128},"\u002Fapplication-guide\u002Fflowfuse\u002Fworked-example\u002F","OEE worked example"," breaks that use case into two apps. Here's how each one looks as a Node-RED flow, shaped by the patterns it uses.",[132,133,135],"callout",{"icon":134},"i-lucide-arrow-right",[15,136,137,143],{},[19,138,139],{},[24,140,142],{"href":141},"\u002Fapplication-guide\u002Fnode-red\u002Foee-edge-aggregator\u002F","OEE - Edge Aggregator →"," — the edge piece, packaged as a reusable subflow: poll → read → compute → publish, one per line.",[132,145,146],{"icon":134},[15,147,148,154],{},[19,149,150],{},[24,151,153],{"href":152},"\u002Fapplication-guide\u002Fnode-red\u002Foee-central-dashboard\u002F","OEE - Central Dashboard →"," — the cloud app: subscribe → compute → link out, fanning to a link in for the dashboard and a second link in for batched history, with the UI decoupled from the logic.",[15,156,157],{},"More examples will land here — each one takes an app and turns it into a flow, move by move.",{"title":159,"searchDepth":160,"depth":160,"links":161},"",4,[162,164],{"id":60,"depth":163,"text":61},2,{"id":121,"depth":163,"text":122},"An app is a job to do — with a delivery method and a pattern, decided in the FlowFuse guide. The solution is a Node-RED flow — and an app isn't always a single one. A bigger app is one or more flows working together.","md","node-red",{},true,null,"\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples",{"title":5,"description":165},"application-guide\u002Fnode-red\u002Fworked-examples","7C2_fVqKKKQXnuOzsn8MAean3DHiXF4m3PbiG6XKI_I",[176,183,186,191,194,199,204,210,214,220,224,229,234,236,241,246,252,257,262,267,270],{"guide":177,"slug":178,"title":179,"navOrder":180,"parent":170,"blurb":181,"path":182},"flowfuse","overview","Overview",1,"The map of the FlowFuse guide — apps, architectures, and a worked example.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":167,"slug":178,"title":179,"navOrder":180,"parent":170,"blurb":184,"path":185},"The map of the Node-RED guide — the pattern families that turn an app into a clean flow.","\u002Fapplication-guide\u002Fnode-red\u002Foverview\u002F",{"guide":177,"slug":187,"title":188,"navOrder":163,"parent":170,"blurb":189,"path":190},"foundations","Foundations","The foundation to build on: what FlowFuse is, its core pieces, and how code is shared across teams.","\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations\u002F",{"guide":167,"slug":187,"title":188,"navOrder":163,"parent":170,"blurb":192,"path":193},"The handful of concepts you need to build with Node-RED, and how they fit together.","\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F",{"guide":177,"slug":195,"title":196,"navOrder":197,"parent":170,"blurb":198,"path":77},"app-delivery-methods","App delivery methods",3,"Two different units of code, delivered two ways. Ship the whole app — a complete, versioned project promoted through environments — or publish one reusable piece — a package the whole team installs and upgrades in one place. Pick by what you're shipping: the app, or a part of it.",{"guide":167,"slug":200,"title":201,"navOrder":197,"parent":170,"blurb":202,"path":203},"patterns","Patterns","The moves that turn an architecture into a clean, reusable flow — find the seams and reuse well, then handle data on the right paths.","\u002Fapplication-guide\u002Fnode-red\u002Fpatterns\u002F",{"guide":177,"slug":205,"title":206,"navOrder":207,"parent":195,"blurb":208,"path":209},"hardware-apps","Hardware apps",3.1,"The three shapes a FlowFuse app takes when it runs on a device. Pick by how much varies per site: nothing (Packaged App), a few settings (Configurable App), or you assemble it yourself (Edge Building Block).","\u002Fapplication-guide\u002Fflowfuse\u002Fhardware-apps\u002F",{"guide":167,"slug":211,"title":212,"navOrder":207,"parent":200,"blurb":213,"path":42},"design-patterns","Design patterns","The structural choices you select for a flow: find the seams it breaks into, then reuse each piece at the lightest level that solves it — link in\u002Fout, link call, subflow, or packaged node.",{"guide":177,"slug":215,"title":216,"navOrder":217,"parent":195,"blurb":218,"path":219},"software-apps","Software apps",3.2,"The three shapes a FlowFuse app takes when it runs on the platform. Pick by what it needs: a headless job (Packaged App), a user-facing app driven by data (Data-Driven App), or a reusable piece other apps embed (Shared Building Block).","\u002Fapplication-guide\u002Fflowfuse\u002Fsoftware-apps\u002F",{"guide":167,"slug":221,"title":222,"navOrder":217,"parent":200,"blurb":223,"path":47},"handling-data","Handling data","Classify each signal by shape, purpose and direction, then pick the methods it needs — separate the paths, pace the flow, hold state in context, and manage config. The methods you select to move a flow's data.",{"guide":167,"slug":225,"title":226,"navOrder":227,"parent":200,"blurb":228,"path":116},"good-form","Good form",3.3,"A clean flow isn't luck — it's a handful of habits. Wire for reading, lay it out on a grid, decouple UI from logic, catch errors where you can see them, and keep data on a stable contract. Follow these and a flow stays readable, reusable, and out of spaghetti.",{"guide":177,"slug":230,"title":231,"navOrder":160,"parent":170,"blurb":232,"path":233},"data-plane","Data plane","Before you pick where things run, decide how data is handled. Two stores come built into every FlowFuse server install — the Team Broker and relational Tables — exposed to every instance with nothing extra to stand up. Everything else you bring your own: run it (a time-series DB, an existing database, a model) and expose it to the fleet over Project Link, no inbound ports. This is the data plane the architectures on the next pages all sit on.","\u002Fapplication-guide\u002Fflowfuse\u002Fdata-plane\u002F",{"guide":167,"slug":13,"title":5,"navOrder":160,"parent":170,"blurb":6,"path":235},"\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples\u002F",{"guide":167,"slug":237,"title":238,"navOrder":239,"parent":13,"blurb":240,"path":141},"oee-edge-aggregator","OEE - Edge Aggregator",4.1,"The edge app from the OEE use case as a Node-RED flow — a straight-line flow packaged as a subflow and configured per line (its PLC tags, via a config UI and a get-config node), with the data treated as a stream and its counts held in context.",{"guide":167,"slug":242,"title":243,"navOrder":244,"parent":13,"blurb":245,"path":152},"oee-central-dashboard","OEE - Central Dashboard",4.2,"The cloud app from the OEE use case as a Node-RED flow — one link out fanning to two link ins on separate tabs (dashboard and batched history), so the live and history paths stay separate and easy to read.",{"guide":177,"slug":247,"title":248,"navOrder":249,"parent":170,"blurb":250,"path":251},"architectures","Architectures",5,"Every FlowFuse deployment is the same building blocks arranged for where it runs — pick the world you're designing for.","\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":177,"slug":253,"title":254,"navOrder":255,"parent":247,"blurb":170,"path":256},"it-architectures","IT architectures",5.1,"\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":177,"slug":258,"title":259,"navOrder":260,"parent":247,"blurb":170,"path":261},"ot-architectures","OT architectures",5.2,"\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":177,"slug":263,"title":264,"navOrder":265,"parent":247,"blurb":170,"path":266},"iiot-architectures","IIoT architectures",5.3,"\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":177,"slug":13,"title":5,"navOrder":268,"parent":170,"blurb":269,"path":26},6,"Start from a use case, break it into apps, and draw the architecture that ties them together — the same method a FlowFuse Proof of Value runs.",{"guide":177,"slug":271,"title":272,"navOrder":273,"parent":13,"blurb":274,"path":128},"worked-example","OEE, end to end",6.1,"One use case — OEE across three lines — broken into two apps and two shared services, then drawn out end to end.",1787843653261]