Skip to main content

Radio Push Button

This guide walks you through the Radio Push Button project. You'll work with the push button in Node-RED, and when you press it, the IFTTT service sends a push notification to your smartphone.

Block Diagram​

Block diagram: push button kit linked over sub-GHz radio and Radio Dongle to Node-RED, which calls an IFTTT webhook

Requirements​

Firmware Upload​

You'll upload the firmware to the Core Module with HARDWARIO Playground.

Step 1: Connect the Core Module to your computer with a Micro USB cable​

Step 2: Flash the firmware​

Start HARDWARIO Playground, select the hardwario/twr-radio-push-button firmware on the Firmware tab and upload it to the Core Module.

warning

Flashing Core Module R1 and R2 The older Core Module 1 and the newer Core Module 2 are flashed differently; see Core Module R1 and R2 comparison in the Hardware section.

Step 3: Disconnect the Micro USB cable from the Core Module and the computer​

success

Your firmware is now uploaded.

Hardware Assembly​

Watch this short video for a simple step-by-step demonstration:

Playing the video loads it from YouTube (Google).

Step 1: Start with the Mini Battery Module​

Step 2: Plug the Core Module onto the Mini Battery Module​

Step 3: Plug the Button Module onto the Core Module​

Playground Setup​

danger

If you use the new HARDWARIO Playground, open the Functions tab instead of http://localhost:1880/. Pairing now happens on the Devices tab, and you test communication on the Messages tab.

Step 1: Open Node-RED in your web browser​

http://localhost:1880/

Step 2: You should see an empty workspace with Flow 1​

Step 3: Import the following snippet into the flow (Menu >> Import) and click the Flow 1 tab​

