pumpingStation - Example Flows
Node-RED flows demonstrating the Phase-2 pumpingStation node on the
canonical topic API (set.mode, set.inflow, set.outflow, set.demand,
cmd.calibrate.volume, cmd.calibrate.level). Legacy aliases
(changemode, q_in, q_out, 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-Dashboard.json |
2 | Process Plant + Dashboard UI | Same command surface as Basic, but driven by FlowFuse Dashboard 2.0 widgets — ui-button controls + ui-text live status panel. |
Prerequisites
- Node-RED with the EVOLV package installed (so the
pumpingStation,measurement,machineGroupControl, androtatingMachinenode types are registered). - For
02-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
- Deploy.
- Inject
set.mode = manual. - Inject
set.inflow = 60 m3/h- the basin starts filling. Watch the formatted Port 0 payload in the debug sidebar. - 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. - Inject
cmd.calibrate.volume = 25 m3to jump the predicted-volume integrator to half-full.
02-Dashboard - what to try
- Deploy.
- Open the dashboard at
http://localhost:1880/dashboard/pumpingstation-basic. - Click Mode: Manual or Mode: Levelbased in the Controls panel.
- Click Inflow 60 m³/h to push wastewater into the basin — the Status panel on the right shows level / volume / volume % rising.
- In manual mode, click Demand 40 m³/h — the value surfaces as
Manual demandin the Status panel and in the node's status badge. - Use Calibrate V = 25 m³ or Calibrate L = 1.5 m to snap the predicted-volume integrator.
All buttons fire the same canonical msg.topic as the Basic flow's inject
nodes; the only difference is the trigger. The Live status panel is fed by
Port 0 via a small fan-out function that caches last-known values so
delta-only updates never blank a row.
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
The current example JSON files are hand-maintained. If you re-introduce a
generator, regenerate 01-Basic.json and 02-Dashboard.json from it
rather than editing the JSON directly.