[
  {
    "id": "8a60e8aab8c26a6d",
    "type": "group",
    "style": {
      "stroke": "#999999",
      "stroke-opacity": "1",
      "fill": "none",
      "fill-opacity": "1",
      "label": true,
      "label-position": "nw",
      "color": "#a4a4a4"
    },
    "nodes": [
      "inject_push_any",
      "function_multi_trigger",
      "inject_multi_trigger",
      "debug_pushbutton_output",
      "comment_pushbutton_logic",
      "8268d14558225e09"
    ],
    "x": 54,
    "y": 59,
    "w": 912,
    "h": 242
  },
  {
    "id": "inject_push_any",
    "type": "inject",
    "g": "8a60e8aab8c26a6d",
    "name": "Push (Any Input)",
    "props": [
      {
        "p": "payload"
      }
    ],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": "0",
    "topic": "",
    "payload": "true",
    "payloadType": "bool",
    "x": 180,
    "y": 160,
    "wires": [
      [
        "8268d14558225e09"
      ]
    ]
  },
  {
    "id": "function_multi_trigger",
    "type": "function",
    "g": "8a60e8aab8c26a6d",
    "name": "Multi Trigger",
    "func": "// Simulate multiple rapid pushes\nfor (let i = 0; i < 3; i++) {\n    setTimeout(() => {\n        node.send({payload: \"trigger\"});\n    }, i * 500);\n}\n\nnode.status({\n    fill: \"green\",\n    shape: \"dot\",\n    text: \"Sending 3 triggers\"\n});\n\nreturn null;",
    "outputs": 1,
    "timeout": 0,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 440,
    "y": 260,
    "wires": [
      [
        "8268d14558225e09"
      ]
    ]
  },
  {
    "id": "inject_multi_trigger",
    "type": "inject",
    "g": "8a60e8aab8c26a6d",
    "name": "Multi Trigger Test",
    "props": [],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": "0",
    "topic": "",
    "x": 250,
    "y": 260,
    "wires": [
      [
        "function_multi_trigger"
      ]
    ]
  },
  {
    "id": "debug_pushbutton_output",
    "type": "debug",
    "g": "8a60e8aab8c26a6d",
    "name": "1 · Output (bool/int/float)",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "targetType": "msg",
    "statusVal": "",
    "statusType": "auto",
    "x": 810,
    "y": 160,
    "wires": []
  },
  {
    "id": "comment_pushbutton_logic",
    "type": "comment",
    "g": "8a60e8aab8c26a6d",
    "name": "Communication PushButton",
    "info": "## Pushbutton node\nDevice: double-click the device node and choose the device of your installation, then Deploy.\n\n### Input\nAny message presses the button; `msg.inputTarget` and `msg.payload` are not needed. The device sub-type decides the value sent: **ON** sends true, **OFF** sends false, **Toggle** inverts the last value, **Send value** sends the stored value.\n\n### Output\n1. Output (bool/int/float) — the value sent, each time the button is used from the app, a scenario or a flow (after the server confirms it).",
    "x": 350,
    "y": 100,
    "wires": []
  },
  {
    "id": "8268d14558225e09",
    "type": "widget-PushButton",
    "g": "8a60e8aab8c26a6d",
    "dropdownRoom": "",
    "dropdownCategory": "",
    "dropdownWidget": "",
    "displayName": "Pushbutton (set device)",
    "x": 500,
    "y": 160,
    "wires": [
      [
        "debug_pushbutton_output"
      ]
    ]
  }
]