[{"id":"2fc604fc.3b6abc","type":"inject","z":"dfc861b.b2a02a","name":"List all gateways","topic":"gateway/all/info/get","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":460,"wires":[["a2c10833.24d5d8"]]},{"id":"1e4502b8.2f63fd","type":"inject","z":"dfc861b.b2a02a","name":"Start node pairing","topic":"gateway/usb-dongle/pairing-mode/start","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":570,"y":580,"wires":[["795ff5a7.8e266c"]]},{"id":"3d844ce2.932864","type":"inject","z":"dfc861b.b2a02a","name":"Stop node pairing","topic":"gateway/usb-dongle/pairing-mode/stop","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":640,"wires":[["5967c452.c838bc"]]},{"id":"f202b253.2705b","type":"inject","z":"dfc861b.b2a02a","name":"List paired nodes","topic":"gateway/usb-dongle/nodes/get","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":520,"wires":[["f0aca138.0b2c3"]]},{"id":"349f02fd.890f6e","type":"inject","z":"dfc861b.b2a02a","name":"Unpair all nodes","topic":"gateway/usb-dongle/nodes/purge","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":700,"wires":[["2f1c5bb6.53d6f4"]]},{"id":"cf61d75d.4ad8f8","type":"mqtt in","z":"dfc861b.b2a02a","name":"","topic":"#","qos":"2","broker":"67b8de4a.029d3","x":530,"y":400,"wires":[["a5cb0658.f5d658"]]},{"id":"a5cb0658.f5d658","type":"debug","z":"dfc861b.b2a02a","name":"","active":true,"console":"false","complete":"false","x":790,"y":400,"wires":[]},{"id":"a2c10833.24d5d8","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":460,"wires":[]},{"id":"f0aca138.0b2c3","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":520,"wires":[]},{"id":"795ff5a7.8e266c","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":580,"wires":[]},{"id":"5967c452.c838bc","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":640,"wires":[]},{"id":"2f1c5bb6.53d6f4","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":700,"wires":[]},{"id":"67b8de4a.029d3","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"717f7c18.ba0a24","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

It looks like this:

Node-RED flow with inject buttons for gateway commands: list gateways, pair and unpair nodes

info

The snippet adds buttons for the gateway and radio commands, which are sent over MQTT.

Step 4: Deploy the flow with the Deploy button in the top-right corner​

Step 5: Open the debug tab​

Node-RED editor with the debug tab highlighted in the right sidebar

info

The debug tab shows all MQTT messages.

Step 6: Click the List all gateways button. The debug tab should show a response like this​

Debug tab showing the gateway response with firmware name and ID after clicking List all gateways

success

You now have working Node-RED, MQTT, HARDWARIO Radio Dongle and HARDWARIO Gateway.

Radio Pairing​

In this section, we'll establish a radio link between the Radio Dongle and the Radio Push Button.

In Node-RED, follow these steps:

Step 1: Click the Start node pairing button​

Node-RED flow with the Start node pairing inject button highlighted

Step 2: Power up the assembly​

Insert the batteries into the Radio Push Button to send the pairing request (the red LED on the Core Module should also light up for about 2 seconds).

Step 3: Click the Stop node pairing button​

Node-RED flow with the Stop node pairing inject button highlighted

success

You now have a radio link between the node (Radio Push Button) and the gateway (Radio Dongle).

Communication Test​

In Node-RED, follow these steps:

Step 1: Switch to the debug tab on the right​

Step 2: Press the button. You should see messages with the press count​

Debug tab listing event-count messages that increase with every button press

success

Radio communication is now verified.

Enclosure​

If you have a suitable enclosure, you can put the assembly into it.

info

You'll find enclosures for TOWER kits in the Enclosures category of the HARDWARIO Store.

Integration with IFTTT​

In this section, we'll create an Applet in the IFTTT service. An Applet is a rule that responds to an event with an action.

Step 1: Open a web browser and go to IFTTT​

IFTTT homepage with the Sign in button highlighted in the top-right corner

Step 2: Sign in to IFTTT. You can also sign up with your Google or Facebook account​

IFTTT menu bar with the My Applets item highlighted

Step 3: Go to My Applets in the menu and click the New Applet button​

My Applets page with the New Applet button highlighted

Step 4: Click +this in the if this then that sentence​

New Applet page with +this highlighted in the if this then that sentence

Step 5: Search for the Webhooks service and select it​

Choose a service step with Webhooks typed in the search box and the Webhooks service highlighted

Step 6: Click Receive a web request​

Choose trigger step with the Receive a web request trigger highlighted

Step 7: Type button in the Event Name field and click Create Trigger​

Trigger fields with button typed as Event Name and the Create trigger button highlighted

Step 8: Click +that in the if this then that sentence​

New Applet page with +that highlighted in the if this then that sentence

Step 9: Search for the Notifications action service and select it​

Choose action service step with Notifications typed in the search box and the Notifications service highlighted

Step 10: Click Send a notification from the IFTTT app​

Choose action step with Send a notification from the IFTTT app highlighted

Step 11: Enter the text The button has been pressed on {{OccurredAt}} in the Notification field and click the Create action button​

Notification field filled with the button-pressed message and the Create action button highlighted

Step 12: Click the Finish button​

Review and finish step with the Finish button highlighted

Step 13: Click the Webhooks button​

Finished applet page with the Webhooks icon highlighted

Step 14: Click the Documentation button​

Webhooks service page with the Documentation button highlighted

Step 15: Click the event field​

Webhooks documentation page with the event field in the trigger URL highlighted

Step 16: Enter button in the event field and keep the window open​

Webhooks documentation with button filled in the event field of the trigger URL

Step 17: Mobile app​

Install the IFTTT app on your smartphone and sign in with the account you used to create the applet. When the app asks, allow push notifications.

Step 18: Click the Test It button in the browser window​

Webhooks documentation page with the Test It button highlighted

Step 19: A push notification should arrive on your smartphone within a few seconds​

Step 20: Copy the URL to the clipboard; you'll need it later​

Webhooks trigger URL highlighted for copying to the clipboard

success

You now have a working notification Applet in the IFTTT service.

Connect Node-RED to IFTTT​

In this section, we'll link the button event on MQTT to an HTTP request to IFTTT, which triggers the push notification.

Step 1: Switch to your Node-RED flow​

Step 2: Import the following snippet into the flow (Menu >> Import)​

[{"id":"e507a379.e9d1d","type":"mqtt in","z":"dfc861b.b2a02a","name":"","topic":"node/push-button:0/push-button/-/event-count","qos":"2","broker":"b9592cd0.2b74f","x":660,"y":760,"wires":[["5d4d5593.80242c"]]},{"id":"62133f2.84223c","type":"http request","z":"dfc861b.b2a02a","name":"","method":"POST","ret":"txt","url":"","tls":"","x":1010,"y":760,"wires":[[]]},{"id":"5d4d5593.80242c","type":"change","z":"dfc861b.b2a02a","name":"","rules":[{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":890,"y":860,"wires":[["62133f2.84223c"]]},{"id":"b9592cd0.2b74f","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

It looks like this:

Node-RED flow with the push-button event-count MQTT node wired through delete msg.payload to an http request node

info

The snippet connects the MQTT topic node/push-button:0/push-button/-/event-count to an HTTP request. Before the message goes to the HTTP request, we remove the payload parameter, because it would otherwise be used as the request body.

Step 3: Double-click the http request node and enter the IFTTT URL you got in the previous section​

Edit http request node dialog with the IFTTT webhook URL entered in the URL field

Step 4: Save the URL with the Done button​

Step 5: Deploy the flow with the Deploy button in the top-right corner​

success

You should now get a push notification whenever you press the button.