[
    {
        "id": "77f00aef1c966167",
        "type": "tab",
        "label": "PumpingStation - Basic",
        "disabled": false,
        "info": "Tier 1: single pumpingStation node driven by inject nodes only. Demonstrates the canonical Phase-2 topic API: set.mode, set.inflow, set.demand."
    },
    {
        "id": "aa3381b896eb2cfb",
        "type": "group",
        "z": "77f00aef1c966167",
        "name": "Pumping Station (Process Cell)",
        "style": {
            "label": true,
            "stroke": "#000000",
            "fill": "#0c99d9",
            "fill-opacity": "0.10"
        },
        "nodes": [
            "8e78b6607deb33a7"
        ],
        "x": 534,
        "y": 351.5,
        "w": 232,
        "h": 97
    },
    {
        "id": "4996420d47442fad",
        "type": "group",
        "z": "77f00aef1c966167",
        "name": "1. Control mode",
        "style": {
            "stroke": "#666666",
            "fill": "#ffdf7f",
            "fill-opacity": "0.15",
            "label": true,
            "color": "#333333"
        },
        "nodes": [
            "1155bbbde7c65363",
            "e9bea0f95b557f5d"
        ],
        "x": 94,
        "y": 119,
        "w": 272,
        "h": 122
    },
    {
        "id": "a9f9b38b0e00c1d7",
        "type": "group",
        "z": "77f00aef1c966167",
        "name": "2. Flow signals (inflow / outflow)",
        "style": {
            "stroke": "#666666",
            "fill": "#ffdf7f",
            "fill-opacity": "0.15",
            "label": true,
            "color": "#333333"
        },
        "nodes": [
            "7b2b5eb919b1ab15",
            "3350187815774b95"
        ],
        "x": 94,
        "y": 279,
        "w": 262,
        "h": 122
    },
    {
        "id": "42bf82c87d05f498",
        "type": "group",
        "z": "77f00aef1c966167",
        "name": "3. Operator demand (manual mode only)",
        "style": {
            "stroke": "#666666",
            "fill": "#ffdf7f",
            "fill-opacity": "0.15",
            "label": true,
            "color": "#333333"
        },
        "nodes": [
            "48c2262c345c46b9"
        ],
        "x": 94,
        "y": 479,
        "w": 261,
        "h": 82
    },
    {
        "id": "234bdce20170061a",
        "type": "group",
        "z": "77f00aef1c966167",
        "name": "4. Calibration",
        "style": {
            "stroke": "#666666",
            "fill": "#ffdf7f",
            "fill-opacity": "0.15",
            "label": true,
            "color": "#333333"
        },
        "nodes": [
            "463eefdd54df89a5",
            "2e0642275899fc79"
        ],
        "x": 94,
        "y": 599,
        "w": 272,
        "h": 122
    },
    {
        "id": "f4ba4542514ed853",
        "type": "group",
        "z": "77f00aef1c966167",
        "name": "Expected outputs",
        "style": {
            "stroke": "#666666",
            "fill": "#d1d1d1",
            "fill-opacity": "0.2",
            "label": true,
            "color": "#333333"
        },
        "nodes": [
            "b2450e5ee2eebfaa",
            "386af1ad8aa8ed12",
            "c27c2655f199b530"
        ],
        "x": 874,
        "y": 299,
        "w": 252,
        "h": 202
    },
    {
        "id": "b30af582f935bcb7",
        "type": "comment",
        "z": "77f00aef1c966167",
        "name": "PumpingStation — Basic (Tier 1)",
        "info": "Single pumpingStation node driven by inject buttons. Shows the canonical msg.topic command surface.\n\nDefault controlMode = levelbased. Switch to manual to honour set.demand.\n\nHOW TO USE\n1. Deploy the flow.\n2. (optional) Click \"set.mode = manual\" if you want set.demand to forward; otherwise leave it on levelbased and the ramp drives demand from level.\n3. Click \"set.inflow = 60 m³/h\" to push wastewater into the basin.\n4. Watch the basin fill on Port 0 (level, volume rise) and Port 1 (InfluxDB-shaped payload).\n5. In manual mode: click \"set.demand = 40\" — the value surfaces as `manualDemand` on Port 0/1 and in the node status badge.\n6. Click \"calibrate volume 25 m³\" or \"calibrate level 1.5 m\" to snap the predicted-volume integrator.\n\nPORTS\n- Port 0: process output (changed fields only)\n- Port 1: InfluxDB-shaped {measurement, fields, tags, timestamp}\n- Port 2: parent registration (child handshake)",
        "x": 650,
        "y": 300,
        "wires": []
    },
    {
        "id": "1155bbbde7c65363",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "4996420d47442fad",
        "name": "set.mode = manual",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload",
                "v": "manual",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "set.mode",
        "x": 230,
        "y": 160,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "e9bea0f95b557f5d",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "4996420d47442fad",
        "name": "set.mode = levelbased",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload",
                "v": "levelbased",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "set.mode",
        "x": 240,
        "y": 200,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "7b2b5eb919b1ab15",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "a9f9b38b0e00c1d7",
        "name": "set.inflow = 60 m3/h",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload",
                "v": "60",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "set.inflow",
        "x": 240,
        "y": 360,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "48c2262c345c46b9",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "42bf82c87d05f498",
        "name": "set.demand = 40 %",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload",
                "v": "40",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "set.demand",
        "x": 230,
        "y": 520,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "463eefdd54df89a5",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "234bdce20170061a",
        "name": "calibrate volume 25 m3",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload",
                "v": "25",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "cmd.calibrate.volume",
        "x": 240,
        "y": 640,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "2e0642275899fc79",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "234bdce20170061a",
        "name": "calibrate level 1.5 m",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload",
                "v": "1.5",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "cmd.calibrate.level",
        "x": 240,
        "y": 680,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "b2450e5ee2eebfaa",
        "type": "debug",
        "z": "77f00aef1c966167",
        "g": "f4ba4542514ed853",
        "name": "Port 0: Process",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "x": 980,
        "y": 340,
        "wires": []
    },
    {
        "id": "386af1ad8aa8ed12",
        "type": "debug",
        "z": "77f00aef1c966167",
        "g": "f4ba4542514ed853",
        "name": "Port 1: InfluxDB",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 980,
        "y": 400,
        "wires": []
    },
    {
        "id": "c27c2655f199b530",
        "type": "debug",
        "z": "77f00aef1c966167",
        "g": "f4ba4542514ed853",
        "name": "Port 2: Parent reg",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 990,
        "y": 460,
        "wires": []
    },
    {
        "id": "8e78b6607deb33a7",
        "type": "pumpingStation",
        "z": "77f00aef1c966167",
        "g": "aa3381b896eb2cfb",
        "name": "",
        "simulator": false,
        "basinVolume": 50,
        "basinHeight": 4,
        "inflowLevel": 1.5,
        "outflowLevel": 0.2,
        "overflowLevel": 3.8,
        "defaultFluid": "wastewater",
        "inletPipeDiameter": 0.3,
        "outletPipeDiameter": 0.3,
        "pipelineLength": 80,
        "maxDischargeHead": 24,
        "staticHead": 12,
        "maxInflowRate": 200,
        "temperatureReferenceDegC": 15,
        "timeleftToFullOrEmptyThresholdSeconds": 0,
        "enableDryRunProtection": true,
        "enableHighVolumeSafety": true,
        "enableOverfillProtection": true,
        "dryRunThresholdPercent": 2,
        "highVolumeSafetyThresholdPercent": 98,
        "overfillThresholdPercent": 98,
        "minHeightBasedOn": "outlet",
        "processOutputFormat": "process",
        "dbaseOutputFormat": "influxdb",
        "refHeight": "NAP",
        "basinBottomRef": 1,
        "uuid": "",
        "supplier": "",
        "category": "",
        "assetType": "",
        "model": "",
        "unit": "",
        "enableLog": false,
        "logLevel": "error",
        "positionVsParent": "atEquipment",
        "positionIcon": "⊥",
        "hasDistance": false,
        "distance": "",
        "controlMode": "levelbased",
        "levelCurveType": "linear",
        "logCurveFactor": 9,
        "enableShiftedRamp": false,
        "shiftLevel": 0,
        "shiftArmPercent": 95,
        "startLevel": 1,
        "stopLevel": 0.5,
        "minLevel": 0.20400000000000001,
        "maxLevel": 3.8,
        "flowSetpoint": null,
        "flowDeadband": null,
        "x": 650,
        "y": 400,
        "wires": [
            [
                "b2450e5ee2eebfaa"
            ],
            [
                "386af1ad8aa8ed12"
            ],
            [
                "c27c2655f199b530"
            ]
        ]
    },
    {
        "id": "3350187815774b95",
        "type": "inject",
        "z": "77f00aef1c966167",
        "g": "a9f9b38b0e00c1d7",
        "name": "set.outflow= 80 m3/h",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "set.outflow",
        "payload": "80",
        "payloadType": "num",
        "x": 230,
        "y": 320,
        "wires": [
            [
                "8e78b6607deb33a7"
            ]
        ]
    },
    {
        "id": "ef77c1819422a098",
        "type": "global-config",
        "env": [],
        "modules": {
            "EVOLV": "1.0.29"
        }
    }
]