[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"application-guide-nav":3,"application-guide-flowfuse-worked-example":101},[4,11,15,21,24,30,35,41,46,52,57,63,68,74,79,85,91,97],{"guide":5,"slug":6,"title":7,"navOrder":8,"blurb":9,"path":10},"flowfuse","overview","Overview",1,"Turn an app idea into FlowFuse pieces you can name and say in one sentence.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":12,"slug":6,"title":7,"navOrder":8,"blurb":13,"path":14},"node-red","Turn an architecture sentence into a clean flow shape you can read at a glance.","\u002Fapplication-guide\u002Fnode-red\u002Foverview\u002F",{"guide":5,"slug":16,"title":17,"navOrder":18,"blurb":19,"path":20},"foundations","Foundations",2,"The foundation to build on: what FlowFuse is, its core pieces, and how code is shared across teams.","\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations\u002F",{"guide":12,"slug":16,"title":17,"navOrder":18,"blurb":22,"path":23},"The handful of concepts you need to build with Node-RED, and how they fit together.","\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F",{"guide":5,"slug":25,"title":26,"navOrder":27,"blurb":28,"path":29},"app-delivery-methods","App delivery methods",3,"Two different units of code, delivered two ways: ship the whole app, or publish one reusable piece.","\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F",{"guide":12,"slug":31,"title":32,"navOrder":27,"blurb":33,"path":34},"flow-shape","Flow shape","Turn an architecture sentence into a flow you can read at a glance.","\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F",{"guide":5,"slug":36,"title":37,"navOrder":38,"blurb":39,"path":40},"hardware-apps","Hardware apps",4,"The three shapes a FlowFuse app takes when it runs on a device.","\u002Fapplication-guide\u002Fflowfuse\u002Fhardware-apps\u002F",{"guide":12,"slug":42,"title":43,"navOrder":38,"blurb":44,"path":45},"design-patterns","Design patterns","The moves that turn a flow into something you can reuse, test and hand off.","\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F",{"guide":5,"slug":47,"title":48,"navOrder":49,"blurb":50,"path":51},"software-apps","Software apps",5,"The three shapes a FlowFuse app takes when it runs on the platform.","\u002Fapplication-guide\u002Fflowfuse\u002Fsoftware-apps\u002F",{"guide":12,"slug":53,"title":54,"navOrder":49,"blurb":55,"path":56},"handling-data","Handling data","Sort data by what it is for before you tune anything.","\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F",{"guide":5,"slug":58,"title":59,"navOrder":60,"blurb":61,"path":62},"data-plane","Data plane",6,"Before you pick where things run, decide how data is handled.","\u002Fapplication-guide\u002Fflowfuse\u002Fdata-plane\u002F",{"guide":12,"slug":64,"title":65,"navOrder":60,"blurb":66,"path":67},"operating-flows","Operating flows","Four operational habits that keep a flow running when the real world pushes back.","\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F",{"guide":5,"slug":69,"title":70,"navOrder":71,"blurb":72,"path":73},"architectures","Architectures",7,"The same building blocks, arranged for where they run.","\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":12,"slug":75,"title":76,"navOrder":71,"blurb":77,"path":78},"worked-example","Worked example","The shape rules and patterns applied end to end.","\u002Fapplication-guide\u002Fnode-red\u002Fworked-example\u002F",{"guide":5,"slug":80,"title":81,"navOrder":82,"blurb":83,"path":84},"it-architectures","IT architectures",8,"Hosting the platform and serving the wider organisation.","\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":5,"slug":86,"title":87,"navOrder":88,"blurb":89,"path":90},"ot-architectures","OT architectures",9,"How FlowFuse deploys in operational-technology environments, near the equipment.","\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":5,"slug":92,"title":93,"navOrder":94,"blurb":95,"path":96},"iiot-architectures","IIoT architectures",10,"Distributed edge nodes, each doing one small job, feeding one central system.","\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":5,"slug":75,"title":76,"navOrder":98,"blurb":99,"path":100},11,"OEE, end to end — two packages, two connections.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-example\u002F",{"id":102,"title":76,"blocks":103,"blurb":99,"extension":174,"guide":5,"meta":175,"navOrder":98,"slug":75,"stem":176,"__hash__":177},"applicationGuide\u002Fapplication-guide\u002Fflowfuse\u002F11-worked-example.yml",[104,108,152,155,170],{"type":105,"kicker":106,"body":107},"prose","Worked example — start here","OEE, end to end — how an Edge Building Block, the Team Broker, a Data-Driven App and an external time-series DB snap together into one architecture you can say in a sentence.",{"type":109,"lanes":110,"legend":143},"diagram",[111,122,124,130,132],{"label":112,"tone":113,"nodes":114},"Cloud · platform — the app + history","cloud",[115,118],{"title":116,"sub":117,"tone":113},"Hosted Instance","Data-Driven App · OEE",{"title":119,"sub":120,"tone":121},"Time-series DB","external · history","muted",{"link":123},"subscribe · writes history over the Postgres wire",{"label":125,"tone":126,"nodes":127},"Team Broker","broker",[128],{"title":125,"sub":129,"tone":126},"MQTT · UNS",{"link":131},"publish state",{"label":133,"tone":134,"nodes":135},"OT · edge — one Remote Instance per line, all the same Edge Block","ot",[136,139,141],{"title":137,"sub":138,"tone":134},"Remote Instance","Line A · Edge Block",{"title":137,"sub":140,"tone":134},"Line B · Edge Block",{"title":137,"sub":142,"tone":134},"Line C · Edge Block",[144,146,148,150],{"label":145,"tone":134},"OT edge",{"label":147,"tone":113},"Cloud",{"label":149,"tone":126},"MQTT \u002F UNS",{"label":151,"tone":121},"Postgres wire",{"type":105,"heading":153,"body":154},"Worked example - OEE, two packages, two connections","OEE (Overall Equipment Effectiveness) tells you how much good product a line makes versus its full potential — one live number per line, plus history for trends. Most real apps are more than one piece. OEE joins an Edge Building Block and a Data-Driven App through the Team Broker, with an external time-series DB added for history.",{"type":156,"columns":18,"items":157},"cards",[158,161,164,167],{"title":159,"body":160},"Remote Instance (Edge Block)","Reads the machine signals at the edge and publishes its state. Built once, rolled out to every device across the fleet.",{"title":162,"body":163},"Team Broker (MQTT)","Carries machine state from edge to cloud. The edge publishes to a topic; the cloud app subscribes. Neither references the other.",{"title":165,"body":166},"Hosted Instance (Data-Driven App)","Subscribes to the machine state, computes availability, performance and quality, and presents the OEE dashboard.",{"title":168,"body":169},"External time-series DB (Timescale \u002F QuestDB)","Each reading is written so trends can be charted over time. FlowFuse has no built-in time-series store, so history goes to an external Timescale\u002FQuestDB reached over the Postgres wire protocol (a second egress, because the data is a timestamped stream).",{"type":171,"heading":172,"body":173},"sentence","The architecture, in one sentence","OEE is a Hardware: Edge Building Block (on a Remote Instance) publishing machine state over the Team Broker to a Software: Data-Driven App (on a Hosted Instance), which computes and displays OEE and writes history to an external time-series DB (Timescale \u002F QuestDB).","yml",{},"application-guide\u002Fflowfuse\u002F11-worked-example","JdaFy-TFwd7rLNVKBSwMv1ekLZEGbpyaGSeYI3w14vA",1786132520467]