Amazon Dash Button Flow

This flow and the script included in this git repository supports capturing Amazon Dash button presses using the npm node-dash-button package.


This node.js script uses the node-dash-button module to monitor for Dash button presses. When a button is pressed, it sends an MQTT message that can be captured in NodeRed via the MQTT Node.

You'll need to make two changes to the dash.js script. Change the IP address for your MQTT server, the MQTT topic being sent and change the MAC address associated with your Dash button.


This is a NodeRed flow that captures the button press with an MQTT node and then runs a Function Node that toggles a global variable.

You'll want to modify the MQTT node topic to match the topic that you set in dash.js and you'll want to change the name of the variable set.

    "id": "7add9f95.36737",
    "type": "mqtt-broker",
    "z": "",
    "broker": "",
    "port": "1883",
    "clientid": "",
    "usetls": false,
    "verifyservercert": true,
    "compatmode": true,
    "keepalive": "60",
    "cleansession": true,
    "willTopic": "",
    "willQos": "0",
    "willRetain": null,
    "willPayload": "",
    "birthTopic": "",
    "birthQos": "0",
    "birthRetain": null,
    "birthPayload": ""
    "id": "d814ac59.51db5",
    "type": "debug",
    "z": "828b7952.cf43c8",
    "name": "",
    "active": true,
    "console": "false",
    "complete": "true",
    "x": 585,
    "y": 324,
    "wires": []
    "id": "31036645.e9fe8a",
    "type": "mqtt in",
    "z": "828b7952.cf43c8",
    "name": "Peets Button",
    "topic": "dashbutton/peets",
    "broker": "7add9f95.36737",
    "x": 124.5,
    "y": 325,
    "wires": [
    "id": "1a8e95fc.25de7a",
    "type": "function",
    "z": "828b7952.cf43c8",
    "name": "Set Peets Variable",
    "func": "node.warn('start');\nif (! {\n    node.warn(' is null');\n = { peets: false };\n    if ( === null) {\n        node.warn(' is null');\n = false;\n    }\n}\nif ( && {\n    node.warn('toggle state');\n = !;\n} else {\n    node.warn('setting state to true');\n = true;\n}\n node.warn('sending msg: ' +;\n return;",
    "outputs": 1,
    "noerr": 0,
    "x": 365.5,
    "y": 383,
    "wires": [

Flow Info

created 2 years, 1 month ago

Node Types

  • debug (x1)
  • function (x1)
  • mqtt in (x1)
  • mqtt-broker (x1)


  • amazon
  • dash
  • button
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option