Files
pumpingStation/examples
znetsixe ed22f01932 P9.3 + examples: fresh 3-tier flows + pilot wiki Home.md
examples/ (new — was empty except standalone-demo.js):
  01-Basic.json         14 nodes, inject + dashboard, no parent
  02-Integration.json   32 nodes, 2 tabs, measurement + MGC + 2 pumps,
                        link-out/link-in channels per node-red-flow-layout.md
  03-Dashboard.json     63 nodes, 3 tabs (process + UI + setup),
                        FlowFuse charts + sliders, trend-split pattern
  README.md             load instructions
  tools/build-examples.js  regenerator

All canonical topic names only (set.*, cmd.*, data.*, child.*). No
legacy aliases. Every ui-* widget has x/y. Every chart has the full
mandatory key set from node-red-flow-layout.md §4.

wiki/Home.md (new) — pilot page for the 14-section visual-first template.
Sections 5 (topic-contract) + 9 (data-model) are auto-generated via the
new npm run wiki:* scripts; everything else hand-written following
.claude/refactor/WIKI_TEMPLATE.md.

package.json — added wiki:contract / wiki:datamodel / wiki:all scripts
wired to ../generalFunctions/scripts/wikiGen.js.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:50:45 +02:00
..

pumpingStation - Example Flows

Three Node-RED flows demonstrating the Phase-2 pumpingStation node on the canonical topic API (set.mode, set.inflow, set.demand, cmd.calibrate.volume, cmd.calibrate.level). Legacy aliases (changemode, q_in, Qd, calibratePredictedVolume, calibratePredictedLevel, registerChild) still work but log a one-time deprecation warning; these fresh flows use the canonical names only.

Files

File Tier Tabs Purpose
01-Basic.json 1 Process Plant Single pumpingStation driven by inject nodes - no parent, no dashboard.
02-Integration.json 2 Process Plant + Setup Adds a measurement level child and a machineGroupControl parent with two rotatingMachine pumps. Demonstrates the Phase-2 parent/child handshake.
03-Dashboard.json 3 Process Plant + Dashboard UI + Setup Tier 2 plumbing plus a FlowFuse Dashboard 2.0 page with 3 charts (flow / level / volume %), text widgets, and 2 controls (mode dropdown + demand slider).

Prerequisites

  • Node-RED with the EVOLV package installed (so the pumpingStation, measurement, machineGroupControl, and rotatingMachine node types are registered).
  • For 03-Dashboard.json: @flowfuse/node-red-dashboard (Dashboard 2.0).

How to load

# Drop a file into a running Node-RED instance using its Admin API.
curl -X POST -H 'Content-Type: application/json' \
  --data @nodes/pumpingStation/examples/01-Basic.json \
  http://localhost:1880/flows

Or in the editor: Menu -> Import -> select file -> Import. The flows import into their own tabs and can be deployed immediately.

01-Basic - what to try

  1. Deploy.
  2. Inject set.mode = manual.
  3. Inject set.inflow = 60 m3/h - the basin starts filling. Watch the formatted Port 0 payload in the debug sidebar.
  4. Inject set.demand = 40 % - in manual mode this would feed any registered children; here there are no pump children so it is logged and shown on Port 0.
  5. Inject cmd.calibrate.volume = 25 m3 to jump the predicted-volume integrator to half-full.

02-Integration - what to try

  1. Deploy. The Setup tab fires set.mode = levelbased to the station and set.mode = auto to the MGC.
  2. The two pumps register with the MGC via Port 2; the MGC and the level sensor register with the station via Port 2. Watch the registration debug taps to confirm.
  3. The level inject pushes a 1.6 m measurement so the station sees a non-zero starting level. Setup also seeds set.inflow = 60 m3/h.
  4. The station's controlMode = levelbased then drives the MGC, which dispatches to Pump A / Pump B.

03-Dashboard - what to try

  1. Deploy.
  2. Open the dashboard at http://localhost:1880/dashboard/page/pumping-station.
  3. Use the Control mode dropdown to switch between manual, levelbased, flowbased, none.
  4. In manual mode, drag the Manual demand slider - the demand cascades to the MGC and on to the pumps.
  5. The three charts (flow, level, volume %) plot live data; the four text widgets show state, percControl, direction, and time-to-empty.

Layout conventions

These flows follow the EVOLV layout rule set in .claude/rules/node-red-flow-layout.md:

  • Tabs split by concern: Process Plant (EVOLV nodes) / Dashboard UI (ui-* widgets) / Setup (once-true injects).
  • Cross-tab wiring via named link out / link in channels: setup:to-ps-mode, setup:to-ps-inflow, setup:to-mgc-mode, cmd:ps-mode, cmd:ps-demand, evt:flow, evt:level, evt:volpct, evt:state, evt:perc, evt:dir, evt:tempty.
  • Lane positions L0-L7 = [120, 360, 600, 840, 1080, 1320, 1560, 1800], driven by each node's S88 level (Process Cell on L5, Unit on L4, Equipment on L3, Control Module on L2).
  • Group boxes wrap each parent + its direct children, coloured by the parent's S88 level.

Regenerating

These flows are generated from tools/build-examples.js. Edit the generator, never the JSON, then:

node nodes/pumpingStation/tools/build-examples.js

The script writes 01-Basic.json, 02-Integration.json, and 03-Dashboard.json into this directory.